summaryrefslogtreecommitdiff
path: root/Assembly_CSharp/UpgradeButton.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assembly_CSharp/UpgradeButton.cs')
-rw-r--r--Assembly_CSharp/UpgradeButton.cs167
1 files changed, 167 insertions, 0 deletions
diff --git a/Assembly_CSharp/UpgradeButton.cs b/Assembly_CSharp/UpgradeButton.cs
new file mode 100644
index 0000000..271976b
--- /dev/null
+++ b/Assembly_CSharp/UpgradeButton.cs
@@ -0,0 +1,167 @@
+using System.Collections;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class UpgradeButton : MonoBehaviour
+{
+ [SerializeField]
+ private string unlockString;
+
+ [SerializeField]
+ public int xpCost;
+
+ public int cardCountRequirement;
+
+ [SerializeField]
+ private bool countsAsCardUnlock = true;
+
+ [SerializeField]
+ private bool countAsDevelopment;
+
+ [SerializeField]
+ private Sprite unlockedSprite;
+
+ [SerializeField]
+ private bool checkAchievements;
+
+ [SerializeField]
+ private GameObject priceTag;
+
+ private GameObject currentPriceTag;
+
+ private Image img;
+
+ private Button btn;
+
+ [SerializeField]
+ private UpgradeButton previous;
+
+ [SerializeField]
+ private UpgradeButton[] next;
+
+ public bool unlocked;
+
+ private void Start()
+ {
+ img = GetComponent<Image>();
+ btn = GetComponent<Button>();
+ CheckUnlock();
+ StartCoroutine(LateStart());
+ }
+
+ public void Unlock()
+ {
+ if (UpgradeManager.instance.xp >= xpCost)
+ {
+ SFXManager.instance.ButtonClick();
+ UpgradeManager.instance.AddXP(-xpCost);
+ PlayerPrefs.SetInt(unlockString, 1);
+ if (checkAchievements)
+ {
+ AchievementManager.instance.CheckTowerUnlocks();
+ }
+ UpgradeManager.instance.CountCard(countsAsCardUnlock);
+ UpgradeManager.instance.CountDevelopment(countAsDevelopment);
+ btn.enabled = false;
+ img.sprite = unlockedSprite;
+ unlocked = true;
+ UpdateTitleText();
+ UpgradeButton[] array = next;
+ for (int i = 0; i < array.Length; i++)
+ {
+ array[i].CheckEnabled();
+ }
+ }
+ }
+
+ public void ResetUnlock()
+ {
+ PlayerPrefs.SetInt(unlockString, 0);
+ unlocked = false;
+ }
+
+ private void CheckUnlock()
+ {
+ if (PlayerPrefs.GetInt(unlockString, 0) == 1)
+ {
+ btn.enabled = false;
+ img.sprite = unlockedSprite;
+ unlocked = true;
+ }
+ }
+
+ public void CheckEnabled()
+ {
+ if (previous == null)
+ {
+ if (cardCountRequirement <= UpgradeManager.instance.unlockedCardCount)
+ {
+ btn.interactable = true;
+ }
+ else
+ {
+ btn.interactable = false;
+ }
+ UpdateTitleText();
+ }
+ else
+ {
+ if (previous.unlocked && cardCountRequirement <= UpgradeManager.instance.unlockedCardCount)
+ {
+ btn.interactable = true;
+ }
+ else
+ {
+ btn.interactable = false;
+ }
+ UpdateTitleText();
+ }
+ }
+
+ private void UpdateTitleText()
+ {
+ if (!unlocked)
+ {
+ if (currentPriceTag == null)
+ {
+ currentPriceTag = Object.Instantiate(priceTag, base.transform);
+ currentPriceTag.transform.localPosition = new Vector3(-63.7f, 0f, 0f);
+ int num = cardCountRequirement - UpgradeManager.instance.unlockedCardCount;
+ if (num > 0)
+ {
+ currentPriceTag.GetComponent<RectTransform>().sizeDelta = new Vector2(75f, 50f);
+ currentPriceTag.GetComponentInChildren<Text>().text = " Unlock " + num + "\n more cards";
+ }
+ else
+ {
+ currentPriceTag.GetComponent<RectTransform>().sizeDelta = new Vector2(50f, 25f);
+ currentPriceTag.GetComponentInChildren<Text>().text = xpCost + " xp";
+ }
+ }
+ else
+ {
+ int num2 = cardCountRequirement - UpgradeManager.instance.unlockedCardCount;
+ if (num2 > 0)
+ {
+ currentPriceTag.GetComponent<RectTransform>().sizeDelta = new Vector2(75f, 50f);
+ currentPriceTag.GetComponentInChildren<Text>().text = " Unlock " + num2 + "\n more cards";
+ }
+ else
+ {
+ currentPriceTag.GetComponent<RectTransform>().sizeDelta = new Vector2(50f, 25f);
+ currentPriceTag.GetComponentInChildren<Text>().text = xpCost + " xp";
+ }
+ }
+ }
+ else if (currentPriceTag != null)
+ {
+ currentPriceTag.SetActive(value: false);
+ }
+ }
+
+ private IEnumerator LateStart()
+ {
+ yield return new WaitForSeconds(0.1f);
+ CheckEnabled();
+ }
+}