shithub: choc

Download patch

ref: 50aa38234875257f8b74b56dab42711334f61dbd
parent: a33d23591953d7fbb0041544f4bbe7b807654bb8
author: Simon Howard <[email protected]>
date: Fri Nov 28 17:47:10 EST 2008

Add Heretic/Hexen controls to setup program.

Subversion-branch: /branches/raven-branch
Subversion-revision: 1390

--- a/src/setup/display.c
+++ b/src/setup/display.c
@@ -74,6 +74,7 @@
 static int screen_width = 320;
 static int screen_height = 200;
 static int startup_delay = 1000;
+static int graphical_startup = 1;
 static int show_endoom = 1;
 static int usegamma = 0;
 
@@ -430,9 +431,20 @@
                    TXT_NewSeparator("Screen mode"),
                    modes_table,
                    TXT_NewSeparator("Misc."),
-                   TXT_NewCheckBox("Show ENDOOM screen", &show_endoom),
                    NULL);
 
+    if (gamemission == heretic || gamemission == hexen)
+    {
+        TXT_AddWidget(window,
+                      TXT_NewCheckBox("Graphical startup", &graphical_startup));
+    }
+
+    if (gamemission == doom || gamemission == heretic)
+    {
+        TXT_AddWidget(window,
+                      TXT_NewCheckBox("Show ENDOOM screen", &show_endoom));
+    }
+
     TXT_SignalConnect(fs_checkbox, "changed", GenerateModesTable, modes_table);
     TXT_SignalConnect(ar_checkbox, "changed", GenerateModesTable, modes_table);
 
@@ -458,7 +470,7 @@
 
     if (gamemission == heretic || gamemission == hexen)
     {
-        M_BindVariable("graphical_startup",        &show_endoom);
+        M_BindVariable("graphical_startup",        &graphical_startup);
     }
 
 }
--- a/src/setup/joystick.c
+++ b/src/setup/joystick.c
@@ -26,9 +26,10 @@
 #include "m_config.h"
 #include "m_controls.h"
 #include "textscreen.h"
-#include "txt_joybinput.h"
 
 #include "joystick.h"
+#include "mode.h"
+#include "txt_joybinput.h"
 
 typedef enum
 {
@@ -408,7 +409,7 @@
 
     TXT_SetColumnWidths(button_table, 20, 15);
 
-    AddJoystickControl(button_table, "Fire", &joybfire);
+    AddJoystickControl(button_table, "Fire/Attack", &joybfire);
     AddJoystickControl(button_table, "Use", &joybuse);
 
     // High values of joybspeed are used to activate the "always run mode"
@@ -424,6 +425,11 @@
 
     AddJoystickControl(button_table, "Strafe Left", &joybstrafeleft);
     AddJoystickControl(button_table, "Strafe Right", &joybstraferight);
+
+    if (gamemission == hexen)
+    {
+        AddJoystickControl(button_table, "Jump", &joybjump);
+    }
 
     TXT_SignalConnect(joystick_button, "pressed", CalibrateJoystick, NULL);
     TXT_SignalConnect(window, "closed", JoystickWindowClosed, NULL);
--- a/src/setup/keyboard.c
+++ b/src/setup/keyboard.c
@@ -26,6 +26,7 @@
 #include "execute.h"
 #include "txt_keyinput.h"
 
+#include "mode.h"
 #include "joystick.h"
 #include "keyboard.h"
 
@@ -87,6 +88,43 @@
     TXT_SignalConnect(key_input, "set", KeySetCallback, var);
 }
 
