using Cal.DataTable; using ET; using FairyGUI; using System; using System.Collections.Generic; namespace ET { public class TaskUIAwakeSyatem : AwakeSystem { public override void Awake(TaskUI self) { self.Awake(); } } public class TaskUIDestroySyatem : DestroySystem { public override void Destroy(TaskUI self) { self.Destroy(); } } public class TaskUI : Entity { public FUI_TaskUI ui; private Scene zoneScene; public void Awake() { zoneScene = this.ZoneScene(); ui = GetParent(); AwakeAsync().Coroutine(); } private async ETVoid AwakeAsync() { //!切换控制器 ui.m_contrl.selectedIndex = 0; //!发起请求 M2C_GetTask getTaskRet = await zoneScene.GetComponent().Call(new C2M_GetTask()); if (!getTaskRet.Message.IsNullOrEmpty()) TipHelper.OpenUI(getTaskRet.Message); //!初始化列表 ui.m_taskList.RemoveChildrenToPool(); foreach (TansferTask tansferTask in getTaskRet.TaskList) { GButton btn = ui.m_taskList.AddItemFromPool(FUI_ButtonTaskItem.URL).asButton; TaskBase taskBase = DataTableHelper.Get(tansferTask.Id); if (taskBase == null) continue; btn.title = taskBase.Name; btn.onClick.Set(() => { //!切换控制器 ui.m_contrl.selectedIndex = 1; ui.m_txtTaskName.text = taskBase.Name; ui.m_txtContent.text = " " + taskBase.DialogDesc; string completeString = GetCompleteCount(taskBase, tansferTask.CurrCompleteList); ui.m_txtTarget.text = $" {taskBase.TaskTargetDesc}{completeString}"; NPCBase npcBase = DataTableHelper.Get(taskBase.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 = GetRewardCount(taskBase.RwardCount); ui.m_RewardList.RemoveChildrenToPool(); for (int i = 0; i < taskBase.RewardArr.Length; i++) { TaskBase.Reward reward = taskBase.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)); } }); } static string GetCompleteCount(TaskBase taskBase, List currCompleteList) { string str = string.Empty; switch ((TaskTargetType)taskBase.TargetType) { default: return null; case TaskTargetType.KillSpecialTask: for (int i = 0; i < currCompleteList.Count; i++) { int count = currCompleteList[i]; TaskBase.CountTarget countTarget = taskBase.CountTargetArr[i]; MonsterBase monsterBase = DataTableHelper.Get(countTarget.CountTarget_Id); str += $"\r\n{monsterBase.NickName}:({count}/{countTarget.CountTarget_Count})"; } return str; case TaskTargetType.KillAnyTask: return $"\r\n({currCompleteList[0]}/{taskBase.AnyTargetCount})"; case TaskTargetType.DialogTask: case TaskTargetType.ChangeMapTask: case TaskTargetType.CompleteTask: return $"\r\n({currCompleteList[0]}/1)"; case TaskTargetType.CollectionTask: for (int i = 0; i < currCompleteList.Count; i++) { int count = currCompleteList[i]; TaskBase.CountTarget countTarget = taskBase.CountTargetArr[i]; str += $"\r\n{BagHelper.GetIconName(countTarget.CountTarget_Id).Item1}:({count}/{countTarget.CountTarget_Count})"; } return str; case TaskTargetType.LevelTask: return str; case TaskTargetType.SubmitTask: for (int i = 0; i < currCompleteList.Count; i++) { int count = currCompleteList[i]; TaskBase.CountTarget countTarget = taskBase.CountTargetArr[i]; str += $"\r\n{BagHelper.GetIconName(countTarget.CountTarget_Id).Item1}:({count}/{countTarget.CountTarget_Count})"; } return str; } } await ETTask.CompletedTask; } public static string GetRewardCount(int count) { if (count == 0) return string.Empty; else { return $"选择{count}个奖励"; } } public void Destroy() { } } }