public override void OnMatchData(INMatchData m)
    {
        base.OnMatchData(m);
        var content = Encoding.UTF8.GetString(m.Data);

        content = content.Trim();
        // content = content.Substring (1, content.Length - 2);
        content = content.Replace(@"\", "");

        switch (m.OpCode)
        {
        case OPCODE_CHAT:
            Enqueue(() => {
                onChatMessageReceived(m.Presence.Handle, content);
            });
            break;

        case OPCODE_MOVE:
            TBSBaseGameMove move = JsonUtility.FromJson <TBSBaseGameMove> (content);
            Enqueue(() => {
                OnPlayerMoveReceived(move, content);
                // onPlayerMoveMade(move);
            });

            break;

        default:
            Debug.LogFormat("User handle '{0}' sent '{1}' '21}'", m.Presence.Handle, m.OpCode, content);
            break;
        }
        ;
    }
    void OnMatchData(INMatchData md)
    {
        Debug.Log("received");

        if (md.OpCode == 1L)
        {
            var list = md.Data.Deserialize();
            networkPosition = new Vector3(list[0], list[1], list[2]);
        }
    }
    public override void OnMatchData(INMatchData m)
    {
        base.OnMatchData(m);
        var content = Encoding.UTF8.GetString(m.Data);

        content = content.Trim();
        //content = content.Substring (1, content.Length - 2);
        content = content.Replace(@"\", "");

        // TODO: if it's a multiplayer message, do something with it
        // TODO: if you are a host an receives moves from guests, resolve them
        switch (m.OpCode)
        {
        case OPCODE_CHAT:
            Enqueue(() => {
                onChatMessageReceived(m.Presence.Handle, content);
            });
            break;

        case OPCODE_HOST_GAME_STATE:
            GameState newGameState = JsonUtility.FromJson <GameState> (content);
            //TODO: Update to other game objects in the game
            gameState = newGameState;
            Enqueue(() => {
                onGameStateUpdated(gameState);
            });
            break;

        case OPCODE_GUEST_MOVE:
            Debug.Log("Received action from guest");
            if (isHost)
            {
                Debug.Log("is host, Parsing");
                GameTurn turn = JsonUtility.FromJson <GameTurn> (content);

                Debug.Log("Parsed");
                Debug.Log(JsonUtility.ToJson(turn));

                gameState = gameRule.ResolveMoves(gameState, turn);
                SendGameState();
                Enqueue(() => {
                    onGameStateUpdated(gameState);
                });
            }
            break;

        default:
            Debug.LogFormat("User handle '{0}' sent '{1}' '21}'", m.Presence.Handle, m.OpCode, content);
            break;
        }
        ;
    }
Exemple #4
0
        public void SendDataMatch()
        {
            INError error = null;
            INMatch m     = null;

            ManualResetEvent evt1 = new ManualResetEvent(false);

            client1.Send(NMatchCreateMessage.Default(), (INMatch match) =>
            {
                m = match;
                client2.Send(NMatchJoinMessage.Default(match.Id), (INResultSet <INMatch> match2) =>
                {
                    evt1.Set();
                }, (INError err) =>
                {
                    error = err;
                    evt1.Set();
                });
            }, (INError err) =>
            {
                error = err;
                evt1.Set();
            });
            evt1.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(m);

            byte[]           data   = Encoding.ASCII.GetBytes("test-data");
            long             opCode = 9;
            INMatchData      d      = null;
            ManualResetEvent evt2   = new ManualResetEvent(false);

            client2.OnMatchData = (INMatchData matchData) =>
            {
                d = matchData;
                evt2.Set();
            };
            client1.Send(NMatchDataSendMessage.Default(m.Id, opCode, data), false, (bool completed) =>
            {
                // No action.
            }, (INError err) => {
                error = err;
                evt2.Set();
            });
            evt2.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(d);
            Assert.AreEqual(d.Id, m.Id);
            Assert.AreEqual(d.OpCode, opCode);
            Assert.AreEqual(d.Data, data);
        }
    public virtual void OnMatchData(INMatchData m)
    {
        var content = Encoding.UTF8.GetString(m.Data);

        switch (m.OpCode)
        {
        case 101L:
            Debug.Log("A custom opcode.");
            break;

        default:
            Debug.LogFormat("User handle '{0}' sent '{1}'", m.Presence.Handle, content);
            break;
        }
        ;
    }
Exemple #6
0
        private void OnMatchData(INMatchData msg)
        {
            switch (msg.OpCode)
            {
            case 99L:
                // game is full so disconnect
                string userHandle = System.Text.Encoding.UTF8.GetString(msg.Data);
                if (userHandle == self.Handle)
                {
                    client.Disconnect();
                }
                break;

            default:
                nvp_EventManager_scr.INSTANCE.InvokeEvent(GameEvents.OnGameMessageReceived, this, msg);
                break;
            }
        }
Exemple #7
0
        public void SendDataNoEchoMatch()
        {
            INError error = null;
            INMatch m     = null;

            ManualResetEvent evt1 = new ManualResetEvent(false);

            client1.Send(NMatchCreateMessage.Default(), (INMatch match) =>
            {
                m = match;
                evt1.Set();
            }, (INError err) =>
            {
                error = err;
                evt1.Set();
            });
            evt1.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(m);

            INMatchData      d    = null;
            ManualResetEvent evt2 = new ManualResetEvent(false);

            client1.OnMatchData = (INMatchData data) =>
            {
                d = data;
                evt2.Set();
            };
            client1.Send(NMatchDataSendMessage.Default(m.Id, 9, Encoding.ASCII.GetBytes("test-data")), false, (bool completed) =>
            {
                // No action.
            }, (INError err) => {
                error = err;
                evt2.Set();
            });
            evt2.WaitOne(1000, false);
            Assert.IsNull(error);
            Assert.IsNull(d);
        }
Exemple #8
0
        public void SendDataSubsetMatch()
        {
            INError        error = null;
            INMatch        m     = null;
            INUserPresence p     = null;

            ManualResetEvent evt1 = new ManualResetEvent(false);

            client1.Send(NMatchCreateMessage.Default(), (INMatch match) =>
            {
                m = match;
                client2.Send(NMatchJoinMessage.Default(match.Id), (INResultSet <INMatch> matches2) =>
                {
                    var match2 = matches2.Results[0];
                    foreach (var up in match2.Presence)
                    {
                        if (up.UserId.SequenceEqual(userId2))
                        {
                            p = up;
                            break;
                        }
                    }
                    evt1.Set();
                }, (INError err) =>
                {
                    error = err;
                    evt1.Set();
                });
            }, (INError err) =>
            {
                error = err;
                evt1.Set();
            });
            evt1.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(m, "m was null");
            Assert.IsNotNull(p, "p was null");

            byte[]           data   = Encoding.ASCII.GetBytes("test-data");
            long             opCode = 9;
            INMatchData      d      = null;
            ManualResetEvent evt2   = new ManualResetEvent(false);

            client1.OnMatchData = (INMatchData matchData) =>
            {
                d = matchData;
                evt2.Set();
            };
            var msg = new NMatchDataSendMessage.Builder(m.Id, opCode, data).Presences(new INUserPresence[] { p }).Build();

            client2.Send(msg, false, (bool completed) =>
            {
                // No action.
            }, (INError err) => {
                error = err;
                evt2.Set();
            });
            evt2.WaitOne(2000, false);
            Assert.IsNull(error);
            Assert.IsNull(d);
        }
Exemple #9
0
 internal NMatchDataEventArgs(INMatchData data)
 {
     Data = data;
 }