project64/Source/Project64-core/Plugins/ControllerPlugin.h

91 lines
2.2 KiB
C
Raw Normal View History

2016-01-27 09:11:59 +00:00
#pragma once
#include <Project64-core/Plugins/PluginBase.h>
#include <Project64-plugin-spec/Input.h>
2016-01-27 09:11:59 +00:00
class CControl_Plugin;
class CCONTROL
{
public:
2022-10-10 00:22:17 +00:00
CCONTROL(int32_t & Present, int32_t & RawData, int32_t & PlugType);
inline bool Present(void) const
{
return m_Present != 0;
}
inline uint32_t Buttons(void) const
{
return m_Buttons.Value;
}
inline PluginType Plugin(void) const
{
return static_cast<PluginType>(m_PlugType);
}
2016-01-27 09:11:59 +00:00
private:
friend class CControl_Plugin;
2016-01-27 09:11:59 +00:00
int32_t & m_Present;
int32_t & m_RawData;
int32_t & m_PlugType;
BUTTONS m_Buttons;
2016-01-27 09:11:59 +00:00
CCONTROL(void);
2022-10-10 00:22:17 +00:00
CCONTROL(const CCONTROL &);
CCONTROL & operator=(const CCONTROL &);
2016-01-27 09:11:59 +00:00
};
class CControl_Plugin : public CPlugin
{
public:
2022-10-10 00:22:17 +00:00
typedef void(CALL * fnGetKeys)(int32_t Control, BUTTONS * Keys);
2016-01-27 09:11:59 +00:00
CControl_Plugin(void);
~CControl_Plugin();
bool Initiate(CN64System * System, RenderWindow * Window);
void SetControl(CControl_Plugin const * const Plugin);
void UpdateKeys(void);
2022-10-10 00:22:17 +00:00
void(CALL * WM_KeyDown)(uint32_t wParam, uint32_t lParam);
void(CALL * WM_KeyUp)(uint32_t wParam, uint32_t lParam);
void(CALL * WM_KillFocus)(uint32_t wParam, uint32_t lParam);
void(CALL * EmulationPaused)();
void(CALL * RumbleCommand)(int32_t Control, int32_t bRumble);
fnGetKeys GetKeys;
2022-10-10 00:22:17 +00:00
void(CALL * ReadController)(int32_t Control, uint8_t * Command);
void(CALL * ControllerCommand)(int32_t Control, uint8_t * Command);
2016-01-27 09:11:59 +00:00
2022-10-10 00:22:17 +00:00
inline CCONTROL const * Controller(int32_t control)
{
return m_Controllers[control];
}
inline CONTROL * PluginControllers(void)
{
return m_PluginControllers;
}
2016-01-27 09:11:59 +00:00
private:
2022-10-10 00:22:17 +00:00
CControl_Plugin(const CControl_Plugin &);
CControl_Plugin & operator=(const CControl_Plugin &);
2016-01-27 09:11:59 +00:00
2022-10-10 00:22:17 +00:00
virtual int32_t GetDefaultSettingStartRange() const
{
return FirstCtrlDefaultSet;
}
virtual int32_t GetSettingStartRange() const
{
return FirstCtrlSettings;
}
PLUGIN_TYPE type()
{
return PLUGIN_TYPE_CONTROLLER;
}
2016-01-27 09:11:59 +00:00
bool LoadFunctions(void);
void UnloadPluginDetails(void);
bool m_AllocatedControllers;
2016-01-27 09:11:59 +00:00
CONTROL m_PluginControllers[4];
CCONTROL * m_Controllers[4];
};