using Cal.DataTable; using ET; using FairyGUI; using System; using System.Collections.Generic; namespace ET { public class NPCTaskUIAwakeSyatem : AwakeSystem> { public override void Awake(NPCTaskUI self,List list) { self.Awake(list); } } public class NPCTaskUIDestroySyatem : DestroySystem { public override void Destroy(NPCTaskUI self) { self.Destroy(); } } public class NPCTaskUI : Entity { public FUI_NPCTaskUI ui; public List taskList; public void Awake(List list) { ui = GetParent(); taskList = list; AwakeAsync().Coroutine(); } private async ETVoid AwakeAsync() { //!切换控制器 ui.m_contrl.selectedIndex = 0; //!显示第一页内容 if (taskList.Count == 0) return; TaskBase taskBase = DataTableHelper.Get(taskList[0].Id); NPCBase npcBase = DataTableHelper.Get(taskBase.GiveNPCId); //!窗口名字 ui.m_frame.self.title = npcBase.Name; //!对话内容 ui.m_txtDialog.text = " " + npcBase.Dialog; int _taskId = 0; bool isAccept = false; ui.m_taskList.RemoveChildrenToPool(); foreach (NPCTask npcTask in taskList) { GButton btn = ui.m_taskList.AddItemFromPool().asButton; taskBase = DataTableHelper.Get(npcTask.Id); btn.title = $"{taskBase.Name}({GetTaskStateString(npcTask.TaskState)})"; TaskBase tempTaskBase = taskBase; btn.onClick.Set(() => { //!给Id变量赋值 switch (npcTask.TaskState) { case TaskState.TaskWaiting: isAccept = true; ui.m_btnAccept.self.visible = true; ui.m_btnAccept.self.title = "接受任务"; break; case TaskState.TaskRunning: ui.m_btnAccept.self.visible = false; break; case TaskState.TaskCompleted: isAccept = false; ui.m_btnAccept.self.visible = true; ui.m_btnAccept.self.title = "领取奖励"; break; } _taskId = npcTask.Id; //!切换控制器 ui.m_contrl.selectedIndex = 1; ui.m_txtTaskName.text = tempTaskBase.Name; ui.m_txtContent.text = " " + tempTaskBase.DialogDesc; ui.m_txtTarget.text = " " + tempTaskBase.TaskTargetDesc; npcBase = DataTableHelper.Get(tempTaskBase.SubmitNPCId); Sys_Scene sysScene = DataTableHelper.Get(npcBase.SceneId); ui.m_txtTargetUnitOrPos.text = $" {npcBase.Name}({sysScene.Desc}{(npcBase.MapLayer == 1 ? "" : $"-{npcBase.MapLayer}层")})"; ui.m_txtRewardCount.text = TaskUI.GetRewardCount(taskBase.RwardCount); ui.m_RewardList.RemoveChildrenToPool(); for (int i = 0; i < tempTaskBase.RewardArr.Length; i++) { TaskBase.Reward reward = tempTaskBase.RewardArr[i]; GButton rewardItem = ui.m_RewardList.AddItemFromPool(FUI_ButtonTaskRewardItem.URL).asButton; (string itemName, string IconName) = BagHelper.GetIconName(reward.Reward_Id); rewardItem.icon = UIPackage.GetItemURL(FUIPackage.Bag, IconName); rewardItem.title = $"{itemName}\r\n数量:{reward.Reward_Count}"; //!显示页签 rewardItem.onRollOver.Set(() => { TabHelper.OpenUI(reward.Reward_Id); }); //!隐藏页签 rewardItem.onRollOut.Set(TabHelper.HideUI); //TabHelper.SetTab(rewardItem, () => TabHelper.OpenUI(reward.RewardId)); } }); } ui.m_btnAccept.self.onClick.Set(async () => { if (isAccept) { M2C_AcceptTask ret = await SessionComponent.Instance.Call(new C2M_AcceptTask() { TaskId = _taskId }); if (!ret.Message.IsNullOrEmpty()) { TipHelper.OpenUI(ret.Message); } } else { C2M_CompleteTask proto = new C2M_CompleteTask() { TaskId = _taskId }; proto.IndexList.AddRange(ui.m_RewardList.GetSelection()); M2C_CompleteTask ret = await SessionComponent.Instance.Call(proto); if (!ret.Message.IsNullOrEmpty()) { TipHelper.OpenUI(ret.Message); } } ui.GetComponent().Hide(); }); string GetTaskStateString(TaskState state) { switch (state) { default: case TaskState.TaskWaiting: return "可接受"; case TaskState.TaskRunning: return "进行中"; case TaskState.TaskCompleted: return "已完成"; } } await ETTask.CompletedTask; } public void Destroy() { } } }