+static void ConfigExtraKeys(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(unused))
+{
+    txt_window_t *window;
+    txt_table_t *view_table;
+    txt_table_t *fly_table;
+    txt_table_t *inv_table;
+
+    window = TXT_NewWindow("Extra keyboard controls");
+
+    TXT_AddWidgets(window, 
+                   TXT_NewSeparator("View"),
+                   view_table = TXT_NewTable(2),
+                   TXT_NewSeparator("Flying"),
+                   fly_table = TXT_NewTable(2),
+                   TXT_NewSeparator("Inventory"),
+                   inv_table = TXT_NewTable(2),
+                   NULL);
+
+    TXT_SetColumnWidths(view_table, 25, 12);
+
+    AddKeyControl(view_table, "Look up", &key_lookup);
+    AddKeyControl(view_table, "Look down", &key_lookdown);
+    AddKeyControl(view_table, "Center view", &key_lookcenter);
+
+    TXT_SetColumnWidths(fly_table, 25, 12);
+
+    AddKeyControl(fly_table, "Fly up", &key_flyup);
+    AddKeyControl(fly_table, "Fly down", &key_flydown);
+    AddKeyControl(fly_table, "Fly center", &key_flycenter);
+
+    TXT_SetColumnWidths(inv_table, 25, 12);
+
+    AddKeyControl(inv_table, "Inventory left", &key_invleft);
+    AddKeyControl(inv_table, "Inventory right", &key_invright);
+    AddKeyControl(inv_table, "Use artifact", &key_useartifact);
+}
+
 void ConfigKeyboard(void)
 {
     txt_window_t *window;
@@ -100,11 +138,23 @@
 
     TXT_AddWidgets(window, 
                    TXT_NewSeparator("Movement"),
-                   movement_table = TXT_NewTable(2),
+                   movement_table = TXT_NewTable(4),
 
                    TXT_NewSeparator("Action"),
-                   action_table = TXT_NewTable(2),
+                   action_table = TXT_NewTable(4),
+                   NULL);
 
+    // Look up/down, inventory and flying controls are only in Heretic/Hexen
+    // and are kept in a separate window to conserve space.
+
+    if (gamemission == heretic || gamemission == hexen)
+    {
+        TXT_AddWidget(window, TXT_NewButton2("More controls...",
+                                             ConfigExtraKeys,
+                                             NULL));
+    }
+
+    TXT_AddWidgets(window,
                    TXT_NewSeparator("Misc."),
                    run_control = TXT_NewCheckBox("Always run", &always_run),
                    TXT_NewInvertedCheckBox("Use native keyboard mapping", 
@@ -111,23 +161,28 @@
                                            &vanilla_keyboard_mapping),
                    NULL);
 
-    TXT_SetColumnWidths(movement_table, 20, 8);
+    TXT_SetColumnWidths(movement_table, 15, 4, 15, 4);
 
     TXT_SignalConnect(run_control, "changed", UpdateJoybSpeed, NULL);
 
     AddKeyControl(movement_table, "Move Forward", &key_up);
+    AddKeyControl(movement_table, " Strafe Left", &key_strafeleft);
     AddKeyControl(movement_table, "Move Backward", &key_down);
+    AddKeyControl(movement_table, " Strafe Right", &key_straferight);
     AddKeyControl(movement_table, "Turn Left", &key_left);
+    AddKeyControl(movement_table, " Speed On", &key_speed);
     AddKeyControl(movement_table, "Turn Right", &key_right);
-    AddKeyControl(movement_table, "Strafe Left", &key_strafeleft);
-    AddKeyControl(movement_table, "Strafe Right", &key_straferight);
-    AddKeyControl(movement_table, "Speed On", &key_speed);
-    AddKeyControl(movement_table, "Strafe On", &key_strafe);
+    AddKeyControl(movement_table, " Strafe On", &key_strafe);
 
-    TXT_SetColumnWidths(action_table, 20, 8);
+    if (gamemission == hexen)
+    {
+        AddKeyControl(movement_table, "Jump", &key_jump);
+    }
 
-    AddKeyControl(action_table, "Use", &key_use);
-    AddKeyControl(action_table, "Fire", &key_fire);
+    TXT_SetColumnWidths(action_table, 15, 4, 15, 4);
+
+    AddKeyControl(action_table, "Fire/Attack", &key_fire);
+    AddKeyControl(action_table, " Use", &key_use);
 
     TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TestConfigAction());
 }
--- a/src/setup/mainmenu.c
+++ b/src/setup/mainmenu.c
@@ -98,6 +98,29 @@
     exit(0);
 }
 
