예제 #1
0
    void ApplyUpgrades()
    {
        // Upgrade options
        GameManager        gameManager        = ServiceLocator.Get <GameManager>();
        UpgradesModel      upgradesModel      = ModelManager.UpgradesModel;
        UpgradesIdentifier upgradesIdentifier = UpgradesIdentifier.None;

        // Long Ranged Upgrade
        // Moved to tower script

        // Barricade Reduction Cost Upgrade
        // Moved to Barricade Spawner Script

        // Wife tower Upgrade
        Tower wife      = GameObject.FindGameObjectWithTag("Wife").GetComponent <Tower>();
        int   wifeLevel = gameManager.upgradeLevelsDictionary[UpgradeMenu.Upgrade.ExtraProjectiles] - 1;

        upgradesIdentifier = upgradesModel.GetUpgradeEnum(UpgradeMenu.Upgrade.ExtraProjectiles, wifeLevel + 1);
        if (wifeLevel >= 0)
        {
            wife.isShooting  = true;
            wife.attackRate -= upgradesModel.GetRecord(upgradesIdentifier).ModifierValue; //upgradeStats.throwingSpeed[wifeLevel];
        }

        // Specific Target Upgrade
        int specficLevel = gameManager.upgradeLevelsDictionary[UpgradeMenu.Upgrade.TargetEnemy] - 1;

        upgradesIdentifier = upgradesModel.GetUpgradeEnum(UpgradeMenu.Upgrade.TargetEnemy, specficLevel + 1);
        if (specficLevel >= 0)
        {
            towerInstance.GetComponent <Tower>().specificEnemy = gameManager.choosenTarget;//upgradesModel.GetRecord(upgradesIdentifier).Target;
        }
        // Fire Upgrade
        int fireLevel = gameManager.upgradeLevelsDictionary[UpgradeMenu.Upgrade.FireProjectile] - 1;

        upgradesIdentifier = upgradesModel.GetUpgradeEnum(UpgradeMenu.Upgrade.FireProjectile, fireLevel + 1);
        if (fireLevel >= 0)
        {
            towerInstance.GetComponent <Tower>().damageType   = DamageType.Fire;
            towerInstance.GetComponent <Tower>().fireDuration = upgradesModel.GetRecord(upgradesIdentifier).ModifierValue;// upgradeStats.fireDuration[fireLevel];
        }

        // Improved Barricades
        // Moved to Barricade Script

        // Barricade Spawn Rate Improved
        // Moved to Barricade Spawner Script

        // Trash Spawn Rate Improved
        // Moved to Resource Spawner Script

        // Improved Player HP
        // Moved to Player Script

        // Improved healing
        // Moved to Tower Script

        // UpdateTowerTrashCount
        towerInstance.GetComponent <Tower>().fullHealth = gameManager._houseHP;
    }
예제 #2
0
    private void DisplayChoosenUpgrade(Upgrade upgrade)
    {
        int currentLevel = gameManager.upgradeLevelsDictionary[upgrade];
        UpgradesIdentifier upgradesIdentifier = upgradesModel.GetUpgradeEnum(upgrade, currentLevel + 1);

        if (upgradesIdentifier == UpgradesIdentifier.None)
        {
            upgradesIdentifier = upgradesModel.GetUpgradeEnum(upgrade, currentLevel);
        }

        upgradeDescriptionText.text = "Description:\n" + upgradesModel.GetRecord(upgradesIdentifier).Description;
    }
예제 #3
0
    private void ApplyUpgrade(Upgrade upgrade, int currentLevel)
    {
        UpgradesIdentifier upgradesIdentifier = upgradesModel.GetUpgradeEnum(upgrade, currentLevel + 1);
        int maxUpgradeLevel = upgradesModel.GetTotalUpgrades(upgrade);

        if (maxUpgradeLevel > currentLevel)
        {
            if (gameManager._houseHP - upgradesModel.GetRecord(upgradesIdentifier).TrashCost <= minimumTrashToSpend) // Cannot afford upgrade
            {
                messageText.text = "Cannot Upgrade. Your trash cannot be less than " + minimumTrashToSpend + " after the upgrade.";
                messageText.transform.parent.gameObject.SetActive(true);
                return;
            }

            UpdateTrashCount(upgradesModel.GetRecord(upgradesIdentifier).TrashCost);
            gameManager.upgradeLevelsDictionary[upgrade]++;
            gameManager.upgradeEnabled[upgrade] = true;
            currentLevel++;
            if (upgrade == Upgrade.TargetEnemy) // Add target to list
            {
                gameManager.specialTargets.Add(upgradesModel.GetRecord(upgradesIdentifier).Target);
                gameManager.choosenTarget = upgradesModel.GetRecord(upgradesIdentifier).Target;
            }

            //Update UI
            if (maxUpgradeLevel > currentLevel) // Another upgrade available
            {
                upgradesIdentifier = upgradesModel.GetUpgradeEnum(upgrade, currentLevel + 1);
                DisplayChoosenUpgrade(upgrade, currentLevel);
            }
            UpdateUI();
        }
        else
        {
            messageText.text = "Maxium Upgrade Already Equiped.";
            messageText.transform.parent.gameObject.SetActive(true);
        }
    }