Beispiel #1
0
    public static LocalUpgrade MakeLocalUpgrade(StatsType newStatsType, int newStatsIndex, float newChange, string newDescription, float[] newCostArray, float newCostIncrease)
    {
        LocalUpgrade newLocalUpGrade = MakeLocalUpgrade(newStatsType, newStatsIndex, newChange, newDescription);

        newLocalUpGrade.costArray    = newCostArray;
        newLocalUpGrade.costIncrease = newCostIncrease;
        return(newLocalUpGrade);
    }
Beispiel #2
0
    public static LocalUpgrade MakeLocalUpgrade(StatsType newStatsType, int newStatsIndex, float newChange, string newDescription)
    {
        LocalUpgrade newLocalUpgrade = new LocalUpgrade();

        newLocalUpgrade.rank        = 1;
        newLocalUpgrade.statsType   = newStatsType;
        newLocalUpgrade.statsIndex  = newStatsIndex;
        newLocalUpgrade.change      = newChange;
        newLocalUpgrade.description = newDescription;
        return(newLocalUpgrade);
    }
Beispiel #3
0
 private static void UpgradeStat(WorldObject worldObject, LocalUpgrade lU, float upgradeAmount)
 {
     worldObject.statsDick[lU.statsType][lU.statsIndex] += upgradeAmount;
     if (lU.statsType == StatsType.Health)
     {
         worldObject.statsDick[lU.statsType][0] = worldObject.healthArray[0] / (worldObject.healthArray[1] - upgradeAmount) * worldObject.healthArray[1];
         if (worldObject.healthBar)
         {
             worldObject.healthBar.ResetBar();
         }
     }
 }
Beispiel #4
0
    public void CancelUpgrade()
    {
        selectedBuilding.isUpgrading = false;
        LocalUpgrade activeUpgrade = selectedBuilding.localUpgradesList [selectedBuilding.GetActiveUpgradeIndex()][0];

        selectedBuilding.GetPlayer().CancelPurchase(activeUpgrade.costArray);
        TrainingProgressBar.CloseBar();
        cancelButton.SetActive(false);
        SetRemainingCount();
        foreach (LocalUpgradesMenuButton mB in menuButtons)
        {
            mB.gameObject.SetActive(true);
        }
    }
Beispiel #5
0
    public static float GetUpgradeAmount(Building poopBuilding, LocalUpgrade lU)
    {
        float upgradeAmount = 0f;

        if (lU.asAddition)
        {
            upgradeAmount = lU.change;
        }
        else if (!lU.isUnitUpgrade)
        {
            upgradeAmount = lU.change * poopBuilding.GetLocalStat(lU.statsType, lU.statsIndex);
        }
        else
        {
            upgradeAmount = lU.change * (poopBuilding as MobTrainer).GetMob(0).GetLocalStat(lU.statsType, lU.statsIndex);
        }
        return(upgradeAmount);
    }
Beispiel #6
0
    public static void FinishUpgrade(Building finishedBuilding, int locUpIndex)
    {
        LocalUpgrade firstLU = finishedBuilding.localUpgradesList[locUpIndex][0];

        for (int i = 0; i < firstLU.costArray.Length; i++)
        {
            finishedBuilding.localUpgradesList[locUpIndex][0].costArray[i] *= firstLU.costIncrease;
        }
        finishedBuilding.localUpgradesList[locUpIndex][0].rank++;
        if (isActive && finishedBuilding == selectedBuilding)
        {
            SetRemainingCount();
            TrainingProgressBar.CloseBar();
            foreach (LocalUpgradesMenuButton lUButton in menuButtons)
            {
                lUButton.gameObject.SetActive(true);
            }
        }
        for (int i = 0; i < finishedBuilding.localUpgradesList[locUpIndex].Length; i++)
        {
            LocalUpgrade lU            = finishedBuilding.localUpgradesList[locUpIndex][i];
            float        upgradeAmount = GetUpgradeAmount(finishedBuilding, lU);
            if (!lU.isUnitUpgrade)
            {
                UpgradeStat(finishedBuilding as WorldObject, lU, upgradeAmount);
            }
            else
            {
                MobTrainer mT = finishedBuilding as MobTrainer;
                for (int j = 0; j < mT.mobTrainerStatsArray[0]; j++)
                {
                    UpgradeStat(mT.GetMob(j) as WorldObject, lU, upgradeAmount);
                }
                mT.locUpUnitStatsDick[lU.statsType][lU.statsIndex] += upgradeAmount;
            }
            if (lU.messageArray != null)
            {
                foreach (string message in lU.messageArray)
                {
                    finishedBuilding.SendMessage(message, SendMessageOptions.RequireReceiver);
                }
            }
        }
    }
