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)