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

141 lines
6.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
public void Awake()
{
zoneScene = this.ZoneScene();
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());
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<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;
string completeString = GetCompleteCount(taskBase, tansferTask.CurrCompleteList);
ui.m_txtTarget.text = $" {taskBase.TaskTargetDesc}{completeString}";
NPCBase npcBase = DataTableHelper.Get<NPCBase>(taskBase.SubmitNPCId);
Sys_Scene sysScene = DataTableHelper.Get<Sys_Scene>(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<int> 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<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++)
{
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()
{
}
}
}