コード例 #1
0
        public void serializer_defined_but_not_for_test_message_Serialize_throws_MissingMessageSerializerException()
        {
            var messageSerialization = new MessageSerialization();
            messageSerialization.RegisterSerializer(0, new TestMessageSerializer());

            Assert.Throws<MissingMessageSerializerException>(() => messageSerialization.Serialize(new TestMessage()));
        }
コード例 #2
0
        public void serializer_defined_for_message_with_MessageTypeId_65535_Serialize_returns_serialized_object()
        {
            var messageSerialization = new MessageSerialization();
            messageSerialization.RegisterSerializer(CustomMessage.TypeId, new TestMessageSerializer());

            Assert.AreEqual(Encoding.UTF8.GetBytes("abc"), messageSerialization.Serialize(new CustomMessage { Text = "abc" }));
        }
コード例 #3
0
        public void serializer_defined_but_not_for_test_message_Serialize_throws_MissingMessageSerializerException()
        {
            var messageSerialization = new MessageSerialization();

            messageSerialization.RegisterSerializer(0, new TestMessageSerializer());

            Assert.Throws <MissingMessageSerializerException>(() => messageSerialization.Serialize(new TestMessage()));
        }
コード例 #4
0
        public void default_serializer_defined_but_no_specific_message_serializer_for_test_message_use_default_serializer()
        {
            var messageSerialization = new MessageSerialization
            {
                DefaultSerializer = new TestMessageSerializer()
            };

            Assert.AreEqual(Encoding.UTF8.GetBytes("abc"), messageSerialization.Serialize(new TestMessage { Text = "abc" }));
        }
コード例 #5
0
        public void serializer_defined_for_message_with_MessageTypeId_65535_Serialize_returns_serialized_object()
        {
            var messageSerialization = new MessageSerialization();

            messageSerialization.RegisterSerializer(CustomMessage.TypeId, new TestMessageSerializer());

            Assert.AreEqual(Encoding.UTF8.GetBytes("abc"), messageSerialization.Serialize(new CustomMessage {
                Text = "abc"
            }));
        }
コード例 #6
0
        public void default_serializer_defined_but_no_specific_message_serializer_for_test_message_use_default_serializer()
        {
            var messageSerialization = new MessageSerialization
            {
                DefaultSerializer = new TestMessageSerializer()
            };

            Assert.AreEqual(Encoding.UTF8.GetBytes("abc"), messageSerialization.Serialize(new TestMessage {
                Text = "abc"
            }));
        }
コード例 #7
0
        public void MessageSerializationException_should_be_thrown_on_exception_while_serializing_message()
        {
            var messageSerialization = new MessageSerialization();

            messageSerialization.RegisterSerializer(ExceptionTestMessage.TypeId, new ExceptionTestMessageSerializer());

            var messageThatCausesExceptionOnSerialization = new ExceptionTestMessage(true, false);
            var exception = Assert.Throws <MessageSerializationException>(() => messageSerialization.Serialize(messageThatCausesExceptionOnSerialization));

            Assert.IsInstanceOf <TestException>(exception.InnerException);
        }
コード例 #8
0
 public void no_serializer_defined_Serialize_throws_MissingMessageSerializerException()
 {
     var messageSerialization = new MessageSerialization();
     Assert.Throws<MissingMessageSerializerException>(() => messageSerialization.Serialize(new TestMessage()));
 }
コード例 #9
0
        public void MessageDeserializationException_should_be_thrown_on_exception_while_deserializing_message()
        {
            var messageSerialization = new MessageSerialization();
            messageSerialization.RegisterSerializer(ExceptionTestMessage.TypeId, new ExceptionTestMessageSerializer());
            messageSerialization.RegisterDeserializer(ExceptionTestMessage.TypeId, new ExceptionTestMessageDeserializer());

            var messageThatCausesExceptionOnDeserialization = new ExceptionTestMessage(false, true);
            var message = messageSerialization.Serialize(messageThatCausesExceptionOnDeserialization);
            var exception = Assert.Throws<MessageDeserializationException>(() => messageSerialization.Deserialize(ExceptionTestMessage.TypeId, message));
            Assert.IsInstanceOf<TestException>(exception.InnerException);
        }
コード例 #10
0
        public void no_serializer_defined_Serialize_throws_MissingMessageSerializerException()
        {
            var messageSerialization = new MessageSerialization();

            Assert.Throws <MissingMessageSerializerException>(() => messageSerialization.Serialize(new TestMessage()));
        }
