//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, November 01, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class DungeonInspireWin : Window { [SerializeField] Button m_CoinInspire; [SerializeField] RectTransform m_CoinInspireCheck; [SerializeField] Button m_FairyInspire; [SerializeField] RectTransform m_FairyInspireCheck; [SerializeField] Text m_CoinCost; [SerializeField] Text m_FairyCost; [SerializeField] Text m_InspireLevel; [SerializeField] Text m_Remind; [SerializeField] Button m_Confirm; [SerializeField] Button m_Cancel; [SerializeField] Button m_Close; DungeonModel m_Model; DungeonModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } private bool coinInspire = false; private bool fairyInspire = false; private DungeonInspireConfig coinInspireConfig = null; private DungeonInspireConfig fairyInspireConfig = null; #region Built-in protected override void BindController() { } protected override void AddListeners() { m_CoinInspire.onClick.AddListener(CoinInspire); m_FairyInspire.onClick.AddListener(FairyInspire); m_Confirm.onClick.AddListener(Confirm); m_Cancel.onClick.AddListener(Cancel); m_Close.onClick.AddListener(CloseClick); } protected override void OnPreOpen() { var _list = model.GetDungeonInspire(PlayerDatas.Instance.baseData.MapID); if (_list == null) { return; } coinInspireConfig = null; fairyInspireConfig = null; for (int i = 0; i < _list.Count; i++) { if (_list[i].InspireType == 3) { coinInspireConfig = _list[i]; } else if (_list[i].InspireType == 2 || _list[i].InspireType == 1 || _list[i].InspireType == 5) { fairyInspireConfig = _list[i]; } } m_CoinInspire.gameObject.SetActive(coinInspireConfig != null); coinInspire = coinInspireConfig == null ? false : true; fairyInspire = !coinInspire; Display(); UpdateInspireType(); DisplayRemind(); model.dungeonInspireLvEvent += DungeonEncourageEvent; } protected override void OnAfterOpen() { var _list = model.GetDungeonInspire(PlayerDatas.Instance.baseData.MapID); if (_list == null) { CloseImmediately(); return; } } protected override void OnPreClose() { model.dungeonInspireLvEvent -= DungeonEncourageEvent; } protected override void OnAfterClose() { } #endregion private void DungeonEncourageEvent() { var level = model.GetDungeonInspireLevel(); if (level >= model.GetInspireMaxCount(PlayerDatas.Instance.baseData.MapID) && !InGuiding()) { CloseImmediately(); return; } DisplayCost(); UpdateInspireType(); } private void CoinInspire() { if (!coinInspire) { if (model.GetDungeonInspireLevel(3) >= coinInspireConfig.InspireCount) { SysNotifyMgr.Instance.ShowTip("Xjmj_CopperInspireFull"); return; } coinInspire = true; fairyInspire = false; } else { coinInspire = false; } UpdateInspireType(); } private void FairyInspire() { if (coinInspireConfig == null) { return; } coinInspire = false; fairyInspire = !fairyInspire; UpdateInspireType(); } private void Confirm() { if (fairyInspire) { uint money = 0; switch (fairyInspireConfig.InspireType) { case 1: money += PlayerDatas.Instance.baseData.Gold; break; case 2: money += PlayerDatas.Instance.baseData.GoldPaper; break; case 5: money = PlayerDatas.Instance.baseData.GoldPaper + PlayerDatas.Instance.baseData.Gold; break; } if (money < model.GetDungeonInspireCost(fairyInspireConfig) && !InGuiding()) { WindowCenter.Instance.Open(); } else { CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction(); pak.ActionType = 0; pak.ActionInfo = (uint)fairyInspireConfig.InspireType; GameNetSystem.Instance.SendInfo(pak); } } else if (coinInspire) { if (UIHelper.GetMoneyCnt(3) < (ulong)model.GetDungeonInspireCost(coinInspireConfig) && !InGuiding()) { SysNotifyMgr.Instance.ShowTip("Xjmj_InspireNoEnoughGold"); } else { CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction(); pak.ActionType = 0; pak.ActionInfo = (uint)coinInspireConfig.InspireType; GameNetSystem.Instance.SendInfo(pak); } } } private void Cancel() { CloseImmediately(); } private void Display() { DisplayCost(); } private void DisplayCost() { if (coinInspireConfig != null) { m_CoinCost.text = Language.Get("FairyLand_Func9", model.GetDungeonInspireCost(coinInspireConfig), coinInspireConfig.InspireCount); } if (fairyInspireConfig != null) { m_FairyCost.text = Language.Get("FairyLand_Func10", model.GetDungeonInspireCost(fairyInspireConfig)); } } void DisplayRemind() { m_Remind.gameObject.SetActive(fairyInspireConfig != null && fairyInspireConfig.InspireType == 5); } bool InGuiding() { if (NewBieCenter.Instance.inGuiding && NewBieCenter.Instance.currentGuide == GeneralConfig.Instance.fairyLandGuideId) { return true; } return false; } private void UpdateInspireType() { var level = model.GetDungeonInspireLevel(); m_InspireLevel.text = level == 0 ? Language.Get("FairyLand_Func4") : Language.Get("HaveInspired", StringUtility.Contact("", level * model.GetDungeonInspireUpper(PlayerDatas.Instance.baseData.MapID), "%")); m_CoinInspireCheck.gameObject.SetActive(coinInspire); m_FairyInspireCheck.gameObject.SetActive(fairyInspire); } } }