From: Ingo Ruhnke Date: Sat, 24 Apr 2004 17:48:49 +0000 (+0000) Subject: 'nother music patch by matzeb X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=efb7eb0f84938633537f38fa1e76441181fad41e;p=supertux.git 'nother music patch by matzeb SVN-Revision: 686 --- diff --git a/src/leveleditor.cpp b/src/leveleditor.cpp index f79d877d2..29ca52b0c 100644 --- a/src/leveleditor.cpp +++ b/src/leveleditor.cpp @@ -41,6 +41,7 @@ #include "button.h" #include "tile.h" #include "resources.h" +#include "music_manager.h" /* definitions to aid development */ @@ -170,6 +171,8 @@ int leveleditor(int levelnb) clearscreen(0, 0, 0); updatescreen(); + + music_manager->halt_music(); while (SDL_PollEvent(&event)) {} @@ -1221,6 +1224,8 @@ void le_testlevel() GameSession session("test",le_level, ST_GL_TEST); session.run(); + music_manager->halt_music(); + Menu::set_current(leveleditor_menu); le_world.arrays_free(); le_current_level->load_gfx(); diff --git a/src/menu.cpp b/src/menu.cpp index 49c28b759..b1778785b 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -154,7 +154,7 @@ MenuItem::change_input(const char *text_) /* Set ControlField a key */ void Menu::get_controlfield_key_into_input(MenuItem *item) { -switch(*item->int_p) + switch(*item->int_p) { case SDLK_UP: strcpy(item->input, "Up cursor"); @@ -602,6 +602,25 @@ Menu::draw() } } +MenuItem& +Menu::get_item_by_id(int id) +{ + for(std::vector::iterator i = item.begin(); i != item.end(); ++i) { + if(i->id == id) + return *i; + } + + assert(false); + static MenuItem dummyitem; + return dummyitem; +} + +bool +Menu::isToggled(int id) +{ + return get_item_by_id(id).toggled; +} + /* Check for menu event */ void Menu::event(SDL_Event& event) diff --git a/src/menu.h b/src/menu.h index 7855de7d9..ae56b0b41 100644 --- a/src/menu.h +++ b/src/menu.h @@ -171,6 +171,9 @@ public: int check (); MenuItem& get_item(int index) { return item[index]; } + MenuItem& get_item_by_id(int id); + + bool isToggled(int id); void Menu::get_controlfield_key_into_input(MenuItem *item); @@ -183,6 +186,8 @@ public: int get_width() const; int get_height() const; + + bool is_toggled(int id) const; }; extern Surface* checkbox; diff --git a/src/resources.cpp b/src/resources.cpp index 163895e28..3549212d3 100644 --- a/src/resources.cpp +++ b/src/resources.cpp @@ -48,6 +48,7 @@ void loadshared() sprite_manager = new SpriteManager(datadir + "/supertux.strf"); music_manager = new MusicManager(); + music_manager->enable_music(use_music); /* Tuxes: */ smalltux_star = sprite_manager->load("smalltux-star"); diff --git a/src/setup.cpp b/src/setup.cpp index 9bbda987d..ee111084a 100644 --- a/src/setup.cpp +++ b/src/setup.cpp @@ -50,6 +50,7 @@ #include "scene.h" #include "worldmap.h" #include "resources.h" +#include "music_manager.h" #include "player.h" @@ -394,13 +395,13 @@ void st_menu(void) options_menu->additem(MN_TOGGLE,"Fullscreen",use_fullscreen,0, MNID_FULLSCREEN); if(audio_device) { - options_menu->additem(MN_TOGGLE,"Sound ",use_sound,0, MNID_SOUND); - options_menu->additem(MN_TOGGLE,"Music ",use_music,0, MNID_MUSIC); + options_menu->additem(MN_TOGGLE,"Sound ", use_sound,0, MNID_SOUND); + options_menu->additem(MN_TOGGLE,"Music ", use_music,0, MNID_MUSIC); } else { - options_menu->additem(MN_DEACTIVE,"Sound ",use_sound,0, MNID_SOUND); - options_menu->additem(MN_DEACTIVE,"Music ",use_music,0, MNID_MUSIC); + options_menu->additem(MN_DEACTIVE,"Sound ", false,0, MNID_SOUND); + options_menu->additem(MN_DEACTIVE,"Music ", false,0, MNID_MUSIC); } options_menu->additem(MN_TOGGLE,"Show FPS ",show_fps,0, MNID_SHOWFPS); options_menu->additem(MN_GOTO,"Key Setup",0,options_keys_menu); @@ -517,31 +518,35 @@ void process_options_menu(void) { case MNID_OPENGL: #ifndef NOOPENGL - if(use_gl != options_menu->item[MNID_OPENGL].toggled) + if(use_gl != options_menu->isToggled(MNID_OPENGL)) { use_gl = !use_gl; st_video_setup(); } #else - options_menu->item[MNID_OPENGL].toggled = false; + options_menu->get_item_by_id(MNID_OPENGL).toggled = false; #endif break; case MNID_FULLSCREEN: - if(use_fullscreen != options_menu->item[MNID_FULLSCREEN].toggled) + if(use_fullscreen != options_menu->isToggled(MNID_FULLSCREEN)) { use_fullscreen = !use_fullscreen; st_video_setup(); } break; case MNID_SOUND: - if(use_sound != options_menu->item[MNID_SOUND].toggled) + if(use_sound != options_menu->isToggled(MNID_SOUND)) use_sound = !use_sound; break; case MNID_MUSIC: - music_manager->enable_music(options_menu->item[MNID_MUSIC].toggled); + if(use_music != options_menu->isToggled(MNID_MUSIC)) + { + use_music = !use_music; + music_manager->enable_music(use_music); + } break; case MNID_SHOWFPS: - if(show_fps != options_menu->item[MNID_SHOWFPS].toggled) + if(show_fps != options_menu->isToggled(MNID_SHOWFPS)) show_fps = !show_fps; break; } diff --git a/src/sound.cpp b/src/sound.cpp index fb8359c96..0098cb008 100644 --- a/src/sound.cpp +++ b/src/sound.cpp @@ -27,7 +27,6 @@ bool use_sound = true; /* handle sound on/off menu and command-line option */ bool use_music = true; /* handle music on/off menu and command-line option */ bool audio_device = true; /* != 0: available and initialized */ -int current_music; char * soundfilenames[NUM_SOUNDS] = { "/sounds/jump.wav", diff --git a/src/sound.h b/src/sound.h index b6640a61e..0f75d6008 100644 --- a/src/sound.h +++ b/src/sound.h @@ -28,7 +28,7 @@ /*global variable*/ extern bool use_sound; /* handle sound on/off menu and command-line option */ -extern bool use_music; /* handle music on/off menu and command-line option */ +extern bool use_music; /* handle music on/off menu and command-line */ extern bool audio_device; /* != 0: available and initialized */ /* enum of different internal music types */