Exemplo n.º 1
0
        public override void TravelingTransportPodsArrived(List <ActiveDropPodInfo> dropPods, Map map)
        {
            if (dropPods.Count > 1)
            {
                TransportPodsArrivalActionUtility.DropShuttle_NewTemp(dropPods, map, IntVec3.Invalid);
                return;
            }
            ActiveDropPodInfo activeDropPodInfo = dropPods[0];
            List <Pawn>       requiredPawns     = activeDropPodInfo.innerContainer.Where((Thing t) => t is Pawn).Cast <Pawn>().ToList();
            Thing             thing             = TransportPodsArrivalActionUtility.DropShuttle_NewTemp(dropPods, map, IntVec3.Invalid);

            thing.questTags = activeDropPodInfo.questTags;
            CompShuttle compShuttle = thing.TryGetComp <CompShuttle>();

            if (compShuttle == null)
            {
                return;
            }
            compShuttle.sendAwayIfQuestFinished = activeDropPodInfo.sendAwayIfQuestFinished;
            if (activeDropPodInfo.missionShuttleHome == null && activeDropPodInfo.missionShuttleTarget == null)
            {
                return;
            }
            compShuttle.missionShuttleTarget = activeDropPodInfo.missionShuttleHome;
            compShuttle.missionShuttleHome   = null;
            compShuttle.stayAfterDroppedEverythingOnArrival = true;
            compShuttle.requiredPawns = requiredPawns;
            compShuttle.hideControls  = false;
            if (compShuttle.missionShuttleTarget != null)
            {
                return;
            }
            foreach (Thing item in (IEnumerable <Thing>)compShuttle.Transporter.innerContainer)
            {
                Pawn pawn;
                if ((pawn = item as Pawn) != null && pawn.IsColonist)
                {
                    pawn.inventory.UnloadEverything = true;
                }
            }
        }