public static void Camp(Caravan caravan)
        {
            Faction faction = caravan.Faction;

            if (faction != Faction.OfPlayer)
            {
                Log.Error("Cannot camp with non-player faction.", false);
                return;
            }
            string      randomSeed = Find.TickManager.TicksAbs.ToString();
            int         CampSize   = Rand.Range(SetUpCampSettings.allowedSizeRange.min, SetUpCampSettings.allowedSizeRange.max);
            CaravanCamp camp       = NewCaravanCamp(caravan.Tile, faction);

            LongEventHandler.QueueLongEvent(delegate()
            {
                GenerateNewMapWithSeed(caravan.Tile, new IntVec3(CampSize, 1, CampSize), randomSeed);
            }, "SetUpCamp_GeneratingCamp", true, new Action <Exception>(GameAndMapInitExceptionHandlers.ErrorWhileGeneratingMap), true);
            LongEventHandler.QueueLongEvent(delegate()
            {
                Map map = camp.Map;
                Thing t = caravan.PawnsListForReading[0];
                CaravanEnterMapUtility.Enter(caravan, map, CaravanEnterMode.Center, CaravanDropInventoryMode.DoNotDrop, false, (IntVec3 x) => x.GetRoom(map, RegionType.Set_Passable).CellCount >= 600);
                CameraJumper.TryJump(t);
                Find.TickManager.CurTimeSpeed = 0;
                Messages.Message("SetUpCampFormedCamp".Translate(), MessageTypeDefOf.PositiveEvent);
            }, "SpawningColonists", true, new Action <Exception>(GameAndMapInitExceptionHandlers.ErrorWhileGeneratingMap), true);
        }
        public static CaravanCamp NewCaravanCamp(int tile, Faction faction)
        {
            CaravanCamp camp = (CaravanCamp)WorldObjectMaker.MakeWorldObject(SetUpCampDefOf.CaravanCamp);

            camp.Tile = tile;
            camp.SetFaction(faction);
            Find.WorldObjects.Add(camp);
            return(camp);
        }
Example #3
0
        private static void AddAbandonedCamp(CaravanCamp Camp)
        {
            WorldObject worldObject = WorldObjectMaker.MakeWorldObject(SetUpCampDefOf.AbandonedCamp);

            worldObject.GetComponent <TimeoutComp>().StartTimeout(SetUpCampSettings.timeout * 60000);
            worldObject.Tile = Camp.Tile;
            worldObject.SetFaction(Camp.Faction);
            Find.WorldObjects.Add(worldObject);
        }