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

146 lines
5.8 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 NPCTaskUIAwakeSyatem : AwakeSystem<NPCTaskUI,List<NPCTask>>
{
public override void Awake(NPCTaskUI self,List<NPCTask> list)
{
self.Awake(list);
}
}
public class NPCTaskUIDestroySyatem : DestroySystem<NPCTaskUI>
{
public override void Destroy(NPCTaskUI self)
{
self.Destroy();
}
}
public class NPCTaskUI : Entity
{
public FUI_NPCTaskUI ui;
public List<NPCTask> taskList;
public void Awake(List<NPCTask> list)
{
ui = GetParent<FUI_NPCTaskUI>();
taskList = list;
AwakeAsync().Coroutine();
}
private async ETVoid AwakeAsync()
{
//!切换控制器
ui.m_contrl.selectedIndex = 0;
//!显示第一页内容
if (taskList.Count == 0) return;
var taskBase = DataTableHelper.Get<TaskBase>(taskList[0].Id);
var npcBase = DataTableHelper.Get<NPCBase>(taskBase.GiveNPCId);
//!窗口名字
ui.m_frame.self.title = npcBase.Name;
//!对话内容
ui.m_txtDialog.text = " " + npcBase.Dialog;
int _taskId = 0;
bool isAccept = false;
ui.m_taskList.RemoveChildrenToPool();
foreach (var npcTask in taskList)
{
var btn = ui.m_taskList.AddItemFromPool().asButton;
taskBase = DataTableHelper.Get<TaskBase>(npcTask.Id);
btn.title = $"{taskBase.Name}({GetTaskStateString(npcTask.TaskState)})";
var tempTaskBase = taskBase;
btn.onClick.Set(() =>
{
//!给Id变量赋值
switch (npcTask.TaskState)
{
case TaskState.TaskWaiting:
isAccept = true;
ui.m_btnAccept.self.visible = true;
ui.m_btnAccept.self.title = "接受任务";
break;
case TaskState.TaskRunning:
ui.m_btnAccept.self.visible = false;
break;
case TaskState.TaskCompleted:
isAccept = false;
ui.m_btnAccept.self.visible = true;
ui.m_btnAccept.self.title = "领取奖励";
break;
}
_taskId = npcTask.Id;
//!切换控制器
ui.m_contrl.selectedIndex = 1;
ui.m_txtTaskName.text = tempTaskBase.Name;
ui.m_txtContent.text = " " + tempTaskBase.DialogDesc;
ui.m_txtTarget.text = " " + tempTaskBase.TaskTargetDesc;
npcBase = DataTableHelper.Get<NPCBase>(tempTaskBase.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 = TaskUI.GetRewardCount(taskBase.RwardCount);
ui.m_RewardList.RemoveChildrenToPool();
for (int i = 0; i < tempTaskBase.RewardArr.Length; i++)
{
var reward = tempTaskBase.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));
}
});
}
ui.m_btnAccept.self.onClick.Set(async () =>
{
if (isAccept)
{
var ret = await SessionComponent.Instance.Call<M2C_AcceptTask>(new C2M_AcceptTask() { TaskId = _taskId });
if (!ret.Message.IsNullOrEmpty())
{
TipHelper.OpenUI(ret.Message);
}
}
else
{
var proto = new C2M_CompleteTask() { TaskId = _taskId };
proto.IndexList.AddRange(ui.m_RewardList.GetSelection());
var ret = await SessionComponent.Instance.Call<M2C_CompleteTask>(proto);
if (!ret.Message.IsNullOrEmpty())
{
TipHelper.OpenUI(ret.Message);
}
}
ui.GetComponent<FUIWindowComponent>().Hide();
});
string GetTaskStateString(TaskState state)
{
switch (state)
{
default:
case TaskState.TaskWaiting: return "可接受";
case TaskState.TaskRunning: return "进行中";
case TaskState.TaskCompleted: return "已完成";
}
}
await ETTask.CompletedTask;
}
public void Destroy()
{
}
}
}