void OnData(DataStreamReader stream, int i)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.NEW_CLIENT:
            NewClientMsg ncMsg = JsonUtility.FromJson <NewClientMsg>(recMsg);
            Debug.Log("Server msg: New Client message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Server msg: Player update message received!");
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            ServerMessage(suMsg);
            break;

        default:
            Debug.Log("SERVER ERROR: Unrecognized message received!");
            break;
        }
    }
Exemple #2
0
    void OnData(DataStreamReader stream, int i)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Player update message received!");
            UpdatePlayerInfo(puMsg.player);
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            break;

        default:
            Debug.Log("SERVER ERROR: Unrecognized message received!");
            break;
        }
    }
    void OnData(int i, DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.LOGIN:
            LoginMsg lMsg = JsonUtility.FromJson <LoginMsg>(recMsg);
            Debug.Log("[Server] Client login message received! : " + lMsg.clientId);
            OnClientLogIn(i, lMsg.clientId);
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            //Debug.Log( "[Server] Player update message received! : " + puMsg.player.ToString() );
            GameServerManager.Instance.UpdatePlayerCommands(puMsg.player, puMsg.commands);
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("[Server] Server update message received!");
            break;

        default:
            Debug.Log("[Server] Unrecognized message received!");
            break;
        }
    }
    void OnData(DataStreamReader stream, int i)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp); // Convert the stream into bytes

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());    // Convert bytes into string
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg); // Convert the string into a json object

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            clients[puMsg.player.id].cubPos = puMsg.player.cubPos;
            //clients[puMsg.player.id].cubeColor = puMsg.player.cubeColor;
            Debug.Log("Player update message received!");
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            break;

        default:
            Debug.Log("SERVER ERROR: Unrecognized message received!");
            break;
        }
    }
    void UpdateClient(NetworkConnection nc)
    {
        ServerUpdateMsg m = new ServerUpdateMsg();

        m.players = allCubes;
        SendToClient(JsonUtility.ToJson(m), nc);
    }
Exemple #6
0
    void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);                                             //Get bytes
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());    //convert bytes to JSON string
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg); //convert JSON to c# class

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_INTERNALID:
            PlayerUpdateMsg internalId = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Got internalId from server");
            playerInfo.player.id      = internalId.player.id;
            playerInternalIdText.text = playerInfo.player.id;
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            //Debug.Log("Player update message received!");
            Debug.Log("Got data from server, player Pos: " + puMsg.player.pos);
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            UpdateClientsInfo(suMsg);
            break;

        //To spawn existed players
        case Commands.SPAWN_EXISTED_PLAYERS:
            ServerUpdateMsg existedPlayerInfo = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("existed player info received!");
            SpawnExistedPlayer(existedPlayerInfo);
            break;

        //Spawn new player
        case Commands.SPAWN_NEW_PLAYER:
            PlayerUpdateMsg newPlayerInfo = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("new client info received!");
            SpawnNewPlayer(newPlayerInfo);
            break;

        //handle disconnected player
        case Commands.DISCONNECTED_PLAYER:
            DisconnectedPlayersMsg dpm = JsonUtility.FromJson <DisconnectedPlayersMsg>(recMsg);
            Debug.Log("Disconnected player info recieved!");
            DeleteDisconnectPlayer(dpm);
            break;

        default:
            Debug.Log("Unrecognized message received!");
            break;
        }
    }
