zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Server/Hotfix/Game/Handler/Battle/Common/C2M_StartManulEquipBattleHa...

70 lines
2.9 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
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);
}
}
}
}