61 lines
1.7 KiB
C#
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;
|
|
}
|
|
}
|
|
} |