70 lines
2.9 KiB
C#
70 lines
2.9 KiB
C#
|
using Cal.DataTable;
|
|||
|
using System;
|
|||
|
|
|||
|
namespace ET
|
|||
|
{
|
|||
|
[ActorMessageHandler]
|
|||
|
public class C2M_StartManulEquipBattleHandler : AMActorLocationRpcHandler<Unit, C2M_StartManulEquipBattle, M2C_StartManulEquipBattle>
|
|||
|
{
|
|||
|
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;
|
|||
|
}
|
|||
|
var unitScene = unit.GetComponent<UnitScene>();
|
|||
|
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 var _unit))
|
|||
|
{
|
|||
|
response.Message = "您已击杀此领主";
|
|||
|
reply();
|
|||
|
return;
|
|||
|
}
|
|||
|
long configId = _unit.GetComponent<ConfigIdComponent>().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);
|
|||
|
var battle = BattleMgrCompnent.Instance.CreateBattle<ManulEquipBattle>(team);
|
|||
|
battle.Init(config);
|
|||
|
|
|||
|
response.ConfigId = (int)config.Id;
|
|||
|
reply();
|
|||
|
await ETTask.CompletedTask;
|
|||
|
}
|
|||
|
catch (Exception e)
|
|||
|
{
|
|||
|
Log.Error(e);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|