public static void AddResourceTile(TerrainManager.Tile tile) { SavedResourceTile newSavedTile = new SavedResourceTile(tile); data.resourceTiles.Add(newSavedTile); resourceTilesByPos.Add(newSavedTile.tilePos.ToVector2(), newSavedTile); }
public static void RemoveResourceTile(TerrainManager.Tile tile) { Vector2 key = TerrainManager.PosToV2(tile.tile.transform.position); SavedResourceTile oldTile = resourceTilesByPos [key]; data.resourceTiles.Remove(oldTile); resourceTilesByPos.Remove(key); }
public void Spawn() { ResourceInfo info = ResourceInfo.GetInfoFromIndex(resourceIndex); TerrainManager.Tile tile = TerrainManager.instance.tiles [tilePos.ToVector2()]; tile.resourceType = info.type; tile.tile.GetComponent <Renderer> ().material.color = info.colorLight; }
public SavedResourceTile(TerrainManager.Tile tile) { tilePos = new SavedTilePos(TerrainManager.PosToV2(tile.tile.transform.position)); resourceIndex = ResourceInfo.GetIndexFromType(tile.resourceType); }
void GenerateTiles() { tiles = new TerrainManager.Tile[tilePositions.Count]; // void tiles voidTileIndexes = new List <int> (); for (int i = 0; i < voidCount; i++) { voidTileIndexes.Add(GetAvaiableTileIndex(true)); } // resource tiles List <int> tileSpawnIDs = new List <int> (); foreach (var setSpawn in setSpawns) { if (setSpawn.type == TerrainManager.SetSpawn.SpawnType.Tile) { tileSpawnIDs.Add(setSpawn.spawnID); } } int tilesLeft = resourceTileCount - tileSpawnIDs.Count; for (int i = 0; i < tilesLeft; i++) { tileSpawnIDs.Add(teirInfo.resourceIndexes[Random.Range(0, teirInfo.resourceIndexes.Length)]); // print ("Index: " + i + ", ID: " + tileSpawnIDs [i]); } List <int> resourceTileSpawnIndexs = new List <int> (); for (int i = 0; i < tileSpawnIDs.Count; i++) { resourceTileSpawnIndexs.Add(GetAvaiableTileIndex(false)); } int index = 0; int resourceSpawnListIndex = 0; foreach (Vector2 tile in tilePositions) { if (!voidTileIndexes.Contains(index)) { int layer = Random.Range(0, teirInfo.layers.Length); float y = layer * heightPerLayer; Vector3 position = new Vector3(tile.x, y, tile.y); GameObject tileGO = (GameObject)Instantiate(tilePrefab, transform); tileGO.transform.localPosition = position; tileGO.name = "Tile (" + tile.x + "," + tile.y + ")"; ResourceInfo.ResourceType resourceInfoType; Color tileColor; ResourceInfo resourceInfo = new ResourceInfo(); if (resourceTileSpawnIndexs.Contains(index) && !GameManager.isLoadingFromSave) { int resourceIndex = tileSpawnIDs [resourceSpawnListIndex]; resourceSpawnListIndex++; resourceInfo = ResourceInfo.GetInfoFromIndex(resourceIndex); if (resourceInfo.hasTile) { resourceInfoType = resourceInfo.type; tileColor = resourceInfo.tileColor; } else { resourceInfoType = ResourceInfo.ResourceType.None; tileColor = teirInfo.layers [layer].color; } } else { resourceInfoType = ResourceInfo.ResourceType.None; tileColor = teirInfo.layers [layer].color; } TerrainManager.Tile tileInfo = new TerrainManager.Tile(tileGO, resourceInfoType, GetComponent <Island> (), tileColor, y); tileGO.GetComponent <MeshRenderer> ().material.color = tileColor; tiles [index] = tileInfo; if (!GameManager.isLoadingFromSave || !SavedGame.data.civilizedIslandIndexes.Contains(islandIndex)) { tm.tiles.Add(new Vector2(tile.x + transform.position.x, tile.y + transform.position.z), tileInfo); } if (resourceTileSpawnIndexs.Contains(index) && !GameManager.isLoadingFromSave) { for (int i = 0; i < resourcesPerTile; i++) { tm.SpawnResource(position: transform.TransformPoint(position), info: resourceInfo, island: GetComponent <Island>(), initialSpawn: true); } if (tileInfo.resourceType != ResourceInfo.ResourceType.None) { SavedGame.AddResourceTile(tileInfo); } } } index++; } }