using Cal.DataTable; using System; namespace ET { [ActorMessageHandler] public class C2M_StartManulEquipBattleHandler : AMActorLocationRpcHandler { protected override async ETTask Run(Unit unit, C2M_StartManulEquipBattle request, M2C_StartManulEquipBattle response, Action reply) { try { //!排除队伍 Team team = TeamComponent.Instance.Get(unit.TeamLeaderId); if (team != null) { if(!AppConfig.inst.isTest) if (team.MemberCount < 3) { response.Message = "至少3人才能挑战!"; reply(); return; } } if (team.TeamState == TeamState.Fight) { Log.Error($"*【{ UserComponent.Instance.Get(unit.Id)?.NickName} ({ unit.Id})】多次进行手工副本战斗"); response.Message = "系统错误"; reply(); return; } UnitScene unitScene = unit.GetComponent(); UnitSceneType unitSceneType = MapSceneComponent.Instance.GetUnitSceneType(unitScene.MapId / 100); if (unitSceneType != UnitSceneType.ManulEquip) { Log.Error($"*【{ UserComponent.Instance.Get(unit.Id)?.NickName} ({ unit.Id})】场景{unitScene.MapId / 100}错误"); response.Message = "系统错误"; reply(); return; } if (!ManulEquipMap.instance.mapUnitDic.TryGetValue(unit.Id, out Unit _unit)) { response.Message = "您已击杀此领主"; reply(); return; } long configId = _unit.GetComponent().configId; ManulEquipMonsterConfig config = ManulEquipMonsterConfigCategory.Instance.Get(configId); if ((unitScene.Position - new UnityEngine.Vector2(config.X, config.Y)).sqrMagnitude > MoveHelper.AtkDis) { Log.Error($"*【{ UserComponent.Instance.Get(unit.Id)?.NickName} ({ unit.Id})】位置{unitScene.Position}错误"); response.Message = "系统错误"; reply(); return; } ManulEquipMap.instance.DestoryUnit(unit.Id); ManulEquipBattle battle = BattleMgrCompnent.Instance.CreateBattle(team); battle.Init(config); response.ConfigId = (int)config.Id; reply(); await ETTask.CompletedTask; } catch (Exception e) { Log.Error(e); } } } }