zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Unity/Assets/HotfixView/UI/TaskUI/TaskUI.cs

138 lines
5.9 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;
public void Awake()
{
ui = GetParent<FUI_TaskUI>();
AwakeAsync().Coroutine();
}
private async ETVoid AwakeAsync()
{
//!切换控制器
ui.m_contrl.selectedIndex = 0;
//!发起请求
var getTaskRet = await SessionComponent.Instance.Call<M2C_GetTask>(new C2M_GetTask());
if (!getTaskRet.Message.IsNullOrEmpty()) TipHelper.OpenUI(getTaskRet.Message);
//!初始化列表
ui.m_taskList.RemoveChildrenToPool();
foreach (var tansferTask in getTaskRet.TaskList)
{
var 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;
var completeString = GetCompleteCount(taskBase, tansferTask.CurrCompleteList);
ui.m_txtTarget.text = $" {taskBase.TaskTargetDesc}{completeString}";
var npcBase = DataTableHelper.Get<NPCBase>(taskBase.SubmitNPCId);
var 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++)
{
var reward = taskBase.RewardArr[i];
var rewardItem = ui.m_RewardList.AddItemFromPool(FUI_ButtonTaskRewardItem.URL).asButton;
var (itemName, 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++)
{
var count = currCompleteList[i];
var 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++)
{
var count = currCompleteList[i];
var 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++)
{
var count = currCompleteList[i];
var 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()
{
}
}
}