Exemple #7
0
    void UpdateClientsInfo(ServerUpdateMsg suMsg)
    {
        for (int i = 0; i < suMsg.players.Count; ++i)
        {
            if (connectedClientsDict.ContainsKey(suMsg.players[i].id))
            {
                connectedClientsDict[suMsg.players[i].id].transform.position = suMsg.players[i].pos;
                connectedClientsDict[suMsg.players[i].id].GetComponent <Renderer>().material.color = suMsg.players[i].color;
                if (suMsg.players[i].isDead)
                {
                    connectedClientsDict[suMsg.players[i].id].GetComponent <PlayerController>().isDead = true;
                    connectedClientsDict[suMsg.players[i].id].GetComponentInChildren <TextMeshProUGUI>().SetText(":(");
                }
            }


            else if (playerInfo.player.id == suMsg.players[i].id)
            {
                player.gameObject.GetComponent <Renderer>().material.color = suMsg.players[i].color;
                playerInfo.player.color = suMsg.players[i].color;
                if (suMsg.players[i].isDead)
                {
                    connectedClientsDict[suMsg.players[i].id].GetComponent <PlayerController>().isDead = true;
                    connectedClientsDict[suMsg.players[i].id].GetComponentInChildren <TextMeshProUGUI>().SetText(":(");
                }
            }
        }
    }
    IEnumerator SendHandshakeToAllClient()
    {
        while (true)
        {
            ServerUpdateMsg suMsg = new ServerUpdateMsg();

            foreach (KeyValuePair <string, NetworkObjects.NetworkPlayer> client in clients)
            {
                suMsg.players.Add(client.Value);
            }

            for (int i = 0; i < m_Connections.Length; i++)
            {
                if (!m_Connections[i].IsCreated)
                {
                    continue;
                }

                // Example to send a handshake message:
                //HandshakeMsg m = new HandshakeMsg();
                //m.player.id = m_Connections[i].InternalId.ToString();
                SendToClient(JsonUtility.ToJson(suMsg), m_Connections[i]);
            }
            yield return(new WaitForSeconds(0.5f));
        }
    }
    void OnData(DataStreamReader stream, int i, NetworkConnection client)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp); //Where to store bytes data

        stream.ReadBytes(bytes);                                                          //Get bytes data from stream
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());                 //convert bytes data to string(JSON)
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);              //convert JSON to c# object

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Got " + puMsg.player.id + " player Info");
            UpdateClientInfo(puMsg);
            //Debug.Log("Player update message received!");
            //Debug.Log("Got data from client, Player Pos: " + puMsg.player.pos);
            //TestSendBack(client, puMsg);
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            break;

        default:
            Debug.Log("SERVER ERROR: Unrecognized message received!");
            break;
        }
    }
Exemple #10
0
    void OnData(DataStreamReader stream, int i, NetworkConnection client)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Player position " + puMsg.player.pos);
            UpdatePlayerInfo(puMsg);
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg ServerUpdateMessage = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server Update.");
            break;

        default:
            Debug.Log("ServerError (Default Log)");
            break;
        }
    }
Exemple #11
0
    IEnumerator SendPlayerUpdateToAllClients()
    {
        while (true)
        {
            //Debug.Log("starting message!!!");
            ServerUpdateMsg m = new ServerUpdateMsg();
            foreach (NetworkObjects.NetworkPlayer players in playerList)
            {
                //players.id = m_Connections[i].InternalId.ToString();
                m.players.Add(players);
                Debug.Log("Player ADDED!!!");
            }
            for (int i = 0; i < m_Connections.Length; i++)
            {
                if (!m_Connections[i].IsCreated)
                {
                    continue;
                }

                //PlayerUpdateMsg m = new PlayerUpdateMsg();
                //m.player.id = m_Connections[i].InternalId.ToString();
                SendToClient(JsonUtility.ToJson(m), m_Connections[i]);
            }
            yield return(new WaitForSeconds(2));
        }
    }
    void OnData(DataStreamReader stream, int i)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Server: Hello, player " + hsMsg.player.id.ToString());
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);

            m_listOfPlayers[i].body.transform.position = puMsg.player.body.transform.position;
            ServerUpdateMsg serUpMsg = new ServerUpdateMsg();
            serUpMsg.players = m_listOfPlayers;
            SendToClient(JsonUtility.ToJson(serUpMsg), m_Connections[i]);
            Debug.Log("Player update message received!");
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            break;

        default:
            Debug.Log("SERVER ERROR: Unrecognized message received!");
            break;
        }
    }
    void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("[Client] Handshake message received! " + hsMsg.player.id);
            GameplayManager.Instance.SpawnPlayer(hsMsg.player, true);
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("[Client] Player update message received!");
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("[Client] Server update message received!" + suMsg.players.ToArrayString());
            GameplayManager.Instance.UpdatePlayers(suMsg.players);
            break;

        default:
            Debug.Log("[Client] Unrecognized message received!");
            break;
        }
    }
    void Update()
    {
        m_Driver.ScheduleUpdate().Complete();

        // CleanUpConnections
        for (int i = 0; i < m_Connections.Length; i++)
        {
            if (!m_Connections[i].IsCreated)
            {
                m_Connections.RemoveAtSwapBack(i);
                playersManager.RemovePlayer(m_Connections[i].InternalId);
                --i;
            }
        }

        // AcceptNewConnections
        NetworkConnection c = m_Driver.Accept();

        while (c != default(NetworkConnection))
        {
            OnConnect(c);

            // Check if there is another new connection
            c = m_Driver.Accept();
        }

        DataStreamReader stream;

        for (int i = 0; i < m_Connections.Length; i++)
        {
            Assert.IsTrue(m_Connections[i].IsCreated);

            NetworkEvent.Type cmd;
            cmd = m_Driver.PopEventForConnection(m_Connections[i], out stream);
            while (cmd != NetworkEvent.Type.Empty)
            {
                if (cmd == NetworkEvent.Type.Data)
                {
                    OnData(stream, m_Connections[i].InternalId);
                }
                else if (cmd == NetworkEvent.Type.Disconnect)
                {
                    OnDisconnect(i);
                }

                cmd = m_Driver.PopEventForConnection(m_Connections[i], out stream);
            }
        }

        if (playersManager.IsDirtyFlag)
        {
            for (int i = 0; i < m_Connections.Length; i++)
            {
                ServerUpdateMsg m = new ServerUpdateMsg(playersManager.GetPlayers());
                SendToClient(JsonUtility.ToJson(m), m_Connections[i]);
            }
            playersManager.ClearDirtyFlag();
        }
    }
