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; } ; }
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; } ; }
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; } }
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); }
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); }
internal NMatchDataEventArgs(INMatchData data) { Data = data; }