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

148 lines
6.0 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00

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;
2021-04-08 20:09:59 +08:00
public void Awake(List<NPCTask> list)
{
zoneScene = this.ZoneScene();
2021-04-08 20:09:59 +08:00
ui = GetParent<FUI_NPCTaskUI>();
taskList = list;
AwakeAsync().Coroutine();
}
private async ETVoid AwakeAsync()
{
//!切换控制器
ui.m_contrl.selectedIndex = 0;
//!显示第一页内容
if (taskList.Count == 0) return;
2021-04-11 19:50:39 +08:00
TaskBase taskBase = DataTableHelper.Get<TaskBase>(taskList[0].Id);
NPCBase npcBase = DataTableHelper.Get<NPCBase>(taskBase.GiveNPCId);
2021-04-08 20:09:59 +08:00
//!窗口名字
ui.m_frame.self.title = npcBase.Name;
//!对话内容
ui.m_txtDialog.text = " " + npcBase.Dialog;
int _taskId = 0;
bool isAccept = false;
ui.m_taskList.RemoveChildrenToPool();
2021-04-11 19:50:39 +08:00
foreach (NPCTask npcTask in taskList)
2021-04-08 20:09:59 +08:00
{
2021-04-11 19:50:39 +08:00
GButton btn = ui.m_taskList.AddItemFromPool().asButton;
2021-04-08 20:09:59 +08:00
taskBase = DataTableHelper.Get<TaskBase>(npcTask.Id);
btn.title = $"{taskBase.Name}({GetTaskStateString(npcTask.TaskState)})";
2021-04-11 19:50:39 +08:00
TaskBase tempTaskBase = taskBase;
2021-04-08 20:09:59 +08:00
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);
2021-04-11 19:50:39 +08:00
Sys_Scene sysScene = DataTableHelper.Get<Sys_Scene>(npcBase.SceneId);
2021-04-08 20:09:59 +08:00
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++)
{
2021-04-11 19:50:39 +08:00
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);
2021-04-08 20:09:59 +08:00
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 });
2021-04-08 20:09:59 +08:00
if (!ret.Message.IsNullOrEmpty())
{
TipHelper.OpenUI(ret.Message);
}
}
else
{
2021-04-11 19:50:39 +08:00
C2M_CompleteTask proto = new C2M_CompleteTask() { TaskId = _taskId };
2021-04-08 20:09:59 +08:00
proto.IndexList.AddRange(ui.m_RewardList.GetSelection());
M2C_CompleteTask ret = await zoneScene.GetComponent<SessionComponent>().Call<M2C_CompleteTask>(proto);
2021-04-08 20:09:59 +08:00
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()
{
}
}
}