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 Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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);
}
}
}
}