Ejemplo n.º 1
0
    void HandleCommand(Commands command, int index)
    {
        switch (command)
        {
        case Commands.HeartBeat:
            _commandHandler.HeartBeatResponse(_writers[index], _timesSinceClientsLastHeartBeat, index);
            break;

        case Commands.Create:
            int prefabIndex = _readers[index].ReadInt32();
            _commandHandler.SpawnObject(_networkingPrefabs[prefabIndex], prefabIndex, _nextObjectID, _objectList, _readers[index], _writers);
            _nextObjectID++;
            break;

        case Commands.Update:
            _textfield.text = "Updating object";
            _commandHandler.UpdateObject(_readers[index], _writers, _objectList, _textfield);
            break;

        case Commands.Destroy:
            _commandHandler.DestroyObject(_readers[index], _writers, _objectList);
            break;

        case Commands.Connect:
            //give the newly connected client a networking ID
            _textfield.text += "Client: " + index + " wants to connect";
            _commandHandler.ConnectClient(_readers[index], _writers[index], _nextNetworkingID);
            Debug.Log(_nextNetworkingID);
            _nextNetworkingID++;
            break;

        case Commands.Disconnect:
            //kick the client
            _clients.Remove(_commandHandler.Disconnect(_clients[index], _writers[index]));
            _timesSinceClientsLastHeartBeat.RemoveAt(index);
            _writers.RemoveAt(index);
            _readers.RemoveAt(index);
            break;

        case Commands.Unknown:
            //do nothing i guess?
            break;
        }
    }