#pragma once #include "../IInputDevice.h" #include "DivallerState.h" #include "DivallerButton.h" #include #include #include #include namespace TLAC::Input { class Divaller : public IInputDevice { public: Divaller(); ~Divaller(); static bool TryInitializeInstance(); bool Initialize(); bool PollInput() override; bool SetLED(); bool IsDown(DivallerButton button); bool IsUp(DivallerButton button); bool IsTapped(DivallerButton button); bool IsReleased(DivallerButton button); bool WasDown(DivallerButton button); bool WasUp(DivallerButton button); uint32_t GetSlider(); static inline bool InstanceInitialized() { return instance != nullptr; }; static inline Divaller *GetInstance() { return instance; }; static inline void DeleteInstance() { delete instance; instance = nullptr; }; private: static Divaller *instance; DivallerState lastState; DivallerState currentState; WINUSB_INTERFACE_HANDLE hInterfaceHandle; HANDLE hDeviceHandle; UCHAR outputBuffer[100]; int *buttonLed = reinterpret_cast(0x14119b950); uint64_t *partionLed = reinterpret_cast(*(uint64_t *)0x140eda330 + 0xc9); uint64_t *sliderLedInit = reinterpret_cast((uint64_t *)0x14cc5dea8); UCHAR *sliderLedData = nullptr; }; }