prime/include/Kyoto/Input/CDolphinController.hpp

42 lines
1.2 KiB
C++

#ifndef _CDOLPHINCONTROLLER
#define _CDOLPHINCONTROLLER
#include "Kyoto/Input/IController.hpp"
class CDolphinController : public IController {
static const uint skTypeUnknown;
static const uint skTypeStandard;
static const uint skTypeGBA;
static const uint skTypeWavebird;
public:
CDolphinController();
~CDolphinController() override;
void Poll() override;
uint GetDeviceCount() const override;
CControllerGamepadData& GetGamepadData(int controller) override;
uint GetControllerType(int) const override;
void SetMotorState(EIOPort port, EMotorState state) override;
bool Initialize();
float GetAnalogStickMaxValue(EJoyAxis axis) const;
private:
void ReadDevices();
void ProcessInputData();
void ProcessAxis(int controller, EJoyAxis axis);
void ProcessButtons(int controller);
void ProcessDigitalButton(int value, CControllerButton& button, ushort mapping);
void ProcessAnalogButton(float value, CControllerAxis& axis);
PADStatus x4_status[4];
CControllerGamepadData x34_gamepadStates[4];
EMotorState x194_motorStates[4];
uint x1a4_controllerTypes[4];
uint x1b4_controllerTypePollTime[4];
uint x1c4_validControllers;
uint x1c8_invalidControllers;
uint x1cc_;
};
#endif // _CDOLPHINCONTROLLER