#pragma once #include "IInputRecorder.h" #include "IInputProvider.h" enum class ControllerType; struct ControllerData; class IControlManager { public: virtual void RegisterInputProvider(IInputProvider* provider) = 0; virtual void UnregisterInputProvider(IInputProvider* provider) = 0; virtual void RegisterInputRecorder(IInputRecorder* provider) = 0; virtual void UnregisterInputRecorder(IInputRecorder* provider) = 0; virtual void AddSystemControlDevice(shared_ptr device) = 0; virtual shared_ptr GetControlDevice(uint8_t port) = 0; virtual shared_ptr CreateControllerDevice(ControllerType type, uint8_t port) = 0; virtual bool HasControlDevice(ControllerType type) = 0; virtual vector GetPortStates() = 0; virtual void SetPollCounter(uint32_t pollCounter) = 0; virtual uint32_t GetPollCounter() = 0; virtual void UpdateControlDevices() = 0; virtual void UpdateInputState() = 0; };