예제 #1
0
    private void UpdateStatsBasedOnUnlockedUpgrades()
    {
        List <UpgradeScriptableObject> applicableUpgrades = GlobalPlayerProgress.getUnlockedUpgradesForSpecificTower(towerData);

        foreach (var upgrade in applicableUpgrades)
        {
            foreach (UpgradeScriptableObject.StatEffect effect in upgrade.upgradeEffects)
            {
                switch (effect.affects)
                {
                case UpgradeScriptableObject.UpgradeEffect.Damage:
                    damage = GlobalPlayerProgress.CalculateValueAfterUpgrade(damage, effect);
                    break;

                case UpgradeScriptableObject.UpgradeEffect.Cost:
                    break;

                case UpgradeScriptableObject.UpgradeEffect.Range:
                    range = GlobalPlayerProgress.CalculateValueAfterUpgrade(range, effect);
                    break;

                case UpgradeScriptableObject.UpgradeEffect.FiringRate:
                    firingRate = GlobalPlayerProgress.CalculateValueAfterUpgrade(firingRate, effect);
                    break;
                }
            }
        }
    }
예제 #2
0
    // Start is called before the first frame update
    void Start()
    {
        _upgradesPanel             = GameObject.Find("GlobalUpgrades");
        _upgradesPanelPlayerWallet = GameObject.Find("PlayerWallet");

        //Load all upgrades into the Global Player Progress class
        PlayerProgress playerProgress = new PlayerProgress();

        playerProgress = playerProgress.loadProgress();
        Debug.Log("Finished loading");
        GlobalPlayerProgress.UpdateUpgradePanel(playerProgress);
        GlobalPlayerProgress.UpdatePlayerWallet(playerProgress, _upgradesPanelPlayerWallet);
        _upgradesPanel.SetActive(false);

        unlockedLevels = GlobalPlayerProgress.GetUnlockedLevels(playerProgress);

        if (unlockedLevels.Count == 0)
        {
            unlockedLevels.Add(0);
        }

        foreach (int levelId in unlockedLevels)
        {
            GameObject levelBtn = GameObject.Find("Level_" + levelId + "_Btn");
            levelBtn.GetComponent <Button>().onClick.AddListener(() => showPanelForLevel(levelId));

            Addressables.LoadAssetAsync <Sprite>("Assets/Emerald Treasure/images/ui_seekbar_tick.png").Completed +=
                delegate(AsyncOperationHandle <Sprite> handle) { levelBtn.GetComponent <Image>().sprite = handle.Result; };
        }
    }
    private void UnlockUpgradeIfNotUnlocked()
    {
        if (!GlobalPlayerProgress.UnlockedUpgrades.Contains(upgrade))
        {
            bool canPurchase = isUpgradePurchasable();

            if (canPurchase)
            {
                foreach (KeyValuePair <StringLiterals.singularItemDrops, int> drops in upgrade.costs)
                {
                    GlobalPlayerProgress.playerDrops[drops.Key] -= drops.Value;
                }

                upgrade.isUnlocked = true;
                gameObject.GetComponent <Image>().sprite = upgrade.UpgradeIcon;
                GlobalPlayerProgress.UnlockedUpgrades.Add(upgrade);
                PlayerProgress currentPlayerProgress = new PlayerProgress();
                currentPlayerProgress.saveProgress();

                GlobalPlayerProgress.UpdatePlayerWallet(currentPlayerProgress, GameObject.Find("PlayerWallet"));
            }
        }
    }