using System; using System.Collections.Generic; using ET; using FairyGUI; using UI.CommonGame; using UI.TimeTracing; using UnityEngine; namespace GFGGame { public class TimeTracingLevelRankView : BaseWindow { private UI_TimeTracingLevelRankUI _ui; private int LevelID; private int rankType; private int curTime; private int mTime; private int tTime; public override void Dispose() { base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_TimeTracingLevelRankUI.PACKAGE_NAME; _ui = UI_TimeTracingLevelRankUI.Create(); this.viewCom = _ui.target; isfullScreen = true; modal = true; _ui.m_btnBack.onClick.Add(OnClickBtnBack); _ui.m_c1.onChanged.Add(OnTabChange); _ui.m_listRank.SetVirtual(); _ui.m_listRank.itemRenderer = RenderListItem; } protected override void OnShown() { base.OnShown(); LevelID = (int)this.viewData; curTime = (int)(TimeTracingDataManager.RefreshTime - TimeHelper.ServerNow())/1000; UpdateView(); if (curTime > 60) { _ui.m_timeText.text = string.Format("倒计时:{0}分{1}秒", curTime / 60, curTime % 60); } else { _ui.m_timeText.text = string.Format("倒计时:{0}分{1}秒", 0, tTime); } Timers.inst.Add(1, 0, TimeUpdate); } protected override void OnHide() { Timers.inst.Remove(TimeUpdate); base.OnHide(); } private void UpdateView() { rankType = 0; UpdateRank(); } private void UpdateRank() { _ui.m_listRank.numItems = TimeTracingDataManager.Instance.LevelRankDatasDic[rankType].Count; if (TimeTracingDataManager.Instance.LevelRankDatasDic[rankType].Count > 0) { _ui.m_txtTips.visible = false; } else { _ui.m_txtTips.visible = true; } if (TimeTracingDataManager.Instance.myLevelRankInfo == null) { _ui.m_myRank.target.visible = false; } else if(TimeTracingDataManager.Instance.myLevelRankInfo.RankIndex == 0) { _ui.m_myRank.target.visible = true; LevelRankProto itemdata = TimeTracingDataManager.Instance.myLevelRankInfo; _ui.m_myRank.m_txtName.text = itemdata.RoleName; _ui.m_myRank.m_rankText.text = "--"; _ui.m_myRank.m_teamName.text = itemdata.LeagueName; _ui.m_myRank.m_scoreText.text = "--"; _ui.m_myRank.m_c1.selectedIndex = 3; _ui.m_myRank.m_btnLook.visible = false; RoleInfoManager.Instance.UpdateLv(_ui.m_myRank.m_comLv, itemdata.RoleLvl); RoleInfoManager.Instance.UpdateHead(_ui.m_myRank.m_comHead, itemdata.HeadItemId, itemdata.HeadBorderItemId); } else { _ui.m_myRank.target.visible = true; LevelRankProto itemdata = TimeTracingDataManager.Instance.myLevelRankInfo; _ui.m_myRank.m_txtName.text = itemdata.RoleName; if(itemdata.RankIndex <= 100) { _ui.m_myRank.m_rankText.text = itemdata.RankIndex.ToString(); } else if(itemdata.RankIndex> 100 && itemdata.RankIndex<=300) { _ui.m_myRank.m_rankText.text = "前10%"; } else if (itemdata.RankIndex > 300 && itemdata.RankIndex <= 500) { _ui.m_myRank.m_rankText.text = "前30%"; } else if (itemdata.RankIndex > 500 && itemdata.RankIndex <= 1000) { _ui.m_myRank.m_rankText.text = "前50%"; } else if (itemdata.RankIndex > 1000 && itemdata.RankIndex <= 3000) { _ui.m_myRank.m_rankText.text = "前80%"; } else { _ui.m_myRank.m_rankText.text = "前100%"; } _ui.m_myRank.m_rankText.text = itemdata.RankIndex.ToString(); _ui.m_myRank.m_teamName.text = itemdata.LeagueName; _ui.m_myRank.m_scoreText.text = itemdata.RatingScore.ToString(); _ui.m_myRank.m_c1.selectedIndex = Math.Min(itemdata.RankIndex - 1, 3); _ui.m_myRank.m_btnLook.visible = false; RoleInfoManager.Instance.UpdateLv(_ui.m_myRank.m_comLv, itemdata.RoleLvl); RoleInfoManager.Instance.UpdateHead(_ui.m_myRank.m_comHead, itemdata.HeadItemId, itemdata.HeadBorderItemId); } } private void RenderListItem(int index, GObject obj) { UI_TimeTracingLevelRankItem item = UI_TimeTracingLevelRankItem.Proxy(obj); LevelRankProto itemdata = TimeTracingDataManager.Instance.LevelRankDatasDic[rankType][index]; item.m_c1.selectedIndex = Math.Min(index, 3); if (itemdata == null) { item.m_rankText.text = "--"; item.m_txtName.text = "--"; item.m_teamName.text = "--"; item.m_scoreText.text = ""; RoleInfoManager.Instance.UpdateLv(item.m_comLv, 0); RoleInfoManager.Instance.UpdateArenaNpcHead(item.m_comHead, ""); } else { item.m_txtName.text = itemdata.RoleName; item.m_rankText.text = itemdata.RankIndex.ToString(); item.m_teamName.text = itemdata.LeagueName; item.m_scoreText.text = itemdata.RatingScore.ToString(); RoleInfoManager.Instance.UpdateLv(item.m_comLv, itemdata.RoleLvl); RoleInfoManager.Instance.UpdateHead(item.m_comHead, itemdata.HeadItemId, itemdata.HeadBorderItemId); } if (item.m_comHead.data == null) { //item.m_btnLook.onClick.Add(OnBtnLookClick); item.m_btnLook.visible = false; item.m_comHead.onClick.Add(OnBtnLookClick); } item.m_comHead.data = itemdata; UI_TimeTracingLevelRankItem.ProxyEnd(); } private void OnTabChange() { if (_ui.m_c1.selectedIndex == 1) { rankType = 1; } else { rankType = 0; } UpdateRank(); } private async void TimeUpdate(object param = null) { if(curTime > 60) { mTime = curTime / 60; tTime = curTime % 60; } else { mTime = 0; tTime = curTime; } _ui.m_timeText.text = string.Format("倒计时:{0}分{1}秒", mTime, tTime); if (curTime <= 0) { //请求协议 await ReqGetLevelRank(); curTime = (int)(TimeTracingDataManager.RefreshTime - TimeHelper.ServerNow() + 1000) / 1000; UpdateRank(); } curTime--; } private void OnClickRankBtn() { } private async void OnBtnLookClick(EventContext context) { //TimeTracingSuitRankData targetData = (context.sender as GObject).data as TimeTracingSuitRankData; //bool result = await ArenaSproxy.ReqArenaFightAttr(targetData.RoleInfo.roleId, targetData.FightDatas); //if (result) //{ // ViewManager.Show(new object[] { FightRoleType.TAEGET, 0, targetData.FightDatas, typeof(ArenaRankView).FullName }, true); //} } private void OnClickBtnBack() { this.Hide(); } private async ETTask ReqGetLevelRank() { Timers.inst.Remove(TimeUpdate); await TimeTracingSProxy.ReqGetLevelRank(LevelID); await TimeTracingSProxy.ReqGetLevelFriendRank(LevelID); Timers.inst.Add(1, 0, TimeUpdate); } } }