CDImage: Support sub-images, use subimages for m3u

This commit is contained in:
Connor McLaughlin
2021-03-27 02:19:23 +10:00
parent 573aa6d9cc
commit 50d712c3fe
23 changed files with 443 additions and 312 deletions

View File

@ -666,20 +666,20 @@ static void DoChangeDiscFromFile()
static void DoChangeDisc()
{
const u32 playlist_count = System::GetMediaPlaylistCount();
if (playlist_count == 0)
if (!System::HasMediaSubImages())
{
DoChangeDiscFromFile();
return;
}
const u32 current_index = (playlist_count > 0) ? System::GetMediaPlaylistIndex() : 0;
const u32 current_index = System::GetMediaSubImageIndex();
const u32 count = System::GetMediaSubImageCount();
ImGuiFullscreen::ChoiceDialogOptions options;
options.reserve(playlist_count + 1);
options.reserve(count + 1);
options.emplace_back("From File...", false);
for (u32 i = 0; i < playlist_count; i++)
options.emplace_back(System::GetMediaPlaylistPath(i), i == current_index);
for (u32 i = 0; i < count; i++)
options.emplace_back(System::GetMediaSubImageTitle(i), i == current_index);
auto callback = [](s32 index, const std::string& title, bool checked) {
if (index == 0)
@ -690,7 +690,7 @@ static void DoChangeDisc()
}
else if (index > 0)
{
System::SwitchMediaFromPlaylist(static_cast<u32>(index - 1));
System::SwitchMediaSubImage(static_cast<u32>(index - 1));
}
ClearImGuiFocus();
@ -1798,10 +1798,10 @@ void DrawSettingsWindow()
MenuHeading("Shared Settings");
settings_changed |= ToggleButton(
"Use Single Card For Playlist",
"When using a playlist (m3u) and per-game (title) memory cards, use a single memory card for all discs.",
&s_settings_copy.memory_card_use_playlist_title);
settings_changed |= ToggleButton("Use Single Card For Sub-Images",
"When using a multi-disc image (m3u/pbp) and per-game (title) memory cards, "
"use a single memory card for all discs.",
&s_settings_copy.memory_card_use_playlist_title);
static std::string memory_card_directory;
if (memory_card_directory.empty())