private static void SpawnBuildings() { for (int y = 0; y < grid.GetLength(0); y++) { for (int x = 0; x < grid.GetLength(1); x++) { AbstractTile tile = grid[y, x]; if (!(tile is AbstractBuildingTile buildingTile)) { continue; } TileData tileData = UserSettings.GameData.GridData[new Vector2IntSerializable(x, y)]; buildingTile.SetSoilType(tileData.SoilType); buildingTile.SetFoundationType(tileData.FoundationType); buildingTile.SetBuildingType(tileData.BuildingType); if (tileData.HasDebris) { buildingTile.SpawnDebris(tileData.BuildingType, tileData.BuildingTier); continue; } // If there's a building, the tier would be higher than 0 if (tileData.BuildingTier > 0) { buildingTile.SpawnBuilding(false); BuildingHealth buildingHealth = buildingTile.Building.GetComponent <BuildingHealth>(); buildingHealth.SetCurrentHealth(tileData.SoilHealth, tileData.FoundationHealth, tileData.BuildingHealth); } else { if (tileData.HasSoil) { buildingTile.SpawnSoil(); if (tileData.HasFoundation) { buildingTile.SpawnFoundation(); } } continue; } BuildingUpgrade buildingUpgrade = buildingTile.Building.GetComponent <BuildingUpgrade>(); while (buildingTile.Building.CurrentTier != tileData.BuildingTier) { buildingUpgrade.Upgrade(); } } } }