protected Message ProcessIncomingEnvelope(Envelope env) { if (env.Message.GetType() == typeof(PlayerIdMessage)) { //TODO: Put info from PlayerIdMessage In AppState. GMAppState gmAppState = (GMAppState)this.SubSystem.appState; PlayerIdMessage mess = (PlayerIdMessage)env.Message; gmAppState.p1PID = mess.getP1Id(); gmAppState.p2PID = mess.getP2Id(); gmAppState.P1EndPoint = SubSystem.ParseEPString(mess.getP1EndPoint()); Logger.Debug($"Set the Player 1 endpoint to {mess.getP1EndPoint()}"); gmAppState.P2EndPoint = SubSystem.ParseEPString(mess.getP2EndPoint()); Logger.Debug($"Set the Player 2 endpoint to {mess.getP2EndPoint()}"); gmAppState.p1Name = mess.getP1Name(); gmAppState.p2Name = mess.getP2Name(); gmAppState.gameId = mess.getGameId(); //TODO: Not sure what to do with mess.getp1Wins and mess.getp2Wins. return(new AckMessage(99, 0, new Identifier(this.SubSystem.ProcessID, SubSystem.GetNextSeqNumber()), this.ConversationId)); //TODO: Not sure what to do with the ID in Ack here. } else { Logger.Error($"Did not receive a playerIdMessage, instead received a {env.Message.GetType()}"); } return(null); }
public void OnRecvPlayerId_Client(NetworkMessage netMsg) { if (Global.Instance.player.GetComponent <NetworkIdentity>().isServer) { return; } PlayerIdMessage msg = netMsg.ReadMessage <PlayerIdMessage>(); Debug.Log("ClientRecv_PlayerId_" + msg.playerId); Global.Instance.player.GetComponent <Player>().playerId = msg.playerId; index = msg.playerId; Inventory temp = new Inventory(); temp.Init(); temp.AddCurrency(InventoryManager.Instance.GetInventory("player").GetCurrency()); InventoryManager.Instance.AddInventory("player" + index, temp); Debug.Log("player" + index); Global.Instance.player.GetComponent <Player>().SetPlayerInventory("player" + index); //for (int i = 0; i < InventoryManager.Instance.GetInventory("player" + index).GetItemNameList().Count; ++i) // SendItemPossessed_C2S(index, InventoryManager.Instance.GetInventory("player").GetItemName(i)); SendRoom_C2S(); //sent to server/host to get mapinfo }
public void OnRecvPlayerId_Server(NetworkMessage netMsg) { PlayerIdMessage msg = netMsg.ReadMessage <PlayerIdMessage>(); Debug.Log("Host/ServerRecv_PlayerId"); SendPlayerId_S2C(); }
public void SendPlayerId_C2S() { PlayerIdMessage msg = new PlayerIdMessage(); msg.playerId = -12; Debug.Log("SendPlayerId_C2S"); myClient.Send(MyMsgType.playerIdMsgType_client, msg); }
public void SendPlayerId_S2C() { PlayerIdMessage msg = new PlayerIdMessage(); msg.playerId = NetworkServer.connections.Count - 1; Debug.Log("SendPlayerId_S2C: playerid = " + msg.playerId); if (NetworkServer.active) //playerId msg shld only be send once { NetworkServer.SendToClient(msg.playerId, MyMsgType.playerIdMsgType_server, msg); } //NetworkServer.SendToAll(MyMsgType.spotPuzzleMsgType_server, msg); }
public void TestEndodeDecode() { short gameId = 1; short P1id = 2; short P2id = 3; string Endpoint1 = "123.456.789:12001"; string Endpoint2 = "123.456.789:12002"; string P1Name = "John"; string P2Name = "Jingle Hiemer Schmidt"; bool P1win = true; bool P2win = false; bool P1lose = false; bool P2lose = true; Identifier messageNum = new Identifier(2, 3); Identifier conversationId = new Identifier(5, 2); // test initialization var outGoing1 = new PlayerIdMessage(); var outGoing2 = new PlayerIdMessage(gameId, P1id, P2id, Endpoint1, Endpoint2, P1Name, P2Name, P1win, P2win, P1lose, P2lose, messageNum, conversationId); byte[] bytes1 = outGoing1.encode(gameId, P1id, P2id, Endpoint1, Endpoint2, P1Name, P2Name, P1win, P2win, P1lose, P2lose, messageNum, conversationId); byte[] bytes2 = outGoing2.encode(); var MT1 = Message.decodeMessageType(bytes1); var MT2 = Message.decodeMessageType(bytes2); Assert.AreEqual((short)6, MT1); Assert.AreEqual((short)6, MT2); PlayerIdMessage playerIdMessage1 = (PlayerIdMessage)Message.decoder(bytes1); PlayerIdMessage playerIdMessage2 = (PlayerIdMessage)Message.decoder(bytes2); Assert.AreEqual(gameId, playerIdMessage1.getGameId()); Assert.AreEqual(P1id, playerIdMessage1.getP1Id()); Assert.AreEqual(P2id, playerIdMessage1.getP2Id()); Assert.AreEqual(Endpoint1, playerIdMessage1.getP1EndPoint()); Assert.AreEqual(Endpoint2, playerIdMessage1.getP2EndPoint()); Assert.AreEqual(P1Name, playerIdMessage1.getP1Name()); Assert.AreEqual(P2Name, playerIdMessage1.getP2Name()); Assert.AreEqual(P1win, playerIdMessage1.getP1Win()); Assert.AreEqual(P1lose, playerIdMessage1.getP1Lose()); Assert.AreEqual(P2win, playerIdMessage1.getP2Win()); Assert.AreEqual(P2lose, playerIdMessage1.getP2Lose()); Assert.AreEqual(gameId, playerIdMessage2.getGameId()); Assert.AreEqual(P1id, playerIdMessage2.getP1Id()); Assert.AreEqual(P2id, playerIdMessage2.getP2Id()); Assert.AreEqual(Endpoint1, playerIdMessage2.getP1EndPoint()); Assert.AreEqual(Endpoint2, playerIdMessage2.getP2EndPoint()); Assert.AreEqual(P1Name, playerIdMessage2.getP1Name()); Assert.AreEqual(P2Name, playerIdMessage2.getP2Name()); Assert.AreEqual(P1win, playerIdMessage2.getP1Win()); Assert.AreEqual(P1lose, playerIdMessage2.getP1Lose()); Assert.AreEqual(P2win, playerIdMessage2.getP2Win()); Assert.AreEqual(P2lose, playerIdMessage2.getP2Lose()); var testIdentifier1 = playerIdMessage1.getMessageNumber(); Assert.IsInstanceOfType(testIdentifier1, typeof(Identifier)); Assert.AreEqual(messageNum.getPid(), testIdentifier1.getPid()); Assert.AreEqual(messageNum.getSeq(), testIdentifier1.getSeq()); var testIdentifier2 = playerIdMessage1.getConversationId(); Assert.IsInstanceOfType(testIdentifier2, typeof(Identifier)); Assert.AreEqual(conversationId.getPid(), testIdentifier2.getPid()); Assert.AreEqual(conversationId.getSeq(), testIdentifier2.getSeq()); testIdentifier1 = playerIdMessage2.getMessageNumber(); Assert.IsInstanceOfType(testIdentifier1, typeof(Identifier)); Assert.AreEqual(messageNum.getPid(), testIdentifier1.getPid()); Assert.AreEqual(messageNum.getSeq(), testIdentifier1.getSeq()); testIdentifier2 = playerIdMessage2.getConversationId(); Assert.IsInstanceOfType(testIdentifier2, typeof(Identifier)); Assert.AreEqual(conversationId.getPid(), testIdentifier2.getPid()); Assert.AreEqual(conversationId.getSeq(), testIdentifier2.getSeq()); byte[] badBytes = new byte[2]; badBytes[0] = 1; badBytes[1] = 1; badBytes = bytes1.Concat(badBytes).ToArray(); try { Message.decoder(badBytes); Assert.Fail(); } catch (Exception e) { Logger.Debug($"Test passed: {e}"); } }