using System; namespace ET { [ActorMessageHandler] public class C2M_TransferTeamLeaderHandler : AMActorLocationRpcHandler { 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; } } }