mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-26 23:55:40 +00:00
System: Add file title memory card type
This commit is contained in:
parent
6aa78b11fe
commit
ff0bd7abc4
|
@ -908,11 +908,13 @@ const char* Settings::GetControllerTypeDisplayName(ControllerType type)
|
|||
return s_controller_display_names[static_cast<int>(type)];
|
||||
}
|
||||
|
||||
static std::array<const char*, 4> s_memory_card_type_names = {{"None", "Shared", "PerGame", "PerGameTitle"}};
|
||||
static std::array<const char*, 4> s_memory_card_type_display_names = {
|
||||
static std::array<const char*, 5> s_memory_card_type_names = {
|
||||
{"None", "Shared", "PerGame", "PerGameTitle", "PerGameFileTitle"}};
|
||||
static std::array<const char*, 5> s_memory_card_type_display_names = {
|
||||
{TRANSLATABLE("MemoryCardType", "No Memory Card"), TRANSLATABLE("MemoryCardType", "Shared Between All Games"),
|
||||
TRANSLATABLE("MemoryCardType", "Separate Card Per Game (Game Code)"),
|
||||
TRANSLATABLE("MemoryCardType", "Separate Card Per Game (Game Title)")}};
|
||||
TRANSLATABLE("MemoryCardType", "Separate Card Per Game (Game Title)"),
|
||||
TRANSLATABLE("MemoryCardType", "Separate Card Per Game (File Title)")}};
|
||||
|
||||
std::optional<MemoryCardType> Settings::ParseMemoryCardTypeName(const char* str)
|
||||
{
|
||||
|
|
|
@ -1821,6 +1821,28 @@ void UpdateMemoryCards()
|
|||
}
|
||||
break;
|
||||
|
||||
case MemoryCardType::PerGameFileTitle:
|
||||
{
|
||||
const std::string display_name(FileSystem::GetDisplayNameFromPath(s_running_game_path));
|
||||
const std::string_view file_title(FileSystem::GetFileTitleFromPath(display_name));
|
||||
if (file_title.empty())
|
||||
{
|
||||
g_host_interface->AddFormattedOSDMessage(
|
||||
5.0f,
|
||||
g_host_interface->TranslateString("System",
|
||||
"Per-game memory card cannot be used for slot %u as the running "
|
||||
"game has no path. Using shared card instead."),
|
||||
i + 1u);
|
||||
card = MemoryCard::Open(g_host_interface->GetSharedMemoryCardPath(i));
|
||||
}
|
||||
else
|
||||
{
|
||||
card = MemoryCard::Open(
|
||||
g_host_interface->GetGameMemoryCardPath(MemoryCard::SanitizeGameTitleForFileName(file_title).c_str(), i));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case MemoryCardType::Shared:
|
||||
{
|
||||
if (g_settings.memory_card_paths[i].empty())
|
||||
|
|
|
@ -134,6 +134,7 @@ enum class MemoryCardType
|
|||
Shared,
|
||||
PerGame,
|
||||
PerGameTitle,
|
||||
PerGameFileTitle,
|
||||
Count
|
||||
};
|
||||
|
||||
|
|
|
@ -1050,6 +1050,13 @@ void QtHostInterface::populateGameListContextMenu(const GameListEntry* entry, QW
|
|||
paths[i] = QString::fromStdString(
|
||||
GetGameMemoryCardPath(MemoryCard::SanitizeGameTitleForFileName(entry->title).c_str(), i));
|
||||
break;
|
||||
case MemoryCardType::PerGameFileTitle:
|
||||
{
|
||||
const std::string display_name(FileSystem::GetDisplayNameFromPath(entry->path));
|
||||
paths[i] = QString::fromStdString(GetGameMemoryCardPath(
|
||||
MemoryCard::SanitizeGameTitleForFileName(FileSystem::GetFileTitleFromPath(display_name)).c_str(), i));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue