// Use this for initialization void Awake() { if (instance == null) { instance = this; tilePool = GameObject.FindGameObjectWithTag("EventSystem").GetComponent <TilePool>(); GenerationMap = this.gameObject.AddComponent <GameMap>(); GenerationMap.AttachMapGameObject(); forestGenerator = this.gameObject.GetComponent <ForestGenerator>(); GenerationMap.AttachForestGenerator(forestGenerator); GenerationMap.AttachTiles(); CreatePaths.AttachMap(GenerationMap); CreatePaths.AttachTiles(GetCurrentBiomeTileSet().Road, GetCurrentBiomeTileSet().Shallows, GetCurrentBiomeTileSet().Water); displaySelected = canvas.GetComponent <DisplaySelected>(); } else { instance.tilePool = this.gameObject.GetComponent <TilePool>(); instance.canvas = GameObject.FindGameObjectWithTag("Canvas").GetComponent <Canvas>(); Destroy(this); } gamePlayCam = cam1.GetComponent <Camera>(); gamePlayCam.enabled = true; topDownCam = cam2.GetComponent <Camera>(); topDownCam.enabled = false; testingPhaseCanvas.enabled = false; }
public void StartGenerationProcess() { if (Height <= 0 || Width <= 0) { //EditorUtility.DisplayDialog("Empty Map", "The height and/or width = 0", "Coolio"); return; } GenerationMap.AttachTiles(); CreatePaths.AttachTiles(GetCurrentBiomeTileSet().Road, GetCurrentBiomeTileSet().Shallows, GetCurrentBiomeTileSet().Water); //Reset map GenerationMap.CreateEmptyMap(Width); forestGenerator.ResetTrees(); switch (SelectedMapTypeX) { case MapTypeX.Plains: GeneratePlains(); break; case MapTypeX.Costal: GenerateCostal(); break; case MapTypeX.Islands: GenerateIslands(); break; default: GeneratePlains(); break; } //RandomTilesMap rtm = new RandomTilesMap(); //rtm.GenerateRandomTileMap(GenerationMap, tilePool.GetTileSetFromBiomeType(SelectedMapType)); //CreateNoiseBlob.CreateBlobAtPosition(GenerationMap, new MapPoint(30, 30),2, tilePool.GetWaterTile()); //forestGenerator.AddTreeToMap(new MapPoint(10, 10)); //forestGenerator.CreateTreeBlobAtPosition(GenerationMap, new MapPoint(24, 24), 2); GenerationMap.ApplySandNextToWater(); GenerationMap.GenerateMap(); MoveGamePlayCam(); }
private void GeneratePaths() { int numPaths = UnityEngine.Random.Range(1, 3); int p = 0; while (p < numPaths) { bool newStartAndEnd = true; int minLength = 0; switch (Width) { case 72: minLength = 1296; break; case 96: minLength = 2304; break; case 120: minLength = 3600; break; case 144: minLength = 5184; break; case 200: minLength = 10000; break; //case 255: // DifferentSizeIslands.GenerateGiganticIslands(GenerationMap, tilePool.GetTileSetFromBiomeType(SelectedMapBiome)[0]); // break; default: break; } int startX = 0, startY = 0, endX = 0, endY = 0; while (newStartAndEnd) { int startAxis = UnityEngine.Random.Range(0, 4); int pathStart = UnityEngine.Random.Range(0, Width); switch (startAxis) { case 0: startX = 0; startY = UnityEngine.Random.Range(0, Height - 1); break; case 1: startX = UnityEngine.Random.Range(0, Width - 1); startY = 0; break; case 2: startX = Width - 1; startY = UnityEngine.Random.Range(0, Height - 1); break; case 3: startX = UnityEngine.Random.Range(0, Width - 1); startY = Height - 1; break; } endX = UnityEngine.Random.Range(0, Width - 1); endY = UnityEngine.Random.Range(0, Height - 1); int distX = Math.Abs(startX - endX); int distY = Math.Abs(startY - endY); if ((distX * distX) + (distY * distY) > minLength) { if (GenerationMap.GetTileAtPos(new MapPoint(startX, startY)) != GetCurrentBiomeTileSet().Water&& GenerationMap.GetTileAtPos(new MapPoint(endX, endY)) != GetCurrentBiomeTileSet().Water) { newStartAndEnd = false; } } } int previousTurnX = startX; int previousTurnY = startY; int numTurns = UnityEngine.Random.Range(1, 4); int t = 0; while (t < numTurns) { int randTurnX = 0; int randTurnY = 0; if (previousTurnX > endX) { randTurnX = UnityEngine.Random.Range(previousTurnX, endX); } else if (previousTurnX == endX) { randTurnX = endX; } else if (previousTurnX < endX) { randTurnX = UnityEngine.Random.Range(endX, previousTurnX); } if (previousTurnY > endY) { randTurnY = UnityEngine.Random.Range(previousTurnY, endY); } else if (previousTurnY == endY) { randTurnY = endY; } else if (previousTurnY < endY) { randTurnY = UnityEngine.Random.Range(endY, previousTurnY); } CreatePaths.CreatePathBetween2Points(new MapPoint(previousTurnX, previousTurnY), new MapPoint(randTurnX, randTurnY)); previousTurnX = randTurnX; previousTurnY = randTurnY; t++; } CreatePaths.CreatePathBetween2Points(new MapPoint(previousTurnX, previousTurnY), new MapPoint(endX, endY)); //CreatePaths.CreatePathBetween2Points(new MapPoint(startX, startY), new MapPoint(endX, endY)); Debug.Log("Start: " + startX + "," + startY + " || End: " + endX + "," + endY); //CreatePaths.CreatePathBetween2Points(new MapPoint(10, 5), new MapPoint(20, 30)); //CreatePaths.CreatePathBetween2Points(new MapPoint(20, 30), new MapPoint(40, 35)); p++; } }