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;
|
2021-04-20 00:25:04 +08:00
|
|
|
|
private Scene zoneScene;
|
2021-04-08 20:09:59 +08:00
|
|
|
|
|
|
|
|
|
public void Awake(List<NPCTask> list)
|
|
|
|
|
{
|
2021-04-20 00:25:04 +08:00
|
|
|
|
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)
|
|
|
|
|
{
|
2021-04-20 00:25:04 +08:00
|
|
|
|
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());
|
2021-04-20 00:25:04 +08:00
|
|
|
|
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()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|