From 3e2c46ac069c0c5d80ffdba2aa802f7c1687132f Mon Sep 17 00:00:00 2001 From: nehalmistry <> Date: Sat, 15 Feb 2003 01:55:51 +0000 Subject: [PATCH] converted CDMode to enum --- src/game/intro.cpp | 2 +- src/include/sound.h | 2 - src/include/sound_server.h | 10 +- src/sound/music.cpp | 192 +++++++++++++++++------------------- src/sound/script_sound.cpp | 19 +++- src/sound/sound_server.cpp | 38 +++---- src/stratagus/script.cpp | 2 +- src/stratagus/stratagus.cpp | 2 +- src/ui/menus.cpp | 32 +++--- 9 files changed, 154 insertions(+), 145 deletions(-) diff --git a/src/game/intro.cpp b/src/game/intro.cpp index 9c6b8bf4d..1c7260221 100644 --- a/src/game/intro.cpp +++ b/src/game/intro.cpp @@ -540,7 +540,7 @@ global void ShowIntro(const Intro *intro) CallbackMusicOn(); StopMusic(); // FIXME: should this be GameMusic? - if( !strcmp(CDMode, ":off") ) { + if (CDMode == CDModeOff || CDMode == CDModeStopped) { PlayMusic(MenuMusic); } else { CDRomCheck(NULL); diff --git a/src/include/sound.h b/src/include/sound.h index 855470753..cc6d97287 100644 --- a/src/include/sound.h +++ b/src/include/sound.h @@ -123,8 +123,6 @@ extern void PlayMusic(const char* name); /// Stop music playing extern void StopMusic(void); -extern int PlayCDRom(const char* name); - /// Turn music stopped callback on #define CallbackMusicOn() \ CallbackMusic=1; diff --git a/src/include/sound_server.h b/src/include/sound_server.h index 817bfdf11..a0b774d6b 100644 --- a/src/include/sound_server.h +++ b/src/include/sound_server.h @@ -235,7 +235,13 @@ extern unsigned CompressedSoundMemory; #endif /// cd play mode, ":off" ":random" ":all" or ":defined" -extern char *CDMode; +enum _cd_mode_ { + CDModeStopped = -1, + CDModeOff, + CDModeAll, + CDModeRandom, + CDModeDefined, +} CDMode; /// FIXME: docu enum _play_section_ { PlaySectionMainMenu, @@ -246,6 +252,8 @@ enum _play_section_ { #if defined(USE_SDLCD) || defined(USE_LIBCDA) || defined(USE_CDDA) /// FIXME: docu extern int CDTrack; + +extern int PlayCDRom(int name); #endif #if defined(USE_SDLCD) diff --git a/src/sound/music.cpp b/src/sound/music.cpp index 641a47343..531146664 100644 --- a/src/sound/music.cpp +++ b/src/sound/music.cpp @@ -66,8 +66,6 @@ global Sample* MusicSample; /// Music samples #endif -global char *CDMode = ":off"; /// cd play mode, ":off" ":random" ":all" or ":defined" -//global char *CDPlaySection = "menu"; #if defined(USE_SDLCD) || defined(USE_LIBCDA) || defined(USE_CDDA) global int CDTrack = 0; /// Current cd track #endif @@ -242,16 +240,16 @@ local Sample* LoadMod(const char* name,int flags __attribute__((unused))) ** ** @return True if name is handled by the cdrom module. */ -global int PlayCDRom(const char* name) +global int PlayCDRom(int name) { // Old mode off, starting cdrom play. - if (!strcmp(CDMode, ":off")) { + if (CDMode == CDModeOff) { if (!strncmp(name, ":", 1)) { if (SDL_Init(SDL_INIT_CDROM) < 0) return 1; CDRom = SDL_CDOpen(0); if (!SDL_CDStatus(CDRom)) { - CDMode = ":off"; + CDMode = CDModeOff; return 1; } } @@ -264,22 +262,22 @@ global int PlayCDRom(const char* name) if (!CDRom) { fprintf(stderr, "Couldn't open cdrom drive: %s\n", SDL_GetError()); - CDMode = ":stopped"; + CDMode = CDModeStopped; return 1; } // if mode is play all tracks if (!strcmp(name, ":all")) { - CDMode = ":all"; + CDMode = CDModeAll; if (SDL_CDPlayTracks(CDRom, 0, 0, 0, 0) < 0) - CDMode = ":stopped"; + CDMode = CDModeStopped; return 1; } // if mode is play random tracks if (!strcmp(name, ":random")) { - CDMode = ":random"; + CDMode = CDModeRandom; CDTrack = MyRand() % CDRom->numtracks; if (SDL_CDPlayTracks(CDRom, CDTrack, 0, 0, 0) < 0) - CDMode = ":stopped"; + CDMode = CDModeStopped; } return 1; } @@ -297,105 +295,99 @@ global int PlayCDRom(const char* name) ** ** @return True if name is handled by the cdrom module. */ -global int PlayCDRom(const char* name) +global int PlayCDRom(int name) { int i; int data_cd; int track; - if (!strcmp(CDMode, ":off")) { - if (!strncmp(name, ":", 1)) { - if (cd_init()) { - fprintf(stderr, "Error initialising libcda \n"); - CDMode = ":off"; - return 1; - } - if (cd_get_tracks(&CDTrack, &NumCDTracks)) { - CDMode = ":off"; - return 1; - } - data_cd = 1; - for (i = 1; i <= NumCDTracks; ++i) { - if (cd_is_audio(i) > 0) { - data_cd = 0; - break; - } - } - if (data_cd || !NumCDTracks) { - CDMode = ":off"; - return 1; + if (CDMode == CDModeOff) { + if (cd_init()) { + fprintf(stderr, "Error initialising libcda \n"); + CDMode = CDModeOff; + return 1; + } + if (cd_get_tracks(&CDTrack, &NumCDTracks)) { + CDMode = CDModeOff; + return 1; + } + data_cd = 1; + for (i = 1; i <= NumCDTracks; ++i) { + if (cd_is_audio(i) > 0) { + data_cd = 0; + break; } } - --CDTrack; + if (data_cd || !NumCDTracks) { + CDMode = CDModeOff; + return 1; + } + } + --CDTrack; + + StopMusic(); + + if (cd_get_tracks(NULL, NULL) == -1) + return 1; + + // if mode is play all tracks + if (name == CDModeAll) { + CDMode = CDModeAll; + do { + if (CDTrack >= NumCDTracks) + CDTrack = 0; + } while (cd_is_audio(++CDTrack) < 1); + if (cd_play(CDTrack)) + CDMode = CDModeStopped; + return 1; + } + // if mode is play random tracks + if (name == CDModeRandom) { + CDMode = CDModeRandom; + do { + CDTrack = MyRand() % NumCDTracks; + } while (cd_is_audio(CDTrack) < 1); + if (cd_play(CDTrack)) + CDMode = CDModeStopped; + return 1; } - if (!strncmp(name, ":", 1)) { - - StopMusic(); - - if (cd_get_tracks(NULL, NULL) == -1) - return 1; - - // if mode is play all tracks - if (!strcmp(name, ":all")) { - CDMode = ":all"; - do { - if (CDTrack >= NumCDTracks) - CDTrack = 0; - } while (cd_is_audio(++CDTrack) < 1); - if (cd_play(CDTrack)) - CDMode = ":stopped"; - return 1; - } - // if mode is play random tracks - if (!strcmp(name, ":random")) { - CDMode = ":random"; - do { - CDTrack = MyRand() % NumCDTracks; - } while (cd_is_audio(CDTrack) < 1); - if (cd_play(CDTrack)) - CDMode = ":stopped"; - return 1; - } - // FIXME: remove :defined - if (!strcmp(name, ":defined")) { - CDMode = ":defined"; - track = cd_current_track(); - if (PlaySection == PlaySectionStats) { - if (GameResult == GameVictory) { - if (!ThisPlayer->Race && track != 8) { - cd_play(8); - } else if (ThisPlayer->Race && track != 16) { - cd_play(16); - } - } else { - if (!ThisPlayer->Race && track != 9) { - cd_play(9); - } else if (ThisPlayer->Race && track != 17) { - cd_play(17); - } + if (name == CDModeDefined) { + CDMode = CDModeDefined; + track = cd_current_track(); + if (PlaySection == PlaySectionStats) { + if (GameResult == GameVictory) { + if (!ThisPlayer->Race && track != 8) { + cd_play(8); + } else if (ThisPlayer->Race && track != 16) { + cd_play(16); } - } else if (PlaySection == PlaySectionBriefing) { - if (!ThisPlayer->Race && track != 7) { - cd_play(7); - } else if (ThisPlayer->Race && track != 15) { - cd_play(15); + } else { + if (!ThisPlayer->Race && track != 9) { + cd_play(9); + } else if (ThisPlayer->Race && track != 17) { + cd_play(17); } - } else if ((PlaySection == PlaySectionMainMenu) && track != 15) { - cd_play(15); - } else if ((PlaySection == PlaySectionGame) && - !ThisPlayer->Race && (track < 3 || track > 6)) { - do CDTrack = (MyRand() % NumCDTracks) + 3; - while (CDTrack < 3 || CDTrack > 7); - cd_play(CDTrack); - } else if ((PlaySection == PlaySectionGame) && - ThisPlayer->Race && (track < 10 || track > 14)) { - do CDTrack = (MyRand() % NumCDTracks) + 9; - while (CDTrack < 11 || CDTrack > 14); - cd_play(CDTrack); } + } else if (PlaySection == PlaySectionBriefing) { + if (!ThisPlayer->Race && track != 7) { + cd_play(7); + } else if (ThisPlayer->Race && track != 15) { + cd_play(15); + } + } else if ((PlaySection == PlaySectionMainMenu) && track != 15) { + cd_play(15); + } else if ((PlaySection == PlaySectionGame) && + !ThisPlayer->Race && (track < 3 || track > 6)) { + do CDTrack = (MyRand() % NumCDTracks) + 3; + while (CDTrack < 3 || CDTrack > 7); + cd_play(CDTrack); + } else if ((PlaySection == PlaySectionGame) && + ThisPlayer->Race && (track < 10 || track > 14)) { + do CDTrack = (MyRand() % NumCDTracks) + 9; + while (CDTrack < 11 || CDTrack > 14); + cd_play(CDTrack); } - return 1; } return 0; @@ -415,7 +407,7 @@ local int PlayCDRom(const char* name) int i; Sample *sample; - if (!strcmp(CDMode, ":off")) { + if (CDMode == CDModeOff) { if (!strncmp(name, ":", 1)) { CDDrive = open("/dev/cdrom", O_RDONLY | O_NONBLOCK); ioctl(CDDrive, CDROMRESET); @@ -430,7 +422,7 @@ local int PlayCDRom(const char* name) NumCDTracks = i - 1; if (NumCDTracks == 0) { - CDMode = ":off"; + CDMode = CDModeOff; return 1; } } @@ -442,7 +434,7 @@ local int PlayCDRom(const char* name) // if mode is play all tracks if (!strcmp(name, ":all")) { - CDMode = ":all"; + CDMode = CDModeAll; do { if (CDTrack >= NumCDTracks) CDTrack = 0; @@ -450,7 +442,7 @@ local int PlayCDRom(const char* name) } // if mode is play random tracks if (!strcmp(name, ":random")) { - CDMode = ":random"; + CDMode = CDModeRanom; do { CDTrack = MyRand() % NumCDTracks; } while (CDtocentry[CDTrack].cdte_ctrl&CDROM_DATA_TRACK); diff --git a/src/sound/script_sound.cpp b/src/sound/script_sound.cpp index 752796cbf..e66c8ca43 100644 --- a/src/sound/script_sound.cpp +++ b/src/sound/script_sound.cpp @@ -376,12 +376,23 @@ local SCM CclSetMusicVolume(SCM volume) local SCM CclSetCdMode(SCM mode) { #if defined(USE_SDLCD) || defined(USE_LIBCDA) || defined(USE_CDDA) - char *str; + int cdmode; + char *str = gh_scm2newstr(mode, NULL); - if ( !gh_null_p(mode) ) { - PlayCDRom(str = gh_scm2newstr(mode,NULL)); - free(str); + if (!strcmp(str, "all")) { + cdmode = CDModeAll; + } else if (!strcmp(str, "random")) { + cdmode = CDModeRandom; + } else if (!strcmp(str, "defined")) { + cdmode = CDModeDefined; + } else { + free(str); + return mode; } + + free(str); + + PlayCDRom(cdmode); #endif return mode; } diff --git a/src/sound/sound_server.cpp b/src/sound/sound_server.cpp index c078abefa..237ca8124 100644 --- a/src/sound/sound_server.cpp +++ b/src/sound/sound_server.cpp @@ -230,22 +230,22 @@ global void StopMusic(void) global int CDRomCheck(void *unused __attribute__ ((unused))) { #if defined(USE_SDLCD) - if (strcmp(CDMode, ":off") && strcmp(CDMode, ":stopped") + if (CDMode != CDModeOff && CDMode != CDModeStopped) && SDL_CDStatus(CDRom) == 1) { DebugLevel0Fn("Playing new track\n"); - if (!strcmp(CDMode, ":all")) { + if (CDMode == CDModeAll) { PlayCDRom(":all"); - } else if (!strcmp(CDMode, ":random")) { + } else if (CDMode == CDModeRandom) { PlayCDRom(":random"); } } #elif defined(USE_LIBCDA) - if (strcmp(CDMode, ":off") && strcmp(CDMode, ":stopped") - && !cd_current_track() && strcmp(CDMode, ":defined")) { + if (CDMode != CDModeRandom && CDMode != CDModeStopped + && !cd_current_track() && CDMode != CDModeDefined) { DebugLevel0Fn("Playing new track\n"); PlayCDRom(CDMode); - } else if (strcmp(CDMode, ":off") && strcmp(CDMode, ":stopped")) { - if (!strcmp(CDMode, ":defined")) { + } else if (CDMode != CDModeOff && CDMode != CDModeStopped) { + if (CDMode == CDModeDefined) { PlayCDRom(CDMode); } DebugLevel0Fn("get track\n"); @@ -255,12 +255,12 @@ global int CDRomCheck(void *unused __attribute__ ((unused))) } } #elif defined(USE_CDDA) - if (strcmp(CDMode, ":off") && strcmp(CDMode, ":stopped") + if (CDMode != CDModeOff && CDMode != CDModeStopped) && !PlayingMusic) { DebugLevel0Fn("Playing new track\n"); - if (!strcmp(CDMode, ":all")) { + if (CDMode == CDModeAll) { PlayCDRom(":all"); - } else if (!strcmp(CDMode, ":random")) { + } else if (CDMode == CDModeRandom) { PlayCDRom(":random"); } } @@ -1199,7 +1199,7 @@ global int InitSound(void) DebugLevel0Fn("FIXME: must write non GLIB hash functions\n"); #endif - if( TitleMusic && (!strcmp(CDMode, ":off")) ) { + if( TitleMusic && (CDMode == CDModeOff || CDMode == CDModeStopped) ) { PlayMusic(TitleMusic); } @@ -1272,21 +1272,21 @@ global void QuitSound(void) global void QuitCD(void) { #if defined(USE_SDLCD) - if (strcmp(CDMode,":off") && strcmp(CDMode,":stopped")) + if (CDMode != CDModeOff && CDMode != CDModeStopped) SDL_CDStop(CDRom); - CDMode = ":stopped"; - if (strcmp(CDMode,":off")) { + CDMode = CDModeStopped; + if (CDMode != CDModeStopped) { SDL_CDClose(CDRom); - CDMode = ":off"; + CDMode = CDModeOff; } #elif defined(USE_LIBCDA) - if (strcmp(CDMode,":off") && strcmp(CDMode,":stopped")) + if (CDMode != CDModeOff && CDMode != CDModeStopped) cd_stop(); - CDMode = ":stopped"; - if (strcmp(CDMode,":off")) { + CDMode = CDModeStopped; + if (CDMode == CDModeStopped) { cd_close(); cd_exit(); - CDMode = ":off"; + CDMode = CDModeOff; } #elif defined(USE_CDDA) close(CDDrive); diff --git a/src/stratagus/script.cpp b/src/stratagus/script.cpp index fff0c9058..9879ee649 100644 --- a/src/stratagus/script.cpp +++ b/src/stratagus/script.cpp @@ -904,7 +904,7 @@ global void SavePreferences(void) } fprintf(fd,"(set-music-volume! %d)\n", MusicVolume); #if defined(USE_SDLCD) || defined(USE_LIBCDA) || defined(USE_CDDA) - fprintf(fd,"(set-cd-mode! \"%s\")\n", CDMode); + fprintf(fd,"(set-cd-mode! \"%d\")\n", CDMode); #endif #endif diff --git a/src/stratagus/stratagus.cpp b/src/stratagus/stratagus.cpp index bbbf5e00c..d16ae7bf3 100644 --- a/src/stratagus/stratagus.cpp +++ b/src/stratagus/stratagus.cpp @@ -1075,7 +1075,7 @@ global void MenuLoop(char* filename, WorldMap* map) // FIXME: If second loop? if( !PlayingMusic && strcmp(TitleMusic,MenuMusic) ) { - if (!strcmp(CDMode, ":off")) { + if (CDMode == CDModeOff) { PlayMusic(MenuMusic); } else { CDRomCheck(NULL); diff --git a/src/ui/menus.cpp b/src/ui/menus.cpp index 1e20a5216..7490a2708 100644 --- a/src/ui/menus.cpp +++ b/src/ui/menus.cpp @@ -1562,7 +1562,7 @@ local void SoundOptionsInit(Menuitem *mi __attribute__((unused))) menu->items[11].flags = 0; } #if defined(USE_LIBCDA) || defined(USE_SDLCD) || defined(USE_CDDA) - if (strcmp(":off", CDMode) && strcmp(":stopped", CDMode)) { + if (CDMode != CDModeStopped && CDMode != CDModeOff) { menu->items[8].flags = MenuButtonDisabled; menu->items[11].flags = MenuButtonDisabled; } @@ -1580,7 +1580,7 @@ local void SoundOptionsInit(Menuitem *mi __attribute__((unused))) menu->items[21].flags = MenuButtonDisabled; // random tracks button #if defined(USE_LIBCDA) || defined(USE_SDLCD) || defined(USE_CDDA) menu->items[17].flags = 0; // cd power - if (strcmp(":off", CDMode) && strcmp(":stopped", CDMode)) { + if (CDMode != CDModeStopped && CDMode != CDModeOff) { #if (!defined(USE_WIN32) && defined(USE_LIBCDA)) || defined(USE_CDDA) int i = 0; #ifdef USE_LIBCDA @@ -1595,10 +1595,10 @@ local void SoundOptionsInit(Menuitem *mi __attribute__((unused))) menu->items[19].flags = 0; menu->items[21].flags = 0; - if (!strcmp(":all", CDMode)) { + if (CDMode == CDModeAll) { menu->items[19].d.gem.state = MI_GSTATE_CHECKED; menu->items[21].d.gem.state = MI_GSTATE_UNCHECKED; - } else if (!strcmp(":random", CDMode)) { + } else if (CDMode == CDModeRandom) { menu->items[19].d.gem.state = MI_GSTATE_UNCHECKED; menu->items[21].d.gem.state = MI_GSTATE_CHECKED; } @@ -1814,36 +1814,36 @@ local void SetCdPower(Menuitem *mi __attribute__((unused))) #ifdef WITH_SOUND #ifdef USE_SDLCD // Start Playing CD - if (!strcmp(":off", CDMode) || !strcmp(":stopped", CDMode)) { + if (CDMode == CDModeOff || CDMode == CDModeStopped) { #ifdef USE_WIN32 SDL_CDResume(CDRom); #endif - PlayCDRom(":random"); + PlayCDRom(CDModeRandom); } else { // Stop Playing CD SDL_CDPause(CDRom); - CDMode = ":stopped"; + CDMode = CDModeStopped; } - if (strcmp(":off", CDMode) && strcmp(":stopped", CDMode)) { + if (CDMode != CDModeOff && CDMode != CDModeStopped) { StopMusic(); } #elif defined(USE_LIBCDA) // Start Playing CD - if (!strcmp(":off", CDMode) || !strcmp(":stopped", CDMode)) { - PlayCDRom(":random"); + if (CDMode == CDModeOff || CDMode == CDModeStopped) { + PlayCDRom(CDModeRandom); } else { // Stop Playing CD cd_pause(); - CDMode = ":stopped"; + CDMode = CDModeStopped; } #elif defined(USE_CDDA) // Start Playing CD - if (!strcmp(":off", CDMode) || !strcmp(":stopped", CDMode)) { - PlayCDRom(":random"); + if (CDMode == CDModeOff || CDMode == CDModeStopped) { + PlayCDRom(CDModeRandom); } else { // Stop Playing CD StopMusic(); - CDMode = ":stopped"; + CDMode = CDModeStopped; } #endif #endif @@ -1889,7 +1889,7 @@ local void SetCommandKey(Menuitem *mi __attribute__((unused))) local void SetCdModeAll(Menuitem *mi __attribute__((unused))) { #if defined(WITH_SOUND) && (defined(USE_LIBCDA) || defined(USE_SDLCD)) - CDMode = ":all"; + CDMode = CDModeAll; #endif SoundOptionsInit(NULL); } @@ -1900,7 +1900,7 @@ local void SetCdModeAll(Menuitem *mi __attribute__((unused))) local void SetCdModeRandom(Menuitem *mi __attribute__((unused))) { #if defined(WITH_SOUND) && (defined(USE_LIBCDA) || defined(USE_SDLCD)) - CDMode = ":random"; + CDMode = CDModeRandom; #endif SoundOptionsInit(NULL); }