summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/setup/display.c16
-rw-r--r--src/setup/joystick.c10
-rw-r--r--src/setup/keyboard.c75
-rw-r--r--src/setup/mainmenu.c47
-rw-r--r--src/setup/mouse.c16
5 files changed, 139 insertions, 25 deletions
diff --git a/src/setup/display.c b/src/setup/display.c
index 8ce472bd..956ab6a0 100644
--- a/src/setup/display.c
+++ b/src/setup/display.c
@@ -74,6 +74,7 @@ static int fullscreen = 1;
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 @@ void ConfigDisplay(void)
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 @@ void BindDisplayVariables(void)
if (gamemission == heretic || gamemission == hexen)
{
- M_BindVariable("graphical_startup", &show_endoom);
+ M_BindVariable("graphical_startup", &graphical_startup);
}
}
diff --git a/src/setup/joystick.c b/src/setup/joystick.c
index 9b064905..b3ab624d 100644
--- 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 @@ void ConfigJoystick(void)
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"
@@ -425,6 +426,11 @@ void ConfigJoystick(void)
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);
diff --git a/src/setup/keyboard.c b/src/setup/keyboard.c
index 908e5c7a..2a366609 100644
--- 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 @@ static void AddKeyControl(txt_table_t *table, char *name, int *var)
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,34 +138,51 @@ void ConfigKeyboard(void)
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",
&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);
+
+ if (gamemission == hexen)
+ {
+ AddKeyControl(movement_table, "Jump", &key_jump);
+ }
- TXT_SetColumnWidths(action_table, 20, 8);
+ TXT_SetColumnWidths(action_table, 15, 4, 15, 4);
- AddKeyControl(action_table, "Use", &key_use);
- AddKeyControl(action_table, "Fire", &key_fire);
+ AddKeyControl(action_table, "Fire/Attack", &key_fire);
+ AddKeyControl(action_table, " Use", &key_use);
TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TestConfigAction());
}
diff --git a/src/setup/mainmenu.c b/src/setup/mainmenu.c
index 1a82b507..af5e65c1 100644
--- a/src/setup/mainmenu.c
+++ b/src/setup/mainmenu.c
@@ -98,6 +98,29 @@ static void LaunchDoom(void *unused1, void *unused2)
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 @@ void MainMenu(void)
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),
diff --git a/src/setup/mouse.c b/src/setup/mouse.c
index 16b8045f..ed9abbfd 100644
--- 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 @@ static void ConfigExtraButtons(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(unused))
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 @@ void ConfigMouse(void)
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 @@ void ConfigMouse(void)
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 @@ void ConfigMouse(void)
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)