Newer
Older
TheVengeance-Project-IADE-Unity2D / Assets / Scripts / UI / Upgrades / Attack / DoAttackUpgrades.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class DoAttackUpgrades : MonoBehaviour
{
    //GameObject Variables
    public GameObject noGoldText; //player has no gold but still trys to do the upgrade
    public GameObject noLevelText; //player has a lower level than what is needed but still trys to do the upgrade
    public GameObject noGoldOrLevelText; //Both previous ones
    public GameObject upgradedText;

    //Toggle Variables
    private Toggle attackUp1, attackUp2, attackUp3, attackUp4;

    //Button Variables
    private Button doUpgradeButton; //Upgrade Button

    //Script Variables
    private PlayerGold playerGold;
    private PlayerLevel playerLevel;
    private PlayerController playerController;
    private AttackUpgradesInfo attackUpgradesInfo;

    //Float Variables ---> Timers
    private float showMessageTimer = 0;
    private float showUpgradedMessageTimer = 0;

    //Float Variables ---> Cooldown Timers
    public float showMessageCoolDownTimer = 1f;
    public float showUpgradedcoolDownTimer = 1f;

    //Int Variables ---> This variables will store the Hashatable normal attack values
    private int normalAttack1, normalAttack2, normalAttack3, normalAttack4;

    //Int Variables ---> This variables will store the Hashatable strong attack values
    private int strongAttack1, strongAttack2, strongAttack3, strongAttack4;

    //Int Variables ---> This variables will store the Hashatable level values
    private int levelUp1, levelUp2, levelUp3, levelUp4;

    //Int Variables ---> This variables will store the Hashatable gold values
    private int goldUp1, goldUp2, goldUp3, goldUp4;

    //Bool Variables ---> This variables will define if the upgrade is done or not
    [HideInInspector] public bool upgrade1, upgrade2, upgrade3, upgrade4;
    [HideInInspector] public bool cantUpgradeMessage;

    // Start is called before the first frame update
    void Start()
    {
        cantUpgradeMessage = false;
        attackUpgradesInfo = FindObjectOfType<AttackUpgradesInfo>();
        playerGold = FindObjectOfType<PlayerGold>();
        playerLevel = FindObjectOfType<PlayerLevel>();
        playerController = FindObjectOfType<PlayerController>();
        doUpgradeButton = GetComponent<Button>();

        upgrade1 = false;
        upgrade2 = false;
        upgrade3 = false;
        upgrade4 = false;

        noGoldText.gameObject.SetActive(false);
        noLevelText.gameObject.SetActive(false);
        noGoldOrLevelText.gameObject.SetActive(false);

        attackUp1 = attackUpgradesInfo.attackToggle1;
        attackUp2 = attackUpgradesInfo.attackToggle2;
        attackUp3 = attackUpgradesInfo.attackToggle3;
        attackUp4 = attackUpgradesInfo.attackToggle4;

        levelUp1 = (int)attackUpgradesInfo.attackdata.GetValue("Level1");
        levelUp2 = (int)attackUpgradesInfo.attackdata.GetValue("Level2");
        levelUp3 = (int)attackUpgradesInfo.attackdata.GetValue("Level3");
        levelUp4 = (int)attackUpgradesInfo.attackdata.GetValue("Level4");

        goldUp1 = (int)attackUpgradesInfo.attackdata.GetValue("Gold1");
        goldUp2 = (int)attackUpgradesInfo.attackdata.GetValue("Gold2");
        goldUp3 = (int)attackUpgradesInfo.attackdata.GetValue("Gold3");
        goldUp4 = (int)attackUpgradesInfo.attackdata.GetValue("Gold4");

        normalAttack1 = (int)attackUpgradesInfo.attackdata.GetValue("NormalAttack1");
        normalAttack2 = (int)attackUpgradesInfo.attackdata.GetValue("NormalAttack2");
        normalAttack3 = (int)attackUpgradesInfo.attackdata.GetValue("NormalAttack3");
        normalAttack4 = (int)attackUpgradesInfo.attackdata.GetValue("NormalAttack4");

        strongAttack1 = (int)attackUpgradesInfo.attackdata.GetValue("StrongAttack1");
        strongAttack2 = (int)attackUpgradesInfo.attackdata.GetValue("StrongAttack2");
        strongAttack3 = (int)attackUpgradesInfo.attackdata.GetValue("StrongAttack3");
        strongAttack4 = (int)attackUpgradesInfo.attackdata.GetValue("StrongAttack4");
    }

    // Update is called once per frame
    void Update()
    {
        doUpgradeButton.onClick.AddListener(Upgrade);
        MessageTimer();
        UpgradedMessageTimer();
    }

    //This method will run after the player pressed Upgrade Button
    //Will check if the player have requirements to do the upgrades
    private void Upgrade()
    {
        if (attackUp1.isOn == true)
        {
            if (playerLevel.Level >= levelUp1 && playerGold.gold >= goldUp1 && upgrade1 == false && showUpgradedMessageTimer > 0)
            {
                upgradedText.gameObject.SetActive(true);
                playerController.normalPlayerAttack += normalAttack1;
                playerController.strongPlayerAttack += strongAttack1;
                playerGold.gold -= goldUp1;
                upgrade1 = true;
            }

            else if (playerLevel.Level < levelUp1 && playerGold.gold >= goldUp1 && upgrade1 == false && showMessageTimer > 0)
            {
                noLevelText.gameObject.SetActive(true);
                cantUpgradeMessage = true;
            }

            else if (playerGold.gold < goldUp1 && playerLevel.Level >= levelUp1 && upgrade1 == false && showMessageTimer > 0)
            {
                noGoldText.gameObject.SetActive(true);
                cantUpgradeMessage = true;
            }

            else if (playerGold.gold < goldUp1 && playerLevel.Level < levelUp1 && upgrade1 == false && showMessageTimer > 0)
            {
                noGoldOrLevelText.gameObject.SetActive(true);
                cantUpgradeMessage = true;
            }
        }

        else if (attackUp2.isOn == true)
        {
            if (playerLevel.Level >= levelUp2 && playerGold.gold >= goldUp2 && upgrade2 == false && showUpgradedMessageTimer > 0)
            {
                upgradedText.gameObject.SetActive(true);
                playerController.normalPlayerAttack += normalAttack2;
                playerController.strongPlayerAttack += strongAttack2;
                playerGold.gold -= goldUp2;
                upgrade2 = true;
            }

            else if (playerLevel.Level < levelUp2 && playerGold.gold >= goldUp2 && upgrade2 == false && showMessageTimer > 0)
            {
                noLevelText.gameObject.SetActive(true);
                cantUpgradeMessage = true;
            }

            else if (playerGold.gold < goldUp2 && playerLevel.Level >= levelUp2 && upgrade2 == false && showMessageTimer > 0)
            {
                noGoldText.gameObject.SetActive(true);
                cantUpgradeMessage = true;
            }

            else if (playerGold.gold < goldUp2 && playerLevel.Level < levelUp2 && upgrade2 == false && showMessageTimer > 0)
            {
                noGoldOrLevelText.gameObject.SetActive(true);
                cantUpgradeMessage = true;
            }
        }

        else if (attackUp3.isOn == true)
        {
            if (playerLevel.Level >= levelUp3 && playerGold.gold >= goldUp3 && upgrade3 == false && showUpgradedMessageTimer > 0)
            {
                upgradedText.gameObject.SetActive(true);
                playerController.normalPlayerAttack += normalAttack3;
                playerController.strongPlayerAttack += strongAttack3;
                playerGold.gold -= goldUp3;
                upgrade3 = true;
            }

            else if (playerLevel.Level < levelUp3 && playerGold.gold >= goldUp3 && upgrade3 == false && showMessageTimer > 0)
            {
                noLevelText.gameObject.SetActive(true);
                cantUpgradeMessage = true;
            }

            else if (playerGold.gold < goldUp3 && playerLevel.Level >= levelUp3 && upgrade3 == false && showMessageTimer > 0)
            {
                noGoldText.gameObject.SetActive(true);
                cantUpgradeMessage = true;
            }

            else if (playerGold.gold < goldUp3 && playerLevel.Level < levelUp3 && upgrade3 == false && showMessageTimer > 0)
            {
                noGoldOrLevelText.gameObject.SetActive(true);
                cantUpgradeMessage = true;
            }
        }

        else if (attackUp4.isOn == true)
        {
            if (playerLevel.Level >= levelUp4 && playerGold.gold >= goldUp4 && upgrade4 == false && showUpgradedMessageTimer > 0)
            {
                upgradedText.gameObject.SetActive(true);
                playerController.normalPlayerAttack += normalAttack4;
                playerController.strongPlayerAttack += strongAttack4;
                playerGold.gold -= goldUp4;
                upgrade4 = true;
            }

            else if (playerLevel.Level < levelUp4 && playerGold.gold >= goldUp4 && upgrade4 == false && showMessageTimer > 0)
            {
                noLevelText.gameObject.SetActive(true);
                cantUpgradeMessage = true;
            }

            else if (playerGold.gold < goldUp4 && playerLevel.Level >= levelUp4 && upgrade4 == false && showMessageTimer > 0)
            {
                noGoldText.gameObject.SetActive(true);
                cantUpgradeMessage = true;
            }

            else if (playerGold.gold < goldUp4 && playerLevel.Level < levelUp4 && upgrade4 == false && showMessageTimer > 0)
            {
                noGoldOrLevelText.gameObject.SetActive(true);
                cantUpgradeMessage = true;
            }
        }
        showMessageTimer = showMessageCoolDownTimer;
        showUpgradedMessageTimer = showUpgradedcoolDownTimer;
    }

    //This method will activate the timer for all the messages related to the upgrades
    private void MessageTimer()
    {
        if (showMessageTimer <= 0)
        {
            upgradedText.gameObject.SetActive(false);
            noGoldText.gameObject.SetActive(false);
            noLevelText.gameObject.SetActive(false);
            noGoldOrLevelText.gameObject.SetActive(false);
            cantUpgradeMessage = false;
        }
        else
        {
            showMessageTimer -= Time.deltaTime;
        }
    }

    //This method will activate the timer for all the messages related to the upgrades
    private void UpgradedMessageTimer()
    {
        if (showMessageTimer <= 0)
        {
            upgradedText.gameObject.SetActive(false);
        }
        else
        {
            showUpgradedMessageTimer -= Time.deltaTime;
        }

    }
}