public Building UpgradeBuilding(Building pBuilding) { if (pBuilding is Factory) { Building[] buildingsInRange = currentCity.GetBuildingsAroundTile(1, pBuilding.GetBuildingTile()); Factory[] factoriesPrefabs = Glob.GetFactoriesPrefabs(); int amountOfFactories = 0; foreach (Building pBuildingFromList in buildingsInRange) { if (pBuildingFromList is Factory) { amountOfFactories++; ReplaceFactory(pBuildingFromList as Factory, 1); } } Factory factoryToPlace; if (amountOfFactories > factoriesPrefabs.Length) { amountOfFactories = factoriesPrefabs.Length; } factoryToPlace = factoriesPrefabs[amountOfFactories]; factoryToPlace = Instantiate(factoryToPlace); factoryToPlace.AddBoost(amountOfFactories); return(factoryToPlace); } else { return(pBuilding); } }
public void ReplaceFactory(Factory pCurrentFactory, int pIndexChange) { Factory[] factoriesPrefab = Glob.GetFactoriesPrefabs(); int boost = pCurrentFactory.GetBoost(); int index = boost + pIndexChange; if (index >= factoriesPrefab.Length) { index = factoriesPrefab.Length - 1; } // Debug.Log("Index is " + index + " array length is " + factoriesPrefab.Length); Factory newFactory = Instantiate(factoriesPrefab[index]); newFactory.AddBoost(boost + pIndexChange); newFactory.SetBuildingPhase(Building.BuildingPhase.DONE); newFactory.SetBuildingTile(pCurrentFactory.GetBuildingTile()); pCurrentFactory.GetBuildingTile().SetBuilding(newFactory); Destroy(pCurrentFactory.gameObject); }