using ET; using FairyGUI; using UI.Arena; using UnityEngine; namespace GFGGame { public class ArenaRankView : BaseWindow { private UI_ArenaRankUI _ui; private int _rankType = 0; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ArenaUI.PACKAGE_NAME; _ui = UI_ArenaRankUI.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_listRank.SetVirtual(); _ui.m_listRank.itemProvider = GetListItemResource; _ui.m_listRank.itemRenderer = RenderListItem; _ui.m_listRank.scrollPane.onScroll.Add(OnListScroll); _ui.m_c1.onChanged.Add(OnTabChange); _ui.m_c1.onChanged.Add(OnTabChange); } protected override void AddEventListener() { base.AddEventListener(); } protected override void OnShown() { base.OnShown(); _rankType = 0; _ui.m_listRank.numItems = 100; ArenaDataManager.Instance.rankDatasDic.Clear(); ReqRankList(0); } protected override void OnHide() { base.OnHide(); } protected override void RemoveEventListener() { base.RemoveEventListener(); } private void OnTabChange() { if (_ui.m_c1.previsousIndex == 0 && _ui.m_c1.selectedIndex == 1 || _ui.m_c1.previsousIndex == 1 && _ui.m_c1.selectedIndex == 1) { _rankType = ArenaRankType.FRIEND; } else if (_ui.m_c1.previsousIndex == 0 && _ui.m_c1.selectedIndex == 0)//二级页签切换 { if (_ui.m_c2.selectedIndex == 1) { _rankType = ArenaRankType.LAST_SEASON; } else { _rankType = ArenaRankType.NOW_SEASON; } } else if (_ui.m_c1.previsousIndex == 1 && _ui.m_c1.selectedIndex == 0) { _ui.m_c2.selectedIndex = 0; _rankType = ArenaRankType.NOW_SEASON; } } private void OnListScroll() { } private async void ReqRankList(int index) { bool result = await ArenaSproxy.ReqArenaRank(_rankType, index, index + 19); if (result) { _ui.m_listRank.RefreshVirtualList(); } } private string GetListItemResource(int index) { if (index == 0) return "ui://Arena/ListRankItem0"; else if (index == 1) return "ui://Arena/ListRankItem1"; else if (index == 2) return "ui://Arena/ListRankItem2"; else return "ui://Arena/ListRankItem3"; } private void RenderListItem(int index, GObject obj) { ArenaTargetData arenaData = null; if (ArenaDataManager.Instance.rankDatasDic.ContainsKey(_rankType)) { if (ArenaDataManager.Instance.rankDatasDic[_rankType].Count > index) { arenaData = ArenaDataManager.Instance.rankDatasDic[_rankType][index]; } } if (index < 3) { UpdateTopItem(arenaData, obj); } else { UpdateOtherItem(arenaData, obj); } } private void UpdateTopItem(ArenaTargetData arenaData, GObject obj) { UI_ListRankItem item = UI_ListRankItem.Proxy(obj.asCom.GetChildAt(0)); item.m_c1.selectedIndex = arenaData.RankInGrade; UI_ListRankItem.ProxyEnd(); } private void UpdateOtherItem(ArenaTargetData arenaData, GObject obj) { } } }