public override void MissileEndByRange(Missile missile) { Explode(missile); }
public override void MissileHitObject(Missile missile) { Explode(missile); }
public virtual void MissileEndByRange(Missile missile) { }
public virtual void MissileHitObject(Missile missile) { }
public virtual void MissileHit(Missile missile, Character target) { }
public static bool MissileHitObject(Missile missile) { int tileX; int tileY; Rectangle tileBound; switch (missile.Dir) { case Dir.Up: tileY = missile.HitBox.Y / Globals.TileSize; for (int i = missile.HitBox.X / Globals.TileSize; i <= (missile.HitBox.X + missile.HitBox.Width) / Globals.TileSize; i += 1) { if (tileY < Game.World.TileList.GetLength(1) && i < Game.World.TileList.GetLength(0)) { tileX = i; if (Game.World.TileList[tileX, tileY].IsBlocked) { tileBound = new Rectangle(tileX * Globals.TileSize + 4, tileY * Globals.TileSize + 4, Globals.TileSize - 8, Globals.TileSize - 14); if (missile.HitBox.IntersectsWith(tileBound)) { return(true); } } } } break; case Dir.Down: tileY = (missile.HitBox.Y + missile.HitBox.Height) / Globals.TileSize; for (int i = missile.HitBox.X / Globals.TileSize; i <= (missile.HitBox.X + missile.HitBox.Width) / Globals.TileSize; i += 1) { if (tileY < Game.World.TileList.GetLength(1) && i < Game.World.TileList.GetLength(0)) { tileX = i; if (Game.World.TileList[tileX, tileY].IsBlocked) { tileBound = new Rectangle(tileX * Globals.TileSize + 4, tileY * Globals.TileSize + 4, Globals.TileSize - 8, Globals.TileSize - 14); if (missile.HitBox.IntersectsWith(tileBound)) { return(true); } } } } break; case Dir.Left: tileX = missile.HitBox.X / Globals.TileSize; for (int i = missile.HitBox.Y / Globals.TileSize; i <= (missile.HitBox.Y + missile.HitBox.Height) / Globals.TileSize; i += 1) { if (tileX < Game.World.TileList.GetLength(0) && i < Game.World.TileList.GetLength(1)) { tileY = i; if (Game.World.TileList[tileX, tileY].IsBlocked) { tileBound = new Rectangle(tileX * Globals.TileSize + 4, tileY * Globals.TileSize + 4, Globals.TileSize - 8, Globals.TileSize - 14); if (missile.HitBox.IntersectsWith(tileBound)) { return(true); } } } } break; case Dir.Right: tileX = (missile.HitBox.X + missile.HitBox.Width) / Globals.TileSize; for (int i = missile.HitBox.Y / Globals.TileSize; i <= (missile.HitBox.Y + missile.HitBox.Height) / Globals.TileSize; i += 1) { if (tileX < Game.World.TileList.GetLength(0) && i < Game.World.TileList.GetLength(1)) { tileY = i; if (Game.World.TileList[tileX, tileY].IsBlocked) { tileBound = new Rectangle(tileX * Globals.TileSize + 4, tileY * Globals.TileSize + 4, Globals.TileSize - 8, Globals.TileSize - 14); if (missile.HitBox.IntersectsWith(tileBound)) { return(true); } } } } break; } return(false); }
public override void MissileHit(Missile missile, Character target) { base.MissileHit(missile, target); SoundManager.PlayByFileName(SFXs[Globals.gen.Next(0, SFXs.Count)]); }