diff --git a/src/common.h b/src/common.h index 10049e0..9d7ab12 100644 --- a/src/common.h +++ b/src/common.h @@ -38,6 +38,7 @@ void sys_warning(const char* format, ...); extern uint32_t sdl_custom_event_type; enum CustomEvent { DEBUGGER_COMMAND, + DISABLE_CD_MENU, }; // resource.cpp diff --git a/src/emscripten/mako.cpp b/src/emscripten/mako.cpp index 584dba7..bf9fe80 100644 --- a/src/emscripten/mako.cpp +++ b/src/emscripten/mako.cpp @@ -50,7 +50,7 @@ void MAKO::play_music(int page) stop_music(); int track = page < 100 ? cd_track[page] : 0; - if (track) { + if (track && is_cd_available()) { EM_ASM_ARGS({ xsystem35.cdPlayer.play($0, $1); }, cd_track[page] + 1, next_loop ? 0 : 1); } else { diff --git a/src/generic/mako.cpp b/src/generic/mako.cpp index c07d950..a571bda 100644 --- a/src/generic/mako.cpp +++ b/src/generic/mako.cpp @@ -98,7 +98,7 @@ void MAKO::play_music(int page) stop_music(); int track = page < 100 ? cd_track[page] : 0; - if (track) { + if (track && is_cd_available()) { if (track < playlist.size() && playlist[track]) { #ifdef __ANDROID__ // Mix_LoadMUS uses SDL_RWFromFile which requires absolute path on Android diff --git a/src/win/mako.cpp b/src/win/mako.cpp index 6a79aff..c550f5c 100644 --- a/src/win/mako.cpp +++ b/src/win/mako.cpp @@ -206,6 +206,12 @@ MAKO::MAKO(const Config& config, const GameId& game_id) : { if (!config.playlist.empty()) load_playlist(config.playlist.c_str()); + if (!is_cd_available()) { + SDL_Event event = {}; + event.user.type = sdl_custom_event_type; + event.user.code = DISABLE_CD_MENU; + SDL_PushEvent(&event); + } amus.open("AMUS.DAT"); awav.open("AWAV.DAT"); @@ -283,7 +289,7 @@ void MAKO::play_music(int page) stop_music(); size_t track = page < 100 ? cd_track[page] : 0; - if (track) { + if (track && is_cd_available()) { if (track >= playlist.size() || !playlist[track]) return; music = new Music(playlist[track], next_loop); diff --git a/src/win/nact_win.cpp b/src/win/nact_win.cpp index 6ec9fcf..95d0a4e 100644 --- a/src/win/nact_win.cpp +++ b/src/win/nact_win.cpp @@ -173,6 +173,20 @@ void NACT::set_skip_menu_state(bool enabled, bool checked) bool NACT::handle_platform_event(const SDL_Event& e) { + if (e.type == sdl_custom_event_type) { + switch (e.user.code) { + case DISABLE_CD_MENU: + { + HWND hwnd = get_hwnd(g_window); + HMENU hmenu = GetMenu(hwnd); + EnableMenuItem(hmenu, ID_OPTION_CD, MF_GRAYED); + DrawMenuBar(hwnd); + } + return true; + } + return false; + } + if (e.type != SDL_SYSWMEVENT) return false; const SDL_SysWMmsg* msg = e.syswm.msg;