예제 #1
0
        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();
                    }
                }
            }
        }