Ejemplo n.º 1
0
        public static void ProcessNewThing(List <ShipDefinition> shipDefinitions, Thing t, string name = null)
        {
            if (!(t is Building) && t.def.building?.shipPart != true)
            {
                return;
            }

            var ships = shipDefinitions.Where(s => s.ShouldAddToShip(t)).ToList();

            if (ships.Count == 1)
            {
                ships[0].AddToShip(t);
            }
            else if (ships.Count > 1)
            {
                ships[0].AddToShip(t);
                shipDefinitions.RemoveAll(s => ships.Contains(s));
                shipDefinitions.Add(ships.Aggregate((a, b) => a.MergeWith(b)));
            }
            else if (t.def.building?.shipPart == true)
            {
                var newShip = new ShipDefinition();
                newShip.name = name;
                newShip.AddToShip(t);
                shipDefinitions.Add(newShip);
            }
        }
Ejemplo n.º 2
0
 public void Register(Thing t)
 {
     if (!processUpdates || !(t is Building))
     {
         return;
     }
     ShipDefinition.ProcessNewThing(shipDefinitions, t);
 }
Ejemplo n.º 3
0
 public void RemoveWholeShip(ShipDefinition def)
 {
     shipDefinitions.Remove(def);
 }
Ejemplo n.º 4
0
 public void AddWholeShip(ShipDefinition def)
 {
     shipDefinitions.Add(def);
 }