Example #1
0
 /// <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);
     }
 }
Example #2
0
        /// <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);
                }
            }
        }
Example #3
0
        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);
        }