Beispiel #7
0
    public void SetDescriptionText()
    {
        string description = "";

        for (int i = 0; i < selectedBuilding.localUpgradesList[selectedLUB.locUpIndex].Length; i++)
        {
            LocalUpgrade lU            = selectedBuilding.localUpgradesList[selectedLUB.locUpIndex][i];
            float        upgradeAmount = GetUpgradeAmount(selectedBuilding, lU);
            string[]     brokenDes     = lU.description.Split('\r');
            if (!lU.descriptionAsPercentage)
            {
                description += brokenDes[0] + Mathf.Abs(upgradeAmount).ToString("0.##") + brokenDes[1];
            }
            else
            {
                description += brokenDes[0] + Mathf.Abs(lU.change * 100f).ToString("0.##") + brokenDes[1];
            }
        }
        descriptionText.text = description;
    }
Beispiel #8
0
        /** A set of private functions to refresh the local inventory whenever there are changes on runtime. **/

        public static void RefreshOnGoodUpgrade(VirtualGood vg, UpgradeVG uvg)
        {
            if (uvg == null)
            {
                localUpgrades.Remove(vg.ItemId);
            }
            else
            {
                int          upgradeLevel = GetGoodUpgradeLevel(vg.ItemId);
                LocalUpgrade upgrade      = localUpgrades[vg.ItemId];
                if (upgrade != null)
                {
                    upgrade.itemId = uvg.ItemId;
                    upgrade.level  = upgradeLevel;
                }
                else
                {
                    localUpgrades.Add(vg.ItemId, new LocalUpgrade {
                        itemId = uvg.ItemId, level = upgradeLevel
                    });
                }
            }
        }
 private void OnEnable()
 {
     if (LocalUpgradesMenu.selectedBuilding)
     {
         if (locUpIndex < LocalUpgradesMenu.selectedBuilding.localUpgradesList.Count)
         {
             rankText.gameObject.SetActive(true);
             if (LocalUpgradesMenu.selectedBuilding.localUpgradesList [locUpIndex][0].rank > 1)
             {
                 rankText.text = (LocalUpgradesMenu.selectedBuilding.localUpgradesList [locUpIndex][0].rank - 1).ToString();
             }
             else
             {
                 rankText.text = "";
             }
             // set stat sprites
             int       lUCount         = LocalUpgradesMenu.selectedBuilding.localUpgradesList [locUpIndex].Length;
             bool      allSameStat     = false;
             Sprite    firstMiscSprite = LocalUpgradesMenu.selectedBuilding.localUpgradesList [locUpIndex][0].miscUpgradeSprite;
             StatsType firstStatsType  = LocalUpgradesMenu.selectedBuilding.localUpgradesList [locUpIndex][0].statsType;
             for (int i = 0; i < lUCount; i++)
             {
                 Sprite    miscSprite  = LocalUpgradesMenu.selectedBuilding.localUpgradesList [locUpIndex][i].miscUpgradeSprite;
                 StatsType upStatsType = LocalUpgradesMenu.selectedBuilding.localUpgradesList [locUpIndex][i].statsType;
                 if (miscSprite != firstMiscSprite || upStatsType != firstStatsType)
                 {
                     break;
                 }
                 else if (i == lUCount - 1)
                 {
                     allSameStat = true;
                 }
             }
             if (allSameStat)
             {
                 lUCount = 1;
             }
             for (int i = 0; i < lUCount; i++)
             {
                 statImages[i].gameObject.SetActive(true);
                 Sprite miscSprite = LocalUpgradesMenu.selectedBuilding.localUpgradesList [locUpIndex][i].miscUpgradeSprite;
                 if (miscSprite)
                 {
                     statImages[i].sprite = miscSprite;
                 }
                 else
                 {
                     StatsType statsType = LocalUpgradesMenu.selectedBuilding.localUpgradesList [locUpIndex][i].statsType;
                     if (statsType == StatsType.MobTrainerStats)
                     {
                         statImages[i].sprite = HUD.speciesPopSpriteDick[LocalUpgradesMenu.selectedBuilding.GetSpecies()];
                     }
                     else if (statsType == StatsType.ResourceStats)
                     {
                         ResourceType resType = (LocalUpgradesMenu.selectedBuilding as Resource).resource;
                         statImages[i].sprite = HUD.speciesResourceSpriteDick[LocalUpgradesMenu.selectedBuilding.GetSpecies()][resType];
                     }
                     else
                     {
                         statImages[i].sprite = LocalUpgradesMenu.statSpritesDick[statsType];
                     }
                 }
                 statImages[i].rectTransform.anchorMin = new Vector2(0.35f - 0.16f * (lUCount - 1) + i * 0.32f, 0.1f);
                 statImages[i].rectTransform.anchorMax = new Vector2(0.65f - 0.16f * (lUCount - 1) + i * 0.32f, 0.9f);
             }
             // set res sprites and costs
             LocalUpgrade lU       = LocalUpgradesMenu.selectedBuilding.localUpgradesList [locUpIndex][0];
             int          resCount = 0;
             for (int i = 0; i < lU.costArray.Length; i++)
             {
                 if (lU.costArray[i] > 0)
                 {
                     resTexts[resCount].text    = lU.costArray[i].ToString("0");
                     resImages[resCount].sprite = HUD.speciesResourceSpriteDick[LocalUpgradesMenu.selectedBuilding.GetSpecies()][GameManager.resourceTypeArraytoDick[i]];
                     resCount++;
                 }
             }
             // set res positions
             for (int i = 0; i < lU.costArray.Length; i++)
             {
                 if (i < resCount)
                 {
                     float totalWidth   = resImageWidth + resTextWidth;
                     float resImageMinX = 0.5f - (totalWidth / 2f) - (resCount - 1) * (totalWidth / 2f) + totalWidth * i;
                     float resTextMinX  = resImageMinX + resImageWidth;
                     resImages[i].gameObject.SetActive(true);
                     resImages[i].rectTransform.anchorMin = new Vector2(resImageMinX, resImages[i].rectTransform.anchorMin.y);
                     resImages[i].rectTransform.anchorMax = new Vector2(resTextMinX, resImages[i].rectTransform.anchorMax.y);
                     resTexts[i].gameObject.SetActive(true);
                     resTexts[i].rectTransform.anchorMin = new Vector2(resTextMinX, resTexts[i].rectTransform.anchorMin.y);
                     resTexts[i].rectTransform.anchorMax = new Vector2(resTextMinX + resTextWidth, resTexts[i].rectTransform.anchorMax.y);
                 }
                 else
                 {
                     resImages[i].gameObject.SetActive(false);
                     resTexts[i].gameObject.SetActive(false);
                 }
             }
             button.interactable = !(LocalUpgradesMenu.selectedBuilding.GetRemainingLocUpgrades() <= 0);
         }
         else
         {
             gameObject.SetActive(false);
         }
     }
 }