/// <summary> /// 离开队伍 /// </summary> /// <param name="note"></param> /// <param name="team"></param> private void OutTeam(UserNote note, PlayerTeam team) { PlayerBusiness player = note.Player; if (team.RemoveMember(player)) { var buffer = AmfCodec.Encode(TeamCommand.OutTeamR, new object[] { true, team.TeamID, player.ID, player.Name, null }); if (player.SceneID == team.Captain.SceneID) { team.Captain.CallAll(buffer); //通知其它场景上的用户 team.CallAway(buffer, team.Captain.SceneID); } else { player.Call(buffer); //通知其它场景上的用户 team.CallAway(buffer, player.SceneID); } } var t = player.TeamInstance; if (t != null) { t.Exit(player, true); } }
/// <summary> /// 请出队伍 /// </summary> /// <param name="note"></param> /// <param name="team"></param> private void KillMember(UserNote note, PlayerTeam team) { string memberID = note.GetString(0); PlayerBusiness memeber = team.RemoveMember(memberID); if (memeber != null) { var buffer = AmfCodec.Encode(TeamCommand.OutTeamR, new object[] { true, team.TeamID, memberID, memeber.Name, null }); team.Captain.CallAll(buffer); //通知其它场景上的用户 team.CallAway(buffer, note.Player.SceneID); var t = memeber.TeamInstance; if (t != null) { t.Exit(memeber, true); } } }
private void UserDisconnected(UserNote note, PlayerTeam team) { PlayerBusiness player = note.Player; if (player != team.Captain) { if (team.RemoveMember(player)) { //TODO:通知队员退出 var buffer = AmfCodec.Encode(TeamCommand.AwayTeamR, new object[] { true, team.TeamID, player.ID, player.Name, null }); team.CallAway(buffer, player.SceneID); } return; } //队长退出 if (team.Count > 1) { //转让队伍 PlayerBusiness newCaptain = team.TransferCaptain(string.Empty, true); if (newCaptain != null) { var buffer = AmfCodec.Encode(TeamCommand.ChangeManagerR, new object[] { team.TeamID, newCaptain.ID }); team.Captain.CallAll(buffer); team.CallAway(buffer, newCaptain.SceneID); return; } } FreeTeam(note, team); }