public static GameObject[,] load(string filePath) { var sizeY = 0; using (var reader = File.OpenText(filePath)) { while (reader.ReadLine() != null) { sizeY++; } } var contentreader = new StreamReader(File.OpenRead(filePath)); string line = contentreader.ReadLine(); string[] values = line.Split(';'); GameObject[,] result = new GameObject[values.Length, sizeY]; GameObject father = GameObject.Find("tileHolder"); bool scndRow = false; System.Random nRand = new System.Random(); double randNum = nRand.NextDouble(); for (int y = 0; y < sizeY; y++) { for (int x = 0; x < values.Length; x++) { result[x, y] = new GameObject("Tile: " + x.ToString() + " " + y.ToString()); result[x, y].transform.parent = father.transform; Vector3 position = new Vector3(); if (scndRow) { position = new Vector3(0.866f + x * 1.732f, 0, y * 1.5f); } else { position = new Vector3(x * 1.732f, 0, y * 1.5f); } Tile tempTile = result[x, y].AddComponent <Tile>(); int typeInt = Convert.ToInt32(values[x]); switch (typeInt) { case 0: tempTile.tile_type = tileType.Desert; break; case 1: tempTile.tile_type = tileType.Forrest; break; case 2: tempTile.tile_type = tileType.Mountain; break; case 3: tempTile.tile_type = tileType.Oasis; break; default: break; } GameObject undiscovered = (GameObject)Instantiate(Initialisation.undiscoveredTile); undiscovered.transform.name = "undiscovered"; undiscovered.transform.parent = result[x, y].transform; undiscoveredTile ut = undiscovered.AddComponent <undiscoveredTile>(); ut.position = new HexaPos(x, y); GameObject discovered; randNum = nRand.NextDouble(); if (tempTile.tile_type == tileType.Desert) { if (randNum < 0.33) { tempTile.genField = 1; discovered = (GameObject)Instantiate(Initialisation.sandTile_1); } else if (randNum < 0.66) { tempTile.genField = 2; discovered = (GameObject)Instantiate(Initialisation.sandTile_2); } else { tempTile.genField = 3; discovered = (GameObject)Instantiate(Initialisation.sandTile_3); } } else if (tempTile.tile_type == tileType.Forrest) { if (randNum < 0.33) { tempTile.genField = 1; discovered = (GameObject)Instantiate(Initialisation.forrestTile_1); } else if (randNum < 0.66) { tempTile.genField = 2; discovered = (GameObject)Instantiate(Initialisation.forrestTile_2); } else { tempTile.genField = 3; discovered = (GameObject)Instantiate(Initialisation.forrestTile_3); } } else if (tempTile.tile_type == tileType.Mountain) { if (randNum < 0.33) { tempTile.genField = 1; discovered = (GameObject)Instantiate(Initialisation.mountainTile_1); } else if (randNum < 0.66) { tempTile.genField = 2; discovered = (GameObject)Instantiate(Initialisation.mountainTile_2); } else { tempTile.genField = 3; discovered = (GameObject)Instantiate(Initialisation.mountainTile_3); } } else { if (randNum < 0.33) { tempTile.genField = 1; discovered = (GameObject)Instantiate(Initialisation.oasisTile_1); } else if (randNum < 0.66) { tempTile.genField = 2; discovered = (GameObject)Instantiate(Initialisation.oasisTile_2); } else { tempTile.genField = 3; discovered = (GameObject)Instantiate(Initialisation.oasisTile_3); } } discoveredTile dT = discovered.AddComponent <discoveredTile>(); dT.position = new HexaPos(x, y); discovered.transform.name = "actualTile"; discovered.transform.parent = result[x, y].transform; undiscovered.AddComponent <MeshCollider>(); discovered.AddComponent <MeshCollider>(); discovered.SetActive(false); result[x, y].transform.position = position; } line = contentreader.ReadLine(); if (line != null) { values = line.Split(';'); } if (scndRow) { scndRow = false; } else { scndRow = true; } } landscape = result; return(result); }
public static GameObject[,] createLandscape(int size_X, int size_Y, double chance_Forest = 0.15, double chance_Mountain = 0.05, double chance_Oasis = 0.01, double chanceboost = 0.2) { GameObject[,] result = new GameObject[size_X, size_Y]; GameObject father = GameObject.Find("tileHolder"); bool scndRow = false; System.Random nRand = new System.Random(); double randNum = nRand.NextDouble(); if ((chance_Forest < 0 || chance_Mountain < 0 || chance_Oasis < 0) || (chance_Oasis + chance_Mountain + chance_Forest) > 1) { return(null); } double tempChance_Forest = chance_Forest; double tempChance_Mountain = chance_Mountain; double tempChance_Oasis = chance_Oasis; for (int y = 0; y < size_Y; y++) { for (int x = 0; x < size_X; x++) { result[x, y] = new GameObject("Tile: " + x.ToString() + " " + y.ToString()); result[x, y].transform.parent = father.transform; Vector3 position = new Vector3(); if (scndRow) { position = new Vector3(0.866f + x * 1.732f, 0, y * 1.5f); } else { position = new Vector3(x * 1.732f, 0, y * 1.5f); } Tile tempTile = result[x, y].AddComponent <Tile>(); randNum = nRand.NextDouble(); //Ab hier erfolgt die Zuteilung des Chancesboost. if (x == 0 && y == 0) { if (randNum < chance_Forest) { tempTile.tile_type = tileType.Forrest; } else if (randNum < (chance_Forest + chance_Mountain)) { tempTile.tile_type = tileType.Mountain; } else if (randNum < (chance_Forest + chance_Mountain + chance_Oasis)) { tempTile.tile_type = tileType.Oasis; } else { tempTile.tile_type = tileType.Desert; } } else if (x == 0 && y != 0) { Tile t1 = result[x, (y - 1)].GetComponent <Tile>(); if (scndRow) { Tile t2 = result[(x + 1), (y - 1)].GetComponent <Tile>(); if (t1.tile_type == tileType.Forrest || t2.tile_type == tileType.Forrest) { tempChance_Forest = chance_Forest + chanceboost; } else { tempChance_Forest = chance_Forest; } if (t1.tile_type == tileType.Mountain || t2.tile_type == tileType.Mountain) { tempChance_Mountain = chance_Mountain + chanceboost; } else { tempChance_Mountain = chance_Mountain; } if (t1.tile_type == tileType.Oasis || t2.tile_type == tileType.Oasis) { tempChance_Oasis = chance_Oasis; } else { tempChance_Oasis = chance_Oasis; } } else { if (t1.tile_type == tileType.Forrest) { tempChance_Forest = chance_Forest + chanceboost; } else { tempChance_Forest = chance_Forest; } if (t1.tile_type == tileType.Mountain) { tempChance_Mountain = chance_Mountain + chanceboost; } else { tempChance_Mountain = chance_Mountain; } if (t1.tile_type == tileType.Oasis) { tempChance_Oasis = chance_Oasis; } else { tempChance_Oasis = chance_Oasis; } } } else if (y == 0 && x != 0) { Tile t1 = result[(x - 1), y].GetComponent <Tile>(); if (t1.tile_type == tileType.Forrest) { tempChance_Forest = chance_Forest + chanceboost; } else { tempChance_Forest = chance_Forest; } if (t1.tile_type == tileType.Mountain) { tempChance_Mountain = chance_Mountain + chanceboost; } else { tempChance_Mountain = chance_Mountain; } if (t1.tile_type == tileType.Oasis) { tempChance_Oasis = chance_Oasis; } else { tempChance_Oasis = chance_Oasis; } } else if (x != (size_X - 1) && y != 0) { Tile t1 = result[(x - 1), y].GetComponent <Tile>(); Tile t2 = result[x, (y - 1)].GetComponent <Tile>(); Tile t3; if (scndRow) { t3 = result[(x + 1), (y - 1)].GetComponent <Tile>(); } else { t3 = result[(x - 1), (y - 1)].GetComponent <Tile>(); } if (t1.tile_type == tileType.Forrest || t2.tile_type == tileType.Forrest || t3.tile_type == tileType.Forrest) { tempChance_Forest = chance_Forest + chanceboost; } else { tempChance_Forest = chance_Forest; } if (t1.tile_type == tileType.Mountain || t2.tile_type == tileType.Mountain || t3.tile_type == tileType.Mountain) { tempChance_Mountain = chance_Mountain + chanceboost; } else { tempChance_Mountain = chance_Mountain; } if (t1.tile_type == tileType.Oasis || t2.tile_type == tileType.Oasis || t3.tile_type == tileType.Oasis) { tempChance_Oasis = chance_Oasis; } else { tempChance_Oasis = chance_Oasis; } } else { Tile t1 = result[(x - 1), y].GetComponent <Tile>(); Tile t2 = result[x, (y - 1)].GetComponent <Tile>(); if (scndRow) { } else { } if (t1.tile_type == tileType.Forrest || t2.tile_type == tileType.Forrest) { tempChance_Forest = chance_Forest + chanceboost; } else { tempChance_Forest = chance_Forest; } if (t1.tile_type == tileType.Mountain || t2.tile_type == tileType.Mountain) { tempChance_Mountain = chance_Mountain + chanceboost; } else { tempChance_Mountain = chance_Mountain; } if (t1.tile_type == tileType.Oasis || t2.tile_type == tileType.Oasis) { tempChance_Oasis = chance_Oasis; } else { tempChance_Oasis = chance_Oasis; } } if (x != 0 || y != 0) { //Zuweisung des Tiletypes if (randNum < tempChance_Forest) { tempTile.tile_type = tileType.Forrest; } else if (randNum < (tempChance_Forest + tempChance_Mountain)) { tempTile.tile_type = tileType.Mountain; } else if (randNum < (tempChance_Forest + tempChance_Mountain + tempChance_Oasis)) { tempTile.tile_type = tileType.Oasis; } else { tempTile.tile_type = tileType.Desert; } } GameObject undiscovered = (GameObject)Instantiate(Initialisation.undiscoveredTile); undiscovered.transform.name = "undiscovered"; undiscovered.transform.parent = result[x, y].transform; undiscoveredTile ut = undiscovered.AddComponent <undiscoveredTile>(); ut.position = new HexaPos(x, y); GameObject discovered; randNum = nRand.NextDouble(); //Erstellung der jeweiligen Gameobjekte if (tempTile.tile_type == tileType.Desert) { if (randNum < 0.33) { tempTile.genField = 1; discovered = (GameObject)Instantiate(Initialisation.sandTile_1); } else if (randNum < 0.66) { tempTile.genField = 2; discovered = (GameObject)Instantiate(Initialisation.sandTile_2); } else { tempTile.genField = 3; discovered = (GameObject)Instantiate(Initialisation.sandTile_3); } } else if (tempTile.tile_type == tileType.Forrest) { if (randNum < 0.33) { tempTile.genField = 1; discovered = (GameObject)Instantiate(Initialisation.forrestTile_1); } else if (randNum < 0.66) { tempTile.genField = 2; discovered = (GameObject)Instantiate(Initialisation.forrestTile_2); } else { tempTile.genField = 3; discovered = (GameObject)Instantiate(Initialisation.forrestTile_3); } } else if (tempTile.tile_type == tileType.Mountain) { if (randNum < 0.33) { tempTile.genField = 1; discovered = (GameObject)Instantiate(Initialisation.mountainTile_1); } else if (randNum < 0.66) { tempTile.genField = 2; discovered = (GameObject)Instantiate(Initialisation.mountainTile_2); } else { tempTile.genField = 3; discovered = (GameObject)Instantiate(Initialisation.mountainTile_3); } } else { if (randNum < 0.33) { tempTile.genField = 1; discovered = (GameObject)Instantiate(Initialisation.oasisTile_1); } else if (randNum < 0.66) { tempTile.genField = 2; discovered = (GameObject)Instantiate(Initialisation.oasisTile_2); } else { tempTile.genField = 3; discovered = (GameObject)Instantiate(Initialisation.oasisTile_3); } } discoveredTile dT = discovered.AddComponent <discoveredTile>(); dT.position = new HexaPos(x, y); undiscovered.AddComponent <MeshCollider>(); discovered.AddComponent <MeshCollider>(); discovered.transform.name = "actualTile"; discovered.transform.parent = result[x, y].transform; discovered.SetActive(false); result[x, y].transform.position = position; } if (scndRow) { scndRow = false; } else { scndRow = true; } } landscape = result; return(result); }