CTT/Server/Hotfix/Game/Handler/Team/C2M_TransferTeamLeaderHandl...

61 lines
1.7 KiB
C#

using System;
namespace ET
{
[ActorMessageHandler]
public class C2M_TransferTeamLeaderHandler : AMActorLocationRpcHandler<Unit,C2M_TransferTeamLeader, M2C_TransferTeamLeader>
{
protected override async ETTask Run(Unit unit, C2M_TransferTeamLeader request, M2C_TransferTeamLeader response, Action reply)
{
if (unit.Id == request.UnitId)
{
response.Message = "抱歉,你不能转让给自己!";
reply();
return;
}
if(!unit.IsTeamLeader)
{
response.Message = "你不是队长,无权限!";
reply();
return;
}
if (unit.isAI)
{
response.Message = "自动跑图中,不能进行此操作";
reply();
return;
}
Team team = TeamComponent.Instance.Get(unit.TeamLeaderId);
if (team == null)
{
Log.Error($"team == null where id = {unit.Id} teamId = {unit.TeamLeaderId}");
return;
}
if (team.TeamState== TeamState.Fight)
{
response.Message = "战斗中,不能进行此操作!";
reply();
return;
}
if (!team.Contains(request.UnitId))
{
response.Message = $"玩家{request.UnitId}在队伍中不存在!";
reply();
return;
}
team.LeaderId = request.UnitId;
//更新信息
TeamComponent.Instance.Update(unit.TeamLeaderId, team);
MainStoryMap.Instance.UpdateBattleInteractiveInfo(unit.TeamLeaderId, team.LeaderId);
foreach (Unit item in team.GetUnits())
{
item.TeamLeaderId = request.UnitId;
}
team.ChangeLeader(team.LeaderId);
reply();
TeamHelper.SendTeamMember(team);
await ETTask.CompletedTask;
}
}
}