X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2FInput.c;h=3abfb289adaf5fba354f9e7264195e027763003c;hb=ce0bba1a070e5e64939491eb68087f68ef8fe870;hp=a846aaf6e047dd37e50748014dc5856d1420bb89;hpb=725f2361ad1932897edef8849a86d9ba7f65424f;p=rocksndiamonds.git diff --git a/src/game_sp/Input.c b/src/game_sp/Input.c index a846aaf6..3abfb289 100644 --- a/src/game_sp/Input.c +++ b/src/game_sp/Input.c @@ -4,180 +4,42 @@ #include "Input.h" -// static char *VB_Name = "modInput"; -// --- Option Explicit - -boolean KeyState[255 + 1]; DemoBufferObject DemoBuffer; +boolean KeyState[255 + 1]; -// -// Public KeyFlagSpace As Boolean -// Public KeyFlagUp As Boolean -// Public KeyFlagLeft As Boolean -// Public KeyFlagDown As Boolean -// Public KeyFlagRight As Boolean -// Public KeyFlagEnter As Boolean -// Public KeyFlagESC As Boolean -// Public KeyFlagR As Boolean -// Public KeyFlagRShift As Boolean - -int KeyScanCode7; - -void subCheckJoystick() -{ -} - -int subCheckRightMouseButton() -{ - int subCheckRightMouseButton; - - // return button state - - return subCheckRightMouseButton; -} - -int subProcessKeyboardInput(byte action) +int map_key_RND_to_SP(int key) { - int subProcessKeyboardInput; - - static int LastKey = 0; - -#if 1 - - if (action & KEY_BUTTON) + if (key & KEY_BUTTON) { - DemoKeyCode = (action & MV_UP ? keySpaceUp : - action & MV_LEFT ? keySpaceLeft : - action & MV_DOWN ? keySpaceDown : - action & MV_RIGHT ? keySpaceRight : keySpace); + return (key & MV_UP ? keySpaceUp : + key & MV_LEFT ? keySpaceLeft : + key & MV_DOWN ? keySpaceDown : + key & MV_RIGHT ? keySpaceRight : keySpace); } else { - DemoKeyCode = (action & MV_UP ? keyUp : - action & MV_LEFT ? keyLeft : - action & MV_DOWN ? keyDown : - action & MV_RIGHT ? keyRight : keyNone); + return (key & MV_UP ? keyUp : + key & MV_LEFT ? keyLeft : + key & MV_DOWN ? keyDown : + key & MV_RIGHT ? keyRight : keyNone); } +} - return subProcessKeyboardInput; - -#else - - // On Error GoTo NoKeyboardAccessEH - // Call DKeyboard.Acquire - // On Error GoTo 0 - // Call DKeyboard.GetDeviceStateKeyboard(KeyState) - // With KeyState - if (DemoFlag != 0) - { - subGetNextDemoKey(); - - if (ExitToMenuFlag != 0) - return subProcessKeyboardInput; - } - else - { - if (KeyState[vbKeySpace]) - { - if (KeyState[vbKeyUp]) - { - DemoKeyCode = keySpaceUp; - } - else if (KeyState[vbKeyLeft]) - { - DemoKeyCode = keySpaceLeft; - } - else if (KeyState[vbKeyDown]) - { - DemoKeyCode = keySpaceDown; - } - else if (KeyState[vbKeyRight]) - { - DemoKeyCode = keySpaceRight; - } - else - { - DemoKeyCode = keySpace; - } - - } - else - { - if (KeyState[vbKeyUp]) - { - DemoKeyCode = keyUp; - } - else if (KeyState[vbKeyLeft]) - { - DemoKeyCode = keyLeft; - } - else if (KeyState[vbKeyDown]) - { - DemoKeyCode = keyDown; - } - else if (KeyState[vbKeyRight]) - { - DemoKeyCode = keyRight; - } - else - { - DemoKeyCode = keyNone; - } - } - } - -#endif - - // demo recording - if (RecordDemoFlag == 1) - DemoBuffer.AddDemoKey(DemoKeyCode); - - if (DemoKeyCode != LastKey && ! NoDisplayFlag) - { -#if 0 - MainForm.ShowKey(DemoKeyCode); -#endif - LastKey = DemoKeyCode; - } - - if (KeyState[vbKeyEscape]) - { - if (BlockingSpeed) - { - // Call MainForm.menSpeed_Click(4) - } - else - { -#if 1 - printf("::: Input.c: subProcessKeyboardInput(): kill murphy\n"); -#endif - - KillMurphyFlag = 1; - // ExplodeFieldSP MurphyPosIndex - // LeadOutCounter = &H20 - } - } - - if (KeyState[vbKeyR]) - { - subFetchAndInitLevelB(); - } - - if (KeyState[vbKeyShift]) - subDisplayRedDiskCount(); - -#if 0 - if (KeyState[vbKeyReturn]) - MainForm.PanelVisible = (ShowPanel == 0); -#endif - - // End With - // Call DKeyboard.Unacquire - return subProcessKeyboardInput; - - // NoKeyboardAccessEH: - Debug.Print("! Keyboard access"); +int map_key_SP_to_RND(int key) +{ + return (key == keyUp ? MV_UP : + key == keyLeft ? MV_LEFT : + key == keyDown ? MV_DOWN : + key == keyRight ? MV_RIGHT : + key == keySpaceUp ? KEY_BUTTON | MV_UP : + key == keySpaceLeft ? KEY_BUTTON | MV_LEFT : + key == keySpaceDown ? KEY_BUTTON | MV_DOWN : + key == keySpaceRight ? KEY_BUTTON | MV_RIGHT : + key == keySpace ? KEY_BUTTON : MV_NONE); +} - return subProcessKeyboardInput; +void subProcessKeyboardInput(byte action) +{ + DemoKeyCode = map_key_RND_to_SP(action); }