using Cal.DataTable; using System; using System.Collections.Generic; using ET.EventType; namespace ET { [ActorMessageHandler] public class C2M_ClickNPCHandler : AMActorLocationRpcHandler { 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(); NPCBase nPCBase = DataTableHelper.Get(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 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); } } }