예제 #1
0
        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);
        }
예제 #2
0
파일: MessageHandler.cs 프로젝트: ohy99/SP4
    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
    }
예제 #3
0
파일: MessageHandler.cs 프로젝트: ohy99/SP4
    public void OnRecvPlayerId_Server(NetworkMessage netMsg)
    {
        PlayerIdMessage msg = netMsg.ReadMessage <PlayerIdMessage>();

        Debug.Log("Host/ServerRecv_PlayerId");
        SendPlayerId_S2C();
    }
예제 #4
0
파일: MessageHandler.cs 프로젝트: ohy99/SP4
    public void SendPlayerId_C2S()
    {
        PlayerIdMessage msg = new PlayerIdMessage();

        msg.playerId = -12;
        Debug.Log("SendPlayerId_C2S");

        myClient.Send(MyMsgType.playerIdMsgType_client, msg);
    }
예제 #5
0
파일: MessageHandler.cs 프로젝트: ohy99/SP4
    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}");
            }
        }