67 lines
2.1 KiB
C++
67 lines
2.1 KiB
C++
#pragma once
|
|
#include <Project64-plugin-spec/Input.h>
|
|
#include "DirectInput.h"
|
|
#include "N64Controller.h"
|
|
#include "Shortcuts.h"
|
|
#include <Common/CriticalSection.h>
|
|
#include <memory>
|
|
|
|
class CProject64Input
|
|
{
|
|
enum
|
|
{
|
|
WM_HIDE_CUROSR = WM_USER + 10,
|
|
WM_MAKE_FOCUS = WM_USER + 17
|
|
};
|
|
|
|
public:
|
|
CProject64Input(HINSTANCE hinst);
|
|
~CProject64Input();
|
|
|
|
void DevicesChanged(void);
|
|
void DeviceAdded(void);
|
|
void InitiateControllers(CONTROL_INFO * ControlInfo);
|
|
void GetKeys(int32_t Control, BUTTONS * Keys);
|
|
void StartScanDevices(int32_t DisplayCtrlId);
|
|
void EndScanDevices(void);
|
|
CDirectInput::ScanResult ScanDevices(BUTTON & Button);
|
|
std::wstring ButtonAssignment(BUTTON & Button);
|
|
std::wstring ControllerDevices(const N64CONTROLLER & Controller);
|
|
bool SaveController(uint32_t ControlIndex);
|
|
bool ResetController(uint32_t ControlIndex, CONTROL & ControlInfo, N64CONTROLLER & Controller);
|
|
void CheckShortcuts();
|
|
bool SaveShortcuts();
|
|
bool ResetShortcuts(SHORTCUTS& Shortcuts);
|
|
void LockMouse();
|
|
void UnlockMouse();
|
|
void LockMouseSwitch();
|
|
bool IsMouseUsed();
|
|
void LockCursor();
|
|
|
|
inline HINSTANCE hInst(void) const { return m_hinst; }
|
|
inline bool IsScanning(void) const { return m_Scanning; }
|
|
inline int32_t DisplayCtrlId(void) const { return m_DisplayCtrlId; }
|
|
inline N64CONTROLLER & Controllers(int32_t Controller) { return m_Controllers[Controller]; }
|
|
inline CONTROL & ControlInfo(int32_t Controller) { return m_ControlInfo.Controls[Controller]; }
|
|
inline SHORTCUTS& Shortcuts() { return m_Shortcuts; }
|
|
|
|
private:
|
|
CProject64Input();
|
|
CProject64Input(const CProject64Input&);
|
|
CProject64Input& operator=(const CProject64Input&);
|
|
|
|
CriticalSection m_CS;
|
|
CONTROL_INFO m_ControlInfo;
|
|
N64CONTROLLER m_Controllers[4];
|
|
N64CONTROLLER m_N64Mouse;
|
|
SHORTCUTS m_Shortcuts;
|
|
std::unique_ptr<CDirectInput> m_DirectInput;
|
|
HINSTANCE m_hinst;
|
|
bool m_Scanning;
|
|
int32_t m_DisplayCtrlId;
|
|
int32_t m_iFirstController;
|
|
bool m_MouseLock;
|
|
};
|
|
|
|
extern CProject64Input * g_InputPlugin;
|