Пример #1
0
    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);
        }
    }
Пример #2
0
    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);
    }