mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Add player name placeholder and improve dialog text substitution
Adds $n placeholder for player character names in quest and gossip dialog. Enhances documentation for three-option gender placeholders to clarify support for neutral terms like friend/champion/sibling. Player name defaults to 'Adventurer' when character not loaded.
This commit is contained in:
parent
0071c24713
commit
e7f8fb557c
2 changed files with 16 additions and 5 deletions
|
|
@ -4649,11 +4649,15 @@ std::string GameScreen::getSettingsPath() {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GameScreen::replaceGenderPlaceholders(const std::string& text, game::GameHandler& gameHandler) {
|
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;
|
game::Gender gender = game::Gender::NONBINARY;
|
||||||
|
std::string playerName = "Adventurer";
|
||||||
const auto* character = gameHandler.getActiveCharacter();
|
const auto* character = gameHandler.getActiveCharacter();
|
||||||
if (character) {
|
if (character) {
|
||||||
gender = character->gender;
|
gender = character->gender;
|
||||||
|
if (!character->name.empty()) {
|
||||||
|
playerName = character->name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
game::Pronouns pronouns = game::Pronouns::forGender(gender);
|
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);
|
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)
|
// $p = subject pronoun (he/she/they)
|
||||||
// $o = object pronoun (him/her/them)
|
// $o = object pronoun (him/her/them)
|
||||||
// $s = possessive adjective (his/her/their)
|
// $s = possessive adjective (his/her/their)
|
||||||
|
|
@ -4678,6 +4683,7 @@ std::string GameScreen::replaceGenderPlaceholders(const std::string& text, game:
|
||||||
std::string replacement;
|
std::string replacement;
|
||||||
|
|
||||||
switch (code) {
|
switch (code) {
|
||||||
|
case 'n': replacement = playerName; break;
|
||||||
case 'p': replacement = pronouns.subject; break;
|
case 'p': replacement = pronouns.subject; break;
|
||||||
case 'o': replacement = pronouns.object; break;
|
case 'o': replacement = pronouns.object; break;
|
||||||
case 's': replacement = pronouns.possessive; break;
|
case 's': replacement = pronouns.possessive; break;
|
||||||
|
|
@ -4691,7 +4697,7 @@ std::string GameScreen::replaceGenderPlaceholders(const std::string& text, game:
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replace the pronoun placeholder
|
// Replace the placeholder
|
||||||
result.replace(pos, 2, replacement);
|
result.replace(pos, 2, replacement);
|
||||||
pos += replacement.length();
|
pos += replacement.length();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,16 @@
|
||||||
namespace wowee { namespace ui {
|
namespace wowee { namespace ui {
|
||||||
|
|
||||||
namespace {
|
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) {
|
std::string replaceGenderPlaceholders(const std::string& text, game::GameHandler& gameHandler) {
|
||||||
game::Gender gender = game::Gender::NONBINARY;
|
game::Gender gender = game::Gender::NONBINARY;
|
||||||
|
std::string playerName = "Adventurer";
|
||||||
const auto* character = gameHandler.getActiveCharacter();
|
const auto* character = gameHandler.getActiveCharacter();
|
||||||
if (character) {
|
if (character) {
|
||||||
gender = character->gender;
|
gender = character->gender;
|
||||||
|
if (!character->name.empty()) {
|
||||||
|
playerName = character->name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
game::Pronouns pronouns = game::Pronouns::forGender(gender);
|
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);
|
s.erase(s.find_last_not_of(" \t\n\r") + 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Replace pronoun placeholders
|
// Replace simple placeholders
|
||||||
size_t pos = 0;
|
size_t pos = 0;
|
||||||
while ((pos = result.find('$', pos)) != std::string::npos) {
|
while ((pos = result.find('$', pos)) != std::string::npos) {
|
||||||
if (pos + 1 >= result.length()) break;
|
if (pos + 1 >= result.length()) break;
|
||||||
|
|
@ -31,6 +35,7 @@ std::string replaceGenderPlaceholders(const std::string& text, game::GameHandler
|
||||||
std::string replacement;
|
std::string replacement;
|
||||||
|
|
||||||
switch (code) {
|
switch (code) {
|
||||||
|
case 'n': replacement = playerName; break;
|
||||||
case 'p': replacement = pronouns.subject; break;
|
case 'p': replacement = pronouns.subject; break;
|
||||||
case 'o': replacement = pronouns.object; break;
|
case 'o': replacement = pronouns.object; break;
|
||||||
case 's': replacement = pronouns.possessive; break;
|
case 's': replacement = pronouns.possessive; break;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue