diff options
Diffstat (limited to 'setup')
-rw-r--r-- | setup/Makefile.am | 12 | ||||
-rw-r--r-- | setup/compatibility.c | 18 | ||||
-rw-r--r-- | setup/compatibility.h | 31 | ||||
-rw-r--r-- | setup/display.c | 69 | ||||
-rw-r--r-- | setup/display.h | 33 | ||||
-rw-r--r-- | setup/keyboard.c | 25 | ||||
-rw-r--r-- | setup/keyboard.h | 40 | ||||
-rw-r--r-- | setup/mainmenu.c | 16 | ||||
-rw-r--r-- | setup/mouse.c | 32 | ||||
-rw-r--r-- | setup/mouse.h | 40 | ||||
-rw-r--r-- | setup/multiplayer.c | 32 | ||||
-rw-r--r-- | setup/multiplayer.h | 33 | ||||
-rw-r--r-- | setup/sound.c | 94 | ||||
-rw-r--r-- | setup/sound.h | 35 |
14 files changed, 394 insertions, 116 deletions
diff --git a/setup/Makefile.am b/setup/Makefile.am index 33f6d759..9dc5cb11 100644 --- a/setup/Makefile.am +++ b/setup/Makefile.am @@ -7,13 +7,13 @@ games_PROGRAMS = chocolate-setup chocolate_setup_LDADD = @LDFLAGS@ @SDL_LIBS@ ../textscreen/libtextscreen.a chocolate_setup_SOURCES = \ - compatibility.c \ - display.c \ - keyboard.c \ + compatibility.c compatibility.h \ + display.c display.h \ + keyboard.c keyboard.h \ mainmenu.c \ - mouse.c \ - multiplayer.c \ - sound.c \ + mouse.c mouse.h \ + multiplayer.c multiplayer.h \ + sound.c sound.h \ testconfig.c testconfig.h \ txt_keyinput.c txt_keyinput.h \ txt_mouseinput.c txt_mouseinput.h diff --git a/setup/compatibility.c b/setup/compatibility.c index 422f2280..bebf5a87 100644 --- a/setup/compatibility.c +++ b/setup/compatibility.c @@ -25,20 +25,22 @@ #include "textscreen.h" +#include "compatibility.h" + int vanilla_savegame_limit = 1; int vanilla_demo_limit = 1; void CompatibilitySettings(void) { - txt_window_t *window; + txt_window_t *window; - window = TXT_NewWindow("Compatibility"); + window = TXT_NewWindow("Compatibility"); - TXT_AddWidgets(window, - TXT_NewCheckBox("Vanilla savegame limit", - &vanilla_savegame_limit), - TXT_NewCheckBox("Vanilla demo limit", - &vanilla_demo_limit), - NULL); + TXT_AddWidgets(window, + TXT_NewCheckBox("Vanilla savegame limit", + &vanilla_savegame_limit), + TXT_NewCheckBox("Vanilla demo limit", + &vanilla_demo_limit), + NULL); } diff --git a/setup/compatibility.h b/setup/compatibility.h new file mode 100644 index 00000000..1d46b174 --- /dev/null +++ b/setup/compatibility.h @@ -0,0 +1,31 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2006 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// + +#ifndef SETUP_COMPATIBILITY_H +#define SETUP_COMPATIBILITY_H + +extern int vanilla_savegame_limit; +extern int vanilla_demo_limit; + +void CompatibilitySettings(void); + +#endif /* #ifndef SETUP_COMPATIBILITY_H */ + diff --git a/setup/display.c b/setup/display.c index 7f19d040..b53608db 100644 --- a/setup/display.c +++ b/setup/display.c @@ -20,62 +20,65 @@ // #include "textscreen.h" +#include "display.h" + typedef struct { - char *description; - int fullscreen; - int screenmult; + char *description; + int fullscreen; + int screenmultiply; } vidmode_t; static vidmode_t modes[] = { - { "320x200", 0, 1 }, - { "640x400", 0, 2 }, - { "960x600", 0, 3 }, - { "1280x800", 0, 4 }, - { "320x200", 1, 1 }, - { "320x240", 2, 1 }, - { "640x400", 1, 2 }, - { "640x480", 2, 2 }, - { "960x600", 1, 3 }, - { "960x720", 2, 3 }, - { "1280x800", 1, 4 }, - { "1280x960", 2, 4 }, - { NULL, 0, 0 }, + { "320x200", 0, 1 }, + { "640x400", 0, 2 }, + { "960x600", 0, 3 }, + { "1280x800", 0, 4 }, + { "320x200", 1, 1 }, + { "320x240", 2, 1 }, + { "640x400", 1, 2 }, + { "640x480", 2, 2 }, + { "960x600", 1, 3 }, + { "960x720", 2, 3 }, + { "1280x800", 1, 4 }, + { "1280x960", 2, 4 }, + { NULL, 0, 0 }, }; static int vidmode = 0; -static int fullscreen = 0; -static int screenmult = 1; -static int startup_delay = 0; -static int show_endoom = 1; -// Given the video settings (fullscreen, screenmult, etc), find the +int fullscreen = 0; +int screenmultiply = 1; +int startup_delay = 0; +int show_endoom = 1; + +// Given the video settings (fullscreen, screenmultiply, etc), find the // current video mode static void SetCurrentMode(void) { - int i; + int i; - vidmode = 0; + vidmode = 0; - for (i=0; modes[i].description != NULL; ++i) + for (i=0; modes[i].description != NULL; ++i) + { + if (fullscreen == modes[i].fullscreen + && screenmultiply == modes[i].screenmultiply) { - if (fullscreen == modes[i].fullscreen - && screenmult == modes[i].screenmult) - { - vidmode = i; - break; - } + vidmode = i; + break; } + } } static void ModeSelected(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(mode)) { - TXT_CAST_ARG(vidmode_t, mode); + TXT_CAST_ARG(vidmode_t, mode); - fullscreen = mode->fullscreen; - screenmult = mode->screenmult; + fullscreen = mode->fullscreen; + screenmultiply = mode->screenmultiply; } void ConfigDisplay(void) diff --git a/setup/display.h b/setup/display.h new file mode 100644 index 00000000..af8bb3b5 --- /dev/null +++ b/setup/display.h @@ -0,0 +1,33 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2006 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// + +#ifndef SETUP_DISPLAY_H +#define SETUP_DISPLAY_H + +extern int fullscreen; +extern int screenmultiply; +extern int startup_delay; +extern int show_endoom; + +void ConfigDisplay(void); + +#endif /* #ifndef SETUP_DISPLAY_H */ + diff --git a/setup/keyboard.c b/setup/keyboard.c index 9f4990ba..0485decb 100644 --- a/setup/keyboard.c +++ b/setup/keyboard.c @@ -23,6 +23,8 @@ #include "testconfig.h" #include "txt_keyinput.h" +#include "keyboard.h" + int key_left = KEY_LEFTARROW; int key_right = KEY_RIGHTARROW; int key_up = KEY_UPARROW; @@ -33,12 +35,26 @@ int key_fire = KEY_RCTRL; int key_use = ' '; int key_strafe = KEY_RALT; int key_speed = KEY_RSHIFT; -int always_run = 0; +int joybspeed = 3; + +static int always_run = 0; static int *allkeys[] = {&key_left, &key_right, &key_up, &key_down, &key_strafeleft, &key_straferight, &key_fire, &key_use, &key_strafe, &key_speed}; +static void UpdateJoybSpeed(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(var)) +{ + if (always_run) + { + joybspeed = 31; + } + else + { + joybspeed = 0; + } +} + // Callback invoked when a key control is set static void KeySetCallback(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(variable)) @@ -74,13 +90,16 @@ void ConfigKeyboard(void) txt_window_t *window; txt_table_t *movement_table; txt_table_t *action_table; + txt_checkbox_t *run_control; + + always_run = joybspeed > 30; window = TXT_NewWindow("Keyboard configuration"); TXT_AddWidgets(window, TXT_NewSeparator("Movement"), movement_table = TXT_NewTable(2), - TXT_NewCheckBox("Always run", &always_run), + run_control = TXT_NewCheckBox("Always run", &always_run), TXT_NewSeparator("Action"), action_table = TXT_NewTable(2), @@ -88,6 +107,8 @@ void ConfigKeyboard(void) TXT_SetColumnWidths(movement_table, 20, 8); + TXT_SignalConnect(run_control, "changed", UpdateJoybSpeed, NULL); + AddKeyControl(movement_table, "Move Forward", &key_up); AddKeyControl(movement_table, "Move Backward", &key_down); AddKeyControl(movement_table, "Turn Left", &key_left); diff --git a/setup/keyboard.h b/setup/keyboard.h new file mode 100644 index 00000000..e4cb2139 --- /dev/null +++ b/setup/keyboard.h @@ -0,0 +1,40 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2006 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// + +#ifndef SETUP_KEYBOARD_H +#define SETUP_KEYBOARD_H + +extern int key_left; +extern int key_right; +extern int key_up; +extern int key_down; +extern int key_strafeleft; +extern int key_straferight; +extern int key_fire; +extern int key_use; +extern int key_strafe; +extern int key_speed; +extern int joybspeed; + +void ConfigKeyboard(void); + +#endif /* #ifndef SETUP_KEYBOARD_H */ + diff --git a/setup/mainmenu.c b/setup/mainmenu.c index 7aaef574..9721c25e 100644 --- a/setup/mainmenu.c +++ b/setup/mainmenu.c @@ -23,6 +23,13 @@ #include "config.h" #include "textscreen.h" +#include "compatibility.h" +#include "display.h" +#include "keyboard.h" +#include "mouse.h" +#include "multiplayer.h" +#include "sound.h" + void DoQuit(void *widget, void *dosave) { if (dosave != NULL) @@ -61,15 +68,6 @@ void QuitConfirm(void *unused1, void *unused2) TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, NULL); } -extern void ConfigDisplay(); -extern void ConfigKeyboard(); -extern void ConfigMouse(); -extern void ConfigSound(); -extern void CompatibilitySettings(); -extern void StartMultiGame(); -extern void JoinMultiGame(); -extern void MultiplayerConfig(); - void MainMenu(void) { txt_window_t *window; diff --git a/setup/mouse.c b/setup/mouse.c index 3dd9330b..1861a1d9 100644 --- a/setup/mouse.c +++ b/setup/mouse.c @@ -26,20 +26,22 @@ #include "testconfig.h" #include "txt_mouseinput.h" +#include "mouse.h" + int use_mouse = 1; -int novert; -int speed; -float accel; -int threshold; +int novert = 0; +int mouseSensitivity = 5; +float mouse_acceleration = 1.0; +int mouse_threshold = 10; int grabmouse = 1; -int mouseb_fire = 0; -int mouseb_forward = 1; -int mouseb_strafe = 2; +int mousebfire = 0; +int mousebforward = 1; +int mousebstrafe = 2; -static int *all_mouse_buttons[] = {&mouseb_fire, &mouseb_strafe, - &mouseb_forward}; +static int *all_mouse_buttons[] = {&mousebfire, &mousebstrafe, + &mousebforward}; static void MouseSetCallback(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(variable)) { @@ -98,18 +100,18 @@ void ConfigMouse(void) TXT_AddWidgets(motion_table, TXT_NewLabel("Speed"), - TXT_NewSpinControl(&speed, 1, 256), + TXT_NewSpinControl(&mouseSensitivity, 1, 256), TXT_NewLabel("Acceleration"), - TXT_NewFloatSpinControl(&accel, 1.0, 5.0), + TXT_NewFloatSpinControl(&mouse_acceleration, 1.0, 5.0), TXT_NewLabel("Acceleration threshold"), - TXT_NewSpinControl(&threshold, 0, 32), + TXT_NewSpinControl(&mouse_threshold, 0, 32), NULL); TXT_SetColumnWidths(button_table, 27, 5); - AddMouseControl(button_table, "Fire weapon", &mouseb_fire); - AddMouseControl(button_table, "Move forward", &mouseb_forward); - AddMouseControl(button_table, "Strafe on", &mouseb_strafe); + AddMouseControl(button_table, "Fire weapon", &mousebfire); + AddMouseControl(button_table, "Move forward", &mousebforward); + AddMouseControl(button_table, "Strafe on", &mousebstrafe); TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TestConfigAction()); } diff --git a/setup/mouse.h b/setup/mouse.h new file mode 100644 index 00000000..60ab4f09 --- /dev/null +++ b/setup/mouse.h @@ -0,0 +1,40 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2006 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// + +#ifndef SETUP_MOUSE_H +#define SETUP_MOUSE_H + +extern int use_mouse; + +extern int novert; +extern int mouseSensitivity; +extern float mouse_acceleration; +extern int mouse_threshold; +extern int grabmouse; +extern int mousebfire; +extern int mousebforward; +extern int mousebstrafe; + +void ConfigMouse(void); + + +#endif /* #ifndef SETUP_MOUSE_H */ + diff --git a/setup/multiplayer.c b/setup/multiplayer.c index e6a70500..af73e30f 100644 --- a/setup/multiplayer.c +++ b/setup/multiplayer.c @@ -25,6 +25,8 @@ #include "d_englsh.h" #include "textscreen.h" +#include "multiplayer.h" + #define NUM_WADS 10 #define NUM_EXTRA_PARAMS 10 @@ -53,24 +55,24 @@ static char *gamemodes[] = char *player_name; char *chatmacros[10]; -char *wads[NUM_WADS] = {}; -char *extra_params[NUM_EXTRA_PARAMS] = {}; -int skill = 0; -int nomonsters = 0; -int deathmatch = 0; -int fast = 0; -int respawn = 0; -int udpport = 4815; -int timer = 0; - -txt_button_t *warpbutton; -warptype_t warptype = WARP_DOOM2; -int warpepisode = 1; -int warpmap = 1; +static char *wads[NUM_WADS] = {}; +static char *extra_params[NUM_EXTRA_PARAMS] = {}; +static int skill = 0; +static int nomonsters = 0; +static int deathmatch = 0; +static int fast = 0; +static int respawn = 0; +static int udpport = 4815; +static int timer = 0; + +static txt_button_t *warpbutton; +static warptype_t warptype = WARP_DOOM2; +static int warpepisode = 1; +static int warpmap = 1; // Address to connect to when joining a game -char *connect_address = NULL; +static char *connect_address = NULL; static void StartGame(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(user_data)) { diff --git a/setup/multiplayer.h b/setup/multiplayer.h new file mode 100644 index 00000000..a9714058 --- /dev/null +++ b/setup/multiplayer.h @@ -0,0 +1,33 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2006 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// + +#ifndef SETUP_MULTIPLAYER_H +#define SETUP_MULTIPLAYER_H + +extern char *player_name; +extern char *chatmacros[10]; + +void StartMultiGame(void); +void JoinMultiGame(void); +void MultiplayerConfig(void); + +#endif /* #ifndef SETUP_MULTIPLAYER_H */ + diff --git a/setup/sound.c b/setup/sound.c index a96868ab..e8e05277 100644 --- a/setup/sound.c +++ b/setup/sound.c @@ -25,44 +25,82 @@ #include "textscreen.h" -int snd_sfxenabled; +#include "sound.h" + +int snd_sfxdevice = 3; int snd_channels = 8; int sfx_volume = 15; -int snd_musicenabled; +int snd_musicdevice = 3; int music_volume = 15; +static int snd_sfxenabled; +static int snd_musicenabled; + +static void UpdateSndDevices(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(data)) +{ + if (snd_sfxenabled) + { + snd_sfxdevice = 3; + } + else + { + snd_sfxdevice = 0; + } + + if (snd_musicenabled) + { + snd_musicdevice = 3; + } + else + { + snd_musicdevice = 0; + } +} + void ConfigSound(void) { - txt_window_t *window; - txt_table_t *sfx_table; - txt_table_t *music_table; - - window = TXT_NewWindow("Sound configuration"); - - TXT_AddWidgets(window, - TXT_NewSeparator("Sound effects"), - TXT_NewCheckBox("Sound effects enabled", &snd_sfxenabled), - sfx_table = TXT_NewTable(2), - TXT_NewSeparator("Music"), - TXT_NewCheckBox("Music enabled", &snd_musicenabled), - music_table = TXT_NewTable(2), - NULL); + txt_window_t *window; + txt_table_t *sfx_table; + txt_table_t *music_table; + txt_checkbox_t *sfx_enabled_control; + txt_checkbox_t *music_enabled_control; - TXT_SetColumnWidths(sfx_table, 20, 5); + snd_sfxenabled = snd_sfxdevice != 0; + snd_musicenabled = snd_musicdevice != 0; - TXT_AddWidgets(sfx_table, - TXT_NewLabel("Sound channels"), - TXT_NewSpinControl(&snd_channels, 1, 8), - TXT_NewLabel("SFX volume"), - TXT_NewSpinControl(&sfx_volume, 0, 15), - NULL); + window = TXT_NewWindow("Sound configuration"); - TXT_SetColumnWidths(music_table, 20, 5); + TXT_AddWidgets(window, + TXT_NewSeparator("Sound effects"), + sfx_enabled_control = TXT_NewCheckBox("Sound effects enabled", + &snd_sfxenabled), + sfx_table = TXT_NewTable(2), + TXT_NewSeparator("Music"), + music_enabled_control = TXT_NewCheckBox("Music enabled", + &snd_musicenabled), + music_table = TXT_NewTable(2), + NULL); - TXT_AddWidgets(music_table, - TXT_NewLabel("Music volume"), - TXT_NewSpinControl(&music_volume, 0, 15), - NULL); + TXT_SetColumnWidths(sfx_table, 20, 5); + + TXT_SignalConnect(sfx_enabled_control, "changed", + UpdateSndDevices, NULL); + TXT_SignalConnect(music_enabled_control, "changed", + UpdateSndDevices, NULL); + + TXT_AddWidgets(sfx_table, + TXT_NewLabel("Sound channels"), + TXT_NewSpinControl(&snd_channels, 1, 8), + TXT_NewLabel("SFX volume"), + TXT_NewSpinControl(&sfx_volume, 0, 15), + NULL); + + TXT_SetColumnWidths(music_table, 20, 5); + + TXT_AddWidgets(music_table, + TXT_NewLabel("Music volume"), + TXT_NewSpinControl(&music_volume, 0, 15), + NULL); } diff --git a/setup/sound.h b/setup/sound.h new file mode 100644 index 00000000..8ffbd907 --- /dev/null +++ b/setup/sound.h @@ -0,0 +1,35 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2006 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// + +#ifndef SETUP_SOUND_H +#define SETUP_SOUND_H + +extern int snd_sfxdevice; +extern int snd_channels; +extern int sfx_volume; + +extern int snd_musicdevice; +extern int music_volume; + +void ConfigSound(void); + +#endif /* #ifndef SETUP_SOUND_H */ + |