/// <summary> /// Detects collision between unit and tower /// </summary> /// <returns><c>true</c>, if collision was detected, <c>false</c> otherwise.</returns> /// <param name="unit">Unit unit</param> /// <param name="tower">Tower</param> /// <param name="direction">Movement Direction</param> /// <remarks> /// Movement direction used to differentiate unit(enemies and heroes) /// </remarks> public bool detectCollision(Unit unit, Tower tower, MovementDirection direction) { if (direction == MovementDirection.Left) { return(unit.getX() <= tower.X + 50); } else { return(unit.getX() + 45 >= tower.X); } }
/// <summary> /// Detects the collision between projectile and enemy /// </summary> /// <returns><c>true</c>, if collision was detected, <c>false</c> otherwise.</returns> /// <param name="projectile">Projectile</param> /// <param name="enemy">Enemy</param> public bool detectCollision(Projectile projectile, Unit enemy) { if (projectile == null) { return(false); } return(projectile.X + 20 >= enemy.getX()); }
/// <summary> /// Creates a visual healing effect /// </summary> /// <returns>The effect.</returns> /// <param name="hero">Hero.</param> public Sprite createEffect(Unit hero) { Sprite sprite = SwinGame.CreateSprite(SwinGame.BitmapNamed("effectsBmp"), SwinGame.AnimationScriptNamed("healingScrpt")); SwinGame.SpriteStartAnimation(sprite, "healing_effect"); SwinGame.SpriteSetX(sprite, hero.getX() - 70); SwinGame.SpriteSetY(sprite, hero.getY() - 80); return(sprite); }
/// <summary> /// A Constructor without the animation details /// </summary> public Projectile(string bitmap, float projectileSpeed, Unit unit) { this.unit = unit; this.projectileSpeed = projectileSpeed; sprite = SwinGame.CreateSprite (SwinGame.BitmapNamed (bitmap)); SwinGame.SpriteSetX (sprite, unit.getX()+10); SwinGame.SpriteSetY (sprite, unit.getY()); SwinGame.SpriteSetDX (sprite, projectileSpeed); }
/// <summary> /// Checks to see if a hero is in the healers range /// </summary> /// <returns><c>true</c>, if range was ined, <c>false</c> otherwise.</returns> /// <param name="hero">Hero.</param> public bool inRange(Unit hero) { float fieldOfView = this.getX() + 150; if (fieldOfView >= hero.getX()) { return(true); } return(false); }
/// <summary> /// Creates skeleton for projectiles (i.e Animation, projectile speed, which unit it belongs to.) /// </summary> /// <param name="bitmap">Image for the projectile</param> /// <param name="animation">The animation script associated.</param> /// <param name="projectileSpeed">How fast the projectile fires.</param> /// <param name="unit">Unit.</param> public Projectile(string bitmap, string animation, float projectileSpeed, Unit unit) { this.unit = unit; this.projectileSpeed = projectileSpeed; sprite = SwinGame.CreateSprite (SwinGame.BitmapNamed (bitmap), SwinGame.AnimationScriptNamed(animation)); SwinGame.SpriteStartAnimation (sprite, "fireball_cast"); SwinGame.SpriteSetX (sprite, unit.getX()+10); SwinGame.SpriteSetY (sprite, unit.getY()); SwinGame.SpriteSetDX (sprite, projectileSpeed); }
/// <summary> /// Checks to see if mage is in range of enemy /// </summary> /// <returns><c>true</c>, if range was ined, <c>false</c> otherwise.</returns> /// <param name="enemy">Enemy.</param> public bool inRange(Unit enemy) { float fieldOfView = getX() + 500; return(fieldOfView >= enemy.getX()); }
/// <summary> /// Detects the collision between characters /// </summary> /// <returns><c>true</c>, if collision was detected, <c>false</c> otherwise.</returns> /// <param name="hero">Hero unit</param> /// <param name="enemy">Enemy.</param> public bool detectCollision(Unit hero, Unit enemy) { return(hero.getX() + 12 >= enemy.getX()); }