using System; using System.Collections.Generic; using ET; using FairyGUI; using UI.CommonGame; using UI.TimeTracing; using UnityEngine; namespace GFGGame { public class TimeTracingLevelRewardView : BaseWindow { private UI_TimeTracingLevelRewardUI _ui; private int levelID; private List bonusList = new List(); public override void Dispose() { base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_TimeTracingLevelRewardUI.PACKAGE_NAME; _ui = UI_TimeTracingLevelRewardUI.Create(); this.viewCom = _ui.target; isfullScreen = true; modal = true; viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_btnGet.onClick.Add(OnBtnGetClcik); _ui.m_list.itemRenderer = RenderListItem; } protected override void OnShown() { base.OnShown(); levelID = (int)this.viewData; UpdateView(); } protected override void OnHide() { base.OnHide(); } private void UpdateView() { _ui.m_txtScore.text = string.Format("最高评分:{0}",InstanceZonesDataManager.GetScoreHighest(levelID)); //_ui.m_btnGet.grayed = !StudioDataManager.Instance.GetFilingRewardState(StudioDataManager.Instance.filingChapterId); bonusList = CompositeLevelbonusCfgArray.Instance.GetCfgsBystoryLevelId(levelID); _ui.m_list.numItems = bonusList.Count; } private void RenderListItem(int index, GObject obj) { UI_ListScoreRewardItem item = UI_ListScoreRewardItem.Proxy(obj); item.m_canGet.visible = TimeTracingDataManager.LevelRewardDic[levelID][bonusList[index].id] == ConstBonusStatus.CAN_GET; item.m_isGot.visible = TimeTracingDataManager.LevelRewardDic[levelID][bonusList[index].id] == ConstBonusStatus.GOT; item.m_txtDesc.text = string.Format("总评分达到{0}", bonusList[index].score.ToString()); item.m_listReward.data = bonusList[index].bonusArr; item.m_listReward.itemRenderer = RenderListRewardItem; if(item.target.data == null) { item.target.onClick.Add(GetLevelRewardBtn); } item.target.data = bonusList[index]; item.m_listReward.numItems = bonusList[index].bonusArr.Length; UI_ListScoreRewardItem.ProxyEnd(); } private void RenderListRewardItem(int index, GObject obj) { int[][] rewards = (int[][])obj.parent.data; ItemData reward = ItemUtil.createItemData(rewards[index]); if (obj.data == null) { obj.data = new ItemView(obj as GComponent); } (obj.data as ItemView).SetData(reward); } private async void GetLevelRewardBtn(EventContext context) { GObject obj = context.sender as GObject; CompositeLevelbonusCfg bonuscfg = (CompositeLevelbonusCfg)obj.data; if (bonuscfg.score > InstanceZonesDataManager.GetScoreHighest(levelID) || TimeTracingDataManager.LevelRewardDic[levelID][bonuscfg.id] != ConstBonusStatus.CAN_GET) { return; } await TimeTracingSProxy.ReqGetLevelReward(levelID, bonuscfg.id); EventAgent.DispatchEvent(ConstMessage.TIMETRACINGREDUPDATE); _ui.m_list.numItems = bonusList.Count; } private async void OnBtnGetClcik() { if(!TimeTracingDataManager.Instance.GetLevelRewardStatus(levelID)) { return; } await TimeTracingSProxy.ReqGetAllLevelReward(levelID); _ui.m_list.numItems = bonusList.Count; } private void OnClickBtnBack() { this.Hide(); } } }