CTT/Server/Hotfix/Game/Handler/Map/C2M_ClickNPCHandler.cs

106 lines
4.1 KiB
C#
Raw Permalink Normal View History

2021-04-08 20:09:59 +08:00
using Cal.DataTable;
using System;
2021-04-11 19:50:39 +08:00
using System.Collections.Generic;
2021-05-01 11:27:41 +08:00
using ET.EventType;
2021-04-08 20:09:59 +08:00
namespace ET
{
[ActorMessageHandler]
2022-01-22 20:06:58 +08:00
public class C2M_ClickNPCHandler: AMActorLocationRpcHandler<Unit, C2M_ClickNPC, M2C_ClickNPC>
2021-04-08 20:09:59 +08:00
{
protected override async ETTask Run(Unit unit, C2M_ClickNPC request, M2C_ClickNPC response, Action reply)
{
Team team = TeamComponent.Instance.Get(unit.TeamLeaderId);
if (team.TeamState == TeamState.Fight)
{
response.Message = "战斗中...";
reply();
return;
}
2022-01-22 20:06:58 +08:00
2021-04-11 19:50:39 +08:00
UnitScene unitScene = unit.GetComponent<UnitScene>();
2021-04-08 20:09:59 +08:00
NPCBase nPCBase = DataTableHelper.Get<NPCBase>(request.NPCId);
if (unitScene.MapId != nPCBase.SceneId * 100 + nPCBase.MapLayer)
{
2022-01-22 20:06:58 +08:00
Log.Error($"*【{UserComponent.Instance.Get(unit.Id)?.NickName} ({unit.Id})】点击NPC场景{unitScene.MapId}错误");
2021-04-08 20:09:59 +08:00
response.Message = "系统错误";
reply();
return;
}
2022-01-22 20:06:58 +08:00
2021-04-08 20:09:59 +08:00
if ((unitScene.Position - new UnityEngine.Vector2(nPCBase.PosX, nPCBase.PosY)).sqrMagnitude > (MoveHelper.AtkDis))
{
2022-01-22 20:06:58 +08:00
Log.Error($"*【{UserComponent.Instance.Get(unit.Id)?.NickName} ({unit.Id})】点击NPC位置{unitScene.Position}错误");
2021-04-08 20:09:59 +08:00
response.Message = "系统错误";
reply();
return;
}
2022-01-22 20:06:58 +08:00
2021-04-08 20:09:59 +08:00
switch (request.NPCId)
{
2022-01-22 20:06:58 +08:00
case 1001: //爱神
2021-04-08 20:09:59 +08:00
break;
2022-01-22 20:06:58 +08:00
case 1002: //炼金术士
2021-04-08 20:09:59 +08:00
break;
2022-01-22 20:06:58 +08:00
case 1003: //博士
2021-04-08 20:09:59 +08:00
int cardCount = QuestComponent.instance.CheckAnswerCard(unit.Id);
MessageHelper.SendActor(unit, new M2C_OpenQuestUI { Card = cardCount });
break;
2022-01-22 20:06:58 +08:00
case 1004: //管家
2021-04-08 20:09:59 +08:00
MessageHelper.SendActor(unit, new M2C_OpenStoreUI());
break;
2022-01-22 20:06:58 +08:00
case 1008: //普通商店
2021-04-08 20:09:59 +08:00
MessageHelper.SendActor(unit, new M2C_OpenShopUI());
break;
2022-01-22 20:06:58 +08:00
case 1009: //寄售
{
M2C_OpenConsignmentUI ret = new M2C_OpenConsignmentUI();
ret.TotalPage = await ConsignmentComponent.Instance.GetConsignmet(unit, ret.ConsignMapList);
MessageHelper.SendActor(unit, ret);
}
2021-04-08 20:09:59 +08:00
break;
2022-01-22 20:06:58 +08:00
case 1010: //合成
{
M2C_OpenForgeUI ret = new M2C_OpenForgeUI();
MessageHelper.SendActor(unit, ret);
}
2021-04-08 20:09:59 +08:00
break;
2022-01-22 20:06:58 +08:00
case 1011: //炼化
2021-04-08 20:09:59 +08:00
MessageHelper.SendActor(unit, new M2C_OpenMeltEquipUI());
break;
2022-01-22 20:06:58 +08:00
case 1005: //练级任务
case 1006: //每日任务
case 1007: //冲级任务
case 1012: //第1层JJ
case 1013: //第2层JJ
case 1014: //第3层JJ
case 1015: //第4层JJ
case NPCBaseId.:
{
List<NPCTask> taskList = TaskComponent.Instance.CanAcceptTask(unit, request.NPCId);
if (taskList.Count == 0) break;
M2C_OpenTaskUI ret = new M2C_OpenTaskUI();
ret.TaskList.AddRange(taskList);
MessageHelper.SendActor(unit, ret);
}
break;
case NPCBaseId.使:
2021-04-08 20:09:59 +08:00
break;
2021-05-01 11:27:41 +08:00
case NPCBaseId.:
StartSpaceTravel(unit);
break;
2021-04-08 20:09:59 +08:00
}
2022-01-22 20:06:58 +08:00
await Game.EventSystem.Publish(new EventType.UpdateTaskState { unit = unit, type = TaskTargetType.DialogTask, value = request.NPCId });
2021-04-08 20:09:59 +08:00
reply();
await ETTask.CompletedTask;
}
2021-05-01 11:27:41 +08:00
private void StartSpaceTravel(Unit unit)
{
2022-01-22 20:06:58 +08:00
MessageHelper.SendActor(unit, new M2C_OpenSpaceTravelNpcUI());
2021-05-01 11:27:41 +08:00
}
2021-04-08 20:09:59 +08:00
}
}