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;
|
||
}
|
||
UnitScene 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 Unit _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);
|
||
ManulEquipBattle battle = BattleMgrCompnent.Instance.CreateBattle<ManulEquipBattle>(team);
|
||
battle.Init(config);
|
||
|
||
response.ConfigId = (int)config.Id;
|
||
reply();
|
||
await ETTask.CompletedTask;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
Log.Error(e);
|
||
}
|
||
}
|
||
}
|
||
} |