コード例 #11
0
    public void GameChannelSetup(string gameID)
    {
        gameChannel = socket.MakeChannel(string.Format("game:{0}", gameID));

        gameChannel.On(Message.InBoundEvent.phx_reply, data =>
        {
            if (boardsDrawn)
            {
                return;
            }
            // Debug.Log("On phx_reply" + MessageSerialization.Serialize(data));
            var game = data.payload["response"]["game"];

            if (GameManager.GetInstance().isWatching)
            {
                int[] pieceVal = data.payload["response"]["game"]["piece_values"].ToObject <int[]>();
                Tile newTile   = GameManager.GetInstance().SpawnNewTile(pieceVal, tileSpawnTrans.position, tileSpawnTrans, true);
                newTile.transform.DOMove(tilePlaceTrans.position, 0.5f);
            }
            gameUI.timeLimit       = (int)game["time_limit"];
            gameUI.timingText.text = (string)game["time_limit"];
            DrawBoards(game);
            boardsDrawn = true;
        });

        gameChannel.On("game:new_piece", data =>
        {
            // Debug.Log(string.Format("------on new_piece------ {0}", MessageSerialization.Serialize(data)));
            var piece      = data.payload["piece"];
            int[] pieceVal = piece.ToObject <int[]>();
            // SoundManager.GetInstance().MakeClickSound();
            EventManager.GetInstance().PostNotification(EVENT_TYPE.NEW_PIECE, this, pieceVal);
            Tile newTile = GameManager.GetInstance().SpawnNewTile(pieceVal, tileSpawnTrans.position, tileSpawnTrans, true);
            newTile.transform.DOMove(tilePlaceTrans.position, 0.5f);
            newTile.startingPosition = tilePlaceTrans.position;
            if (!GameManager.GetInstance().isWatching)
            {
                newTile.transform.tag = Constants.MOVABLE_TAG;
            }
        });

        gameChannel.On("game:player_joined", data =>
        {
            Debug.Log(string.Format("------on player_joined------ {0}", MessageSerialization.Serialize(data)));
            var game         = data.payload["game"];
            gameUI.timeLimit = (int)game["time_limit"];
            DrawBoards(game);
        });
        gameChannel.On("game:stopped", data =>
        {
            // Debug.Log("------on game_stopped------" + MessageSerialization.Serialize(data));
            EventManager.GetInstance().PostNotification(EVENT_TYPE.GAMEOVER);
        });
        gameChannel.On("game:player_left", data =>
        {
            Debug.Log(MessageSerialization.Serialize(data));
            EventManager.GetInstance().PostNotification(EVENT_TYPE.PLAYER_LEFT);
        });
        gameChannel.On("game:over", data =>
        {
            Debug.Log(MessageSerialization.Serialize(data));
            EventManager.GetInstance().PostNotification(EVENT_TYPE.GAMEOVER);
        });
        gameChannel.On("game:place_piece", data =>
        {
            var game         = data.payload["game"];;
            var piece        = data.payload["piece"];
            string[] players = game["players"].ToObject <string[]>();
            string player_nick;

            // Debug.Log(string.Format("------on place_piece----- {0}", MessageSerialization.Serialize(data)));
            if (!initGrids && GameManager.GetInstance().isWatching)
            {
                Debug.Log("Connection on watching");
                gameUI.timeLimit      = (int)game["time_limit"];
                string[] player_nicks = game["player_nicks"].ToObject <string[]>();
                var playerScores      = new Dictionary <int, KeyValuePair <string, string> >();
                for (int i = 0; i < players.Length; i++)
                {
                    string player_id = players[i];
                    player_nick      = player_nicks[i];
                    int point        = game["points"][player_id].ToObject <int>();
                    playerScores[i]  = new KeyValuePair <string, string>(player_nick, (string)game["points"][player_id]);
                    string game_id   = game["id"].ToObject <string>();
                    Dictionary <string, int> grid = game["player_boards"][player_id]["grid"].ToObject <Dictionary <string, int> >();
                    GridState state = new GridState(
                        player_id, player_nick, point, game_id, grid
                        );
                    gameController.UpdateGrid(player_id, state);
                }
                EventManager.GetInstance().PostNotification(EVENT_TYPE.SCORE_CHANGE, null, playerScores);
                initGrids = true;
                return;
            }

            string sender = (string)data.payload["player_id"];
            int index     = Array.IndexOf(players, sender);
            player_nick   = (string)game["player_boards"][sender]["nick"];
            Dictionary <string, int> gridData = game["player_boards"][sender]["grid"].ToObject <Dictionary <string, int> >();
            string pointStr = (string)game["points"][sender];
            var playerScore = new KeyValuePair <string, string>(player_nick, pointStr);
            var param       = new Dictionary <int, KeyValuePair <string, string> > {
                { index, playerScore }
            };
            EventManager.GetInstance().PostNotification(EVENT_TYPE.SCORE_CHANGE, null, param);
            StartCoroutine(gameController.UpdateGridData(sender, gridData, piece));
        });
    }