Пример #1
0
        public static void Postfix(CaravanArrivalAction_VisitSettlement __instance, Caravan caravan, Settlement ___settlement)
        {
            if (!___settlement.HasMap)
            {
                LongEventHandler.QueueLongEvent(delegate()
                {
                    var filePreset = SettlementGeneration.GetPresetFor(___settlement, out LocationDef locationDef);
                    if (filePreset != null)
                    {
                        customSettlementGeneration = true;
                        locationData = new LocationData {
                            file = filePreset, locationDef = locationDef
                        };
                    }
                    Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(___settlement.Tile, null);
                    CaravanEnterMapUtility.Enter(caravan, orGenerateMap, CaravanEnterMode.Edge, 0, true, null);

                    if (filePreset != null)
                    {
                        SettlementGeneration.InitialiseLocationGeneration(orGenerateMap, filePreset, locationDef);
                    }
                }, "GeneratingMapForNewEncounter", false, null, true);
                return;
            }
            Map orGenerateMap2 = GetOrGenerateMapUtility.GetOrGenerateMap(___settlement.Tile, null);

            CaravanEnterMapUtility.Enter(caravan, orGenerateMap2, CaravanEnterMode.Edge, 0, true, null);
        }
Пример #2
0
 public override void MapComponentUpdate()
 {
     base.MapComponentUpdate();
     if (this.doGeneration && path?.Length > 0)
     {
         try
         {
             SettlementGeneration.DoSettlementGeneration(this.map, this.path, this.locationDef, this.map.ParentFaction, false);
         }
         catch (Exception ex)
         {
             Log.Error(ex.ToString());
         }
         GetOrGenerateMapPatch.caravanArrival             = false;
         GetOrGenerateMapPatch.locationData               = null;
         GetOrGenerateMapPatch.customSettlementGeneration = false;
         this.doGeneration = false;
     }
     if (this.reFog)
     {
         Log.Message("Refog" + this.map);
         try
         {
             FloodFillerFog.DebugRefogMap(this.map);
         }
         catch
         {
         }
         this.reFog = false;
     }
 }
Пример #3
0
        public override void Generate(Map map, GenStepParams parms)
        {
            var filePreset = SettlementGeneration.GetPresetFor(map.Parent, locationDef);

            if (filePreset != null)
            {
                GetOrGenerateMapPatch.locationData = new LocationData {
                    file = filePreset, locationDef = locationDef
                };
            }
        }
Пример #4
0
        public static void Prefix(ref Caravan caravan, ref Settlement settlement)
        {
            var filePreset = SettlementGeneration.GetPresetFor(settlement, out LocationDef locationDef);

            if (filePreset != null)
            {
                locationData = new LocationData {
                    file = filePreset, locationDef = locationDef
                };
                customSettlementGeneration = true;
            }
        }
Пример #5
0
 public static void Postfix(IntVec3 mapSize, MapParent parent, MapGeneratorDef mapGenerator, IEnumerable <GenStepWithParams> extraGenStepDefs = null, Action <Map> extraInitBeforeContentGen = null)
 {
     Log.Message("GetOrGenerateMapPatch.caravanArrival: " + GetOrGenerateMapPatch.caravanArrival);
     if (!caravanArrival)
     {
         var preset = SettlementGeneration.GetPresetFor(parent, out LocationDef locationDef);
         if (preset != null && locationDef != null)
         {
             SettlementGeneration.DoSettlementGeneration(parent.Map, preset.FullName, locationDef, parent.Faction, false);
         }
     }
 }
Пример #6
0
        private static bool Prefix(ResolveParams rp)
        {
            Map map = BaseGen.globalSettings.map;

            if (GetOrGenerateMapPatch.customSettlementGeneration)
            {
                Faction faction = rp.faction ?? Find.FactionManager.RandomEnemyFaction();
                SettlementGeneration.DoSettlementGeneration(map, GetOrGenerateMapPatch.locationData.file.FullName, GetOrGenerateMapPatch.locationData.locationDef, faction, false);

                rp.rect = rp.rect.MovedBy(map.Center - rp.rect.CenterCell);
                //foreach (var cell in rp.rect.Cells)
                //{
                //}

                Lord          singlePawnLord = rp.singlePawnLord ?? LordMaker.MakeNewLord(faction, new LordJob_DefendBase(faction, rp.rect.CenterCell), map);
                TraverseParms traverseParms  = TraverseParms.For(TraverseMode.PassDoors);
                ResolveParams resolveParams  = rp;
                resolveParams.rect             = rp.rect;
                resolveParams.faction          = faction;
                resolveParams.singlePawnLord   = singlePawnLord;
                resolveParams.pawnGroupKindDef = (rp.pawnGroupKindDef ?? PawnGroupKindDefOf.Settlement);
                //resolveParams.singlePawnSpawnCellExtraPredicate = (rp.singlePawnSpawnCellExtraPredicate ?? ((Predicate<IntVec3>)((IntVec3 x) => map.reachability.CanReachMapEdge(x, traverseParms))));
                if (resolveParams.pawnGroupMakerParams == null)
                {
                    resolveParams.pawnGroupMakerParams             = new PawnGroupMakerParms();
                    resolveParams.pawnGroupMakerParams.tile        = map.Tile;
                    resolveParams.pawnGroupMakerParams.faction     = faction;
                    resolveParams.pawnGroupMakerParams.points      = (rp.settlementPawnGroupPoints ?? DefaultPawnsPoints.RandomInRange);
                    resolveParams.pawnGroupMakerParams.inhabitants = true;
                    resolveParams.pawnGroupMakerParams.seed        = rp.settlementPawnGroupSeed;
                }
                BaseGen.symbolStack.Push("pawnGroup", resolveParams);
                return(false);
            }
            GetOrGenerateMapPatch.customSettlementGeneration = false;
            return(true);
        }
Пример #7
0
        public static void LoadBlueprint()
        {
            var curModName = LoadedModManager.RunningMods.Where(x => x.assemblies.loadedAssemblies.Contains(Assembly.GetExecutingAssembly())).FirstOrDefault().Name;

            Log.Message("curModName: " + curModName);
            ModMetaData modMetaData = ModLister.AllInstalledMods.FirstOrDefault((ModMetaData x) => x != null && x.Name != null && x.Active && x.Name == curModName);
            string      path        = Path.GetFullPath(modMetaData.RootDir.ToString() + "/Presets/");

            Log.Message("path: " + path);
            DirectoryInfo directoryInfo = new DirectoryInfo(path);

            if (!directoryInfo.Exists)
            {
                directoryInfo.Create();
            }

            List <DebugMenuOption> list = new List <DebugMenuOption>();

            using (IEnumerator <FileInfo> enumerator = directoryInfo.GetFiles().AsEnumerable().GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    string name = enumerator.Current.Name;
                    list.Add(new DebugMenuOption(name, 0, delegate()
                    {
                        path    = path + name;
                        Map map = Find.CurrentMap;
                        SettlementGeneration.DoSettlementGeneration(map, path, null, Faction.OfPlayer, false);
                    }));
                }
            }
            if (list.Any())
            {
                Find.WindowStack.Add(new Dialog_DebugOptionListLister(list));
            }
        }