public void GenerateMap() { MapData NewMapData = new MapData(); NewMapData.GenerateIndexes.Columns = 20; NewMapData.GenerateIndexes.Row = 20; StoreStack StoresStack = new StoreStack(); int TileID = 1; float Xcoord = -0.64f * (NewMapData.GenerateIndexes.Columns / 2) + 0.32f; float Ycoord = 0.64f * (NewMapData.GenerateIndexes.Row / 2) - 0.32f; for (int c = 1; c < NewMapData.GenerateIndexes.Columns + 1; c++) { for (int r = 1; r < NewMapData.GenerateIndexes.Row + 1; r++) { MapTileSample newTile = new MapTileSample(); newTile.TileID = TileID; newTile.Skin = Random.Range(0, 6); for (int a = 0; a < newTile.Smokes.Length; a++) { newTile.Smokes[a] = true; } newTile.Coordinates = new Vector3(Xcoord, Ycoord, 0.0f); newTile.Empty = true; NewMapData.Tiles.Add(newTile); Xcoord += 0.64f; TileID += 1; } Xcoord = -0.64f * (NewMapData.GenerateIndexes.Columns / 2) + 0.32f; Ycoord -= 0.64f; } int StoresNum = 20; for (int s = 0; s < StoresNum; s++) { string Type = ""; if (s == 0) { Type = "Slaves"; Store newstore = CreateNewStore(NewMapData, StoresStack, Type, s, false); if (newstore != null) { NewMapData.GenerateIndexes.Stores.Add(newstore); } else { s -= 1; } } if (s == 1) { Type = "Stuff"; Store newstore = CreateNewStore(NewMapData, StoresStack, Type, s, true); if (newstore != null) { NewMapData.GenerateIndexes.Stores.Add(newstore); } else { s -= 1; } } if (s == 2) { Type = "Bullets"; Store newstore = CreateNewStore(NewMapData, StoresStack, Type, s, true); if (newstore != null) { NewMapData.GenerateIndexes.Stores.Add(newstore); } else { s -= 1; } } if (s == 3) { Type = "Guns"; Store newstore = CreateNewStore(NewMapData, StoresStack, Type, s, true); if (newstore != null) { NewMapData.GenerateIndexes.Stores.Add(newstore); } else { s -= 1; } } if (s == 4) { Type = "Recycling"; Store newstore = CreateNewStore(NewMapData, StoresStack, Type, s, false); if (newstore != null) { NewMapData.GenerateIndexes.Stores.Add(newstore); } else { s -= 1; } } if (s >= 5 && s < 10) { Type = "Stuff"; Store newstore = CreateNewStore(NewMapData, StoresStack, Type, s, false); if (newstore != null) { NewMapData.GenerateIndexes.Stores.Add(newstore); } else { s -= 1; } } if (s >= 10 && s < 15) { Type = "Bullets"; Store newstore = CreateNewStore(NewMapData, StoresStack, Type, s, false); if (newstore != null) { NewMapData.GenerateIndexes.Stores.Add(newstore); } else { s -= 1; } } if (s >= 15) { int randNum = Random.Range(1, 6); if (randNum == 1) { Type = "Slaves"; Store newstore = CreateNewStore(NewMapData, StoresStack, Type, s, false); if (newstore != null) { NewMapData.GenerateIndexes.Stores.Add(newstore); } else { s -= 1; } } if (randNum == 2) { Type = "Guns"; Store newstore = CreateNewStore(NewMapData, StoresStack, Type, s, false); if (newstore != null) { NewMapData.GenerateIndexes.Stores.Add(newstore); } else { s -= 1; } } if (randNum == 3) { Type = "Bullets"; Store newstore = CreateNewStore(NewMapData, StoresStack, Type, s, false); if (newstore != null) { NewMapData.GenerateIndexes.Stores.Add(newstore); } else { s -= 1; } } if (randNum == 4) { Type = "Stuff"; Store newstore = CreateNewStore(NewMapData, StoresStack, Type, s, false); if (newstore != null) { NewMapData.GenerateIndexes.Stores.Add(newstore); } else { s -= 1; } } if (randNum == 5) { Type = "Recycling"; Store newstore = CreateNewStore(NewMapData, StoresStack, Type, s, false); if (newstore != null) { NewMapData.GenerateIndexes.Stores.Add(newstore); } else { s -= 1; } } } } for (int a = 0; a < 10; a++) { BanditArea NewBand = CreateNewBand(NewMapData, a); if (NewBand != null) { NewMapData.GenerateIndexes.Bandits.Add(NewBand); } else { a -= 1; } } for (int o = 0; o < 10; o++) { int randPlace = Random.Range(0, NewMapData.Tiles.Count); if (NewMapData.Tiles[randPlace].Empty == true) { Obstacle newObst = new Obstacle(); newObst.Skin = Random.Range(1, 4); newObst.Place = randPlace; NewMapData.GenerateIndexes.Obstacles.Add(newObst); } else { o -= 1; } } string SaveData = JsonUtility.ToJson(NewMapData); StreamWriter WriteData = new StreamWriter(Application.persistentDataPath + "/MapData.json"); WriteData.Write(SaveData); WriteData.Close(); string SaveStores = JsonUtility.ToJson(StoresStack); StreamWriter WriteStores = new StreamWriter(Application.persistentDataPath + "/StoresStack.json"); WriteStores.Write(SaveStores); WriteStores.Close(); }
public Store CreateNewStore(MapData NewMapData, StoreStack StoresStack, string Type, int StoreID, bool In_Radius) { if (Type == "Slaves") { int RandomCell = NewMapData.Tiles[Random.Range(0, NewMapData.GenerateIndexes.Columns * NewMapData.GenerateIndexes.Row - 1)].TileID; if (NewMapData.Tiles[RandomCell].Empty == true) { MapTileSample Tile = NewMapData.Tiles[RandomCell]; Store newStore = new Store(); StorePoint AddStore = new StorePoint(); newStore.TileID = Tile.TileID; newStore.StoreID = StoreID; newStore.Type = Type; AddStore.TypeOfStore = newStore.Type; AddStore.StoreID = newStore.StoreID; AddStore.CountOfItem = Random.Range(10, 15); for (int Slv = 0; Slv < AddStore.CountOfItem; Slv++) { AddStore.SlaveRandomize(); } StoresStack.storePoint.Add(AddStore); if (StoreID == 0) { NewMapData.GenerateIndexes.PlayerCoords = Tile.Coordinates + new Vector3(0, 0, -5); } Tile.Empty = false; return(newStore); } else { return(null); } } if (Type == "Guns") { CreateInCircle newCirc = new CreateInCircle(); if (In_Radius == true) { newCirc.TakeCell = NewMapData.GenerateIndexes.Stores[StoreID - 1].TileID; newCirc.MapColumn = NewMapData.GenerateIndexes.Columns; newCirc.MapRow = NewMapData.GenerateIndexes.Row; newCirc.Radius = 2; newCirc.GenerateCell(); //Debug.Log(newCirc.TargetCell); if (NewMapData.Tiles[newCirc.TargetCell - 1].Empty == true) { MapTileSample Tile = NewMapData.Tiles[newCirc.TargetCell - 1]; Store newStore = new Store(); StorePoint AddStore = new StorePoint(); newStore.TileID = Tile.TileID; newStore.StoreID = StoreID; newStore.Type = Type; AddStore.TypeOfStore = newStore.Type; AddStore.StoreID = newStore.StoreID; AddStore.CountOfItem = Random.Range(10, 15); for (int Wpn = 0; Wpn < AddStore.CountOfItem; Wpn++) { AddStore.WeaponRandomize(); } StoresStack.storePoint.Add(AddStore); Tile.Empty = false; return(newStore); } else { return(null); } } else { int RandCell = Random.Range(0, NewMapData.Tiles.Count); if (NewMapData.Tiles[RandCell].Empty == true) { MapTileSample Tile = NewMapData.Tiles[RandCell]; Store newStore = new Store(); StorePoint AddStore = new StorePoint(); newStore.TileID = Tile.TileID; newStore.StoreID = StoreID; newStore.Type = Type; AddStore.TypeOfStore = newStore.Type; AddStore.StoreID = newStore.StoreID; AddStore.CountOfItem = Random.Range(10, 15); for (int Wpn = 0; Wpn < AddStore.CountOfItem; Wpn++) { AddStore.WeaponRandomize(); } StoresStack.storePoint.Add(AddStore); Tile.Empty = false; return(newStore); } else { return(null); } } } if (Type == "Bullets") { if (In_Radius == true) { CreateInCircle newCirc = new CreateInCircle(); newCirc.TakeCell = NewMapData.GenerateIndexes.Stores[StoreID - 1].TileID; newCirc.MapColumn = NewMapData.GenerateIndexes.Columns; newCirc.MapRow = NewMapData.GenerateIndexes.Row; newCirc.Radius = 2; newCirc.GenerateCell(); //Debug.Log(newCirc.TargetCell); if (NewMapData.Tiles[newCirc.TargetCell - 1].Empty == true) { MapTileSample Tile = NewMapData.Tiles[newCirc.TargetCell - 1]; Store newStore = new Store(); StorePoint AddStore = new StorePoint(); newStore.TileID = Tile.TileID; newStore.StoreID = StoreID; newStore.Type = Type; AddStore.TypeOfStore = newStore.Type; AddStore.StoreID = newStore.StoreID; AddStore.CountOfItem = Random.Range(10, 15); for (int Bul = 0; Bul < AddStore.CountOfItem; Bul++) { AddStore.BulletRandomize(); } StoresStack.storePoint.Add(AddStore); Tile.Empty = false; return(newStore); } else { return(null); } } else { int RandCell = Random.Range(0, NewMapData.Tiles.Count); if (NewMapData.Tiles[RandCell].Empty == true) { MapTileSample Tile = NewMapData.Tiles[RandCell]; Store newStore = new Store(); StorePoint AddStore = new StorePoint(); newStore.TileID = Tile.TileID; newStore.StoreID = StoreID; newStore.Type = Type; AddStore.TypeOfStore = newStore.Type; AddStore.StoreID = newStore.StoreID; AddStore.CountOfItem = Random.Range(10, 15); for (int Bul = 0; Bul < AddStore.CountOfItem; Bul++) { AddStore.BulletRandomize(); } StoresStack.storePoint.Add(AddStore); Tile.Empty = false; return(newStore); } else { return(null); } } } if (Type == "Stuff") { if (In_Radius == true) { CreateInCircle newCirc = new CreateInCircle(); newCirc.TakeCell = NewMapData.GenerateIndexes.Stores[StoreID - 1].TileID; newCirc.MapColumn = NewMapData.GenerateIndexes.Columns; newCirc.MapRow = NewMapData.GenerateIndexes.Row; newCirc.Radius = 2; newCirc.GenerateCell(); if (NewMapData.Tiles[newCirc.TargetCell - 1].Empty == true) { MapTileSample Tile = NewMapData.Tiles[newCirc.TargetCell - 1]; Store newStore = new Store(); StorePoint AddStore = new StorePoint(); newStore.TileID = Tile.TileID; newStore.StoreID = StoreID; newStore.Type = Type; AddStore.TypeOfStore = newStore.Type; AddStore.StoreID = newStore.StoreID; AddStore.CountOfItem = Random.Range(10, 15); for (int Stf = 0; Stf < AddStore.CountOfItem; Stf++) { AddStore.StuffRandomize(Stf); } StoresStack.storePoint.Add(AddStore); Tile.Empty = false; return(newStore); } else { return(null); } } else { int RandCell = Random.Range(0, NewMapData.Tiles.Count); if (NewMapData.Tiles[RandCell].Empty == true) { MapTileSample Tile = NewMapData.Tiles[RandCell]; Store newStore = new Store(); StorePoint AddStore = new StorePoint(); newStore.TileID = Tile.TileID; newStore.StoreID = StoreID; newStore.Type = Type; AddStore.TypeOfStore = newStore.Type; AddStore.StoreID = newStore.StoreID; AddStore.CountOfItem = Random.Range(10, 15); for (int Stf = 0; Stf < AddStore.CountOfItem; Stf++) { AddStore.StuffRandomize(Stf); } StoresStack.storePoint.Add(AddStore); Tile.Empty = false; return(newStore); } else { return(null); } } } if (Type == "Recycling") { //CreateInCircle newCirc = new CreateInCircle(); //newCirc.TakeCell = NewMapData.GenerateIndexes.Stores[StoreID - 1].TileID; //newCirc.MapColumn = NewMapData.GenerateIndexes.Columns; //newCirc.MapRow = NewMapData.GenerateIndexes.Row; //newCirc.Radius = 3; //newCirc.GenerateCell(); int RandomCell = NewMapData.Tiles[Random.Range(0, NewMapData.Tiles.Count)].TileID; Debug.Log(RandomCell); if (NewMapData.Tiles[RandomCell].Empty == true) { MapTileSample Tile = NewMapData.Tiles[RandomCell]; Store newStore = new Store(); StorePoint AddStore = new StorePoint(); newStore.TileID = Tile.TileID; newStore.StoreID = StoreID; newStore.Type = Type; AddStore.TypeOfStore = newStore.Type; AddStore.StoreID = newStore.StoreID; StoresStack.storePoint.Add(AddStore); Tile.Empty = false; return(newStore); } else { return(null); } } else { return(null); } }