Exemplo n.º 1
0
        /// <summary>
        /// This method looks at the type of request the player sent,
        /// and puts the appropriate data and type in to msg.data before adding it to MyMessages
        /// </summary>
        /// <param name="player"></param>
        /// <param name="msg"></param>
        public void addNewMessage(DataPlayer player, Messages.GameMessages msg, String data = null)
        {
            player = players.Find(n => n.Equals(player));
            if (player == null)
            {
                sendFeedback("addNewMessage", "Player Not Found\n PlayerName:" + player.PlayerName + "\n" +
                             msg.ToString());
                return;
            }
            if (player.InGame)//Use in game handler
            {
                IPlayable  game    = games.Find(n => n.Player1.Equals(player) || n.Player2.Equals(player));
                DataPlayer player1 = players.Find(n => n.Equals(game.Player1)),
                           player2 = players.Find(n => n.Equals(game.Player2));
                switch (msg)
                {
                case Messages.GameMessages.UpdateMatch:
                    updatePlayerInMatch(player);
                    break;

                case Messages.GameMessages.somChosen:
                    SOM som = (SOM)Enum.Parse(typeof(SOM), data);
                    game.getMessageFromConnection(Messages.GameMessages.somChosen,
                                                  player,
                                                  new List <object> {
                        som
                    });
                    game.Match.Transcript += "SoM chosen:" + som.ToString() + "\n";
                    break;

                case Messages.GameMessages.GameOver:
                    //Reset players,remove finished match from list
                    player1.InGame = false;
                    player2.InGame = false;
                    Matches.Remove(player1.ActiveMatch);
                    player1.ActiveMatch = new Match();
                    player1.ActiveMatch = null;
                    player2.ActiveMatch = null;
                    game = null;
                    break;

                case Messages.GameMessages.SendActiveMatches:
                    updatePlayerInMatch(player);
                    break;

                default:    //Covers all argument requests
                    game.getMessageFromConnection(msg, player, null);
                    break;
                }
            }
            else //Use lobby handler
            {
                switch (msg)
                {
                case Messages.GameMessages.SendActiveMatches:
                    updatePlayer(player);
                    break;

                case Messages.GameMessages.CreateMatch:
                    createMatch(player);
                    break;

                case Messages.GameMessages.LeaveMatch:
                    leaveMatch(player);
                    break;

                case Messages.GameMessages.UpdateAll:
                    updatePlayer(player);
                    break;

                case Messages.GameMessages.JoinMatch:
                    if (data == null)
                    {
                        addSignalMessage(Messages.GameMessages.InvalidMatch, player);
                    }
                    else
                    {
                        joinMatch(data, player);
                    }
                    break;

                case Messages.GameMessages.PlayerReady:
                    lockInPlayer(player);
                    break;

                case Messages.GameMessages.PlayerNotReady:
                    lockOutPlayer(player);
                    break;

                case Messages.GameMessages.UpdateMatch:
                    updatePlayerInMatch(player);
                    break;

                default:
                    break;
                }
            }
        }