148 lines
6.0 KiB
C#
148 lines
6.0 KiB
C#
|
||
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;
|
||
private Scene zoneScene;
|
||
|
||
public void Awake(List<NPCTask> list)
|
||
{
|
||
zoneScene = this.ZoneScene();
|
||
ui = GetParent<FUI_NPCTaskUI>();
|
||
taskList = list;
|
||
AwakeAsync().Coroutine();
|
||
}
|
||
private async ETVoid AwakeAsync()
|
||
{
|
||
//!切换控制器
|
||
ui.m_contrl.selectedIndex = 0;
|
||
//!显示第一页内容
|
||
if (taskList.Count == 0) return;
|
||
TaskBase taskBase = DataTableHelper.Get<TaskBase>(taskList[0].Id);
|
||
NPCBase 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 (NPCTask npcTask in taskList)
|
||
{
|
||
GButton btn = ui.m_taskList.AddItemFromPool().asButton;
|
||
taskBase = DataTableHelper.Get<TaskBase>(npcTask.Id);
|
||
btn.title = $"{taskBase.Name}({GetTaskStateString(npcTask.TaskState)})";
|
||
TaskBase 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);
|
||
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 = TaskUI.GetRewardCount(taskBase.RwardCount);
|
||
ui.m_RewardList.RemoveChildrenToPool();
|
||
for (int i = 0; i < tempTaskBase.RewardArr.Length; i++)
|
||
{
|
||
TaskBase.Reward reward = tempTaskBase.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));
|
||
}
|
||
});
|
||
}
|
||
ui.m_btnAccept.self.onClick.Set(async () =>
|
||
{
|
||
if (isAccept)
|
||
{
|
||
M2C_AcceptTask ret = await zoneScene.GetComponent<SessionComponent>().Call<M2C_AcceptTask>(new C2M_AcceptTask() { TaskId = _taskId });
|
||
if (!ret.Message.IsNullOrEmpty())
|
||
{
|
||
TipHelper.OpenUI(ret.Message);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
C2M_CompleteTask proto = new C2M_CompleteTask() { TaskId = _taskId };
|
||
proto.IndexList.AddRange(ui.m_RewardList.GetSelection());
|
||
M2C_CompleteTask ret = await zoneScene.GetComponent<SessionComponent>().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()
|
||
{
|
||
|
||
}
|
||
}
|
||
}
|