示例#1
0
    // Sends the clent player to server to be set to be destroyed
    public void DisconnectClientPlayer()
    {
        DisconnectMsg disconnect = new DisconnectMsg();

        disconnect.player.id = clientPlayer.id;
        SendToServer(JsonUtility.ToJson(disconnect));
    }
    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());
        NetworkMessage header = JsonUtility.FromJson <NetworkMessage>(recMsg);

        switch (header.cmd)
        {
        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            AddPlayer(hsMsg);
            break;

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

        case Commands.DISCONNECT:
            DisconnectMsg dcMsg = JsonUtility.FromJson <DisconnectMsg>(recMsg);
            RemovePlayer(dcMsg);
            break;

        default:
            Debug.Log("SERVER ERROR: Unrecognized message received!");
            break;
        }
    }
示例#3
0
    public void DisconnectClient()
    {
        DisconnectMsg disconnect = new DisconnectMsg();

        disconnect.serverID = localID;
        SendToServer(JsonUtility.ToJson(disconnect));
    }
    void RemovePlayer(DisconnectMsg msg)
    {
        foreach (NetworkPlayer p in Allplayers)
        {
            if (p.id == msg.player.id)
            {
                p.destroy = true;
            }
        }
        ServerUpdateMsg ServerUpdate = new ServerUpdateMsg();

        ServerUpdate.players = Allplayers;
        ServerUpdate.type    = ServerUpdateMsg.UpdateType.REMOVE;
        SendToAllClients(JsonUtility.ToJson(ServerUpdate));
    }
示例#5
0
        void IObserver <Message> .OnNext(Message msg)
        {
            switch (msg.type)
            {
            case MessageType.Connect:
                ConnectMsg.Process(this, msg);
                break;

            case MessageType.Disconnect:
                DisconnectMsg.Process(this, msg);
                break;

            case MessageType.NewLayout:
                NewLayoutMsg.Process(this, msg);
                break;

            case MessageType.RemoveLayout:
                RemoveLayoutMsg.Process(this, msg);
                break;

            case MessageType.NewDevice:
                NewDeviceMsg.Process(this, msg);
                break;

            case MessageType.NewEvents:
                NewEventsMsg.Process(this, msg);
                break;

            case MessageType.ChangeUsages:
                ChangeUsageMsg.Process(this, msg);
                break;

            case MessageType.RemoveDevice:
                RemoveDeviceMsg.Process(this, msg);
                break;

            case MessageType.StartSending:
                StartSendingMsg.Process(this, msg);
                break;

            case MessageType.StopSending:
                StopSendingMsg.Process(this, msg);
                break;
            }
        }
示例#6
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.INITIALIZE:
            InitialMsg initMsg = JsonUtility.FromJson <InitialMsg>(recMsg);
            localID = initMsg.serverID;
            break;

        case Commands.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!: " + hsMsg.player.id);
            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!");
            UpdateList(suMsg.players);
            break;

        case Commands.PLAYER_DISCONNECT:
            DisconnectMsg disMsg = JsonUtility.FromJson <DisconnectMsg>(recMsg);
            Debug.Log("Disconnection message received!: " + disMsg.serverID);
            RemovePlayer(disMsg.serverID);
            break;

        default:
            Debug.Log("Unrecognized message received!");
            break;
        }
    }
示例#7
0
        void IObserver <Message> .OnNext(Message msg)
        {
            switch (msg.type)
            {
            case MessageType.Connect:
                ConnectMsg.Process(this, msg);
                break;

            case MessageType.Disconnect:
                DisconnectMsg.Process(this, msg);
                break;

            case MessageType.NewTemplate:
                NewTemplateMsg.Process(this, msg);
                break;

            case MessageType.RemoveTemplate:
                RemoveTemplateMsg.Process(this, msg);
                break;

            case MessageType.NewDevice:
                NewDeviceMsg.Process(this, msg);
                break;

            case MessageType.NewEvents:
                NewEventsMsg.Process(this, msg);
                break;

            case MessageType.ChangeUsages:
                ChangeUsageMsg.Process(this, msg);
                break;

            case MessageType.RemoveDevice:
                RemoveDeviceMsg.Process(this, msg);
                break;
            }
        }
    void DisconnectPlayer(string id)
    {
        //remove player with that id
        for (int i = 0; i < players.Count; i++)
        {
            if (players[i].id == id)
            {
                players.RemoveAt(i);
                Debug.Log("Player Removed Succesfully: " + id);
                break;
            }
        }

        //send disconnected id to connected clients
        for (int i = 0; i < m_Connections.Length; i++)
        {
            if (m_Connections[i].IsCreated)
            {
                DisconnectMsg disconnect = new DisconnectMsg();
                disconnect.serverID = id;
                SendToClient(JsonUtility.ToJson(disconnect), m_Connections[i]);
            }
        }
    }