Ejemplo n.º 1
0
        private PlayersMessage CreatePlayerMessage(MessageOperation operation, IPlayerID playerID)
        {
            List <PlayerInfo> list = new List <PlayerInfo>();
            PlayersMessage    msg  = (PlayersMessage)MessageFactory.Create(MessageType.Players);

            msg.Operation = (byte)operation;
            switch (operation)
            {
            case MessageOperation.List:
                foreach (IPlayerID pid in _players.Values)
                {
                    if (pid.GetID() != playerID.GetID())
                    {
                        ServerPlayerInfo spi = pid as ServerPlayerInfo;
                        list.Add(spi.GePlayerInfo());
                    }
                }
                break;

            case MessageOperation.Add:
                list.Add(((ServerPlayerInfo)playerID).GePlayerInfo());
                break;

            case MessageOperation.Remove:
                list.Add(((ServerPlayerInfo)playerID).GePlayerInfo());
                break;

            case MessageOperation.Modify:
                list.Add(((ServerPlayerInfo)playerID).GePlayerInfo());
                break;
            }
            msg.PlayerList = list;
            return(msg);
        }
Ejemplo n.º 2
0
 public virtual void RemovePlayer(IPlayerID playerID)
 {
     lock (((ICollection)_players).SyncRoot) {
         IPlayerID pid = _players[playerID.GetID()];
         _players.Remove(playerID.GetID());
         SendRemovePlayer(pid);
     }
 }
Ejemplo n.º 3
0
        protected override Message CreateRemoveMessage(IPlayerID playerID)
        {
            ChatUsersMessage msg = CreateChatUserMessage();

            msg.Option = (byte)MessageOperation.Remove;
            msg.ChatUsers.Add((ChatUser)playerID);
            return(msg);
        }
Ejemplo n.º 4
0
        public override void AddPlayer(IPlayerID player)
        {
            base.AddPlayer(player);
            PlayersMessage pim = CreatePlayerMessage(MessageOperation.Modify, (ServerPlayerInfo)_players[player.GetID()]);

            SendMessage(pim, player.GetID());
            CancelGameStart();
        }
Ejemplo n.º 5
0
 public virtual void AddPlayer(IPlayerID player)
 {
     lock (((ICollection)_players).SyncRoot) {
         IPlayerID playerId = TransformInitialy(player);
         _players.Add(playerId.GetID(), playerId);
         SendAddPlayer(playerId);
         SendListPlayer(playerId);
     }
 }
Ejemplo n.º 6
0
 public override void RemovePlayer(IPlayerID playerID)
 {
     base.RemovePlayer(playerID);
     lock (((ICollection)_players).SyncRoot) {
         CancelGameStart();
         if (RepairTeams())
         {
             PlayersMessage msg = CreatePlayerMessage(MessageOperation.Modify, _players.GetEnumerator().Current.Value);
             BroadcastExcl(msg, -1);
         }
     }
 }
Ejemplo n.º 7
0
        protected override Message CreateListMessage(IPlayerID playerID)
        {
            ChatUsersMessage msg = CreateChatUserMessage();

            msg.Option = (byte)MessageOperation.List;
            lock (((ICollection)_players).SyncRoot) {
                foreach (IPlayerID pid in _players.Values)
                {
                    if (pid.GetID() != playerID.GetID())
                    {
                        msg.ChatUsers.Add((ChatUser)pid);
                    }
                }
            }
            return(msg);
        }
Ejemplo n.º 8
0
        protected override IPlayerID TransformInitialy(IPlayerID player)
        {
            Player           p         = player as Player;
            ServerPlayerInfo svp       = new ServerPlayerInfo(p);
            short            teamId    = 1;
            Color            baseColor = ServerPlayerInfo.StartColors[0];

            if (_players.Count > 0)
            {
                lock (((ICollection)_players).SyncRoot) {
                    teamId    = GetTeamForPlayer();
                    baseColor = GetColorForPlayer();
                }
            }
            svp.TeamID = teamId;
            svp.Color  = baseColor;
            return(svp);
        }
Ejemplo n.º 9
0
 protected abstract Message CreateRemoveMessage(IPlayerID playerID);
Ejemplo n.º 10
0
        protected override IPlayerID TransformInitialy(IPlayerID player)
        {
            Player p = (Player)player;

            return((IPlayerID)PlayerToChatUser(p));
        }
Ejemplo n.º 11
0
 protected override Message CreateRemoveMessage(IPlayerID playerID)
 {
     return(CreatePlayerMessage(MessageOperation.Remove, playerID));
 }
Ejemplo n.º 12
0
 protected override Message CreateAddMessage(IPlayerID playerID)
 {
     return(CreatePlayerMessage(MessageOperation.Add, playerID));
 }
Ejemplo n.º 13
0
 protected override Message CreateListMessage(IPlayerID playerID)
 {
     return(CreatePlayerMessage(MessageOperation.List, playerID));
 }
Ejemplo n.º 14
0
 protected void SendRemovePlayer(IPlayerID playerID)
 {
     BroadcastExcl(CreateRemoveMessage(playerID), playerID.GetID());
 }
Ejemplo n.º 15
0
 protected abstract IPlayerID TransformInitialy(IPlayerID player);
Ejemplo n.º 16
0
 protected void SendListPlayer(IPlayerID playerID)
 {
     SendMessage(CreateListMessage(playerID), playerID.GetID());
 }
Ejemplo n.º 17
0
 protected abstract Message CreateListMessage(IPlayerID playerID);
Ejemplo n.º 18
0
        protected void SendAddPlayer(IPlayerID playerID)
        {
            Message msg = CreateAddMessage(playerID);

            BroadcastExcl(msg, playerID.GetID());
        }