2022-07-13 23:12:11 -04:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "Controller.h"
|
|
|
|
#include <vector>
|
2022-08-16 21:53:45 -04:00
|
|
|
#include "Lib/Mercury/Mercury.h"
|
2022-07-13 23:12:11 -04:00
|
|
|
|
|
|
|
namespace Ship {
|
|
|
|
|
|
|
|
class ControlDeck {
|
|
|
|
public:
|
|
|
|
void Init(uint8_t* controllerBits);
|
|
|
|
void ScanPhysicalDevices();
|
|
|
|
void WriteToPad(OSContPad* pad) const;
|
|
|
|
void LoadControllerSettings();
|
|
|
|
void SaveControllerSettings();
|
2022-08-16 21:53:45 -04:00
|
|
|
void SetPhysicalDevice(int32_t slot, int32_t deviceSlot);
|
|
|
|
std::shared_ptr<Controller> GetPhysicalDevice(int32_t deviceSlot);
|
|
|
|
std::shared_ptr<Controller> GetPhysicalDeviceFromVirtualSlot(int32_t slot);
|
2022-07-31 23:14:54 -04:00
|
|
|
size_t GetNumPhysicalDevices();
|
2022-08-16 21:53:45 -04:00
|
|
|
int32_t GetVirtualDevice(int32_t slot);
|
2022-07-31 23:14:54 -04:00
|
|
|
size_t GetNumVirtualDevices();
|
2022-08-10 18:29:14 -04:00
|
|
|
uint8_t* GetControllerBits();
|
2022-07-31 23:14:54 -04:00
|
|
|
private:
|
2022-08-24 22:11:33 -04:00
|
|
|
std::vector<int32_t> virtualDevices = {};
|
2022-07-31 23:14:54 -04:00
|
|
|
std::vector<std::shared_ptr<Controller>> physicalDevices = {};
|
2022-08-10 18:29:14 -04:00
|
|
|
uint8_t* controllerBits = nullptr;
|
2022-07-13 23:12:11 -04:00
|
|
|
};
|
|
|
|
}
|