예제 #1
0
        public void CheckOrUpdateGameOver()
        {
            if (Find.TickManager.TicksGame < 300)
            {
                return;
            }
            if (ShipCountdown.CountingDown)
            {
                gameEnding = false;
                return;
            }
            List <Map> maps = Find.Maps;

            for (int i = 0; i < maps.Count; i++)
            {
                if (maps[i].mapPawns.FreeColonistsSpawnedOrInPlayerEjectablePodsCount >= 1)
                {
                    gameEnding = false;
                    return;
                }
            }
            for (int j = 0; j < maps.Count; j++)
            {
                List <Pawn> allPawnsSpawned = maps[j].mapPawns.AllPawnsSpawned;
                for (int k = 0; k < allPawnsSpawned.Count; k++)
                {
                    if (allPawnsSpawned[k].carryTracker != null)
                    {
                        Pawn pawn = allPawnsSpawned[k].carryTracker.CarriedThing as Pawn;
                        if (pawn != null && pawn.IsFreeColonist)
                        {
                            gameEnding = false;
                            return;
                        }
                    }
                }
            }
            List <Caravan> caravans = Find.WorldObjects.Caravans;

            for (int l = 0; l < caravans.Count; l++)
            {
                if (IsPlayerControlledWithFreeColonist(caravans[l]))
                {
                    gameEnding = false;
                    return;
                }
            }
            List <TravelingTransportPods> travelingTransportPods = Find.WorldObjects.TravelingTransportPods;

            for (int m = 0; m < travelingTransportPods.Count; m++)
            {
                if (travelingTransportPods[m].PodsHaveAnyFreeColonist)
                {
                    gameEnding = false;
                    return;
                }
            }
            if (QuestUtility.TotalBorrowedColonistCount() <= 0 && !gameEnding)
            {
                gameEnding      = true;
                ticksToGameOver = 400;
            }
        }