Limitated the number of bullets to be shot at the same time.
[supertux.git] / src / setup.cpp
index 26fdba3..3cf3a91 100644 (file)
@@ -50,6 +50,8 @@
 #include "scene.h"
 #include "worldmap.h"
 
+#include "player.h"
+
 #ifdef WIN32
 #define mkdir(dir, mode)    mkdir(dir)
 // on win32 we typically don't want LFS paths
@@ -405,7 +407,11 @@ void st_menu(void)
   
   options_controls_menu->additem(MN_LABEL,"Controls",0,0);
   options_controls_menu->additem(MN_HL,"",0,0);
-  //FIXME:options_controls_menu->additem(MN_CONTROLFIELD,"Move Right", tux.keymap.right,0);
+  options_controls_menu->additem(MN_CONTROLFIELD,"Right move", 0,0, &keymap.right);
+  options_controls_menu->additem(MN_CONTROLFIELD,"Left move", 0,0, &keymap.left);
+  options_controls_menu->additem(MN_CONTROLFIELD,"Jump", 0,0, &keymap.jump);
+  options_controls_menu->additem(MN_CONTROLFIELD,"Duck", 0,0, &keymap.duck);
+  options_controls_menu->additem(MN_CONTROLFIELD,"Power", 0,0, &keymap.fire);
   options_controls_menu->additem(MN_HL,"",0,0);
   options_controls_menu->additem(MN_BACK,"Back",0,0);
 
@@ -762,8 +768,6 @@ void st_joystick_setup(void)
             }
           else
             {
-              /* Check for proper joystick configuration: */
-
               if (SDL_JoystickNumAxes(js) < 2)
                 {
                   fprintf(stderr,
@@ -927,6 +931,29 @@ void parseargs(int argc, char * argv[])
           assert(i+1 < argc);
           joystick_num = atoi(argv[++i]);
         }
+      else if (strcmp(argv[i], "--joymap") == 0)
+        {
+          assert(i+1 < argc);
+          if (sscanf(argv[++i],
+                     "%d:%d:%d:%d:%d", 
+                     &joystick_keymap.x_axis, 
+                     &joystick_keymap.y_axis, 
+                     &joystick_keymap.a_button, 
+                     &joystick_keymap.b_button, 
+                     &joystick_keymap.start_button) != 5)
+            {
+              puts("Warning: Invalid or incomplete joymap, should be: 'XAXIS:YAXIS:A:B:START'");
+            }
+          else
+            {
+              std::cout << "Using new joymap:\n"
+                        << "  X-Axis:       " << joystick_keymap.x_axis << "\n"
+                        << "  Y-Axis:       " << joystick_keymap.y_axis << "\n"
+                        << "  A-Button:     " << joystick_keymap.a_button << "\n"
+                        << "  B-Button:     " << joystick_keymap.b_button << "\n"
+                        << "  Start-Button: " << joystick_keymap.start_button << std::endl;
+            }
+        }
       else if (strcmp(argv[i], "--worldmap") == 0)
         {
           launch_worldmap_mode = true;
@@ -1004,6 +1031,8 @@ void parseargs(int argc, char * argv[])
                "\n"
                "Misc Options:\n"
                "  -j, --joystick NUM  Use joystick NUM (default: 0)\n" 
+               "  --joymap XAXIS:YAXIS:A:B:START\n"
+               "                      Define how joystick buttons and axis should be mapped\n"
                "  --worldmap          Start in worldmap-mode (EXPERIMENTAL)\n"          
                "  -d, --datadir DIR   Load Game data from DIR (default: automatic)\n"
                "  --debug-mode        Enables the debug-mode, which is useful for developers.\n"