Example #1
0
        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);
        }
Example #2
0
 /// <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);//玩家不在队伍中,告知玩家不在队伍中
     }
 }