ref: d4d0f9945cefdb86241b5bd095e82ddbfca0e134
parent: dc7d72797f1d6810b8ba2f8472f6828f1f714df6
author: Simon Howard <fraggle@gmail.com>
date: Wed Oct 8 14:47:13 EDT 2008
Switch configuration file code to common configuration file code, and remove old code. Subversion-branch: /branches/raven-branch Subversion-revision: 1338
--- a/src/hexen/ct_chat.c
+++ b/src/hexen/ct_chat.c
@@ -102,7 +102,18 @@
"PURPLE: "
};
-char *chat_macros[10];
+char *chat_macros[10] = {
+ HUSTR_CHATMACRO0,
+ HUSTR_CHATMACRO1,
+ HUSTR_CHATMACRO2,
+ HUSTR_CHATMACRO3,
+ HUSTR_CHATMACRO4,
+ HUSTR_CHATMACRO5,
+ HUSTR_CHATMACRO6,
+ HUSTR_CHATMACRO7,
+ HUSTR_CHATMACRO8,
+ HUSTR_CHATMACRO9,
+};
boolean altdown;
boolean shiftdown;
--- a/src/hexen/ct_chat.h
+++ b/src/hexen/ct_chat.h
@@ -24,6 +24,9 @@
// Chat mode stuff
//
+#ifndef HEXEN_CT_CHAT_H
+#define HEXEN_CT_CHAT_H
+
#define CT_PLR_GREEN 1
#define CT_PLR_YELLOW 2
#define CT_PLR_RED 3
@@ -35,3 +38,8 @@
#define CT_KEY_RED 'r'
#define CT_KEY_BLUE 'b'
#define CT_KEY_ALL 't'
+
+extern char *chat_macros[10];
+
+#endif
+
--- a/src/hexen/d_net.c
+++ b/src/hexen/d_net.c
@@ -653,7 +653,7 @@
continue;
if (netbuffer->checksum & NCMD_SETUP && netbuffer->starttic < 64)
{
- if (netbuffer->player != VERSION)
+ if (netbuffer->player != HEXEN_VERSION)
I_Error
("Different HEXEN versions cannot play a net game!");
startskill = netbuffer->retransmitfrom & 15;
@@ -682,7 +682,7 @@
if (respawnparm)
netbuffer->retransmitfrom |= 0x10;
netbuffer->starttic = startmap & 0x3f;
- netbuffer->player = VERSION;
+ netbuffer->player = HEXEN_VERSION;
netbuffer->numtics = 0;
HSendPacket(i, NCMD_SETUP);
}
--- a/src/hexen/g_game.c
+++ b/src/hexen/g_game.c
@@ -29,6 +29,7 @@
#include "i_video.h"
#include "i_system.h"
#include "i_timer.h"
+#include "m_controls.h"
#include "m_misc.h"
#include "p_local.h"
#include "v_video.h"
@@ -108,26 +109,7 @@
short consistancy[MAXPLAYERS][BACKUPTICS];
-//
-// controls (have defaults)
-//
-int key_right, key_left, key_up, key_down;
-int key_strafeleft, key_straferight, key_jump;
-int key_fire, key_use, key_strafe, key_speed;
-int key_flyup, key_flydown, key_flycenter;
-int key_lookup, key_lookdown, key_lookcenter;
-int key_invleft, key_invright, key_useartifact;
-
-int mousebfire;
-int mousebstrafe;
-int mousebforward;
-int mousebjump;
-
-int joybfire;
-int joybstrafe;
-int joybuse;
-int joybspeed;
-int joybjump;
+int mouseSensitivity = 5;
int LeaveMap;
static int LeavePosition;
--- a/src/hexen/h2_main.c
+++ b/src/hexen/h2_main.c
@@ -32,16 +32,21 @@
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
+
+#include "config.h"
+
#include "h2def.h"
+#include "ct_chat.h"
#include "s_sound.h"
#include "i_system.h"
#include "m_argv.h"
+#include "m_config.h"
+#include "m_controls.h"
#include "p_local.h"
#include "v_video.h"
// MACROS ------------------------------------------------------------------
-#define CONFIG_FILE_NAME "hexen.cfg"
#define MAXWADFILES 20
// TYPES -------------------------------------------------------------------
@@ -141,6 +146,34 @@
// CODE --------------------------------------------------------------------
+void D_BindVariables(void)
+{
+ int i;
+
+ I_BindVariables();
+ M_BindBaseControls();
+ M_BindHereticControls();
+ M_BindHexenControls();
+
+ M_BindVariable("mouse_sensitivity", &mouseSensitivity);
+ M_BindVariable("sfx_volume", &snd_MaxVolume);
+ M_BindVariable("music_volume", &snd_MusicVolume);
+ M_BindVariable("messageson", &messageson);
+ M_BindVariable("screenblocks", &screenblocks);
+ M_BindVariable("snd_channels", &snd_Channels);
+ M_BindVariable("savedir", &SavePath);
+
+ // Multiplayer chat macros
+
+ for (i=0; i<10; ++i)
+ {
+ char buf[12];
+
+ sprintf(buf, "chatmacro%i", i);
+ M_BindVariable(buf, &chat_macros[i]);
+ }
+}
+
//==========================================================================
//
// H2_Main
@@ -169,7 +202,9 @@
// Load defaults before initing other systems
ST_Message("M_LoadDefaults: Load system defaults.\n");
- M_LoadDefaults(CONFIG_FILE_NAME);
+ D_BindVariables();
+ M_SetConfigFilenames("hexen.cfg", PROGRAM_PREFIX "hexen.cfg");
+ M_LoadDefaults();
// Now that the savedir is loaded from .CFG, make sure it exists
CreateSavePath();
@@ -217,8 +252,6 @@
S_StartSongName("orb", true);
// Show version message now, so it's visible during R_Init()
- ST_Message("Executable: " VERSIONTEXT ".\n");
-
ST_Message("R_Init: Init Hexen refresh daemon");
R_Init();
ST_Message("\n");
--- a/src/hexen/h2def.h
+++ b/src/hexen/h2def.h
@@ -52,8 +52,8 @@
#include "tables.h"
-#define VERSION 110
-#define VERSION_TEXT "v1.1"
+#define HEXEN_VERSION 110
+#define HEXEN_VERSION_TEXT "v1.1"
// Uncomment, to enable all timebomb stuff
//#define TIMEBOMB
@@ -71,15 +71,15 @@
#ifndef VER_ID
#define VER_ID "DVL"
#endif
-//#define VERSIONTEXT "ID V1.2"
-//#define VERSIONTEXT "RETAIL STORE BETA" // 9/26/95
-//#define VERSIONTEXT "DVL BETA 10 05 95" // Used for GT for testing
-//#define VERSIONTEXT "DVL BETA 10 07 95" // Just an update for Romero
-//#define VERSIONTEXT "FINAL 1.0 (10 13 95)" // Just an update for Romero
+//#define HEXEN_VERSIONTEXT "ID V1.2"
+//#define HEXEN_VERSIONTEXT "RETAIL STORE BETA" // 9/26/95
+//#define HEXEN_VERSIONTEXT "DVL BETA 10 05 95" // Used for GT for testing
+//#define HEXEN_VERSIONTEXT "DVL BETA 10 07 95" // Just an update for Romero
+//#define HEXEN_VERSIONTEXT "FINAL 1.0 (10 13 95)" // Just an update for Romero
#ifdef RANGECHECK
-#define VERSIONTEXT "Version 1.1 +R "__DATE__" ("VER_ID")"
+#define HEXEN_VERSIONTEXT "Version 1.1 +R "__DATE__" ("VER_ID")"
#else
-#define VERSIONTEXT "Version 1.1 "__DATE__" ("VER_ID")"
+#define HEXEN_VERSIONTEXT "Version 1.1 "__DATE__" ("VER_ID")"
#endif
// all exterior data is defined here
@@ -886,6 +886,8 @@
#define HXS_VERSION_TEXT_LENGTH 16
#define HXS_DESCRIPTION_LENGTH 24
+extern char *SavePath;
+
void SV_SaveGame(int slot, char *description);
void SV_SaveMap(boolean savePlayers);
void SV_LoadGame(int slot);
@@ -993,9 +995,6 @@
void M_ClearRandom(void);
// fix randoms for demos
-void M_LoadDefaults(char *fileName);
-void M_SaveDefaults(void);
-
int M_DrawText(int x, int y, boolean direct, char *string);
//------------------------------
@@ -1163,6 +1162,8 @@
int MN_TextAWidth(char *text);
void MN_DrTextB(char *text, int x, int y);
int MN_TextBWidth(char *text);
+
+extern int messageson;
#include "sounds.h"
--- a/src/hexen/m_misc.c
+++ b/src/hexen/m_misc.c
@@ -171,327 +171,3 @@
}
}
-/*
-==============================================================================
-
- DEFAULTS
-
-==============================================================================
-*/
-
-int usemouse;
-int usejoystick;
-
-extern int key_right, key_left, key_up, key_down;
-extern int key_strafeleft, key_straferight, key_jump;
-extern int key_fire, key_use, key_strafe, key_speed;
-extern int key_flyup, key_flydown, key_flycenter;
-extern int key_lookup, key_lookdown, key_lookcenter;
-extern int key_invleft, key_invright, key_useartifact;
-
-extern int mousebfire;
-extern int mousebstrafe;
-extern int mousebforward;
-extern int mousebjump;
-
-extern int joybfire;
-extern int joybstrafe;
-extern int joybuse;
-extern int joybspeed;
-extern int joybjump;
-
-extern boolean messageson;
-
-extern int viewwidth, viewheight;
-
-int mouseSensitivity;
-
-extern int screenblocks;
-
-extern char *chat_macros[10];
-
-typedef struct
-{
- char *name;
- int *location;
- int defaultvalue;
- int scantranslate; // PC scan code hack
- int untranslated; // lousy hack
-} default_t;
-
-#ifndef __NeXT__
-extern int snd_Channels;
-extern int snd_DesiredMusicDevice, snd_DesiredSfxDevice;
-extern int snd_MusicDevice, // current music card # (index to dmxCodes)
- snd_SfxDevice; // current sfx card # (index to dmxCodes)
-
-extern int snd_SBport, snd_SBirq, snd_SBdma; // sound blaster variables
-extern int snd_Mport; // midi variables
-#endif
-
-default_t defaults[] = {
- {"mouse_sensitivity", &mouseSensitivity, 5},
-
-#ifndef __NeXT__
- {"sfx_volume", &snd_MaxVolume, 10},
- {"music_volume", &snd_MusicVolume, 10},
-#endif
-
-#ifdef __WATCOMC__
-#define SC_UPARROW 0x48
-#define SC_DOWNARROW 0x50
-#define SC_LEFTARROW 0x4b
-#define SC_RIGHTARROW 0x4d
-#define SC_RCTRL 0x1d
-#define SC_RALT 0x38
-#define SC_RSHIFT 0x36
-#define SC_SPACE 0x39
-#define SC_COMMA 0x33
-#define SC_PERIOD 0x34
-#define SC_PAGEUP 0x49
-#define SC_INSERT 0x52
-#define SC_HOME 0x47
-#define SC_PAGEDOWN 0x51
-#define SC_DELETE 0x53
-#define SC_END 0x4f
-#define SC_ENTER 0x1c
-#define SC_SLASH 0X35
-
- {"key_right", &key_right, SC_RIGHTARROW, 1},
- {"key_left", &key_left, SC_LEFTARROW, 1},
- {"key_up", &key_up, SC_UPARROW, 1},
- {"key_down", &key_down, SC_DOWNARROW, 1},
- {"key_strafeleft", &key_strafeleft, SC_COMMA, 1},
- {"key_straferight", &key_straferight, SC_PERIOD, 1},
- {"key_jump", &key_jump, SC_SLASH, 1},
- {"key_flyup", &key_flyup, SC_PAGEUP, 1},
- {"key_flydown", &key_flydown, SC_INSERT, 1},
- {"key_flycenter", &key_flycenter, SC_HOME, 1},
- {"key_lookup", &key_lookup, SC_PAGEDOWN, 1},
- {"key_lookdown", &key_lookdown, SC_DELETE, 1},
- {"key_lookcenter", &key_lookcenter, SC_END, 1},
- {"key_invleft", &key_invleft, 0x1a, 1},
- {"key_invright", &key_invright, 0x1b, 1},
- {"key_useartifact", &key_useartifact, SC_ENTER, 1},
-
- {"key_fire", &key_fire, SC_RCTRL, 1},
- {"key_use", &key_use, SC_SPACE, 1},
- {"key_strafe", &key_strafe, SC_RALT, 1},
- {"key_speed", &key_speed, SC_RSHIFT, 1},
-#endif
-
-#ifdef __NeXT__
- {"key_right", &key_right, KEY_RIGHTARROW},
- {"key_left", &key_left, KEY_LEFTARROW},
- {"key_up", &key_up, KEY_UPARROW},
- {"key_down", &key_down, KEY_DOWNARROW},
- {"key_strafeleft", &key_strafeleft, ','},
- {"key_straferight", &key_straferight, '.'},
- {"key_jump", &key_jump, '/'},
- {"key_flyup", &key_flyup, 'u'},
- {"key_flydown", &key_flydown, 'j'},
- {"key_flycenter", &key_flycenter, 'k'},
- {"key_lookup", &key_lookup, 'm'},
- {"key_lookdown", &key_lookdown, 'b'},
- {"key_lookcenter", &key_lookcenter, 'n'},
- {"key_invleft", &key_invleft, '['},
- {"key_invright", &key_invright, ']'},
- {"key_useartifact", &key_useartifact, 13},
-
- {"key_fire", &key_fire, ' ', 1},
- {"key_use", &key_use, 'x', 1},
- {"key_strafe", &key_strafe, 'c', 1},
- {"key_speed", &key_speed, 'z', 1},
-#endif
-
- {"use_mouse", &usemouse, 1},
- {"mouseb_fire", &mousebfire, 0},
- {"mouseb_strafe", &mousebstrafe, 1},
- {"mouseb_forward", &mousebforward, 2},
- {"mouseb_jump", &mousebjump, -1},
-
- {"use_joystick", &usejoystick, 0},
- {"joyb_fire", &joybfire, 0},
- {"joyb_strafe", &joybstrafe, 1},
- {"joyb_use", &joybuse, 3},
- {"joyb_speed", &joybspeed, 2},
- {"joyb_jump", &joybjump, -1},
-
- {"screenblocks", &screenblocks, 10},
-
-#ifndef __NeXT__
- {"snd_channels", &snd_Channels, 3},
- {"snd_musicdevice", &snd_DesiredMusicDevice, 0},
- {"snd_sfxdevice", &snd_DesiredSfxDevice, 0},
- {"snd_sbport", &snd_SBport, 544},
- {"snd_sbirq", &snd_SBirq, -1},
- {"snd_sbdma", &snd_SBdma, -1},
- {"snd_mport", &snd_Mport, -1},
-#endif
-
- {"usegamma", &usegamma, 0},
-
-#define DEFAULT_SAVEPATH "hexndata/"
-
- {"savedir", (int *) &SavePath, (int) DEFAULT_SAVEPATH},
-
- {"messageson", (int *) &messageson, 1},
-
- {"chatmacro0", (int *) &chat_macros[0], (int) HUSTR_CHATMACRO0},
- {"chatmacro1", (int *) &chat_macros[1], (int) HUSTR_CHATMACRO1},
- {"chatmacro2", (int *) &chat_macros[2], (int) HUSTR_CHATMACRO2},
- {"chatmacro3", (int *) &chat_macros[3], (int) HUSTR_CHATMACRO3},
- {"chatmacro4", (int *) &chat_macros[4], (int) HUSTR_CHATMACRO4},
- {"chatmacro5", (int *) &chat_macros[5], (int) HUSTR_CHATMACRO5},
- {"chatmacro6", (int *) &chat_macros[6], (int) HUSTR_CHATMACRO6},
- {"chatmacro7", (int *) &chat_macros[7], (int) HUSTR_CHATMACRO7},
- {"chatmacro8", (int *) &chat_macros[8], (int) HUSTR_CHATMACRO8},
- {"chatmacro9", (int *) &chat_macros[9], (int) HUSTR_CHATMACRO9}
-};
-
-int numdefaults;
-char defaultfile[128];
-
-/*
-==============
-=
-= M_SaveDefaults
-=
-==============
-*/
-
-void M_SaveDefaults(void)
-{
- int i, v;
- FILE *f;
-
- f = fopen(defaultfile, "w");
- if (!f)
- return; // can't write the file, but don't complain
-
- for (i = 0; i < numdefaults; i++)
- {
-#ifdef __WATCOMC__
- if (defaults[i].scantranslate)
- defaults[i].location = &defaults[i].untranslated;
-#endif
- if (defaults[i].defaultvalue > -0xfff
- && defaults[i].defaultvalue < 0xfff)
- {
- v = *defaults[i].location;
- fprintf(f, "%s\t\t%i\n", defaults[i].name, v);
- }
- else
- {
- fprintf(f, "%s\t\t\"%s\"\n", defaults[i].name,
- *(char **) (defaults[i].location));
- }
- }
-
- fclose(f);
-}
-
-//==========================================================================
-//
-// M_LoadDefaults
-//
-//==========================================================================
-
-extern byte scantokey[128];
-
-void M_LoadDefaults(char *fileName)
-{
- int i;
- int len;
- FILE *f;
- char def[80];
- char strparm[100];
- char *newstring;
- int parm;
- boolean isstring;
-
- // Set everything to base values
- numdefaults = sizeof(defaults) / sizeof(defaults[0]);
- for (i = 0; i < numdefaults; i++)
- {
- *defaults[i].location = defaults[i].defaultvalue;
- }
-
- // Check for a custom config file
- i = M_CheckParm("-config");
- if (i && i < myargc - 1)
- {
- strcpy(defaultfile, myargv[i + 1]);
- ST_Message("config file: %s\n", defaultfile);
- }
- else if (cdrom)
- {
- sprintf(defaultfile, "c:\\hexndata\\%s", fileName);
- }
- else
- {
- strcpy(defaultfile, fileName);
- }
-
- // Scan the config file
- f = fopen(defaultfile, "r");
- if (f)
- {
- while (!feof(f))
- {
- isstring = false;
- if (fscanf(f, "%79s %[^\n]\n", def, strparm) == 2)
- {
- if (strparm[0] == '"')
- {
- // Get a string default
- isstring = true;
- len = strlen(strparm);
- newstring = (char *) malloc(len);
- if (newstring == NULL)
- I_Error("can't malloc newstring");
- strparm[len - 1] = 0;
- strcpy(newstring, strparm + 1);
- }
- else if (strparm[0] == '0' && strparm[1] == 'x')
- {
- sscanf(strparm + 2, "%x", &parm);
- }
- else
- {
- sscanf(strparm, "%i", &parm);
- }
- for (i = 0; i < numdefaults; i++)
- {
- if (!strcmp(def, defaults[i].name))
- {
- if (!isstring)
- {
- *defaults[i].location = parm;
- }
- else
- {
- *defaults[i].location = (int) newstring;
- }
- break;
- }
- }
- }
- }
- fclose(f);
- }
-
-#ifdef __WATCOMC__
- // Translate the key scancodes
- for (i = 0; i < numdefaults; i++)
- {
- if (defaults[i].scantranslate)
- {
- parm = *defaults[i].location;
- defaults[i].untranslated = parm;
- *defaults[i].location = scantokey[parm];
- }
- }
-#endif
-}
-
--- a/src/hexen/mn_menu.c
+++ b/src/hexen/mn_menu.c
@@ -126,7 +126,6 @@
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
extern int detailLevel;
-extern int screenblocks;
extern char *SavePath;
extern int key_speed, key_strafe;
extern boolean gamekeydown[256]; // The NUMKEYS macro is local to g_game
@@ -135,7 +134,7 @@
boolean MenuActive;
int InfoType;
-boolean messageson;
+int messageson = true;
boolean mn_SuicideConsole;
// PRIVATE DATA DEFINITIONS ------------------------------------------------
--- a/src/hexen/p_inter.c
+++ b/src/hexen/p_inter.c
@@ -70,8 +70,6 @@
void P_SetMessage(player_t * player, char *message, boolean ultmsg)
{
- extern boolean messageson;
-
if ((player->ultimateMessage || !messageson) && !ultmsg)
{
return;
@@ -106,8 +104,6 @@
void P_SetYellowMessage(player_t * player, char *message, boolean ultmsg)
{
- extern boolean messageson;
-
if ((player->ultimateMessage || !messageson) && !ultmsg)
{
return;
--- a/src/hexen/r_local.h
+++ b/src/hexen/r_local.h
@@ -333,6 +333,7 @@
//
// R_main.c
//
+extern int screenblocks;
extern int viewwidth, viewheight, viewwindowx, viewwindowy;
extern int centerx, centery;
extern int flyheight;
--- a/src/hexen/r_main.c
+++ b/src/hexen/r_main.c
@@ -663,7 +663,7 @@
*/
int detailLevel;
-int screenblocks;
+int screenblocks = 10;
void R_Init(void)
{
--- a/src/hexen/s_sound.c
+++ b/src/hexen/s_sound.c
@@ -71,11 +71,9 @@
static char ArchivePath[128];
-extern int snd_MusicDevice;
-extern int snd_SfxDevice;
-extern int snd_MaxVolume;
-extern int snd_MusicVolume;
-extern int snd_Channels;
+int snd_MaxVolume; // maximum volume for sound
+int snd_MusicVolume; // maximum volume for music
+int snd_Channels = 3;
extern int startepisode;
extern int startmap;
--- a/src/hexen/s_sound.h
+++ b/src/hexen/s_sound.h
@@ -77,6 +77,7 @@
extern int snd_MaxVolume;
extern int snd_MusicVolume;
+extern int snd_Channels;
void S_Start(void);
void S_StartSound(mobj_t * origin, int sound_id);
--- a/src/hexen/sb_bar.c
+++ b/src/hexen/sb_bar.c
@@ -2099,7 +2099,7 @@
static void CheatVersionFunc(player_t * player, Cheat_t * cheat)
{
- P_SetMessage(player, VERSIONTEXT, true);
+ P_SetMessage(player, HEXEN_VERSIONTEXT, true);
}
static void CheatDebugFunc(player_t * player, Cheat_t * cheat)
--- a/src/hexen/st_start.c
+++ b/src/hexen/st_start.c
@@ -34,6 +34,7 @@
#include "h2def.h"
#include "i_system.h"
+#include "s_sound.h"
#include "st_start.h"
--- a/src/hexen/sv_save.c
+++ b/src/hexen/sv_save.c
@@ -150,7 +150,9 @@
// PUBLIC DATA DEFINITIONS -------------------------------------------------
-char *SavePath;
+#define DEFAULT_SAVEPATH "hexndata/"
+
+char *SavePath = DEFAULT_SAVEPATH;
// PRIVATE DATA DEFINITIONS ------------------------------------------------
--- a/src/i_sdlsound.c
+++ b/src/i_sdlsound.c
@@ -561,6 +561,11 @@
left = ((254 - sep) * vol) / 127;
right = ((sep) * vol) / 127;
+ if (left < 0) left = 0;
+ else if ( left > 255) left = 255;
+ if (right < 0) right = 0;
+ else if (right > 255) right = 255;
+
Mix_SetPanning(handle, left, right);
}
--- a/src/i_sound.c
+++ b/src/i_sound.c
@@ -251,6 +251,7 @@
static void CheckVolumeSeparation(int *sep, int *vol)
{
+return;
if (*sep < 0)
{
*sep = 0;
--- a/src/m_config.c
+++ b/src/m_config.c
@@ -179,6 +179,12 @@
CONFIG_VARIABLE_KEY(key_straferight),
//!
+ // Keyboard key to jump.
+ //
+
+ CONFIG_VARIABLE_KEY(key_jump),
+
+ //!
// Keyboard key to fly upward.
//
@@ -285,6 +291,12 @@
CONFIG_VARIABLE_INT(mouseb_forward),
//!
+ // Mouse button to jump.
+ //
+
+ CONFIG_VARIABLE_INT(mouseb_jump),
+
+ //!
// If non-zero, joystick input is enabled.
//
@@ -317,6 +329,12 @@
CONFIG_VARIABLE_INT(joyb_speed),
//!
+ // Joystick button to jump.
+ //
+
+ CONFIG_VARIABLE_INT(joyb_jump),
+
+ //!
// Screen size, range 3-11.
//
// A value of 11 gives a full-screen view with the status bar not
@@ -386,6 +404,20 @@
//
CONFIG_VARIABLE_INT(usegamma),
+
+ //!
+ // Directory in which to store savegames.
+ //
+
+ CONFIG_VARIABLE_STRING(savedir),
+
+ //!
+ // Controls whether messages are displayed in the heads-up display.
+ // If this has a non-zero value, messages are displayed.
+ //
+
+ CONFIG_VARIABLE_INT(messageson),
+
//!
// Multiplayer chat macro: message to send when alt+0 is pressed.
--- a/src/m_controls.c
+++ b/src/m_controls.c
@@ -25,11 +25,11 @@
#include "doomkeys.h"
#include "m_config.h"
-
-//
-// Keyboard controls
-//
+//
+// Keyboard controls
+//
+
int key_right = KEY_RIGHTARROW;
int key_left = KEY_LEFTARROW;
@@ -59,6 +59,12 @@
int key_useartifact = KEY_ENTER;
//
+// Hexen key controls
+//
+
+int key_jump = '/';
+
+//
// Mouse controls
//
@@ -66,6 +72,8 @@
int mousebstrafe = 1;
int mousebforward = 2;
+int mousebjump = -1;
+
int mousebstrafeleft = -1;
int mousebstraferight = -1;
int mousebbackward = -1;
@@ -83,6 +91,8 @@
int joybstrafeleft = -1;
int joybstraferight = -1;
+int joybjump = -1;
+
// Control whether if a mouse button is double clicked, it acts like
// "use" has been pressed
@@ -138,5 +148,12 @@
M_BindVariable("key_invleft", &key_invleft);
M_BindVariable("key_invright", &key_invright);
M_BindVariable("key_useartifact", &key_useartifact);
+}
+
+void M_BindHexenControls(void)
+{
+ M_BindVariable("key_jump", &key_jump);
+ M_BindVariable("mouseb_jump", &mousebjump);
+ M_BindVariable("joyb_jump", &joybjump);
}
--- a/src/m_controls.h
+++ b/src/m_controls.h
@@ -45,11 +45,15 @@
extern int key_invleft;
extern int key_invright;
extern int key_useartifact;
+
+extern int key_jump;
extern int mousebfire;
extern int mousebstrafe;
extern int mousebforward;
+extern int mousebjump;
+
extern int mousebstrafeleft;
extern int mousebstraferight;
extern int mousebbackward;
@@ -59,6 +63,9 @@
extern int joybstrafe;
extern int joybuse;
extern int joybspeed;
+
+extern int joybjump;
+
extern int joybstrafeleft;
extern int joybstraferight;
@@ -66,6 +73,7 @@
void M_BindBaseControls(void);
void M_BindHereticControls(void);
+void M_BindHexenControls(void);
#endif /* #ifndef __M_CONTROLS_H__ */