rnd-20091024-1-src
[rocksndiamonds.git] / src / game_sp / Input.c
index a846aaf6e047dd37e50748014dc5856d1420bb89..5271795c48a8ee35bccad43f318b9504b3bb9643 100644 (file)
@@ -24,6 +24,37 @@ DemoBufferObject DemoBuffer;
 
 int KeyScanCode7;
 
+int map_key_RND_to_SP(int key)
+{
+  if (key & KEY_BUTTON)
+  {
+    return (key & MV_UP                ? keySpaceUp    :
+           key & MV_LEFT       ? keySpaceLeft  :
+           key & MV_DOWN       ? keySpaceDown  :
+           key & MV_RIGHT      ? keySpaceRight : keySpace);
+  }
+  else
+  {
+    return (key & MV_UP                ? keyUp         :
+           key & MV_LEFT       ? keyLeft       :
+           key & MV_DOWN       ? keyDown       :
+           key & MV_RIGHT      ? keyRight      : keyNone);
+  }
+}
+
+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);
+}
+
 void subCheckJoystick()
 {
 }
@@ -45,20 +76,11 @@ int subProcessKeyboardInput(byte action)
 
 #if 1
 
-  if (action & KEY_BUTTON)
-  {
-    DemoKeyCode = (action & MV_UP      ? keySpaceUp    :
-                  action & MV_LEFT     ? keySpaceLeft  :
-                  action & MV_DOWN     ? keySpaceDown  :
-                  action & MV_RIGHT    ? keySpaceRight : keySpace);
-  }
-  else
-  {
-    DemoKeyCode = (action & MV_UP      ? keyUp         :
-                  action & MV_LEFT     ? keyLeft       :
-                  action & MV_DOWN     ? keyDown       :
-                  action & MV_RIGHT    ? keyRight      : keyNone);
-  }
+  DemoKeyCode = map_key_RND_to_SP(action);
+
+#if 0
+    printf("::: DemoKeyCode == %d\n", DemoKeyCode);
+#endif
 
   return subProcessKeyboardInput;
 
@@ -73,6 +95,10 @@ int subProcessKeyboardInput(byte action)
   {
     subGetNextDemoKey();
 
+#if 0
+    printf("::: DemoKeyCode == %d\n", DemoKeyCode);
+#endif
+
     if (ExitToMenuFlag != 0)
       return subProcessKeyboardInput;
   }