#pragma once #include "Controller.h" #include #include "Lib/Mercury/Mercury.h" namespace Ship { class ControlDeck { public: void Init(uint8_t* controllerBits); void ScanPhysicalDevices(); void WriteToPad(OSContPad* pad) const; void LoadControllerSettings(); void SaveControllerSettings(); void SetPhysicalDevice(int32_t slot, int32_t deviceSlot); std::shared_ptr GetPhysicalDevice(int32_t deviceSlot); std::shared_ptr GetPhysicalDeviceFromVirtualSlot(int32_t slot); size_t GetNumPhysicalDevices(); int32_t GetVirtualDevice(int32_t slot); size_t GetNumVirtualDevices(); uint8_t* GetControllerBits(); void BlockGameInput(); void UnblockGameInput(); bool ShouldBlockGameInput(std::string inputDeviceGuid) const; private: std::vector virtualDevices = {}; std::vector> physicalDevices = {}; uint8_t* controllerBits = nullptr; bool shouldBlockGameInput = false; }; }