public TeamReceipt GetTeamInfo(int Ret) { TeamReceipt Receipt = new TeamReceipt { ret = Ret, TeamOpenid = this.TeamOpenid, MasterOpenid = this.MasterOpenid, TeamMode = this.TeamMode, TeamType = this.TeamType, TeamMembers = this.TeamPlayerInfo(), ReadyInfo = this.TeamReadyInfo() }; return(Receipt); }
/// <summary> /// 退出队伍 /// </summary> /// <param name="TeamOpenid"></param> /// <param name="player"></param> /// <param name="TargetOpenid"></param> public void ExitTeam(Player player) { if (player.TeamOpenid != null) { if (!TeamDict.ContainsKey(player.TeamOpenid)) { ProtocolBytes ExitRet = new ProtocolBytes(); ExitRet.SetProtocol(Fursion_Protocol.Team_SelfExit); TeamReceipt Receipt = new TeamReceipt { ret = 0 }; ExitRet.AddData(Receipt); player.Send(ExitRet);//玩家不在队伍中,告知玩家不在队伍中 return; } string TeamOpenid = player.TeamOpenid; for (int i = 0; i < TeamDict[TeamOpenid].Players.Length; i++) { if (TeamDict[TeamOpenid].Players[i] == player) { ProtocolBytes ExitRet = new ProtocolBytes(); ExitRet.SetProtocol(Fursion_Protocol.Team_SelfExit); TeamDict[TeamOpenid].Players[i] = null; if (player.Openid == TeamDict[TeamOpenid].MasterOpenid) { player.TeamOpenid = null; ExitRet.AddData(TeamDict[TeamOpenid].GetTeamInfo(0)); player.Send(ExitRet); if (TeamDict[TeamOpenid].EffectivePlayerNumber() == 0)// { DestoryTeam(TeamOpenid); return; } else { TeamDict[TeamOpenid].MasterOpenid = TeamDict[TeamOpenid].RetFastPlayerID(); } } else { player.TeamOpenid = null; ExitRet.AddData(TeamDict[TeamOpenid].GetTeamInfo(0)); player.Send(ExitRet); } ProtocolBytes BordExitRet = new ProtocolBytes(); BordExitRet.SetProtocol(Fursion_Protocol.Team_ExitTeam); BordExitRet.AddData(TeamDict[TeamOpenid].GetTeamInfo(0)); if (TeamDict.ContainsKey(TeamOpenid)) { TeamDict[TeamOpenid].BordCast(BordExitRet);//广播给队伍里剩余人 } return; } } } else { ProtocolBytes ExitRet = new ProtocolBytes(); ExitRet.SetProtocol(Fursion_Protocol.Team_SelfExit); TeamReceipt Receipt = new TeamReceipt { ret = 0 }; ExitRet.AddData(Receipt); player.Send(ExitRet);//玩家不在队伍中,告知玩家不在队伍中 } }