138 lines
5.9 KiB
C#
138 lines
5.9 KiB
C#
|
|
|||
|
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()
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|