//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, August 01, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class TrialExchangeWin : Window { [SerializeField] ScrollerController m_Controller; [SerializeField] Text m_SelectClass; [SerializeField] Button m_SelectClassUp; [SerializeField] TrialSelectClassBehaviour m_SelectClassBehaviour; //[SerializeField] ItemBehaviour[] m_Tokens; //[SerializeField] Text[] m_TokenCounts; [SerializeField] Button m_Close; TrialDungeonModel model { get { return ModelCenter.Instance.GetModel(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Controller.OnRefreshCell += OnRefreshCell; m_Close.onClick.AddListener(CloseClick); m_SelectClassUp.onClick.AddListener(SelectClassUp); } protected override void OnPreOpen() { model.selectEquipClass = 1; m_SelectClassBehaviour.gameObject.SetActive(false); m_SelectClassUp.transform.localEulerAngles = Vector3.zero.SetZ(180); foreach (var mapID in dungeonModel.GetDungeonIds(60010)) { DungeonConfig _tagDungeonModel = Config.Instance.Get(mapID); DungeonRecord dungeonRecord; if (dungeonModel.TryGetRecord(60010, out dungeonRecord)) { if (dungeonRecord.lineGrades != null && dungeonRecord.lineGrades.ContainsKey(_tagDungeonModel.LineID) && dungeonRecord.lineGrades[_tagDungeonModel.LineID] > 0) { model.selectEquipClass = model.LineToTokenClass(_tagDungeonModel.LineID); } } } var maxClass = 0; if (model.TryGetSatisfyExchange(out maxClass)) { model.selectEquipClass = maxClass; } if (WindowJumpMgr.Instance.IsJumpState) { if (PackSendQuestMgr.Instance.useItemModel != null && model.trialTokens.Contains(PackSendQuestMgr.Instance.useItemModel.itemId)) { var itemId = PackSendQuestMgr.Instance.useItemModel.itemId; var config = Config.Instance.Get(itemId); if (config != null) { model.selectEquipClass = config.LV; } PackSendQuestMgr.Instance.useItemModel = null; } } model.SelectEquipClassEvent += SelectEquipClassEvent; packModel.RefreshItemCountAct += RefreshItemCountAct; Display(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { model.SelectEquipClassEvent -= SelectEquipClassEvent; packModel.RefreshItemCountAct -= RefreshItemCountAct; } protected override void OnAfterClose() { } #endregion private void OnRefreshCell(ScrollerDataType type, CellView cell) { switch (type) { case ScrollerDataType.Header: var _class = cell.index / 100; var _line = cell.index % 100; TrialExchangeCell trialExchangeCell = cell as TrialExchangeCell; trialExchangeCell.Display(_class, _line); break; case ScrollerDataType.Normal: TrialExchangeTitleCell trialExchangeTitleCell = cell as TrialExchangeTitleCell; trialExchangeTitleCell.Display(cell.index); break; } } private void SelectClassUp() { bool _up = m_SelectClassBehaviour.gameObject.activeSelf; m_SelectClassBehaviour.gameObject.SetActive(!_up); if (!_up) { m_SelectClassBehaviour.Display(); } m_SelectClassUp.transform.localEulerAngles = Vector3.zero.SetZ(_up ? 180 : 0); } void Display() { DisplayTrialExchanges(); DisplaySelectClass(); DisplayTokens(); } void DisplayTrialExchanges() { m_Controller.Refresh(); if (model.selectEquipClass == 1) { var trialClasses = model.GetTotalClass(); for (int i = 0; i < trialClasses.Count; i++) { List list; if (model.TryGetTrialExchanges(trialClasses[i], out list)) { m_Controller.AddCell(ScrollerDataType.Normal, trialClasses[i]); var line = Mathf.CeilToInt((float)list.Count / 3); for (int k = 0; k < line; k++) { m_Controller.AddCell(ScrollerDataType.Header, trialClasses[i] * 100 + k); } } } } else { List list; if (model.TryGetTrialExchanges(model.selectEquipClass, out list)) { var line = Mathf.CeilToInt((float)list.Count / 3); for (int i = 0; i < line; i++) { m_Controller.AddCell(ScrollerDataType.Header, model.selectEquipClass * 100 + i); } } } m_Controller.Restart(); } private void RefreshItemCountAct(PackType packtype, int arg2, int itemId) { if (packtype == PackType.rptItem && model.trialTokens.Contains(itemId)) { m_Controller.m_Scorller.RefreshActiveCellViews(); DisplayTokens(); } else if (packtype == PackType.rptEquip) { m_Controller.m_Scorller.RefreshActiveCellViews(); } } void DisplaySelectClass() { m_SelectClass.text = model.selectEquipClass == 1 ? Language.Get("TrialClassSeleclAll") : Language.Get("EquipSuitLV", Language.Get(StringUtility.Contact("Num_CHS_", model.selectEquipClass))); } void DisplayTokens() { //var list = model.trialClassTokens.ContainsKey(model.selectEquipClass) ? model.trialClassTokens[model.selectEquipClass] : null; //for (int i = 0; i < m_Tokens.Length; i++) //{ // if (list != null && i < list.Count) // { // m_Tokens[i].gameObject.SetActive(model.selectEquipClass != 1); // if (model.selectEquipClass != 1) // { // m_Tokens[i].SetItem(list[i], 0); // m_TokenCounts[i].text = model.GetTrialTokenCount(list[i]).ToString(); // } // } // else // { // m_Tokens[i].gameObject.SetActive(false); // } //} } private void SelectEquipClassEvent() { DisplayTrialExchanges(); DisplaySelectClass(); DisplayTokens(); bool _up = m_SelectClassBehaviour.gameObject.activeSelf; m_SelectClassUp.transform.localEulerAngles = Vector3.zero.SetZ(_up ? 0 : 180); } } }