//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, September 08, 2017 //-------------------------------------------------------- using EnhancedUI.EnhancedScroller; using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class RunePreviewWin : Window { [SerializeField] Button runePreviewCloseBtn; [SerializeField] ScrollerController previewController; private List towerLockRuneList = null; #region Built-in protected override void BindController() { } protected override void AddListeners() { previewController.OnRefreshCell += OnRefreshRunePreviewItem; runePreviewCloseBtn.onClick.AddListener(OnRunePreviewClose); } protected override void OnPreOpen() { if (towerLockRuneList == null) { previewController.Refresh(); towerLockRuneList = new List(); int index = 0; var _list = new List(); foreach (int key in RuneConfig.GetAllTowerLockRune().Keys) { _list.Add(key); } _list.Sort(); for (int i = 0; i < _list.Count; i++) { var key = _list[i]; previewController.AddCell(ScrollerDataType.Header, key); int itemCnt = 0; foreach (var cfg in RuneConfig.GetAllTowerLockRune()[key]) { ItemConfig item = ConfigManager.Instance.GetTemplate(cfg.ID); if (item.ItemColor > 1) { towerLockRuneList.Add(cfg); itemCnt++; } } itemCnt = Mathf.CeilToInt((float)itemCnt / 4); for (int k = 0; k < itemCnt; k++) { previewController.AddCell(ScrollerDataType.Normal, index + k); } index += itemCnt; } previewController.Restart(); } else { previewController.JumpIndex(0); } } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } #endregion private void OnRefreshRunePreviewItem(ScrollerDataType type, CellView cell) { switch (type) { case ScrollerDataType.Header: var _cell = cell as RunePreviewHeadCell; if (cell.index == 0) { _cell.runeTowerName.text = Language.Get("L1062"); return; } RuneTowerFloorConfig towerFloor = ConfigManager.Instance.GetTemplate(cell.index); var tower = ConfigManager.Instance.GetTemplate(towerFloor.TowerId); _cell.runeTowerName.text = StringUtility.Contact(tower.TowerName, towerFloor.FloorName); break; case ScrollerDataType.Normal: RunePreviewCell _runePreviewCell = cell as RunePreviewCell; for (int i = 0; i < 4; i++) { int index = cell.index * 4 + i; if (index >= towerLockRuneList.Count) { _runePreviewCell.Display(i, 0); continue; } else { RuneConfig cfg = towerLockRuneList[index]; _runePreviewCell.Display(i, cfg.ID); } } break; } } private void OnRunePreviewClose() { CloseClick(); } } }