public static AckMessage Decode(byte[] bytes)
        {
            AckMessage message = null;

            if (bytes != null)
            {
                message = new AckMessage();

                MemoryStream memoryStream = new MemoryStream(bytes);

                message.msgId  = ReadMessageId(memoryStream);
                message.convId = ReadMessageId(memoryStream);
                ReadShort(memoryStream);
                message.GameId = ReadShort(memoryStream);
            }

            return(message);
        }
Пример #2
0
        public static Message DecodeMessage(byte[] messageByteStream)
        {
            MemoryStream memoryStream = new MemoryStream(messageByteStream);
            Message      message      = null;

            ReadMessageId(memoryStream);
            ReadMessageId(memoryStream);

            short messageType = ReadShort(memoryStream);

            try
            {
                switch (messageType)
                {
                case REQUEST_GAME:
                    message = RequestGameMessage.Decode(messageByteStream);
                    break;

                case GAME_INFO:
                    message = GameInfoMessage.Decode(messageByteStream);
                    break;

                case START_GAME:
                    message = StartGameMessage.Decode(messageByteStream);
                    break;

                case GAME_STATE_UPDATE:
                    message = GameStateUpdateMessage.Decode(messageByteStream);
                    break;

                case ROLL:
                    message = RollMessage.Decode(messageByteStream);
                    break;

                case TRADE_REQUEST:
                    message = TradeRequestMessage.Decode(messageByteStream);
                    break;

                case TRADE_REPLY:
                    message = TradeReplyMessage.Decode(messageByteStream);
                    break;

                case BUY:
                    message = BuyMessage.Decode(messageByteStream);
                    break;

                case END_TURN:
                    message = EndTurnMessage.Decode(messageByteStream);
                    break;

                case END_GAME:
                    message = EndGameMessage.Decode(messageByteStream);
                    break;

                case ACK:
                    message = AckMessage.Decode(messageByteStream);
                    break;

                case ERROR:
                    message = ErrorMessage.Decode(messageByteStream);
                    break;

                default:

                    break;
                }

                return(message);
            }
            catch
            {
                return(null);
            }
        }
        public static Message decoder(byte[] bytes)
        {
            short MT = Message.decodeMessageType(bytes);

            Array.Copy(bytes, 2, bytes, 0, bytes.Length - 2);
            switch (MT)
            {
            case 1:
                var gmJoinLobby = new GMJoinLobbyMessage();
                gmJoinLobby.decode(bytes);
                return(gmJoinLobby);

            case 2:
                var playerJoinLobby = new PlayerJoinLobbyMessage();
                playerJoinLobby.decode(bytes);
                return(playerJoinLobby);

            case 3:
                var assigIdMessage = new AssignIdMessage();
                assigIdMessage.decode(bytes);
                return(assigIdMessage);

            case 4:
                var heartbeat = new HeartbeatMessage();
                heartbeat.decode(bytes);
                return(heartbeat);

            case 5:
                var ack = new AckMessage();
                ack.decode(bytes);
                return(ack);

            case 6:
                var playerId = new PlayerIdMessage();
                playerId.decode(bytes);
                return(playerId);

            case 7:
                var gameId = new GameIdMessage();
                gameId.decode(bytes);
                return(gameId);

            case 8:
                var board = new BoardMessage();
                board.decode(bytes);
                return(board);

            case 9:
                var shot = new ShotMessage();
                shot.decode(bytes);
                return(shot);

            case 10:
                var result = new ResultMessage();
                result.decode(bytes);
                return(result);

            case 11:
                var endGameResult = new EndGameResultMessage();
                endGameResult.decode(bytes);
                return(endGameResult);

            case 12:
                var errorMessage = new ErrorMessage();
                errorMessage.decode(bytes);
                return(errorMessage);

            default:
                throw new Exception("Could not read messageType " + MT + " in switch statement");
            }
        }