//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Friday, September 08, 2017
|
//--------------------------------------------------------
|
|
using EnhancedUI.EnhancedScroller;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
namespace vnxbqy.UI
|
{
|
|
public class RunePreviewWin : Window
|
{
|
[SerializeField] Button runePreviewCloseBtn;
|
[SerializeField] ScrollerController previewController;
|
private List<RuneConfig> 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<RuneConfig>();
|
int index = 0;
|
var _list = new List<int>();
|
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 = ItemConfig.Get(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 = RuneTowerFloorConfig.Get(cell.index);
|
var tower = RuneTowerConfig.Get(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();
|
}
|
}
|
|
}
|