static void Driver_Music_LoadFile(const char *musicName) { Driver *music = g_driverMusic; Driver *sound = g_driverSound; Driver_Music_Stop(); if (music->index == 0xFFFF) return; if (music->content == sound->content) { music->content = NULL; music->filename = NULL; music->contentMalloced = false; } else { Driver_UnloadFile(music); } if (sound->filename != NULL && musicName != NULL && strcasecmp(Drivers_GenerateFilename(musicName, music), sound->filename) == 0) { g_driverMusic->content = g_driverSound->content; g_driverMusic->filename = g_driverSound->filename; g_driverMusic->contentMalloced = g_driverSound->contentMalloced; return; } Driver_LoadFile(musicName, music); }
/** * Handles Click event for "Game controls" button. * * @param w The widget. */ static void GUI_Widget_GameControls_Click(Widget *w) { WindowDesc *desc = &g_gameControlWindowDesc; bool loop; GUI_Window_BackupScreen(desc); GUI_Window_Create(desc); loop = true; while (loop) { Widget *w2 = g_widgetLinkedListTail; uint16 key = GUI_Widget_HandleEvents(w2); if ((key & 0x8000) != 0) { w = GUI_Widget_Get_ByIndex(w2, key & 0x7FFF); switch ((key & 0x7FFF) - 0x1E) { case 0: g_gameConfig.music ^= 0x1; if (g_gameConfig.music == 0) Driver_Music_Stop(); break; case 1: g_gameConfig.sounds ^= 0x1; if (g_gameConfig.sounds == 0) Driver_Sound_Stop(); break; case 2: if (++g_gameConfig.gameSpeed >= 5) g_gameConfig.gameSpeed = 0; break; case 3: g_gameConfig.hints ^= 0x1; break; case 4: g_gameConfig.autoScroll ^= 0x1; break; case 5: loop = false; break; default: break; } GUI_Widget_MakeNormal(w, false); GUI_Widget_Draw(w); } GUI_PaletteAnimate(); sleepIdle(); } GUI_Window_RestoreScreen(desc); }
/** * Plays a music. * @param index The index of the music to play. */ void Music_Play(uint16 musicID) { if (musicID == 0xFFFF || musicID >= 38) return; if (g_table_musics[musicID].string != s_currentMusic) { s_currentMusic = g_table_musics[musicID].string; Driver_Music_Stop(); Driver_Voice_Play(NULL, 0xFF); Driver_Music_LoadFile(NULL); Driver_Sound_LoadFile(NULL); Driver_Music_LoadFile(s_currentMusic); Driver_Sound_LoadFile(s_currentMusic); } Driver_Music_Play(g_table_musics[musicID].variable_04, 0xFF); }
/** * Plays a music. * @param index The index of the music to play. */ void Music_Play(uint16 musicID) { static uint16 currentMusicID = 0; if (musicID == 0xFFFF || musicID >= 38 || musicID == currentMusicID) return; currentMusicID = musicID; if (g_table_musics[musicID].string != s_currentMusic) { s_currentMusic = g_table_musics[musicID].string; Driver_Music_Stop(); Driver_Voice_Play(NULL, 0xFF); Driver_Music_LoadFile(NULL); Driver_Sound_LoadFile(NULL); Driver_Music_LoadFile(s_currentMusic); Driver_Sound_LoadFile(s_currentMusic); } Driver_Music_Play(g_table_musics[musicID].index, 0xFF); }