Mercurial > might-and-magic-trilogy
diff Keyboard.h @ 0:8b8875f5b359
Initial commit
author | Nomad |
---|---|
date | Fri, 05 Oct 2012 16:07:14 +0200 |
parents | |
children | af624eaf2fc5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Keyboard.h Fri Oct 05 16:07:14 2012 +0200 @@ -0,0 +1,120 @@ +#pragma once + + +/* 284 */ +enum InputAction : __int32 +{ + INPUT_MoveForward = 0x0, + INPUT_MoveBackwards = 0x1, + INPUT_TurnLeft = 0x2, + INPUT_TurnRight = 0x3, + INPUT_Yell = 0x4, + INPUT_Jump = 0x5, + INPUT_Combat = 0x6, + INPUT_CastReady = 0x7, + INPUT_Attack = 0x8, + INPUT_EventTrigger = 0x9, + INPUT_Cast = 0xA, + INPUT_Pass = 0xB, + INPUT_CharCycle = 0xC, + INPUT_Quest = 0xD, + INPUT_QuickRef = 0xE, + INPUT_Rest = 0xF, + INPUT_TimeCal = 0x10, + INPUT_Autonotes = 0x11, + INPUT_Mapbook = 0x12, + INPUT_AlwaysRun = 0x13, + INPUT_LookUp = 0x14, + INPUT_LookDown = 0x15, + INPUT_CenterView = 0x16, + INPUT_ZoomIn = 0x17, + INPUT_ZoomOut = 0x18, + INPUT_FlyUp = 0x19, + INPUT_FlyDown = 0x1A, + INPUT_Land = 0x1B, + INPUT_StrafeLeft = 0x1C, + INPUT_StrafeRight = 0x1D, +}; + + + +enum KeyToggleType : __int32 +{ + TOGGLE_Continuously = 0x0, + TOGGLE_OneTimePress = 0x1, +}; + +#pragma pack(push, 1) +struct KeyboardActionMapping +{ + KeyboardActionMapping(); + + void SetKeyMapping(int uAction, int vKey, KeyToggleType type); + unsigned int GetActionVKey(enum InputAction eAction); + const char *GetVKeyDisplayName(signed int a1); + const unsigned __int8 GetActionDefaultVKey(const char *Str); + void ReadMappings(); + void StoreMappings(); + bool _459F10(unsigned int a2); + void _459ED1(int a2); + void _459E5A(int a2, int a3, struct GUIWindow *pWindow); + void ResetKeys(); + void SetDefaultMapping(); + + unsigned int uLastKeyPressed; + int field_4; + int field_8; + unsigned int pVirtualKeyCodesMapping[30]; + KeyToggleType pToggleTypes[30]; + int field_FC; + unsigned __int8 pPressedKeysBuffer[257]; + unsigned __int8 uNumKeysPressed; + char field_202; + char field_203; + int field_204; + struct GUIWindow *pWindow; +}; +#pragma pack(pop) + +#pragma pack(push, 1) +struct Keyboard +{ + Keyboard(); + bool WasKeyPressed(int vKey); + bool IsKeyBeingHeld(int vKey); + bool IsShiftHeld(); + void EnterCriticalSection(); + + void (__thiscall ***vdestructor_ptr)(Keyboard *, bool); + unsigned int bUsingAsynKeyboard; +}; +#pragma pack(pop) + + +#pragma pack(push, 1) +struct AsyncKeyboard +{ + AsyncKeyboard(); + ~AsyncKeyboard(); + + bool Initialize(); + char map_key(int key); + char _45B4EC(unsigned __int8 a2); + void Thread(); + char _45B3A4(); + void Suspend(); + void Resume(); + char CreateDirectInputKeyboard(); + char _45B229(); + void _45B1B1(); + void Release(); + + static int __stdcall ThreadStarter(AsyncKeyboard *pInstance); + static void EnterCriticalSection(); + static void LeaveCriticalSection(); +}; +#pragma pack(pop) + + +extern struct KeyboardActionMapping *pKeyActionMap; +extern struct AsyncKeyboard *pAsyncKeyboard; \ No newline at end of file