System: Remove memory card warnings on config change

This commit is contained in:
Stenzek 2023-08-30 18:26:12 +10:00
parent 5f1cbf4638
commit 724d5e7cf9
1 changed files with 18 additions and 6 deletions

View File

@ -2837,14 +2837,16 @@ std::unique_ptr<MemoryCard> System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp
if (is_running_psf) if (is_running_psf)
return nullptr; return nullptr;
std::string message_key = fmt::format("MemoryCard{}SharedWarning", slot);
switch (type) switch (type)
{ {
case MemoryCardType::PerGame: case MemoryCardType::PerGame:
{ {
if (s_running_game_serial.empty()) if (s_running_game_serial.empty())
{ {
Host::AddFormattedOSDMessage( Host::AddKeyedFormattedOSDMessage(
5.0f, std::move(message_key), 5.0f,
Host::TranslateString("System", "Per-game memory card cannot be used for slot %u as the running " Host::TranslateString("System", "Per-game memory card cannot be used for slot %u as the running "
"game has no code. Using shared card instead."), "game has no code. Using shared card instead."),
slot + 1u); slot + 1u);
@ -2852,6 +2854,7 @@ std::unique_ptr<MemoryCard> System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp
} }
else else
{ {
Host::RemoveKeyedOSDMessage(std::move(message_key));
return MemoryCard::Open(g_settings.GetGameMemoryCardPath(s_running_game_serial.c_str(), slot)); return MemoryCard::Open(g_settings.GetGameMemoryCardPath(s_running_game_serial.c_str(), slot));
} }
} }
@ -2860,8 +2863,8 @@ std::unique_ptr<MemoryCard> System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp
{ {
if (s_running_game_title.empty()) if (s_running_game_title.empty())
{ {
Host::AddFormattedOSDMessage( Host::AddKeyedFormattedOSDMessage(
5.0f, std::move(message_key), 5.0f,
Host::TranslateString("System", "Per-game memory card cannot be used for slot %u as the running " Host::TranslateString("System", "Per-game memory card cannot be used for slot %u as the running "
"game has no title. Using shared card instead."), "game has no title. Using shared card instead."),
slot + 1u); slot + 1u);
@ -2869,6 +2872,7 @@ std::unique_ptr<MemoryCard> System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp
} }
else else
{ {
Host::RemoveKeyedOSDMessage(std::move(message_key));
return MemoryCard::Open(g_settings.GetGameMemoryCardPath( return MemoryCard::Open(g_settings.GetGameMemoryCardPath(
MemoryCard::SanitizeGameTitleForFileName(s_running_game_title).c_str(), slot)); MemoryCard::SanitizeGameTitleForFileName(s_running_game_title).c_str(), slot));
} }
@ -2880,8 +2884,8 @@ std::unique_ptr<MemoryCard> System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp
const std::string_view file_title(Path::GetFileTitle(display_name)); const std::string_view file_title(Path::GetFileTitle(display_name));
if (file_title.empty()) if (file_title.empty())
{ {
Host::AddFormattedOSDMessage( Host::AddKeyedFormattedOSDMessage(
5.0f, std::move(message_key), 5.0f,
Host::TranslateString("System", "Per-game memory card cannot be used for slot %u as the running " Host::TranslateString("System", "Per-game memory card cannot be used for slot %u as the running "
"game has no path. Using shared card instead."), "game has no path. Using shared card instead."),
slot + 1u); slot + 1u);
@ -2889,6 +2893,7 @@ std::unique_ptr<MemoryCard> System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp
} }
else else
{ {
Host::RemoveKeyedOSDMessage(std::move(message_key));
return MemoryCard::Open( return MemoryCard::Open(
g_settings.GetGameMemoryCardPath(MemoryCard::SanitizeGameTitleForFileName(file_title).c_str(), slot)); g_settings.GetGameMemoryCardPath(MemoryCard::SanitizeGameTitleForFileName(file_title).c_str(), slot));
} }
@ -2896,17 +2901,24 @@ std::unique_ptr<MemoryCard> System::GetMemoryCardForSlot(u32 slot, MemoryCardTyp
case MemoryCardType::Shared: case MemoryCardType::Shared:
{ {
Host::RemoveKeyedOSDMessage(std::move(message_key));
return MemoryCard::Open(g_settings.GetSharedMemoryCardPath(slot)); return MemoryCard::Open(g_settings.GetSharedMemoryCardPath(slot));
} }
case MemoryCardType::NonPersistent: case MemoryCardType::NonPersistent:
{
Host::RemoveKeyedOSDMessage(std::move(message_key));
return MemoryCard::Create(); return MemoryCard::Create();
}
case MemoryCardType::None: case MemoryCardType::None:
default: default:
{
Host::RemoveKeyedOSDMessage(std::move(message_key));
return nullptr; return nullptr;
} }
} }
}
void System::UpdateMemoryCardTypes() void System::UpdateMemoryCardTypes()
{ {