Beispiel #1
0
    private void UpdateButtonText(Button button, Upgrade upgrade)
    {
        int currentLevel = gameManager.upgradeLevelsDictionary[upgrade];
        UpgradesIdentifier upgradesIdentifier = upgradesModel.GetUpgradeEnum(upgrade, currentLevel + 1);

        if (upgradesIdentifier == UpgradesIdentifier.None)
        {
            upgradesIdentifier = upgradesModel.GetUpgradeEnum(upgrade, currentLevel);
        }
        var enumType            = typeof(UpgradesIdentifier);
        var memberInfos         = enumType.GetMember(upgradesIdentifier.ToString());
        var enumValueMemberInfo = memberInfos.FirstOrDefault(m => m.DeclaringType == enumType);
        var valueAttributes     = enumValueMemberInfo.GetCustomAttributes(typeof(Identifier), false);
        var description         = ((Identifier)valueAttributes[0]).enumIdentifier;

        int maxUpgradeLevel = upgradesModel.GetTotalUpgrades(upgrade);

        if (maxUpgradeLevel == currentLevel) // Check if upgrade is max
        {
            button.GetComponentInChildren <Text>().text = description + "\n - Max Level.";
        }
        else
        {
            button.GetComponentInChildren <Text>().text = description;
        }
    }
    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;
    }