+static txt_button_t *GetLaunchButton(void)
+{
+    char *label;
+
+    switch (gamemission)
+    {
+        case doom:
+            label = "Save parameters and launch DOOM";
+            break;
+        case heretic:
+            label = "Save parameters and launch Heretic";
+            break;
+        case hexen:
+            label = "Save parameters and launch Hexen";
+            break;
+        default:
+            label = "Save parameters and launch game";
+            break;
+    }
+
+    return TXT_NewButton2(label, LaunchDoom, NULL);
+}
+
 void MainMenu(void)
 {
     txt_window_t *window;
@@ -108,17 +131,31 @@
     TXT_AddWidgets(window,
           TXT_NewButton2("Configure Display", 
                          (TxtWidgetSignalFunc) ConfigDisplay, NULL),
-          TXT_NewButton2("Configure Joystick", 
-                         (TxtWidgetSignalFunc) ConfigJoystick, NULL),
           TXT_NewButton2("Configure Keyboard", 
                          (TxtWidgetSignalFunc) ConfigKeyboard, NULL),
           TXT_NewButton2("Configure Mouse", 
                          (TxtWidgetSignalFunc) ConfigMouse, NULL),
+          TXT_NewButton2("Configure Joystick", 
+                         (TxtWidgetSignalFunc) ConfigJoystick, NULL),
           TXT_NewButton2("Configure Sound", 
                          (TxtWidgetSignalFunc) ConfigSound, NULL),
-          TXT_NewButton2("Compatibility", 
-                         (TxtWidgetSignalFunc) CompatibilitySettings, NULL),
-          TXT_NewButton2("Save parameters and launch DOOM", LaunchDoom, NULL),
+          NULL);
+
+    // The compatibility window is only appropriate for Doom.
+
+    if (gamemission == doom)
+    {
+        txt_button_t *button;
+
+        button = TXT_NewButton2("Compatibility", 
+                                (TxtWidgetSignalFunc) CompatibilitySettings,
+                                NULL);
+
+        TXT_AddWidget(window, button);
+    }
+
+    TXT_AddWidgets(window,
+          GetLaunchButton(),
           TXT_NewStrut(0, 1),
           TXT_NewButton2("Start a Network Game", 
                          (TxtWidgetSignalFunc) StartMultiGame, NULL),
--- a/src/setup/mouse.c
+++ b/src/setup/mouse.c
@@ -29,6 +29,7 @@
 #include "execute.h"
 #include "txt_mouseinput.h"
 
+#include "mode.h"
 #include "mouse.h"
 
 static int usemouse = 1;
@@ -96,6 +97,11 @@
     AddMouseControl(buttons_table, "Use", &mousebuse);
     AddMouseControl(buttons_table, "Strafe left", &mousebstrafeleft);
     AddMouseControl(buttons_table, "Strafe right", &mousebstraferight);
+
+    if (gamemission == hexen)
+    {
+        AddMouseControl(buttons_table, "Jump", &mousebjump);
+    }
 }
 
 void ConfigMouse(void)
@@ -103,7 +109,6 @@
     txt_window_t *window;
     txt_table_t *motion_table;
     txt_table_t *buttons_table;
-    txt_button_t *more_buttons;
 
     window = TXT_NewWindow("Mouse configuration");
 
@@ -121,8 +126,9 @@
     
                    TXT_NewSeparator("Buttons"),
                    buttons_table = TXT_NewTable(2),
-                   more_buttons = TXT_NewButton("More buttons..."),
-
+                   TXT_NewButton2("More controls...",
+                                  ConfigExtraButtons,
+                                  NULL),
                    NULL);
 
     TXT_SetColumnWidths(motion_table, 27, 5);
@@ -138,13 +144,11 @@
 
     TXT_SetColumnWidths(buttons_table, 27, 5);
 
+    AddMouseControl(buttons_table, "Fire/Attack", &mousebfire);
     AddMouseControl(buttons_table, "Move forward", &mousebforward);
     AddMouseControl(buttons_table, "Strafe on", &mousebstrafe);
-    AddMouseControl(buttons_table, "Fire weapon", &mousebfire);
     
     TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TestConfigAction());
-
-    TXT_SignalConnect(more_buttons, "pressed", ConfigExtraButtons, NULL);
 }
 
 void BindMouseVariables(void)