Exemple #15
0
    // on data received
    void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        // player handshake
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            SpawnPlayer(hsMsg.player);
            Debug.Log("Handshake message received!");
            break;

        // player update
        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            ClientPlayerUpdate(puMsg.players);
            Debug.Log("Player update message received!");
            break;

        // server update
        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            break;

        // player list update
        case Commands.PLAYER_LIST:
            ClientListMsg listMsg = JsonUtility.FromJson <ClientListMsg>(recMsg);
            for (int p = 0; p < listMsg.players.Length; p++)
            {
                SpawnPlayer(listMsg.players[p]);
            }
            Debug.Log("Player list message received!");
            break;

        // player disconnect
        case Commands.PLAYER_DISCONNECT:
            DiscPlayerMsg discMsg = JsonUtility.FromJson <DiscPlayerMsg>(recMsg);
            RemoveClientPlayer(discMsg.players);
            Debug.Log("Player disconnect message received!");
            break;

        // player connect
        case Commands.PLAYER_JOIN:
            HandshakeMsg nhsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            ClientPlayerID = nhsMsg.player.id;
            SpawnPlayer(nhsMsg.player);
            break;

        default:
            Debug.Log("Unrecognized message received!");
            break;
        }
    }
Exemple #16
0
    private void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("[Notice] Handshake message received!");
            break;

        case Commands.PLAYER_UPDATE:     //shouldnt happen
            Debug.LogError("[Error] Player update message received! Client shouldn't receive messages from clients.");
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            //Debug.Log("[Routine] Server update message received!");
            UpdateRemotePlayers(suMsg.players);
            break;

        case Commands.PONG:
            if (bVerboseDebug)
            {
                //Debug.Log("[Routine] Pong message received!");
            }
            break;

        case Commands.SERVER_HANDSHAKE:
            ServerHandshakeMsg shMsg = JsonUtility.FromJson <ServerHandshakeMsg>(recMsg);
            Debug.Log("[Notice] Handshake from server received!");

            m_clientIDDict.Add(shMsg.clientID, localClientCharacterRef);     //Add local character to player dictionary
            m_thisClientID = shMsg.clientID;                                 //keep a reference to local player ID
            SpawnRemotePlayers(shMsg.players);                               //Spawn remote players
            StartCoroutine(UploadClientDataRoutine(m_clientUpdateInterval)); //Start routinely updating server with local cube character data
            break;

        case Commands.NEW_PLAYER:
            PlayerUpdateMsg puMSg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("[Notice] A new player has connected. (" + puMSg.player.clientID + ")");
            SpawnRemotePlayer(puMSg.player);
            break;

        case Commands.PLAYER_DISCONNECT:
            PlayerIDMsg pdMSg = JsonUtility.FromJson <PlayerIDMsg>(recMsg);
            Debug.Log("[Notice] A player has disconnected. (" + pdMSg.clientID + ")");
            RemoveRemotePlayer(pdMSg.clientID);
            break;

        default:
            Debug.LogError("[Error] Unrecognized message received!");
            break;
        }
    }
    void OnData(DataStreamReader stream, int i)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Player update message received!");

            Debug.Log("Player List: " + serverPlayerList);
            foreach (NetworkObjects.NetworkPlayer player in serverPlayerList)
            {
                if (player.id == puMsg.player.id)
                {
                    player.cubeColor = puMsg.player.cubeColor;
                    player.cubPos    = puMsg.player.cubPos;
                    player.cubRot    = puMsg.player.cubRot;
                }
            }
            break;

        case Commands.PLAYER_BULLET:
            PlayerBulletMsg pbMsg = JsonUtility.FromJson <PlayerBulletMsg>(recMsg);
            Debug.Log("Player Bullet Fired!");
            FireBulletForPlayers(pbMsg, m_Connections[i]);
            break;

        case Commands.PLAYER_JOINED:
            PlayerJoinMessage pjMsg = JsonUtility.FromJson <PlayerJoinMessage>(recMsg);
            Debug.Log("Player join message received!");
            CreatePlayer(pjMsg, m_Connections[i]);
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            break;

        case Commands.PLAYER_LEFT:
            PlayerLeaveMsg plMsg = JsonUtility.FromJson <PlayerLeaveMsg>(recMsg);
            Debug.Log("Player leave message recieved!");
            OnDisconnect(int.Parse(plMsg.player.id));
            break;

        default:
            Debug.Log("SERVER ERROR: Unrecognized message received!");
            break;
        }
    }
    void OnData(DataStreamReader stream, int i)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.PLAYER_CONNECTED:
            ConnectionApprovedMsg cpMsg = JsonUtility.FromJson <ConnectionApprovedMsg>(recMsg);
            Debug.Log("Handshake message received!");

            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            //Debug.Log("Player update message received!");
            playerData = puMsg;
            Debug.Log("Player ID: " + playerData.player.id + " Player Position: " + playerData.player.cubPos);
            //Debug.Log("Time As of Now: " + DateTime.Now);
            playerData.player.pulse = DateTime.Now;
            for (i = 0; i < ConnectedList.GameState.Count; i++)
            {
                if (playerData.player.id == ConnectedList.GameState[i].id)
                {
                    ConnectedList.GameState.Insert(i, playerData.player);
                    ConnectedList.GameState.RemoveAt(i + 1);
                }
                Debug.Log("Transfered ID: " + ConnectedList.GameState[i].id + "Transfered Pos: " + ConnectedList.GameState[i].cubPos);
            }


            break;

        case Commands.PLAYER_DISCONNECTED:
            PlayerDisconnectMsg pdMsg = JsonUtility.FromJson <PlayerDisconnectMsg>(recMsg);
            Debug.Log("Player Disconnect update message received!, Got This: " + i);
            OnDisconnect(i);
            break;

        case Commands.GAMESTATE:
            GameStateMsg gsMsg = JsonUtility.FromJson <GameStateMsg>(recMsg);
            Debug.Log("GameState update message received!");
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            break;

        default:
            Debug.Log("SERVER ERROR: Unrecognized message received!");
            break;
        }
    }
    void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.PLAYER_INIT:
            InitializeConnectionMsg piMsg = JsonUtility.FromJson <InitializeConnectionMsg>(recMsg);

            playerUpdateMsg.player.id = piMsg.yourID;

            HandshakeMsg m = new HandshakeMsg();
            m.player    = playerUpdateMsg.player;
            m.player.id = piMsg.yourID;
            SendToServer(JsonUtility.ToJson(m));

            otherPlayers.Add(m.player.id, yourCharacter);

            Debug.Log("Initialization message received!  Your ID: " + piMsg.yourID);
            break;

        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Player update message received!");
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            UpdateNetworkObjects(suMsg);
            Debug.Log("Server update message received!");
            break;

        case Commands.PLAYER_DROPPED:
            ConnectionDroppedMsg cdMsg = JsonUtility.FromJson <ConnectionDroppedMsg>(recMsg);

            // Destroy
            GameObject character = otherPlayers[cdMsg.droppedId];
            otherPlayers.Remove(cdMsg.droppedId);
            Destroy(character);

            Debug.Log("Player dropped message received! " + cdMsg.droppedId);
            break;

        default:
            Debug.Log("Unrecognized message received!");
            break;
        }
    }
