118 lines
5.0 KiB
C#
118 lines
5.0 KiB
C#
using Cal.DataTable;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using ET.EventType;
|
|
|
|
namespace ET
|
|
{
|
|
[ActorMessageHandler]
|
|
public class C2M_ClickNPCHandler : AMActorLocationRpcHandler<Unit, C2M_ClickNPC, M2C_ClickNPC>
|
|
{
|
|
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;
|
|
}
|
|
UnitScene unitScene = unit.GetComponent<UnitScene>();
|
|
NPCBase nPCBase = DataTableHelper.Get<NPCBase>(request.NPCId);
|
|
if (unitScene.MapId != nPCBase.SceneId * 100 + nPCBase.MapLayer)
|
|
{
|
|
Log.Error($"*【{ UserComponent.Instance.Get(unit.Id)?.NickName} ({ unit.Id})】点击NPC场景{unitScene.MapId}错误");
|
|
response.Message = "系统错误";
|
|
reply();
|
|
return;
|
|
}
|
|
if ((unitScene.Position - new UnityEngine.Vector2(nPCBase.PosX, nPCBase.PosY)).sqrMagnitude > (MoveHelper.AtkDis))
|
|
{
|
|
Log.Error($"*【{ UserComponent.Instance.Get(unit.Id)?.NickName} ({ unit.Id})】点击NPC位置{unitScene.Position}错误");
|
|
response.Message = "系统错误";
|
|
reply();
|
|
return;
|
|
}
|
|
switch (request.NPCId)
|
|
{
|
|
case 1001://爱神
|
|
|
|
break;
|
|
case 1002://炼金术士
|
|
|
|
break;
|
|
case 1003://博士
|
|
int cardCount = QuestComponent.instance.CheckAnswerCard(unit.Id);
|
|
MessageHelper.SendActor(unit, new M2C_OpenQuestUI { Card = cardCount });
|
|
break;
|
|
case 1004://管家
|
|
MessageHelper.SendActor(unit, new M2C_OpenStoreUI());
|
|
break;
|
|
case 1008://普通商店
|
|
MessageHelper.SendActor(unit, new M2C_OpenShopUI());
|
|
break;
|
|
case 1009://寄售
|
|
{
|
|
M2C_OpenConsignmentUI ret = new M2C_OpenConsignmentUI();
|
|
ret.TotalPage = await ConsignmentComponent.Instance.GetConsignmet(unit, ret.ConsignMapList);
|
|
MessageHelper.SendActor(unit, ret);
|
|
}
|
|
break;
|
|
case 1010://合成
|
|
{
|
|
M2C_OpenForgeUI ret = new M2C_OpenForgeUI();
|
|
MessageHelper.SendActor(unit, ret);
|
|
}
|
|
break;
|
|
case 1011://炼化
|
|
MessageHelper.SendActor(unit, new M2C_OpenMeltEquipUI());
|
|
break;
|
|
case 1005://练级任务
|
|
case 1006://每日任务
|
|
case 1007://冲级任务
|
|
case 1012://第1层JJ
|
|
case 1013://第2层JJ
|
|
case 1014://第3层JJ
|
|
case 1015://第4层JJ
|
|
{
|
|
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.时空旅人:
|
|
StartSpaceTravel(unit);
|
|
break;
|
|
}
|
|
await Game.EventSystem.Publish(new EventType.UpdateTaskState
|
|
{
|
|
unit = unit,
|
|
type = TaskTargetType.DialogTask,
|
|
value = request.NPCId
|
|
});
|
|
reply();
|
|
await ETTask.CompletedTask;
|
|
}
|
|
|
|
private void StartSpaceTravel(Unit unit)
|
|
{
|
|
MessageHelper.SendActor(unit,new M2C_OpenSpaceTravelNpcUI());
|
|
// Game.EventSystem.Publish(new ChangeMap() { unit = unit, mapId =Sys_SceneId.Scene_SpaceTravel1 * 100 + 1 });
|
|
|
|
// var team = TeamComponent.Instance.Get(unit.TeamLeaderId);
|
|
// CopyBattle battle = BattleMgrCompnent.Instance.CreateBattle(team);
|
|
// int difficult = 1;
|
|
// int index = 1;
|
|
// SpaceTravelConfig spaceTravelConfig = SpaceTravelConfigCategory.Instance.GetByDifficultAndIndex(difficult, index);
|
|
// if (spaceTravelConfig == null)
|
|
// {
|
|
// Log.Error($"config == null when difficult = {difficult} index = {index}");
|
|
// return;
|
|
// }
|
|
// MonsterFactoryHelper.SpaceTravelGenerate(battle,spaceTravelConfig);
|
|
// battle.Init(team,battle.targetTeam, CopyConfigId.SpaceTravelBattle, spaceTravelConfig.Id);
|
|
}
|
|
}
|
|
} |