static void Main(string[] args) { int mapWidth, mapHeight, fillPercent; if (args.Length < 3) { Console.WriteLine("Usage: *.exe <width> <height> <fill%>"); return; } else { mapWidth = Int32.Parse(args[0]); mapHeight = Int32.Parse(args[1]); fillPercent = Int32.Parse(args[2]); } CaveGenerator caveGenerator = new CaveGenerator(); Renderer renderer = new Renderer(); ImageRenderer imageRenderer = new ImageRenderer(); int[] playerPos = { 0, 0 }; byte[,] mapContent = new byte[mapWidth, mapHeight]; bool[,] map = new bool[mapWidth, mapHeight]; caveGenerator.GenerateCave(ref map, ref mapContent, 2, fillPercent); // caveGenerator.SpawnPlayer(ref map, ref mapContent, ref playerPos); // renderer.DrawMap(ref map, ref mapContent); Console.WriteLine("Rendering image..."); imageRenderer.DrawMap(ref mapContent); Console.WriteLine("Done."); return; }
// Use this for initialization void Start() { // generate cave caveGenerator = GetComponent <CaveGenerator>(); caveGenerator.GenerateCave(); // generate player player = caveGenerator.GeneratePlayer(); cameraController.player = player.gameObject; // set camera to follow player string[] percepts = caveGenerator.GetCaveInfluence(curRoom.row, curRoom.col); PrintPercepts(percepts); }
public override void OnInspectorGUI() { base.OnInspectorGUI(); CaveGenerator caveGenerator = (CaveGenerator)target; if (Application.isPlaying) { if (GUILayout.Button("Generate New Map")) { caveGenerator.GenerateCave(); } if (GUILayout.Button("Create Prefab")) { CreatePrefab(caveGenerator); } } }
public void GenerateCave() { bool[,] caveMap = CaveGenerator.GenerateCave(caveSize, simulationSteps); for (int y = 0; y < caveSize; y++) { for (int x = 0; x < caveSize; x++) { if (x == 0 || y == 0 || x == caveSize - 1 || y == caveSize - 1) { // creates a wall around the border of the cave caveMap[x, y] = true; } if (caveMap[x, y]) { tilemap.SetTile(new Vector3Int(x, y, 0), blackTile); } else { tilemap.SetTile(new Vector3Int(x, y, 0), regions[2].tile); } } } caveMap = CaveGenerator.FloodFill(caveMap, caveSize); int totalCaveSize = 0; for (int y = 0; y < caveSize; y++) { for (int x = 0; x < caveSize; x++) { if (caveMap[x, y]) { tilemap.SetTile(new Vector3Int(x, y, 0), regions[2].tile); totalCaveSize++; } else { tilemap.SetTile(new Vector3Int(x, y, 0), blackTile); } } } int minCaveSize = (caveSize * caveSize) / 2; if (totalCaveSize <= minCaveSize) { GenerateCave(); } else { for (int y = 1; y < caveSize - 1; y++) { for (int x = 1; x < caveSize - 1; x++) { if (tilemap.GetTile(new Vector3Int(x, y, 0)) == blackTile) { //Checks 8 coords around current x and y to see if it's wall or black if (caveMap[x + 1, y] == regions[2].tile || caveMap[x - 1, y] == regions[2].tile || caveMap[x, y + 1] == regions[2].tile || caveMap[x, y - 1] == regions[2].tile || caveMap[x + 1, y + 1] == regions[2].tile || caveMap[x - 1, y + 1] == regions[2].tile || caveMap[x + 1, y - 1] == regions[2].tile || caveMap[x - 1, y - 1] == regions[2].tile) { tilemap.SetTile(new Vector3Int(x, y, 0), regions[6].tile); } } } } } }
private void GenerateCave() { CaveGeneratorUtilities.CaveSave.CreateAssetsDirectories(); caveGenerator.GenerateCave(seed, mapwidth, mapHeight, wallDensityPercentaje, iterations, borderDensity, minWallRegionDensity, minRoomRegionDensity, connetionsDensity, scale, wallsAltitude, groundMaterial, wallsMaterial, prefabName); }