示例#1
0
            public static void UseStep(GenStep genStep, Map map, GenStepParams parameters)
            {
                if (genStep is GenStep_Terrain)
                {
                    var underGrid = map.terrainGrid.underGrid;
                    var topGrid   = map.terrainGrid.topGrid;
                    for (var i = 0; i < topGrid.Length; i++)
                    {
                        underGrid[i] = TerrainDefOf.Soil;
                        topGrid[i]   = TerrainDefOf.WoodPlankFloor;
                    }
                    return;
                }

                if (skipGenTypes.Contains(genStep.GetType()))
                {
                    return;
                }
                genStep.Generate(map, parameters);
            }
示例#2
0
        public static void GenerateMap(MapGeneratorDef mapGenerator, Map map, out List <Pawn> spawnedPawns, bool clearMap = false, bool setTerrain = false, bool fog = true, bool unFogRoom = false, bool spawnPawns = true
                                       , bool createRoof = false, bool generatePlants = false, Faction forceFaction = null, Lord forceLord = null, bool breakDownBuildings = false, bool refuel = true)
        {
            spawnedPawns = new List <Pawn>();

            map.regionAndRoomUpdater.Enabled = false;
            if (clearMap)
            {
                Thing.allowDestroyNonDestroyable = true;

                foreach (var position in map.AllCells)
                {
                    if (position.Roofed(map))
                    {
                        map.roofGrid.SetRoof(position, null);
                    }
                }

                foreach (Thing item5 in map.listerThings.AllThings.ToList())
                {
                    item5.Destroy();
                }

                Thing.allowDestroyNonDestroyable = false;
            }

            if (generatePlants)
            {
                GenStep genStep = (GenStep)Activator.CreateInstance(typeof(GenStep_Plants));
                genStep.Generate(map, default(GenStepParams));
            }

            if (setTerrain)
            {
                ClearCells(mapGenerator.MapData, map);
                SetTerrain(mapGenerator.MapData, map);
            }

            PlaceBuildingsAndItems(mapGenerator.MapData, map, forceFaction, refuel);

            if (spawnPawns)
            {
                SpawnPawns(mapGenerator.MapData, map, forceFaction, spawnedPawns, forceLord);
            }

            map.powerNetManager.UpdatePowerNetsAndConnections_First();

            map.regionAndRoomUpdater.Enabled = true;
            map.regionAndRoomUpdater.RebuildAllRegionsAndRooms();

            if (createRoof && mapGenerator.RoofData != null)
            {
                CreateRoof(mapGenerator.RoofData, map);
            }

            if (fog)
            {
                RefogMap(map);
            }

            if (unFogRoom)
            {
                foreach (IntVec3 current in map.AllCells)
                {
                    Room room = current.GetRoom(map);
                    if (room != null && !room.TouchesMapEdge)
                    {
                        map.fogGrid.Unfog(current);
                    }
                }
            }
        }