Control Redbook activity with GameArg.SndEnableRedbook only

This commit is contained in:
zicodxx 2007-07-27 13:35:40 +00:00
parent 2bc4cd32bb
commit 77cb0fac31
5 changed files with 24 additions and 174 deletions

View file

@ -3,6 +3,7 @@ D2X-Rebirth Changelog
20070727
--------
2d/font.c, arch/ogl/ogl.c, include/gr.h, main/automap.c, main/config.c, main/credits.c, main/game.c, main/gamefont.c, main/gamefont.h, main/gamerend.c, main/gameseq.c, main/gauges.c, main/hud.c, main/inferno.c, main/kconfig.c, main/kmatrix.c, main/menu.c, main/menu.h, main/movie.c, main/network.c, main/newmenu.c, main/playsave.c, main/scores.c, main/state.c, main/titles.c: Cleanup in Config- and PLX-code; Saving Resolution in Config file so it will apply directly at game-init; Removed seperated resolution mode for menus, SCREEN_MENU now always uses Game_screen_mode; Last FindArg cleanups; Removed MenuHires(Available) and FontHires(Available) and replaced with HiresGFX(Available) to make a more common way to determinate if Hires data is used or not (interactive Demo); Improved support for Interactive Demo
main/gamecntl.c, main/menu.c, main/songs.c, main/songs.h: Control Redbook activity with GameArg.SndEnableRedbook only
20070723
--------

View file

@ -425,7 +425,6 @@ void format_time(char *str, int secs_int)
sprintf(str, "%1d:%02d:%02d", h, m, s );
}
extern int Redbook_playing;
void do_show_netgame_help();
//Process selected keys until game unpaused. returns key that left pause (p or esc)
@ -526,7 +525,7 @@ int do_game_pause()
start_time();
if (Redbook_playing)
if (GameArg.SndEnableRedbook)
RBAResume();
digi_resume_all();

View file

