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