Beyond_Beyaan.FleetManager.MergeIdleFleets C# (CSharp) Метод

MergeIdleFleets() публичный Метод

public MergeIdleFleets ( ) : void
Результат void
        public void MergeIdleFleets()
        {
            for (int i = 0; i < _fleets.Count; i++)
            {
                if (_fleets[i].TravelNodes == null)
                {
                    List<Fleet> fleetsToRemove = new List<Fleet>();
                    for (int j = i + 1; j < _fleets.Count; j++)
                    {
                        if (_fleets[j].TravelNodes == null && _fleets[j].AdjacentSystem == _fleets[i].AdjacentSystem)
                        {
                            //Merge only fleets of the same type (i.e. ships with ships, transports with transports
                            if (_fleets[j].Ships.Count > 0 && _fleets[i].Ships.Count > 0)
                            {
                                foreach (KeyValuePair<Ship, int> ship in _fleets[j].Ships)
                                {
                                    _fleets[i].AddShips(ship.Key, ship.Value);
                                }
                                fleetsToRemove.Add(_fleets[j]);
                            }
                            else if (_fleets[j].TransportShips.Count > 0 && _fleets[i].TransportShips.Count > 0)
                            {
                                foreach (TransportShip ship in _fleets[j].TransportShips)
                                {
                                    _fleets[i].AddTransport(ship.raceOnShip, ship.amount);
                                }
                                fleetsToRemove.Add(_fleets[j]);
                            }
                        }
                    }
                    foreach (Fleet fleet in fleetsToRemove)
                    {
                        _fleets.Remove(fleet);
                    }
                }
            }
        }

Usage Example

Пример #1
0
 public void CheckForBuiltShips()
 {
     foreach (Planet planet in PlanetManager.Planets)
     {
         int  amount;
         Ship result = planet.CheckIfShipBuilt(out amount);
         if (amount > 0 && result != null)
         {
             Fleet newFleet = new Fleet();
             newFleet.Empire         = this;
             newFleet.GalaxyX        = planet.System.X;
             newFleet.GalaxyY        = planet.System.Y;
             newFleet.AdjacentSystem = planet.System;
             newFleet.AddShips(result, amount);
             FleetManager.AddFleet(newFleet);
             SitRepManager.AddItem(new SitRepItem(Screen.Galaxy, planet.System, planet, new Point(planet.System.X, planet.System.Y), planet.Name + " has produced " + amount + " " + result.Name + " ship" + (amount > 1 ? "s." : ".")));
         }
     }
     FleetManager.MergeIdleFleets();
 }