#pragma once #include "stdafx.h" #include #include "GameConnection.h" #include "../Utilities/AutoResetEvent.h" #include "../Utilities/SimpleLock.h" #include "StandardController.h" class ClientConnectionData; class GameClientConnection : public GameConnection { private: std::deque _inputData[4]; atomic _inputSize[4]; AutoResetEvent _waitForInput[4]; SimpleLock _writeLock; atomic _shutdown; atomic _enableControllers = false; atomic _minimumQueueSize = 3; shared_ptr _controlDevice; uint32_t _lastInputSent = 0x00; bool _gameLoaded = false; uint8_t _controllerPort = 255; private: void SendHandshake(); void ClearInputData(); void PushControllerState(uint8_t port, uint8_t state); void DisableControllers(); protected: void ProcessMessage(NetMessage* message); public: GameClientConnection(shared_ptr socket, shared_ptr connectionData); ~GameClientConnection(); uint8_t GetControllerState(uint8_t port); void SendInput(); };