//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, May 08, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class ReikiRootResetWin : Window { [SerializeField] Transform m_ContainerFree; [SerializeField] Text m_FreeRemind; [SerializeField] Text m_ResetRemind1; [SerializeField] Transform m_ContainerCost; [SerializeField] Text m_ResetRemind2; [SerializeField] ItemBehaviour m_Item; [SerializeField] Button m_Reset; [SerializeField] Button m_Close; bool freeReset = false; ReikiRootModel model { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } SkillModel skillModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Reset.AddListener(OnReset); m_Close.AddListener(CloseClick); } protected override void OnPreOpen() { freeReset = PlayerDatas.Instance.baseData.LV < model.freeResetLevel; Display(); PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent; } protected override void OnAfterOpen() { } protected override void OnPreClose() { PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent; } protected override void OnAfterClose() { } #endregion void Display() { m_ContainerFree.SetActive(freeReset); m_ContainerCost.SetActive(!freeReset); m_FreeRemind.text = Language.Get("ReikiRoot2", model.freeResetLevel); m_ResetRemind1.text = Language.Get("ResetPoint", model.GetTotalWashPoint()); m_ResetRemind2.text = Language.Get("ResetPoint", model.GetTotalWashPoint()); if (!freeReset) { var count = 0; for (int i = 0; i < model.resetCostItemIds.Length; i++) { var items = packModel.GetItemsById(PackType.Item, model.resetCostItemIds[i]); if (items != null) { foreach (var item in items) { if (!ItemLogicUtility.Instance.IsOverdue(item.guid)) { count++; } } } } m_Item.SetItem(model.GetUnLimitTimeResetItem(), 1); m_Item.count.text = StringUtility.Contact(count >= 1 ? "" : "", count, "/", 1, ""); } } private void PlayerDataRefreshEvent(PlayerDataType dataType) { if (dataType == PlayerDataType.LV) { if (PlayerDatas.Instance.baseData.LV >= model.freeResetLevel && freeReset) { freeReset = false; Display(); } } } private void OnReset() { if (freeReset) { SetResetFlag(); var pak = new CB207_tagCMResetAttrPoint(); GameNetSystem.Instance.SendInfo(pak); model.resetReikiRootRecord = true; skillModel.skillMatchRedpointable = true; CloseImmediately(); } else { var count = 0; for (int i = 0; i < model.resetCostItemIds.Length; i++) { var items = packModel.GetItemsById(PackType.Item, model.resetCostItemIds[i]); if (items != null) { foreach (var item in items) { if (!ItemLogicUtility.Instance.IsOverdue(item.guid)) { count++; break; } } } } if (count < 1) { ItemTipUtility.Show(model.GetUnLimitTimeResetItem()); return; } SetResetFlag(); var pak = new CB207_tagCMResetAttrPoint(); GameNetSystem.Instance.SendInfo(pak); model.resetReikiRootRecord = true; skillModel.skillMatchRedpointable = true; CloseImmediately(); } } void SetResetFlag() { var win = WindowCenter.Instance.Get(); if (win != null) { win.m_ResetAnimationTime = DateTime.Now; } } } }