123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- using System;
- using Player.Wallet;
- using TMPro;
- using UnityEngine;
- public class UpgradeUI : MonoBehaviour
- {
- [SerializeField] private TextMeshProUGUI[] upgradePriceDisplayText;
- [SerializeField] private TextMeshProUGUI[] levelDisplayText;
- [SerializeField] private AudioSource upgradeAudioSource;
- private int[] _playerUpgradesLevel = new int[4];
- private Wallet _wallet;
- private void Awake()
- {
- if (PlayerPrefs.GetInt("_playerWarriorLevel") == 0)
- {
- // 如果是新游戏,设置初始值
- PlayerPrefs.SetInt("_playerWarriorLevel", 3); // 增加初始战士数量
- PlayerPrefs.SetInt("_playerArcherLevel", 2); // 增加初始弓箭手数量
- PlayerPrefs.SetInt("_playerUpgradeWarriorLevel", 2); // 增加初始战士等级
- PlayerPrefs.SetInt("_playerUpgradeArcherLevel", 2); // 增加初始弓箭手等级
- }
- _playerUpgradesLevel[0] = PlayerPrefs.GetInt("_playerWarriorLevel");
- _playerUpgradesLevel[1] = PlayerPrefs.GetInt("_playerArcherLevel");
- _playerUpgradesLevel[2] = PlayerPrefs.GetInt("_playerUpgradeWarriorLevel");
- _playerUpgradesLevel[3] = PlayerPrefs.GetInt("_playerUpgradeArcherLevel");
- _wallet = FindObjectOfType<Wallet>();
- UpdateText();
- }
- public void BuyWarrior()
- {
- if (_wallet.GetMoney >= GetPrice(0))
- {
- _wallet.UseMoney(GetPrice(0));
- _playerUpgradesLevel[0]++;
- ComponentsManager.PlayerArmyManager.AddNewWarrior();
- SaveDatas();
- UpdateText();
- }
- }
- public void BuyArcher()
- {
- if (_wallet.GetMoney >= GetPrice(1))
- {
- _wallet.UseMoney(GetPrice(1));
- _playerUpgradesLevel[1]++;
- ComponentsManager.PlayerArmyManager.AddNewArcher();
- SaveDatas();
- UpdateText();
- if (ComponentsManager.Tutorial)
- {
- if (ComponentsManager.Tutorial.GetStep == 1)
- ComponentsManager.Tutorial.NextStep(2, true);
- }
- }
- }
- public void UpgradeWarriors()
- {
- if (_wallet.GetMoney >= GetPrice(2))
- {
- _wallet.UseMoney(GetPrice(2));
- _playerUpgradesLevel[2]++;
- ComponentsManager.PlayerArmyManager.ResetPlayerWarriors();
- SaveDatas();
- UpdateText();
- }
- }
- public void UpgradeArchers()
- {
- if (_wallet.GetMoney >= GetPrice(3))
- {
- _wallet.UseMoney(GetPrice(3));
- _playerUpgradesLevel[3]++;
- ComponentsManager.PlayerArmyManager.ResetPlayerWarriors();
- SaveDatas();
- UpdateText();
- if (ComponentsManager.Tutorial)
- {
- if (ComponentsManager.Tutorial.GetStep == 3)
- ComponentsManager.Tutorial.NextStep(4, true);
- }
- }
- }
- public int GetWarriorLevelUpgrade()
- {
- return _playerUpgradesLevel[2];
- }
- public int GetArcherLevelUpgrade()
- {
- return _playerUpgradesLevel[3];
- }
- private int GetPrice(int id)
- {
- return (int) (GameBalance.UpgradeBase[id].BasePrice *
- Math.Pow(GameBalance.UpgradeBase[id].BasePriceCoefficient, _playerUpgradesLevel[id]));
- }
- private void UpdateText()
- {
- for (int i = 0; i < upgradePriceDisplayText.Length; i++)
- {
- upgradePriceDisplayText[i].SetText(GetPrice(i).ToString());
- levelDisplayText[i].SetText((_playerUpgradesLevel[i] + 1).ToString());
- }
- levelDisplayText[0].SetText((_playerUpgradesLevel[0] + 2).ToString());
- levelDisplayText[1].SetText((_playerUpgradesLevel[1]).ToString());
- }
- private void SaveDatas()
- {
- PlayerPrefs.SetInt("_playerWarriorLevel", _playerUpgradesLevel[0]);
- PlayerPrefs.SetInt("_playerArcherLevel", _playerUpgradesLevel[1]);
- PlayerPrefs.SetInt("_playerUpgradeWarriorLevel", _playerUpgradesLevel[2]);
- PlayerPrefs.SetInt("_playerUpgradeArcherLevel", _playerUpgradesLevel[3]);
- upgradeAudioSource.Play();
- }
- }
|