//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, September 20, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class TrialDungeonSelectWin : Window { [SerializeField] Text m_Title; [SerializeField] CyclicScroll m_BossSelect; //[SerializeField] //Button m_Confirm; [SerializeField] Button m_Close; [SerializeField] Text trialChallengeCntTxt; [SerializeField] Button m_Exchange; public event Action dungeonSelectEvent; Dungeon m_CurrentSelectDungeon; public Dungeon currentSelectDungeon { get { return m_CurrentSelectDungeon; } set { if (m_CurrentSelectDungeon != value) { m_CurrentSelectDungeon = value; if (dungeonSelectEvent != null) { dungeonSelectEvent(m_CurrentSelectDungeon); } } } } List dungeons = new List(); DungeonModel m_Model; DungeonModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel(); } } TrialDungeonModel trialDungeonModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { //m_Confirm.AddListener(ChallengeDungeon); m_Close.AddListener(CloseClick); m_Exchange.AddListener(Exchange); } protected override void OnPreOpen() { model.dungeonRecordChangeEvent += UpdateDungeonTimes; ParseTrials(); DisplayTrialChallengeCount(); } protected override void OnActived() { base.OnActived(); ShowAllTrialDungeons(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { model.dungeonRecordChangeEvent -= UpdateDungeonTimes; } protected override void OnAfterClose() { dungeons.Clear(); } #endregion //private void ChallengeDungeon() //{ // model.selectedTrialDungeon = m_CurrentSelectDungeon; // WindowCenter.Instance.Open(); //} private void ShowAllTrialDungeons() { m_BossSelect.Init(dungeons); } private void ParseTrials() { foreach (var mapID in model.GetDungeonIds(model.currentDungeon.mapId)) { DungeonConfig _tagDungeonModel = Config.Instance.Get(mapID); dungeons.Add(new Dungeon(model.currentDungeon.mapId, _tagDungeonModel.LineID)); } currentSelectDungeon = dungeons.Count > 0 ? dungeons[0] : default(Dungeon); } private void UpdateDungeonTimes(int mapID) { int trialMapID = model.GetTrialMaps()[0]; if (trialMapID != mapID) { return; } DisplayTrialChallengeCount(); } private void DisplayTrialChallengeCount() { var mapID = model.GetTrialMaps()[0]; DungeonOpenTimeConfig dungeonOpenTimeModel = Config.Instance.Get(mapID); var completedTimes = dailyQuestModel.GetDailyQuestCompletedTimes((int)DailyQuestType.Trial); var totalTimes = dailyQuestModel.GetDailyQuestTotalTimes((int)DailyQuestType.Trial); trialChallengeCntTxt.text = Language.Get("TrialChallengeCnt", UIHelper.AppendStringColor(completedTimes >= totalTimes ? TextColType.Red : TextColType.NavyBrown, completedTimes.ToString(), true), totalTimes); } private void Exchange() { if (!trialDungeonModel.CompleteTrialFloor(0)) { trialDungeonModel.ProcessOpenTrialExchangeError(); return; } WindowCenter.Instance.Open(); } } }