X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2FInput.c;h=5a469575399886e012048e50e5afee9f0b4e3510;hb=98d421667c21a07ab69dd881f1435c2f595ddd4c;hp=24438057c0810497bd8b7105d3515075bfff8506;hpb=5ba7f2d9a3f07f342afdf215a3307d5487cb6d43;p=rocksndiamonds.git diff --git a/src/game_sp/Input.c b/src/game_sp/Input.c index 24438057..5a469575 100644 --- a/src/game_sp/Input.c +++ b/src/game_sp/Input.c @@ -4,152 +4,39 @@ #include "Input.h" -static char *VB_Name = "modInput"; -// --- Option Explicit -boolean KeyState[255 + 1]; -DemoBufferObject DemoBuffer; - -// -// 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() +int map_key_RND_to_SP(int key) { - int subProcessKeyboardInput; - - int LastKey; - - // On Error GoTo NoKeyboardAccessEH - // Call DKeyboard.Acquire - // On Error GoTo 0 - // Call DKeyboard.GetDeviceStateKeyboard(KeyState) - // With KeyState - if (DemoFlag != 0) + if (key & KEY_BUTTON) { - subGetNextDemoKey(); - if (ExitToMenuFlag != 0) - return subProcessKeyboardInput; - + return (key & MV_UP ? keySpaceUp : + key & MV_LEFT ? keySpaceLeft : + key & MV_DOWN ? keySpaceDown : + key & MV_RIGHT ? keySpaceRight : keySpace); } 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; - } - } - } - - // 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 - { - KillMurphyFlag = 1; - // ExplodeFieldSP MurphyPosIndex - // LeadOutCounter = &H20 - } - } - - if (KeyState[vbKeyR]) - { - subFetchAndInitLevelB(); + return (key & MV_UP ? keyUp : + key & MV_LEFT ? keyLeft : + key & MV_DOWN ? keyDown : + key & MV_RIGHT ? keyRight : keyNone); } +} - 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); }