using System.Collections; using UnityEngine; using UI.ActivityGetYuanXiao; using FairyGUI; using System.Collections.Generic; using System.Linq; namespace GFGGame { public class ActivityGetYuanXiaoTaskView : BaseWindow { private UI_ActivityGetYuanXiaoTaskUI _ui; private int _activityID; private int _funcType; private List _cfgs; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ActivityGetYuanXiaoTaskUI.PACKAGE_NAME; _ui = UI_ActivityGetYuanXiaoTaskUI.Create(); viewCom = _ui.target; viewCom.Center(); viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; modal = true; _ui.m_itemList.itemRenderer = ListRenderer; _funcType = TaskFuncType.YuanXiaoActivity; } protected override void OnShown() { base.OnShown(); _activityID = ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.YuanXiao); if (_activityID == 0) { return; } UpdateTask(); _ui.m_itemList.scrollPane.ScrollTop(); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTaskChanges); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTaskChanges); } //更新任务列表 private void UpdateTask() { _cfgs = TaskDataManager.Instance.GetTaskCfgs(_funcType); _ui.m_itemList.numItems = _cfgs.Count; } private void OnTaskChanges(EventContext eventContext) { var taskIds = (List)eventContext.data; if (taskIds.Select(taskId => TaskCfgArray.Instance.GetCfg(taskId)).Where(taskCfg => taskCfg != null) .Any(taskCfg => taskCfg.funcType == _funcType)) { UpdateTask(); } } private void ListRenderer(int index, GObject gObject) { if(index >= _cfgs.Count) { return; } UI_taskItem item = UI_taskItem.Proxy(gObject); item.m_desc.text = TaskDataManager.Instance.GetTaskDesc(_cfgs[index].id); item.m_txtCount.SetVar("cur", $"{TaskDataManager.Instance.GetTaskProgressById(_cfgs[index].id)}") .SetVar("sum", $"{_cfgs[index].GetTargetCount()}").FlushVars(); item.m_c1.selectedIndex = TaskDataManager.Instance.GetTaskStateById(_cfgs[index].id); item.m_c2.selectedIndex = _cfgs[index].jumpId == "" ? 1 : 0; // 奖励列表更新事件绑定 if (item.m_rewardList.data == null) { item.m_rewardList.itemRenderer = ListTaskRewardItemRender; } item.m_rewardList.data = _cfgs[index]; var reward = TaskDataManager.Instance.GetReward(_cfgs[index]); item.m_rewardList.numItems = reward.Length; // 领取奖励按钮事件 if(item.m_btnGet.data == null) { item.m_btnGet.onClick.Add(OnClickBtnGet); } item.m_btnGet.data = _cfgs[index].id; // 前往按钮事件 if (item.m_btnGo.data == null) { item.m_btnGo.onClick.Add(OnBtnGoClick); } item.m_btnGo.data = _cfgs[index]; UI_taskItem.ProxyEnd(); } private void ListTaskRewardItemRender(int index, GObject obj) { TaskCfg cfg = (TaskCfg)obj.parent.data; int[][] reward = TaskDataManager.Instance.GetReward(cfg); var itemData = ItemUtil.createItemData(reward[index]); var item = new ItemView(obj as GComponent); obj.data = item; item.SetData(itemData); item.ChangeTxtCountStyle(); item.SetTxtCountScale = 1.3f; item.GrpGotVisible = TaskDataManager.Instance.GetTaskStateById(cfg.id) == 2; } private async void OnClickBtnGet(EventContext context) { if (!(context.sender is GObject btnGet)) return; var result = await TaskSProxy.GetTaskBonus((int)btnGet.data); if (!result) return; UpdateTask(); } private void OnBtnGoClick(EventContext context) { if (!(context.sender is GObject { data: TaskCfg taskCfg })) return; //功能未开放 if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(taskCfg.jumpId)) return; var param = new object[taskCfg.jumpParamArr.Length]; for (var i = 0; i < taskCfg.jumpParamArr.Length; i++) { param[i] = taskCfg.jumpParamArr[i]; } ViewManager.JumpToView(taskCfg.jumpId, param, false, false); } } }