@ -841,12 +841,8 @@ void do_options_menu()
write_player_file();
}
extern int Redbook_playing;
void set_redbook_volume(int volume);
WIN(extern int RBCDROM_State);
WIN(static BOOL windigi_driver_off=FALSE);
void sound_menuset(int nitems, newmenu_item * items, int *last_key, int citem )
{
nitems=nitems;
@ -854,185 +850,47 @@ void sound_menuset(int nitems, newmenu_item * items, int *last_key, int citem )
if ( Config_digi_volume != items[0].value ) {
Config_digi_volume = items[0].value;
#ifdef WINDOWS
if (windigi_driver_off) {
digi_midi_wait();
digi_init_digi();
Sleep(500);
windigi_driver_off = FALSE;
}
#endif
#ifndef MACINTOSH
digi_set_digi_volume( (Config_digi_volume*32768)/8 );
#else
digi_set_digi_volume( (Config_digi_volume*256)/8 );
#endif
digi_set_digi_volume( (Config_digi_volume*32768)/8 );
digi_play_sample_once( SOUND_DROP_BOMB, F1_0 );
}
#ifdef WINDOWS
if (!wmidi_support_volchange()) {
if (!items[1].value && Config_midi_volume) {
Config_midi_volume = 0;
digi_set_midi_volume(0);
digi_play_midi_song( NULL, NULL, NULL, 0 );
}
else if (Config_midi_volume == 0 && items[1].value) {
digi_set_midi_volume(64);
Config_midi_volume = 4;
if (GameArg.SndEnableRedbook)
{
if (Config_redbook_volume != items[1].value ) {
Config_redbook_volume = items[1].value;
set_redbook_volume(Config_redbook_volume);
}
}
else // LINK TO BELOW IF
#endif
if (Config_midi_volume != items[1].value ) {
Config_midi_volume = items[1].value;
#ifdef WINDOWS
if (!windigi_driver_off) {
Sleep(200);
digi_close_digi();
Sleep(100);
windigi_driver_off = TRUE;
}
#endif
#ifndef MACINTOSH
else
{
if (Config_midi_volume != items[1].value ) {
Config_midi_volume = items[1].value;
digi_set_midi_volume( (Config_midi_volume*128)/8 );
#else
digi_set_midi_volume( (Config_midi_volume*256)/8 );
#endif
}
#ifdef MACINTOSH
if (Config_master_volume != items[3].value ) {
Config_master_volume = items[3].value;
digi_set_master_volume( Config_master_volume );
digi_play_sample_once( SOUND_DROP_BOMB, F1_0 );
}
#endif
// don't enable redbook for a non-apple demo version of the shareware demo
#if !defined(SHAREWARE) || ( defined(SHAREWARE) && defined(APPLE_DEMO) )
if (Config_redbook_volume != items[2].value ) {
Config_redbook_volume = items[2].value;
set_redbook_volume(Config_redbook_volume);
}
if (items[4].value != (Redbook_playing!=0)) {
if (items[4].value && !GameArg.SndEnableRedbook) {
nm_messagebox (TXT_SORRY,1,TXT_OK,"Redbook audio is disabled\nuse -redbook command to enable");
items[4].value = 0;
items[4].redraw = 1;
}
else {
Redbook_enabled = items[4].value;
mprintf((1, "Redbook_enabled = %d\n", Redbook_enabled));
if (Function_mode == FMODE_MENU)
songs_play_song(SONG_TITLE,1);
else if (Function_mode == FMODE_GAME)
songs_play_level_song( Current_level_num );
else
Int3();
if (items[4].value && !Redbook_playing) {
#ifdef WINDOWS
if (RBCDROM_State == -1)
nm_messagebox (TXT_SORRY,1,TXT_OK,"Cannot start CD Music.\nAnother application is\nusing the CD player.\n");
else // link to next code line!
#endif
nm_messagebox (TXT_SORRY,1,TXT_OK,"Cannot start CD Music. Insert\nyour Descent II CD and try again");
items[4].value = 0;
items[4].redraw = 1;
}
items[1].type = (Redbook_playing?NM_TYPE_TEXT:NM_TYPE_SLIDER);
items[1].redraw = 1;
items[2].type = (Redbook_playing?NM_TYPE_SLIDER:NM_TYPE_TEXT);
items[2].redraw = 1;
}
}
#endif
citem++; //kill warning
}
void do_sound_menu()
{
newmenu_item m[6];
newmenu_item m[4];
int i = 0;
#ifdef WINDOWS
extern BOOL DIGIDriverInit;
if (!DIGIDriverInit) windigi_driver_off = TRUE;
else windigi_driver_off = FALSE;
#endif
do {
m[ 0].type = NM_TYPE_SLIDER; m[ 0].text=TXT_FX_VOLUME; m[0].value=Config_digi_volume;m[0].min_value=0; m[0].max_value=8;
m[ 1].type = (Redbook_playing?NM_TYPE_TEXT:NM_TYPE_SLIDER); m[ 1].text="MIDI music volume"; m[1].value=Config_midi_volume;m[1].min_value=0; m[1].max_value=8;
m[ 1].type = NM_TYPE_SLIDER; m[ 1].text=(GameArg.SndEnableRedbook?"CD music volume":"MIDI music volume"); m[1].value=(GameArg.SndEnableRedbook?Config_redbook_volume:Config_midi_volume);m[1].min_value=0; m[1].max_value=8;
m[ 2].type = NM_TYPE_TEXT; m[ 2].text="";
m[ 3].type = NM_TYPE_CHECK; m[ 3].text=TXT_REVERSE_STEREO; m[3].value=Config_channels_reversed;
#ifdef WINDOWS
if (!wmidi_support_volchange() && !Redbook_playing) {
m[1].type = NM_TYPE_CHECK;
m[1].text = "MIDI MUSIC";
if (Config_midi_volume) m[1].value = 1;
}
#endif
#ifdef SHAREWARE
m[ 2].type = NM_TYPE_TEXT; m[ 2].text="";
m[ 3].type = NM_TYPE_TEXT; m[ 3].text="";
m[ 4].type = NM_TYPE_TEXT; m[ 4].text="";
#ifdef MACINTOSH
m[ 3].type = NM_TYPE_SLIDER; m[ 3].text="Sound Manager Volume"; m[3].value=Config_master_volume;m[3].min_value=0; m[3].max_value=8;
#ifdef APPLE_DEMO
m[ 2].type = (Redbook_playing?NM_TYPE_SLIDER:NM_TYPE_TEXT); m[ 2].text="CD music volume"; m[2].value=Config_redbook_volume;m[2].min_value=0; m[2].max_value=8;
m[ 4].type = NM_TYPE_CHECK; m[ 4].text="CD Music (Redbook) enabled"; m[4].value=(Redbook_playing!=0);
#endif
#endif
#else // ifdef SHAREWARE
m[ 2].type = (Redbook_playing?NM_TYPE_SLIDER:NM_TYPE_TEXT); m[ 2].text="CD music volume"; m[2].value=Config_redbook_volume;m[2].min_value=0; m[2].max_value=8;
#ifndef MACINTOSH
m[ 3].type = NM_TYPE_TEXT; m[ 3].text="";
#else
m[ 3].type = NM_TYPE_SLIDER; m[ 3].text="Sound Manager Volume"; m[3].value=Config_master_volume;m[3].min_value=0; m[3].max_value=8;
#endif
m[ 4].type = NM_TYPE_CHECK; m[ 4].text="CD Music (Redbook) enabled"; m[4].value=(Redbook_playing!=0);
#endif
m[ 5].type = NM_TYPE_CHECK; m[ 5].text=TXT_REVERSE_STEREO; m[5].value=Config_channels_reversed;
i = newmenu_do1( NULL, "Sound Effects & Music", sizeof(m)/sizeof(*m), m, sound_menuset, i );
Redbook_enabled = m[4].value;
Config_channels_reversed = m[5].value;
Config_channels_reversed = m[3].value;
} while( i>-1 );
#ifdef WINDOWS
if (windigi_driver_off) {
digi_midi_wait();
Sleep(500);
digi_init_digi();
windigi_driver_off=FALSE;
}
#endif
}
extern int Automap_always_hires;
#define ADD_CHECK(n,txt,v) do { m[n].type=NM_TYPE_CHECK; m[n].text=txt; m[n].value=v;} while (0)
void do_toggles_menu()
@ -1059,8 +917,6 @@ void do_toggles_menu()
ADD_CHECK(3, "Headlight on when picked up", Headlight_active_default );
ADD_CHECK(4, "Show guided missile in main display", Guided_in_big_window );
ADD_CHECK(5, "Escort robot hot keys",EscortHotKeys);
//ADD_CHECK(6, "Always use 640x480 or greater automap", Automap_always_hires);
//when adding more options, change N_TOGGLE_ITEMS above
i = newmenu_do1( NULL, "Toggles", N_TOGGLE_ITEMS, m, NULL, i );

View file

@ -52,10 +52,8 @@ int Num_songs;
extern void digi_stop_current_song();
int Redbook_enabled = 1;
//0 if redbook is no playing, else the track number
int Redbook_playing = 0;
static int Redbook_playing = 0;
#define NumLevelSongs (Num_songs - SONG_FIRST_LEVEL_SONG)
@ -191,7 +189,7 @@ int play_redbook_track(int tracknum,int keep_playing)
{
Redbook_playing = 0;
if (!RBAEnabled() && Redbook_enabled && GameArg.SndEnableRedbook)
if (!RBAEnabled() && GameArg.SndEnableRedbook)
reinit_redbook();
if (force_rb_register) {
@ -199,7 +197,7 @@ int play_redbook_track(int tracknum,int keep_playing)
force_rb_register = 0;
}
if (Redbook_enabled && RBAEnabled()) {
if (RBAEnabled()) {
int num_tracks = RBAGetNumberOfTracks();
if (tracknum <= num_tracks)
if (RBAPlayTracks(tracknum,keep_playing?num_tracks:tracknum)) {
@ -238,7 +236,7 @@ int songs_haved2_cd()
{
int discid;
if (!Redbook_enabled)
if (!GameArg.SndEnableRedbook)
return 0;
discid = RBAGetDiscID();
@ -342,7 +340,7 @@ void songs_play_level_song( int levelnum )
songnum = (levelnum>0)?(levelnum-1):(-levelnum);
if (!RBAEnabled() && Redbook_enabled && GameArg.SndEnableRedbook)
if (!RBAEnabled() && GameArg.SndEnableRedbook)
reinit_redbook();
if (force_rb_register) {
@ -350,7 +348,7 @@ void songs_play_level_song( int levelnum )
force_rb_register = 0;
}
if (Redbook_enabled && RBAEnabled() && (n_tracks = RBAGetNumberOfTracks()) > 1) {
if (GameArg.SndEnableRedbook && RBAEnabled() && (n_tracks = RBAGetNumberOfTracks()) > 1) {
//try to play redbook

View file

@ -49,10 +49,6 @@ extern song_info Songs[];
extern int Num_songs; //how many MIDI songs
#endif
//whether or not redbook audio should be played
extern int Redbook_enabled;
extern int Redbook_playing; // track that is currently playing
void songs_play_song( int songnum, int repeat );
void songs_play_level_song( int levelnum );