mirror of
https://github.com/fabiangreffrath/woof.git
synced 2025-09-22 03:12:00 -04:00
Add sound options menu, move items to config (#1996)
* Move "flick snap" to config only Off by default. * Move "armor color matches type" to config only On by default. * Move "coords follow pointer" to config only On by default. * Move "smooth automap lines" to config only On by default. * Move "square aspect ratio" to config only On by default. * Move "blocky spectre drawing" to config only On by default. * Add sound options menu
This commit is contained in:
parent
2bd08f01b5
commit
c5aec1ac34
@ -608,7 +608,7 @@ static void AM_clearLastMark(void)
|
||||
markpointnum--;
|
||||
}
|
||||
|
||||
void AM_EnableSmoothLines(void)
|
||||
static void AM_EnableSmoothLines(void)
|
||||
{
|
||||
AM_drawFline = map_smooth_lines ? AM_drawFline_Smooth : AM_drawFline_Vanilla;
|
||||
}
|
||||
@ -2407,7 +2407,7 @@ void AM_BindAutomapVariables(void)
|
||||
M_BindBool("automaprotate", &automaprotate, NULL, false, ss_auto, wad_no,
|
||||
"Automap rotation");
|
||||
|
||||
M_BindBool("map_point_coord", &map_point_coord, NULL, true, ss_auto, wad_no,
|
||||
M_BindBool("map_point_coord", &map_point_coord, NULL, true, ss_none, wad_no,
|
||||
"Show automap pointer coordinates in non-follow mode");
|
||||
M_BindBool("map_secret_after", &map_secret_after, NULL, false, ss_auto, wad_no,
|
||||
"Don't highlight secret sectors on the automap before they're revealed");
|
||||
@ -2415,14 +2415,14 @@ void AM_BindAutomapVariables(void)
|
||||
MAP_KEYED_DOOR_COLOR, MAP_KEYED_DOOR_OFF, MAP_KEYED_DOOR_FLASH,
|
||||
ss_auto, wad_no,
|
||||
"Color key-locked doors on the automap (1 = Static; 2 = Flashing)");
|
||||
M_BindBool("map_smooth_lines", &map_smooth_lines, NULL, true, ss_auto,
|
||||
M_BindBool("map_smooth_lines", &map_smooth_lines, NULL, true, ss_none,
|
||||
wad_no, "Smooth automap lines");
|
||||
|
||||
M_BindNum("mapcolor_preset", &mapcolor_preset, NULL, AM_PRESET_BOOM,
|
||||
AM_PRESET_VANILLA, AM_PRESET_ZDOOM, ss_auto, wad_no,
|
||||
"Automap color preset (0 = Vanilla Doom; 1 = Crispy Doom; 2 = Boom; 3 = ZDoom)");
|
||||
|
||||
M_BindBool("automapsquareaspect", &automapsquareaspect, NULL, false, ss_auto, wad_no,
|
||||
M_BindBool("automapsquareaspect", &automapsquareaspect, NULL, true, ss_none, wad_no,
|
||||
"Use square aspect ratio in automap");
|
||||
|
||||
#define BIND_CR(name, v, help) \
|
||||
|
@ -58,8 +58,6 @@ void AM_SetMapCenter(fixed_t x, fixed_t y);
|
||||
|
||||
void AM_ResetScreenSize(void);
|
||||
|
||||
void AM_EnableSmoothLines(void);
|
||||
|
||||
void AM_ColorPreset(void);
|
||||
|
||||
void AM_BindAutomapVariables(void);
|
||||
|
@ -224,6 +224,7 @@ typedef enum {
|
||||
ss_enem,
|
||||
ss_gen, // killough 10/98
|
||||
ss_comp, // killough 10/98
|
||||
ss_sfx,
|
||||
ss_midi,
|
||||
ss_eq,
|
||||
ss_padadv,
|
||||
|
@ -284,6 +284,6 @@ void I_BindFlickStickVariables(void)
|
||||
"Flick deadzone relative to camera deadzone [percent]");
|
||||
BIND_NUM(joy_flick_forward_deadzone, 7, 0, 45,
|
||||
"Forward angle range where flicks are disabled [degrees]");
|
||||
BIND_NUM_PADADV(joy_flick_snap, 0, 0, 2,
|
||||
BIND_NUM(joy_flick_snap, 0, 0, 2,
|
||||
"Snap to cardinal directions (0 = Off; 1 = 4-way; 2 = 8-way)");
|
||||
}
|
||||
|
@ -441,13 +441,13 @@ void I_OAL_BindSoundVariables(void)
|
||||
{
|
||||
BIND_BOOL_GENERAL(snd_hrtf, false,
|
||||
"[OpenAL 3D] Headphones mode (0 = No; 1 = Yes)");
|
||||
BIND_NUM_GENERAL(snd_resampler, 1, 0, UL,
|
||||
BIND_NUM_SFX(snd_resampler, 1, 0, UL,
|
||||
"Sound resampler (0 = Nearest; 1 = Linear; ...)");
|
||||
BIND_NUM(snd_absorption, 0, 0, 10,
|
||||
"[OpenAL 3D] Air absorption effect (0 = Off; 10 = Max)");
|
||||
BIND_NUM(snd_doppler, 0, 0, 10,
|
||||
BIND_NUM_SFX(snd_doppler, 0, 0, 10,
|
||||
"[OpenAL 3D] Doppler effect (0 = Off; 10 = Max)");
|
||||
BIND_BOOL(snd_limiter, false, "Use sound output limiter");
|
||||
BIND_BOOL_SFX(snd_limiter, false, "Use sound output limiter");
|
||||
}
|
||||
|
||||
boolean I_OAL_InitSound(int snd_module)
|
||||
|
@ -741,13 +741,12 @@ void I_BindSoundVariables(void)
|
||||
"Sound effects volume");
|
||||
M_BindNum("music_volume", &snd_MusicVolume, NULL, 8, 0, 15, ss_none, wad_no,
|
||||
"Music volume");
|
||||
BIND_BOOL(pitched_sounds, false,
|
||||
BIND_BOOL_SFX(pitched_sounds, false,
|
||||
"Variable pitch for sound effects");
|
||||
BIND_NUM(pitch_bend_range, 120, 100, 300,
|
||||
"Variable pitch bend range (100 = None)");
|
||||
BIND_BOOL_GENERAL(full_sounds, false, "Play sounds in full length (prevents cutoffs)");
|
||||
M_BindNum("snd_channels", &default_numChannels, NULL,
|
||||
MAX_CHANNELS, 1, MAX_CHANNELS, ss_none, wad_no,
|
||||
BIND_BOOL_SFX(full_sounds, false, "Play sounds in full length (prevents cutoffs)");
|
||||
BIND_NUM_SFX(snd_channels, MAX_CHANNELS, 1, MAX_CHANNELS,
|
||||
"Maximum number of simultaneous sound effects");
|
||||
BIND_NUM_GENERAL(snd_module, SND_MODULE_MBF, 0, NUM_SND_MODULES - 1,
|
||||
"Sound module (0 = Standard; 1 = OpenAL 3D; 2 = PC Speaker Sound)");
|
||||
|
@ -42,6 +42,9 @@ void M_BindNum(const char *name, void *location, void *current,
|
||||
#define BIND_NUM_GENERAL(name, v, a, b, help) \
|
||||
M_BindNum(#name, &name, NULL, (v), (a), (b), ss_gen, wad_no, help)
|
||||
|
||||
#define BIND_NUM_SFX(name, v, a, b, help) \
|
||||
M_BindNum(#name, &name, NULL, (v), (a), (b), ss_sfx, wad_no, help)
|
||||
|
||||
#define BIND_NUM_MIDI(name, v, a, b, help) \
|
||||
M_BindNum(#name, &name, NULL, (v), (a), (b), ss_midi, wad_no, help)
|
||||
|
||||
@ -55,6 +58,9 @@ void M_BindBool(const char *name, boolean *location, boolean *current,
|
||||
#define BIND_BOOL_GENERAL(name, v, help) \
|
||||
M_BindBool(#name, &name, NULL, (v), ss_gen, wad_no, help)
|
||||
|
||||
#define BIND_BOOL_SFX(name, v, help) \
|
||||
M_BindBool(#name, &name, NULL, (v), ss_sfx, wad_no, help)
|
||||
|
||||
#define BIND_BOOL_MIDI(name, v, help) \
|
||||
M_BindBool(#name, &name, NULL, (v), ss_midi, wad_no, help)
|
||||
|
||||
|
@ -96,6 +96,7 @@ void MN_DrawStatusHUD(void);
|
||||
void MN_DrawAutoMap(void);
|
||||
void MN_DrawWeapons(void);
|
||||
void MN_DrawEnemy(void);
|
||||
void MN_DrawSfx(void);
|
||||
void MN_DrawMidi(void);
|
||||
void MN_DrawEqualizer(void);
|
||||
void MN_DrawPadAdv(void);
|
||||
|
@ -2070,6 +2070,14 @@ static menu_t CompatDef = // killough 10/98
|
||||
0
|
||||
};
|
||||
|
||||
static menu_t SfxDef = {
|
||||
generic_setup_end, // numitems
|
||||
&SetupDef, // prevMenu
|
||||
Generic_Setup, // menuitems
|
||||
MN_DrawSfx, // routine
|
||||
34, 5, // x, y (skull drawn here)
|
||||
};
|
||||
|
||||
static menu_t MidiDef = {
|
||||
generic_setup_end, // numitems
|
||||
&SetupDef, // prevMenu
|
||||
@ -2105,9 +2113,9 @@ static menu_t GyroDef = {
|
||||
void MN_SetNextMenuAlt(ss_types type)
|
||||
{
|
||||
static menu_t *setup_defs[] = {
|
||||
&KeybndDef, &WeaponDef, &StatusHUDDef, &AutoMapDef,
|
||||
&EnemyDef, &GeneralDef, &CompatDef, &MidiDef,
|
||||
&EqualizerDef, &PadAdvDef, &GyroDef,
|
||||
&KeybndDef, &WeaponDef, &StatusHUDDef, &AutoMapDef,
|
||||
&EnemyDef, &GeneralDef, &CompatDef, &SfxDef,
|
||||
&MidiDef, &EqualizerDef, &PadAdvDef, &GyroDef,
|
||||
};
|
||||
|
||||
SetNextMenu(setup_defs[type]);
|
||||
|
107
src/mn_setup.c
107
src/mn_setup.c
@ -315,7 +315,7 @@ enum
|
||||
str_ms_time,
|
||||
str_movement_sensitivity,
|
||||
str_movement_type,
|
||||
str_rumble,
|
||||
str_percent,
|
||||
str_curve,
|
||||
str_center_weapon,
|
||||
str_screensize,
|
||||
@ -1841,8 +1841,6 @@ static setup_menu_t stat_settings1[] = {
|
||||
{"Solid Background Color", S_ONOFF, H_X, M_SPC, {"st_solidbackground"},
|
||||
.action = RefreshSolidBackground},
|
||||
|
||||
{"Armor Color Matches Type", S_ONOFF, H_X, M_SPC, {"hud_armor_type"}},
|
||||
|
||||
{"Animated Health/Armor Count", S_ONOFF, H_X, M_SPC, {"hud_animated_counts"}},
|
||||
|
||||
MI_RESET,
|
||||
@ -2024,9 +2022,6 @@ static setup_menu_t auto_settings1[] = {
|
||||
{"Overlay Automap", S_CHOICE, H_X, M_SPC, {"automapoverlay"},
|
||||
.strings_id = str_overlay},
|
||||
|
||||
// killough 10/98
|
||||
{"Coords Follow Pointer", S_ONOFF, H_X, M_SPC, {"map_point_coord"}},
|
||||
|
||||
MI_GAP,
|
||||
|
||||
{"Miscellaneous", S_SKIP | S_TITLE, H_X, M_SPC},
|
||||
@ -2034,16 +2029,11 @@ static setup_menu_t auto_settings1[] = {
|
||||
{"Color Preset", S_CHOICE | S_COSMETIC, H_X, M_SPC, {"mapcolor_preset"},
|
||||
.strings_id = str_automap_preset, .action = AM_ColorPreset},
|
||||
|
||||
{"Smooth automap lines", S_ONOFF, H_X, M_SPC, {"map_smooth_lines"},
|
||||
.action = AM_EnableSmoothLines},
|
||||
|
||||
{"Show Found Secrets Only", S_ONOFF, H_X, M_SPC, {"map_secret_after"}},
|
||||
|
||||
{"Color Keyed Doors", S_CHOICE, H_X, M_SPC, {"map_keyed_door"},
|
||||
.strings_id = str_automap_keyed_door},
|
||||
|
||||
{"Square Aspect Ratio", S_ONOFF, H_X, M_SPC, {"automapsquareaspect"}},
|
||||
|
||||
MI_RESET,
|
||||
|
||||
MI_END
|
||||
@ -2116,10 +2106,6 @@ static setup_menu_t enem_settings1[] = {
|
||||
{"Translucent Ghost Monsters", S_ONOFF | S_STRICT | S_VANILLA, M_X, M_SPC,
|
||||
{"ghost_monsters"}},
|
||||
|
||||
// [FG] spectre drawing mode
|
||||
{"Blocky Spectre Drawing", S_ONOFF, M_X, M_SPC, {"fuzzcolumn_mode"},
|
||||
.action = R_SetFuzzColumnMode},
|
||||
|
||||
MI_RESET,
|
||||
|
||||
MI_END
|
||||
@ -2520,6 +2506,7 @@ static void SetMidiPlayerFluidSynth(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void MN_Sfx(void);
|
||||
static void MN_Midi(void);
|
||||
static void MN_Equalizer(void);
|
||||
|
||||
@ -2531,7 +2518,7 @@ static setup_menu_t gen_settings2[] = {
|
||||
{"Music Volume", S_THERMO, CNTR_X, M_THRM_SPC, {"music_volume"},
|
||||
.action = UpdateMusicVolume},
|
||||
|
||||
MI_GAP_Y(6),
|
||||
MI_GAP,
|
||||
|
||||
{"Sound Module", S_CHOICE, CNTR_X, M_SPC, {"snd_module"},
|
||||
.strings_id = str_sound_module, .action = SetSoundModule},
|
||||
@ -2539,6 +2526,34 @@ static setup_menu_t gen_settings2[] = {
|
||||
{"Headphones Mode", S_ONOFF, CNTR_X, M_SPC, {"snd_hrtf"},
|
||||
.action = SetSoundModule},
|
||||
|
||||
MI_GAP,
|
||||
|
||||
// [FG] music backend
|
||||
{"MIDI Player", S_CHOICE | S_ACTION | S_WRAP_LINE, CNTR_X, M_SPC * 2,
|
||||
{"midi_player_menu"}, .strings_id = str_midi_player,
|
||||
.action = SetMidiPlayer},
|
||||
|
||||
MI_GAP,
|
||||
|
||||
{"Sound Options", S_FUNC, CNTR_X, M_SPC, .action = MN_Sfx},
|
||||
|
||||
{"MIDI Options", S_FUNC, CNTR_X, M_SPC, .action = MN_Midi},
|
||||
|
||||
{"Equalizer Options", S_FUNC, CNTR_X, M_SPC, .action = MN_Equalizer},
|
||||
|
||||
MI_END
|
||||
};
|
||||
|
||||
static setup_menu_t sfx_settings1[] = {
|
||||
|
||||
{"SFX Channels", S_THERMO, CNTR_X, M_THRM_SPC, {"snd_channels"},
|
||||
.action = S_StopChannels},
|
||||
|
||||
{"Output Limiter", S_ONOFF, CNTR_X, M_SPC, {"snd_limiter"},
|
||||
.action = SetSoundModule},
|
||||
|
||||
MI_GAP,
|
||||
|
||||
{"Pitch-Shifting", S_ONOFF, CNTR_X, M_SPC, {"pitched_sounds"}},
|
||||
|
||||
// [FG] play sounds in full length
|
||||
@ -2547,18 +2562,10 @@ static setup_menu_t gen_settings2[] = {
|
||||
{"Resampler", S_CHOICE, CNTR_X, M_SPC, {"snd_resampler"},
|
||||
.strings_id = str_resampler, .action = I_OAL_SetResampler},
|
||||
|
||||
MI_GAP_Y(6),
|
||||
MI_GAP,
|
||||
|
||||
// [FG] music backend
|
||||
{"MIDI Player", S_CHOICE | S_ACTION | S_WRAP_LINE, CNTR_X, M_SPC * 2,
|
||||
{"midi_player_menu"}, .strings_id = str_midi_player,
|
||||
.action = SetMidiPlayer},
|
||||
|
||||
MI_GAP_Y(6),
|
||||
|
||||
{"MIDI Options", S_FUNC, CNTR_X, M_SPC, .action = MN_Midi},
|
||||
|
||||
{"Equalizer Options", S_FUNC, CNTR_X, M_SPC, .action = MN_Equalizer},
|
||||
{"Doppler Effect", S_THERMO, CNTR_X, M_THRM_SPC, {"snd_doppler"},
|
||||
.strings_id = str_percent, .action = SetSoundModule},
|
||||
|
||||
MI_END
|
||||
};
|
||||
@ -2566,10 +2573,35 @@ static setup_menu_t gen_settings2[] = {
|
||||
static const char **GetResamplerStrings(void)
|
||||
{
|
||||
const char **strings = I_OAL_GetResamplerStrings();
|
||||
DisableItem(!strings, gen_settings2, "snd_resampler");
|
||||
DisableItem(!strings, sfx_settings1, "snd_resampler");
|
||||
return strings;
|
||||
}
|
||||
|
||||
static setup_menu_t *sfx_settings[] = {sfx_settings1, NULL};
|
||||
|
||||
static setup_tab_t sfx_tabs[] = {{"Sound"}, {NULL}};
|
||||
|
||||
static void MN_Sfx(void)
|
||||
{
|
||||
SetItemOn(set_item_on);
|
||||
SetPageIndex(current_page);
|
||||
|
||||
MN_SetNextMenuAlt(ss_sfx);
|
||||
setup_screen = ss_sfx;
|
||||
current_page = GetPageIndex(sfx_settings);
|
||||
current_menu = sfx_settings[current_page];
|
||||
current_tabs = sfx_tabs;
|
||||
SetupMenuSecondary();
|
||||
}
|
||||
void MN_DrawSfx(void)
|
||||
{
|
||||
DrawBackground("FLOOR4_6");
|
||||
MN_DrawTitle(M_X_CENTER, M_Y_TITLE, "M_GENERL", "General");
|
||||
DrawTabs();
|
||||
DrawInstructions();
|
||||
DrawScreenItems(current_menu);
|
||||
}
|
||||
|
||||
static const char *midi_complevel_strings[] = {
|
||||
"Vanilla", "Standard", "Full"
|
||||
};
|
||||
@ -2835,7 +2867,7 @@ static void UpdateRumble(void)
|
||||
I_RumbleMenuFeedback();
|
||||
}
|
||||
|
||||
static const char *rumble_strings[] = {
|
||||
static const char *percent_strings[] = {
|
||||
"Off", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%"
|
||||
};
|
||||
|
||||
@ -2869,7 +2901,7 @@ static setup_menu_t gen_settings4[] = {
|
||||
MI_GAP_Y(4),
|
||||
|
||||
{"Rumble", S_THERMO, CNTR_X, M_THRM_SPC, {"joy_rumble"},
|
||||
.strings_id = str_rumble, .action = UpdateRumble},
|
||||
.strings_id = str_percent, .action = UpdateRumble},
|
||||
|
||||
MI_GAP_Y(5),
|
||||
|
||||
@ -2929,13 +2961,10 @@ static setup_menu_t padadv_settings1[] = {
|
||||
{"Stick Layout", S_CHOICE, CNTR_X, M_SPC, {"joy_stick_layout"},
|
||||
.strings_id = str_layout, .action = UpdateGamepad},
|
||||
|
||||
{"Flick Snap", S_CHOICE | S_STRICT, CNTR_X, M_SPC, {"joy_flick_snap"},
|
||||
.strings_id = str_flick_snap, .action = I_ResetGamepad},
|
||||
|
||||
{"Flick Time", S_THERMO, CNTR_X, M_THRM_SPC, {"joy_flick_time"},
|
||||
.strings_id = str_ms_time, .action = I_ResetGamepad},
|
||||
|
||||
MI_GAP_Y(6),
|
||||
MI_GAP,
|
||||
|
||||
{"Movement Type", S_CHOICE, CNTR_X, M_SPC, {"joy_movement_type"},
|
||||
.strings_id = str_movement_type, .action = I_ResetGamepad},
|
||||
@ -2948,7 +2977,7 @@ static setup_menu_t padadv_settings1[] = {
|
||||
{"joy_strafe_sensitivity"}, .strings_id = str_movement_sensitivity,
|
||||
.action = I_ResetGamepad},
|
||||
|
||||
MI_GAP_Y(6),
|
||||
MI_GAP,
|
||||
|
||||
{"Extra Turn Speed", S_THERMO | S_THRM_SIZE11, CNTR_X, M_THRM_SPC,
|
||||
{"joy_outer_turn_speed"}, .action = UpdateGamepad},
|
||||
@ -2956,8 +2985,6 @@ static setup_menu_t padadv_settings1[] = {
|
||||
{"Extra Ramp Time", S_THERMO, CNTR_X, M_THRM_SPC, {"joy_outer_ramp_time"},
|
||||
.strings_id = str_ms_time, .action = I_ResetGamepad},
|
||||
|
||||
MI_GAP_Y(6),
|
||||
|
||||
{"Response Curve", S_THERMO, CNTR_X, M_THRM_SPC, {"joy_camera_curve"},
|
||||
.strings_id = str_curve, .action = I_ResetGamepad},
|
||||
|
||||
@ -3010,7 +3037,6 @@ static void UpdateGamepadItems(void)
|
||||
DisableItem(condition, gen_settings4, "joy_look_speed");
|
||||
|
||||
DisableItem(!gamepad, padadv_settings1, "joy_stick_layout");
|
||||
DisableItem(!flick, padadv_settings1, "joy_flick_snap");
|
||||
DisableItem(!flick, padadv_settings1, "joy_flick_time");
|
||||
DisableItem(condition, padadv_settings1, "joy_movement_type");
|
||||
DisableItem(condition, padadv_settings1, "joy_forward_sensitivity");
|
||||
@ -3300,6 +3326,7 @@ void MN_UpdateDynamicResolutionItem(void)
|
||||
void MN_UpdateAdvancedSoundItems(boolean toggle)
|
||||
{
|
||||
DisableItem(toggle, gen_settings2, "snd_hrtf");
|
||||
DisableItem(toggle, sfx_settings1, "snd_doppler");
|
||||
}
|
||||
|
||||
void MN_UpdateFpsLimitItem(void)
|
||||
@ -3395,6 +3422,7 @@ static setup_menu_t **setup_screens[] = {
|
||||
enem_settings,
|
||||
gen_settings, // killough 10/98
|
||||
comp_settings,
|
||||
sfx_settings,
|
||||
midi_settings,
|
||||
eq_settings,
|
||||
padadv_settings,
|
||||
@ -3525,6 +3553,7 @@ static void ResetDefaultsSecondary(void)
|
||||
{
|
||||
if (setup_screen == ss_gen)
|
||||
{
|
||||
ResetDefaults(ss_sfx);
|
||||
ResetDefaults(ss_midi);
|
||||
ResetDefaults(ss_eq);
|
||||
ResetDefaults(ss_padadv);
|
||||
@ -4733,7 +4762,7 @@ static const char **selectstrings[] = {
|
||||
NULL, // str_ms_time
|
||||
NULL, // str_movement_sensitivity
|
||||
movement_type_strings,
|
||||
rumble_strings,
|
||||
percent_strings,
|
||||
curve_strings,
|
||||
center_weapon_strings,
|
||||
screensize_strings,
|
||||
|
@ -1041,7 +1041,7 @@ void R_BindRenderVariables(void)
|
||||
|
||||
M_BindBool("flipcorpses", &flipcorpses, NULL, false, ss_enem, wad_no,
|
||||
"Randomly mirrored death animations");
|
||||
M_BindBool("fuzzcolumn_mode", &fuzzcolumn_mode, NULL, true, ss_enem, wad_no,
|
||||
M_BindBool("fuzzcolumn_mode", &fuzzcolumn_mode, NULL, true, ss_none, wad_no,
|
||||
"Fuzz rendering (0 = Resolution-dependent; 1 = Blocky)");
|
||||
|
||||
BIND_BOOL(draw_nearby_sprites, true,
|
||||
|
@ -74,8 +74,7 @@ static musicinfo_t *mus_playing;
|
||||
// following is set
|
||||
// by the defaults code in M_misc:
|
||||
// number of channels available
|
||||
int numChannels;
|
||||
int default_numChannels; // killough 9/98
|
||||
int snd_channels;
|
||||
|
||||
// jff 3/17/98 to keep track of last IDMUS specified music num
|
||||
int idmusnum;
|
||||
@ -92,7 +91,7 @@ int idmusnum;
|
||||
static void S_StopChannel(int cnum)
|
||||
{
|
||||
#ifdef RANGECHECK
|
||||
if (cnum < 0 || cnum >= numChannels)
|
||||
if (cnum < 0 || cnum >= snd_channels)
|
||||
{
|
||||
I_Error("S_StopChannel: handle %d out of range\n", cnum);
|
||||
}
|
||||
@ -107,6 +106,17 @@ static void S_StopChannel(int cnum)
|
||||
}
|
||||
}
|
||||
|
||||
void S_StopChannels(void)
|
||||
{
|
||||
for (int i = 0; i < MAX_CHANNELS; i++)
|
||||
{
|
||||
I_StopSound(channels[i].handle);
|
||||
}
|
||||
|
||||
memset(channels, 0, sizeof(channels));
|
||||
memset(sobjs, 0, sizeof(sobjs));
|
||||
}
|
||||
|
||||
//
|
||||
// S_AdjustSoundParams
|
||||
//
|
||||
@ -144,7 +154,7 @@ static int S_getChannel(const mobj_t *origin, sfxinfo_t *sfxinfo, int priority,
|
||||
// kill old sound
|
||||
// killough 12/98: replace is_pickup hack with singularity flag
|
||||
// haleyjd 06/12/08: only if subchannel matches
|
||||
for (cnum = 0; cnum < numChannels; cnum++)
|
||||
for (cnum = 0; cnum < snd_channels; cnum++)
|
||||
{
|
||||
if (channels[cnum].sfxinfo && channels[cnum].singularity == singularity
|
||||
&& channels[cnum].origin == origin)
|
||||
@ -155,13 +165,13 @@ static int S_getChannel(const mobj_t *origin, sfxinfo_t *sfxinfo, int priority,
|
||||
}
|
||||
|
||||
// Find an open channel
|
||||
if (cnum == numChannels)
|
||||
if (cnum == snd_channels)
|
||||
{
|
||||
// haleyjd 09/28/06: it isn't necessary to look for playing sounds in
|
||||
// the same singularity class again, as we just did that above. Here
|
||||
// we are looking for an open channel. We will also keep track of the
|
||||
// channel found with the lowest sound priority while doing this.
|
||||
for (cnum = 0; cnum < numChannels && channels[cnum].sfxinfo; cnum++)
|
||||
for (cnum = 0; cnum < snd_channels && channels[cnum].sfxinfo; cnum++)
|
||||
{
|
||||
if (channels[cnum].priority > lowestpriority)
|
||||
{
|
||||
@ -172,7 +182,7 @@ static int S_getChannel(const mobj_t *origin, sfxinfo_t *sfxinfo, int priority,
|
||||
}
|
||||
|
||||
// None available?
|
||||
if (cnum == numChannels)
|
||||
if (cnum == snd_channels)
|
||||
{
|
||||
// Look for lower priority
|
||||
// haleyjd: we have stored the channel found with the lowest priority
|
||||
@ -189,7 +199,7 @@ static int S_getChannel(const mobj_t *origin, sfxinfo_t *sfxinfo, int priority,
|
||||
}
|
||||
|
||||
#ifdef RANGECHECK
|
||||
if (cnum >= numChannels)
|
||||
if (cnum >= snd_channels)
|
||||
{
|
||||
I_Error("S_getChannel: handle %d out of range\n", cnum);
|
||||
}
|
||||
@ -275,7 +285,7 @@ static void StartSound(const mobj_t *origin, int sfx_id,
|
||||
}
|
||||
|
||||
#ifdef RANGECHECK
|
||||
if (cnum < 0 || cnum >= numChannels)
|
||||
if (cnum < 0 || cnum >= snd_channels)
|
||||
{
|
||||
I_Error("S_StartSfxInfo: handle %d out of range\n", cnum);
|
||||
}
|
||||
@ -452,7 +462,7 @@ void S_StopSound(const mobj_t *origin)
|
||||
return;
|
||||
}
|
||||
|
||||
for (cnum = 0; cnum < numChannels; ++cnum)
|
||||
for (cnum = 0; cnum < snd_channels; ++cnum)
|
||||
{
|
||||
if (channels[cnum].sfxinfo && channels[cnum].origin == origin)
|
||||
{
|
||||
@ -477,7 +487,7 @@ void S_UnlinkSound(mobj_t *origin)
|
||||
|
||||
if (origin)
|
||||
{
|
||||
for (cnum = 0; cnum < numChannels; cnum++)
|
||||
for (cnum = 0; cnum < snd_channels; cnum++)
|
||||
{
|
||||
if (channels[cnum].sfxinfo && channels[cnum].origin == origin)
|
||||
{
|
||||
@ -543,7 +553,7 @@ void S_UpdateSounds(const mobj_t *listener)
|
||||
|
||||
I_DeferSoundUpdates();
|
||||
|
||||
for (cnum = 0; cnum < numChannels; ++cnum)
|
||||
for (cnum = 0; cnum < snd_channels; ++cnum)
|
||||
{
|
||||
channel_t *c = &channels[cnum];
|
||||
sfxinfo_t *sfx = c->sfxinfo;
|
||||
@ -812,7 +822,7 @@ void S_Start(void)
|
||||
// jff 1/22/98 skip sound init if sound not enabled
|
||||
if (!nosfxparm)
|
||||
{
|
||||
for (cnum = 0; cnum < numChannels; ++cnum)
|
||||
for (cnum = 0; cnum < snd_channels; ++cnum)
|
||||
{
|
||||
if (channels[cnum].sfxinfo)
|
||||
{
|
||||
@ -915,7 +925,6 @@ void S_Init(int sfxVolume, int musicVolume)
|
||||
S_SetSfxVolume(sfxVolume);
|
||||
|
||||
// Reset channel memory
|
||||
numChannels = default_numChannels;
|
||||
memset(channels, 0, sizeof(channels));
|
||||
memset(sobjs, 0, sizeof(sobjs));
|
||||
}
|
||||
|
@ -44,6 +44,8 @@ void S_Init(int sfxVolume, int musicVolume);
|
||||
//
|
||||
void S_Start(void);
|
||||
|
||||
void S_StopChannels(void);
|
||||
|
||||
//
|
||||
// Start sound for thing at <origin>
|
||||
// using <sound_id> from sounds.h
|
||||
@ -115,8 +117,7 @@ void S_SetMusicVolume(int volume);
|
||||
void S_SetSfxVolume(int volume);
|
||||
|
||||
// machine-independent sound params
|
||||
extern int numChannels;
|
||||
extern int default_numChannels; // killough 10/98
|
||||
extern int snd_channels;
|
||||
|
||||
// jff 3/17/98 holds last IDMUS number, or -1
|
||||
extern int idmusnum;
|
||||
|
@ -1779,7 +1779,7 @@ void ST_BindSTSVariables(void)
|
||||
"Use solid-color borders for the status bar in widescreen mode");
|
||||
M_BindBool("hud_animated_counts", &hud_animated_counts, NULL,
|
||||
false, ss_stat, wad_no, "Animated health/armor counts");
|
||||
M_BindBool("hud_armor_type", &hud_armor_type, NULL, false, ss_stat, wad_no,
|
||||
M_BindBool("hud_armor_type", &hud_armor_type, NULL, true, ss_none, wad_no,
|
||||
"Armor count is colored based on armor type");
|
||||
M_BindNum("health_red", &health_red, NULL, 25, 0, 200, ss_none, wad_yes,
|
||||
"Amount of health for red-to-yellow transition");
|
||||
|
Loading…
x
Reference in New Issue
Block a user