private TargetAndJumpOffTile DetermineSeaAttackJumpOffTile(SeaCombatUnit seaCombatUnit, Tile currentTile) { List<Tile> adjacentTiles = null; List<TargetAndJumpOffTile> targetAndJumpOffTiles = new List<TargetAndJumpOffTile>(); TargetAndJumpOffTile targetAndJumpOffTile = null; foreach (Tile tile in seaCombatUnit.MoveableTiles) { Game.TileFactory.SetAttackableTiles(seaCombatUnit, tile); adjacentTiles = seaCombatUnit.AttackableTiles; adjacentTiles = adjacentTiles.Where(t => t.GroundUnit != null).ToList(); adjacentTiles = adjacentTiles.Where(t => t.GroundUnit.SideEnum == SideEnum.Axis).ToList(); foreach (Tile potentialTargetTile in adjacentTiles) { targetAndJumpOffTile = new TargetAndJumpOffTile(); targetAndJumpOffTile.TargetTile = potentialTargetTile; targetAndJumpOffTile.JumpOffTile = tile; targetAndJumpOffTiles.Add(targetAndJumpOffTile); } } return DetermineTarget(targetAndJumpOffTiles, TargetTypeEnum.SoftGround); }
private static TargetAndJumpOffTile DetermineAirAttackJumpOffTile(AirCombatUnit airCombatUnit, Tile currentTile) { List<Tile> adjacentTiles = null; List<TargetAndJumpOffTile> targetAndJumpOffTiles = new List<TargetAndJumpOffTile>(); TargetAndJumpOffTile targetAndJumpOffTile = null; if (airCombatUnit.EquipmentClassEnum == EquipmentClassEnum.Fighter) { foreach (Tile tile in airCombatUnit.MoveableTiles) { adjacentTiles = Game.TileFactory.GetAdjacentTiles(tile, 1, false); adjacentTiles = adjacentTiles.Where(t => t.AirUnit != null).ToList(); adjacentTiles = adjacentTiles.Where(t => t.AirUnit.SideEnum == SideEnum.Axis).ToList(); foreach (Tile potentialTargetTile in adjacentTiles) { targetAndJumpOffTile = new TargetAndJumpOffTile(); targetAndJumpOffTile.TargetTile = potentialTargetTile; targetAndJumpOffTile.JumpOffTile = tile; targetAndJumpOffTiles.Add(targetAndJumpOffTile); } } return DetermineTarget(targetAndJumpOffTiles, TargetTypeEnum.Air); } else if(airCombatUnit.EquipmentClassEnum == EquipmentClassEnum.TacticalBomber) { foreach (Tile tile in airCombatUnit.MoveableTiles) { if (tile.GroundUnit != null) { if (tile.GroundUnit.SideEnum == SideEnum.Axis) { targetAndJumpOffTile = new TargetAndJumpOffTile(); targetAndJumpOffTile.TargetTile = tile; targetAndJumpOffTile.JumpOffTile = tile; targetAndJumpOffTiles.Add(targetAndJumpOffTile); } } } } else if (airCombatUnit.EquipmentClassEnum == EquipmentClassEnum.StrategicBomber) { foreach (Tile tile in airCombatUnit.MoveableTiles) { if (tile.Nation.SideEnum == SideEnum.Axis && tile.VictoryIndicator == true) { targetAndJumpOffTile = new TargetAndJumpOffTile(); targetAndJumpOffTile.TargetTile = tile; targetAndJumpOffTile.JumpOffTile = tile; targetAndJumpOffTiles.Add(targetAndJumpOffTile); } } } return null; }
private static TargetAndJumpOffTile DetermineLandAttackJumpOffTile(LandCombatUnit landCombatUnit, Tile currentTile) { List<Tile> adjacentTiles = null; List<TargetAndJumpOffTile> targetAndJumpOffTiles = new List<TargetAndJumpOffTile>(); TargetAndJumpOffTile targetAndJumpOffTile = null; foreach (Tile tile in landCombatUnit.MoveableTiles) { adjacentTiles = Game.TileFactory.GetAdjacentTiles(tile, 1, false); adjacentTiles = adjacentTiles.Where(t => t.GroundUnit != null).ToList(); adjacentTiles = adjacentTiles.Where(t => t.GroundUnit.SideEnum == SideEnum.Axis).ToList(); foreach (Tile potentialTargetTile in adjacentTiles) { targetAndJumpOffTile = new TargetAndJumpOffTile(); targetAndJumpOffTile.TargetTile = potentialTargetTile; targetAndJumpOffTile.JumpOffTile = tile; targetAndJumpOffTiles.Add(targetAndJumpOffTile); } } return DetermineTarget(targetAndJumpOffTiles, TargetTypeEnum.SoftGround); }