Exemple #20
0
    void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);                                             //Get bytes
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());    //convert bytes to JSON string
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg); //convert JSON to c# class

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_WHOAMI:
            PlayerUpdateMsg internalId = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Got internalId from server");
            playerInfo.player.id = internalId.player.id;
            playerIDText.SetText(playerInfo.player.id);
            myIDLabel.SetText(playerInfo.player.id);
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Got data from server, player Pos: " + puMsg.player.pos);
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            UpdateClientsInfo(suMsg);
            break;

        case Commands.ALREADY_HERE_PLAYERS:
            ServerUpdateMsg alreadyHerePlayerInfo = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("existed player info received!");
            SpawnPlayersAlreadyHere(alreadyHerePlayerInfo);
            break;

        case Commands.SPAWN_NEW_PLAYER:
            PlayerUpdateMsg newPlayerMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("new client info received!");
            SpawnNewPlayer(newPlayerMsg);
            break;

        case Commands.DISCONNECTED_PLAYER:
            DisconnectedPlayersMsg dpMsg = JsonUtility.FromJson <DisconnectedPlayersMsg>(recMsg);
            Debug.Log("Player disconnected :(");
            DeleteDisconnectPlayer(dpMsg);
            break;

        default:
            Debug.Log("Unrecognized message received!");
            break;
        }
    }
