public List<SpaceUnit> ProduceShellsFrom(Spaceship spaceship) { List<SpaceUnit> producedShells = new List<SpaceUnit>(); Coordinate shootingPoint = spaceship.GetShootingPoint(); Coordinate shellSpeed = new Coordinate(); string shellCollisionGroup = spaceship.CollisionGroupString == "player" ? "player" : "enemy"; int shellsCount = 1; switch (spaceship.Type) { case SpaceUnitType.Banshee: shellSpeed.Col = 5; break; case SpaceUnitType.Battlecruiser: case SpaceUnitType.Carrier: case SpaceUnitType.Scout: case SpaceUnitType.Walkir: shellSpeed.Row = 0; shellSpeed.Col = spaceship.Speed.Col * 2; break; case SpaceUnitType.Stealth: shellSpeed.Row -= spaceship.Speed.Col * 2; shellSpeed.Col = 0; break; case SpaceUnitType.Dragoon: shellSpeed.Row += spaceship.Speed.Col * 2; shellSpeed.Col = -1; shellsCount = 3; break; } for (int shell = 0; shell < shellsCount; shell++) { producedShells.Add(this.ProduceSpaceUnit(SpaceUnitType.Shell, shootingPoint, shellSpeed, shellCollisionGroup)); shellSpeed.Col++; } return producedShells; }