using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class RealmLevelUpBehaviour : MonoBehaviour { [SerializeField] Text m_RealmLevel; [SerializeField] Button m_LevelUp; [SerializeField] IntensifySmoothSlider ExpSlider; [SerializeField] Text m_ExpText; RealmModel model { get { return ModelCenter.Instance.GetModel(); } } private void Awake() { m_LevelUp.AddListener(OnLevelUp); PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent; PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent; } public void Display() { //RealmLV1 如 55级 筑基后期 · 12阶 //L1091 {0}阶 //LoadIconLV {0}级 var config = RealmConfig.Get(PlayerDatas.Instance.baseData.realmLevel); var beforeConfig = RealmConfig.Get(PlayerDatas.Instance.baseData.realmLevel - 1); int newRankLV = PlayerDatas.Instance.baseData.LV - beforeConfig.LVMax; m_RealmLevel.text = Language.Get("RealmLV1", Language.Get("LoadIconLV", PlayerDatas.Instance.baseData.LV), config.Name, Language.Get("L1091", UIHelper.ChineseNumber(newRankLV))); ulong totalExp = (ulong)PlayerDatas.Instance.baseData.TotalExp + (ulong)PlayerDatas.Instance.baseData.ExpPoint * Constants.ExpPointValue; ulong maxExp = (ulong)PlayerLVConfig.GetExpByPlayerLv(PlayerDatas.Instance.baseData.LV); ExpSlider.value = (float)totalExp / maxExp; m_ExpText.text = StringUtility.Contact(UIHelper.ReplaceLargeNumEx(totalExp), "/", UIHelper.ReplaceLargeNumEx(maxExp)); m_LevelUp.SetActive(PlayerDatas.Instance.baseData.realmLevel < model.realmMaxLevel); } private void OnLevelUp() { int error; bool hasBoss; bool hasAward; int id; if (model.TryLevelUp(out error, out hasBoss, out hasAward, out id)) { ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("RealmBreakUP"), (bool isOk) => { if (isOk) { CA523_tagCMRealmLVUp pak = new CA523_tagCMRealmLVUp(); GameNetSystem.Instance.SendInfo(pak); } }); } else { //根据任务引导 if (error < 100) { model.RealMissionGuide(error, id); } else { DisplayErrorTip(error); } } } void DisplayErrorTip(int error) { switch (error) { case 101: SysNotifyMgr.Instance.ShowTip("RealmMissionAward"); model.RequestAllAwards(); break; case 102: SysNotifyMgr.Instance.ShowTip("RealmLevelUpError_1"); model.RealMissionGuide(1); break; case 103: SysNotifyMgr.Instance.ShowTip("RealmLevelUpError_2"); model.RealMissionGuide(1); break; } } private void PlayerDataRefreshEvent(PlayerDataType dataType) { if (dataType == PlayerDataType.RealmLevel || dataType == PlayerDataType.LV || dataType == PlayerDataType.TotalExp) { Display(); } } } }