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); }
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); }