Beispiel #1
0
        public ShipHandler(Pawn newShip, ShipRole newRole)
        {
            List <Pawn> newHandlers = new List <Pawn>();

            uniqueID = Find.UniqueIDsManager.GetNextThingID();
            shipPawn = newShip;
            role     = newRole;
            if (handlers is null)
            {
                handlers = new ThingOwner <Pawn>(this, false, LookMode.Reference);
            }
            if (currentlyReserving is null)
            {
                currentlyReserving = new List <Pawn>();
            }
            if ((newHandlers?.Count ?? 0) > 0)
            {
                foreach (Pawn p in newHandlers)
                {
                    if (p.Spawned)
                    {
                        p.DeSpawn();
                    }
                    if (p.holdingOwner != null)
                    {
                        p.holdingOwner = null;
                    }
                    if (!p.IsWorldPawn())
                    {
                        Find.WorldPawns.PassToWorld(p, PawnDiscardDecideMode.Decide);
                    }
                }
                handlers.TryAddRangeOrTransfer(newHandlers);
            }
        }
Beispiel #2
0
 public ShipHandler(Pawn newShip, ShipRole newRole)
 {
     uniqueID = Find.UniqueIDsManager.GetNextThingID();
     shipPawn = newShip;
     role     = newRole;
     if (handlers is null)
     {
         handlers = new ThingOwner <Pawn>(this, false, LookMode.Reference);
     }
 }