CTT/Unity/Assets/HotfixView/UI/TaskUI/TaskUI.cs

141 lines
6.1 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00

using Cal.DataTable;
using ET;
using FairyGUI;
using System;
using System.Collections.Generic;
namespace ET
{
public class TaskUIAwakeSyatem : AwakeSystem<TaskUI>
{
public override void Awake(TaskUI self)
{
self.Awake();
}
}
public class TaskUIDestroySyatem : DestroySystem<TaskUI>
{
public override void Destroy(TaskUI self)
{
self.Destroy();
}
}
public class TaskUI : Entity
{
public FUI_TaskUI ui;
private Scene zoneScene;
2021-04-08 20:09:59 +08:00
public void Awake()
{
zoneScene = this.ZoneScene();
2021-04-08 20:09:59 +08:00
ui = GetParent<FUI_TaskUI>();
AwakeAsync().Coroutine();
}
private async ETVoid AwakeAsync()
{
//!切换控制器
ui.m_contrl.selectedIndex = 0;
//!发起请求
M2C_GetTask getTaskRet = await zoneScene.GetComponent<SessionComponent>().Call<M2C_GetTask>(new C2M_GetTask());
2021-04-08 20:09:59 +08:00
if (!getTaskRet.Message.IsNullOrEmpty()) TipHelper.OpenUI(getTaskRet.Message);
//!初始化列表
ui.m_taskList.RemoveChildrenToPool();
2021-04-11 19:50:39 +08:00
foreach (TansferTask tansferTask in getTaskRet.TaskList)
2021-04-08 20:09:59 +08:00
{
2021-04-11 19:50:39 +08:00
GButton btn = ui.m_taskList.AddItemFromPool(FUI_ButtonTaskItem.URL).asButton;
2021-04-08 20:09:59 +08:00
TaskBase taskBase = DataTableHelper.Get<TaskBase>(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;
2021-04-11 19:50:39 +08:00
string completeString = GetCompleteCount(taskBase, tansferTask.CurrCompleteList);
2021-04-08 20:09:59 +08:00
ui.m_txtTarget.text = $" {taskBase.TaskTargetDesc}{completeString}";
2021-04-11 19:50:39 +08:00
NPCBase npcBase = DataTableHelper.Get<NPCBase>(taskBase.SubmitNPCId);
Sys_Scene sysScene = DataTableHelper.Get<Sys_Scene>(npcBase.SceneId);
2021-04-08 20:09:59 +08:00
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++)
{
2021-04-11 19:50:39 +08:00
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);
2021-04-08 20:09:59 +08:00
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<int> currCompleteList)
{
string str = string.Empty;
switch ((TaskTargetType)taskBase.TargetType)
{
default: return null;
case TaskTargetType.KillSpecialTask:
for (int i = 0; i < currCompleteList.Count; i++)
{
2021-04-11 19:50:39 +08:00
int count = currCompleteList[i];
TaskBase.CountTarget countTarget = taskBase.CountTargetArr[i];
2021-04-08 20:09:59 +08:00
MonsterBase monsterBase = DataTableHelper.Get<MonsterBase>(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++)
{
2021-04-11 19:50:39 +08:00
int count = currCompleteList[i];
TaskBase.CountTarget countTarget = taskBase.CountTargetArr[i];
2021-04-08 20:09:59 +08:00
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++)
{
2021-04-11 19:50:39 +08:00
int count = currCompleteList[i];
TaskBase.CountTarget countTarget = taskBase.CountTargetArr[i];
2021-04-08 20:09:59 +08:00
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()
{
}
}
}