Exemple #1
0
    void OnConnect(NetworkConnection c)
    {
        Debug.Log("Accepted a connection");
        HandshakeMsg m = new HandshakeMsg();

        m.player.id        = c.InternalId.ToString();
        m.player.cubeColor = new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
        SendToClient(JsonUtility.ToJson(m), c);

        ListUpdateMsg lm = new ListUpdateMsg();

        NetworkObjects.NetworkPlayer newPlayer = m.player;
        newPlayer.lastHB = 0f;
        playerList.Add(newPlayer); //
        lm.players = playerList;
        for (int i = 0; i < m_Connections.Length; ++i)
        {
            PlayerAddMsg am = new PlayerAddMsg();
            am.player = m.player;
            SendToClient(JsonUtility.ToJson(am), m_Connections[i]);
        }
        SendToClient(JsonUtility.ToJson(lm), c);
        m_Connections.Add(c);
        Debug.Log("Connect Init Finished");
    }
Exemple #2
0
    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);
            ownID = hsMsg.player.id;
            Debug.Log("Handshake message received!");
            Debug.Log("Client ID is " + ownID);
            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);
            foreach (var it in suMsg.players)
            {
                if (localPlayerList.ContainsKey(it.id))
                {
                    localPlayerList[it.id].transform.position = it.pos;
                }
            }
            //Debug.Log("Server update message received!");
            break;

        case Commands.PLAYER_ADD:
            PlayerAddMsg aMsg = JsonUtility.FromJson <PlayerAddMsg>(recMsg);
            SpawnPlayer(aMsg.player.id, aMsg.player.cubeColor);
            Debug.Log("Add New Player, ID: " + aMsg.player.id);
            break;

        case Commands.LIST_UPDATE:
            ListUpdateMsg lMsg = JsonUtility.FromJson <ListUpdateMsg>(recMsg);
            foreach (var it in lMsg.players)
            {
                SpawnPlayer(it.id, it.cubeColor);
                Debug.Log("Spawn other player, ID: " + it.id);
            }
            break;

        case Commands.PLAYER_DROP:
            PlayerDropMsg dropMsg = JsonUtility.FromJson <PlayerDropMsg>(recMsg);
            foreach (var it in dropMsg.dplayers)
            {
                if (localPlayerList.ContainsKey(it.id))
                {
                    GameObject temp = localPlayerList[it.id];
                    localPlayerList.Remove(it.id);
                    Destroy(temp);
                }
            }
            break;

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