diff --git a/src/ui/game_screen.cpp b/src/ui/game_screen.cpp index 5d3a9e46..d2c381c8 100644 --- a/src/ui/game_screen.cpp +++ b/src/ui/game_screen.cpp @@ -4649,11 +4649,15 @@ std::string GameScreen::getSettingsPath() { } std::string GameScreen::replaceGenderPlaceholders(const std::string& text, game::GameHandler& gameHandler) { - // Get player gender and pronouns + // Get player gender, pronouns, and name game::Gender gender = game::Gender::NONBINARY; + std::string playerName = "Adventurer"; const auto* character = gameHandler.getActiveCharacter(); if (character) { gender = character->gender; + if (!character->name.empty()) { + playerName = character->name; + } } game::Pronouns pronouns = game::Pronouns::forGender(gender); @@ -4665,7 +4669,8 @@ std::string GameScreen::replaceGenderPlaceholders(const std::string& text, game: s.erase(s.find_last_not_of(" \t\n\r") + 1); }; - // Replace pronoun placeholders first (simpler, no complex parsing) + // Replace simple placeholders first + // $n = player name // $p = subject pronoun (he/she/they) // $o = object pronoun (him/her/them) // $s = possessive adjective (his/her/their) @@ -4678,6 +4683,7 @@ std::string GameScreen::replaceGenderPlaceholders(const std::string& text, game: std::string replacement; switch (code) { + case 'n': replacement = playerName; break; case 'p': replacement = pronouns.subject; break; case 'o': replacement = pronouns.object; break; case 's': replacement = pronouns.possessive; break; @@ -4691,7 +4697,7 @@ std::string GameScreen::replaceGenderPlaceholders(const std::string& text, game: continue; } - // Replace the pronoun placeholder + // Replace the placeholder result.replace(pos, 2, replacement); pos += replacement.length(); } diff --git a/src/ui/quest_log_screen.cpp b/src/ui/quest_log_screen.cpp index 26282895..c00bdd12 100644 --- a/src/ui/quest_log_screen.cpp +++ b/src/ui/quest_log_screen.cpp @@ -6,12 +6,16 @@ namespace wowee { namespace ui { namespace { -// Helper function to replace gender placeholders and pronouns +// Helper function to replace gender placeholders, pronouns, and name std::string replaceGenderPlaceholders(const std::string& text, game::GameHandler& gameHandler) { game::Gender gender = game::Gender::NONBINARY; + std::string playerName = "Adventurer"; const auto* character = gameHandler.getActiveCharacter(); if (character) { gender = character->gender; + if (!character->name.empty()) { + playerName = character->name; + } } game::Pronouns pronouns = game::Pronouns::forGender(gender); @@ -22,7 +26,7 @@ std::string replaceGenderPlaceholders(const std::string& text, game::GameHandler s.erase(s.find_last_not_of(" \t\n\r") + 1); }; - // Replace pronoun placeholders + // Replace simple placeholders size_t pos = 0; while ((pos = result.find('$', pos)) != std::string::npos) { if (pos + 1 >= result.length()) break; @@ -31,6 +35,7 @@ std::string replaceGenderPlaceholders(const std::string& text, game::GameHandler std::string replacement; switch (code) { + case 'n': replacement = playerName; break; case 'p': replacement = pronouns.subject; break; case 'o': replacement = pronouns.object; break; case 's': replacement = pronouns.possessive; break;