Exemple #21
0
 public void SpawnOldClients(ServerUpdateMsg oldClientsDatas)
 {
     for (int i = 0; i < oldClientsDatas.players.Count; ++i)
     {
         GameObject oc = Instantiate(clients);
         listOfOldClients[oldClientsDatas.players[i].id] = oc;
         oc.transform.position = oldClientsDatas.players[i].cubPos;
     }
 }
    public void UpdatePlayer(string id, Vector3 position, Vector3 rotation)
    {
        ServerUpdateMsg msg = new ServerUpdateMsg();

        msg.player.id                   = id;
        msg.player.position             = position;
        msg.player.rotation.eulerAngles = rotation;
        msg.player.lastBeat             = System.DateTime.Now;
        SendToServer(JsonUtility.ToJson(msg));
    }
    void AddPlayer(HandshakeMsg msg)
    {
        Allplayers.Add(msg.player);

        ServerUpdateMsg ServerUpdate = new ServerUpdateMsg();

        ServerUpdate.players = Allplayers;
        ServerUpdate.type    = ServerUpdateMsg.UpdateType.ADD;
        SendToAllClients(JsonUtility.ToJson(ServerUpdate));
    }
 void UpdatePlayers(ServerUpdateMsg s)
 {
     Debug.Log("Server players: " + s.players.Count.ToString() + ",Client Players: " + m_Players.Count.ToString());
     if (s.players.Count > m_Players.Count)
     { //spawn new
         foreach (NetworkObjects.NetworkPlayer player in s.players)
         {
             if (!m_Players.Contains(player))
             {
                 m_Players.Add(player);
                 SpawnPlayer(player);
             }
         }
     }
     else if (s.players.Count < m_Players.Count)
     {
         foreach (NetworkObjects.NetworkPlayer player in m_Players)
         {
             if (!s.players.Contains(player))
             {
                 if (Int32.TryParse(player.id, out int index))
                 {
                     Destroy(m_cubes[index]);
                     m_cubes.Remove(m_cubes[index]);
                     m_Players.Remove(player);
                 }
             }
         }
     }
     else
     {
         foreach (NetworkObjects.NetworkPlayer clientPlayer in m_Players)
         {
             foreach (NetworkObjects.NetworkPlayer serverPlayer in m_Players)
             {
                 if (serverPlayer.id == m_internalID)
                 {
                     continue;
                 }
                 else if (serverPlayer.id == clientPlayer.id)
                 {
                     clientPlayer.x = serverPlayer.x;
                     clientPlayer.y = serverPlayer.y;
                     clientPlayer.z = serverPlayer.z;
                     //this should be a separate function, but meh...
                     if (Int32.TryParse(clientPlayer.id, out int index))
                     {
                         m_cubes[index].transform.position = new Vector3(clientPlayer.x, clientPlayer.y, clientPlayer.z);
                     }
                 }
             }
         }
     }
 }
    void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received! ID : " + hsMsg.player.id);
            serverInternalId = hsMsg.player.id;
            clientList.Add(hsMsg.player.id, Instantiate(prefab));

            break;

        //case Commands.PLAYER_UPDATE:
        //    PlayerUpdateMsg puMsg = JsonUtility.FromJson<PlayerUpdateMsg>(recMsg);
        //    Debug.Log("Player update message received!");
        //    break;
        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);

            Debug.Log("Server update message received! ");
            Debug.Log("# of Players : " + suMsg.players.Count);


            List <string> tempListId = new List <string>();

            foreach (NetworkObjects.NetworkPlayer player in suMsg.players)
            {
                tempListId.Add(player.id);
                Debug.Log(" >>>>>> ID : " + player.id);
                if (!clientList.ContainsKey(player.id))
                {
                    clientList.Add(player.id, Instantiate(prefab));
                }
                if (player.id != serverInternalId)
                {
                    clientList[player.id].transform.position = player.cubPos;
                    clientList[player.id].GetComponent <Renderer>().material.color = player.cubeColor;
                }
            }
            ServerListId.Clear();
            ServerListId = tempListId;
            break;

        default:
            Debug.Log("Unrecognized message received!");
            break;
        }
    }
Exemple #26
0
    //Spawn existed player in server
    void SpawnExistedPlayer(ServerUpdateMsg data)
    {
        for (int i = 0; i < data.players.Count; ++i)
        {
            GameObject avatar = Instantiate(clientAvatar);

            listOfClients[data.players[i].id] = avatar;
            avatar.transform.position         = data.players[i].pos;

            avatar.GetComponentInChildren <TextMesh>().text = data.players[i].id;
        }
    }
 void UpdatePlayersFromSever(ServerUpdateMsg serverMsg)
 {
     for (int j = 0; j < players.Count; j++)
     {
         if (players[j].id == serverMsg.player.id)
         {
             players[j].position = serverMsg.player.position;
             players[j].rotation = serverMsg.player.rotation;
             players[j].lastBeat = serverMsg.player.lastBeat;
         }
     }
 }
    void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Player update message received!");
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            break;

        case Commands.PLAYER_INTO:
            PlayerIntoMsg pMsg = JsonUtility.FromJson <PlayerIntoMsg>(recMsg);
            Debug.Log("Player into message received!");
            if (ID != pMsg.UnityID)
            {
                Instantiate(playerCube, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity);
            }
            break;

        case Commands.PLAYER_CUBE:
            PlayerCubeMsg pcMsg = JsonUtility.FromJson <PlayerCubeMsg>(recMsg);
            Debug.Log("Player movement update message received!");
            foreach (GameObject p in GameObject.FindGameObjectsWithTag("Player"))
            {
                if (p != CubeObj && pcMsg.UnityID != ID)
                {
                    p.transform.position = pcMsg.Point;
                }
            }

            break;

        default:
            Debug.Log("Unrecognized message received!");
            break;
        }
    }
    void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.NEW_CLIENT:
            NewClientMsg ncMsg1 = JsonUtility.FromJson <NewClientMsg>(recMsg);
            SpawnPlayer(ncMsg1.player);
            Debug.Log("Client Msg: New Client message received!");
            break;

        case Commands.CLIENT_DROP:
            DropPlayerMsg dpMsg = JsonUtility.FromJson <DropPlayerMsg>(recMsg);
            RemovePlayers(dpMsg.players);
            Debug.Log("Client Msg: Client drop message received!");
            break;

        case Commands.CLIENT_LIST:
            PlayerListMsg nplMsg = JsonUtility.FromJson <PlayerListMsg>(recMsg);
            for (int i = 0; i < nplMsg.players.Length; i++)
            {
                SpawnPlayer(nplMsg.players[i]);
            }
            Debug.Log("Client Msg: Client list message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            PlayerUpdate(puMsg.updatedPlayers);
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Client Msg: Server update message received!");
            break;

        case Commands.PLAYER_ID:
            NewClientMsg ncMsg2 = JsonUtility.FromJson <NewClientMsg>(recMsg);
            playerID = ncMsg2.player.id;
            SpawnPlayer(ncMsg2.player);
            break;

        default:
            Debug.Log("Client Msg: Unrecognized message received!");
            break;
        }
    }
    void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Player update message received!");
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            break;

        //***
        case Commands.NEW_PLAYER:
            NewPlayer neMsg = JsonUtility.FromJson <NewPlayer>(recMsg);
            Debug.Log("New Player Joining!");
            if (P_ID != neMsg.ID)
            {
                Instantiate(Player, new Vector3(5.0f, 0.0f, 0.0f), Quaternion.identity);
            }
            break;

        case Commands.PLAYER_INPUT:
            PlayerInputMsg move = JsonUtility.FromJson <PlayerInputMsg>(recMsg);
            Debug.Log("Player moving!");
            foreach (GameObject cp in GameObject.FindGameObjectsWithTag("Player"))
            {
                if (cp != self)
                {
                    cp.transform.position = move.move;
                }
            }
            break;

        default:
            Debug.Log("Unrecognized message received!");
            break;
        }
    }