#pragma once // Game texts by id (TextManager 0x6728c0, GetText 0x672f70): texts of our own // under ids the game does not use, for controls that take a text id (e.g. // tab headers), and changes to the game's own texts. #include #include namespace game { // A new text id for `text` (kept for the rest of the run; `text` must stay // valid, e.g. a literal). uint32_t RegisterText(const wchar_t* text); // Shows the game's text `id` with each word capitalized ("RUCKSACK" -> // "Rucksack"). Call at startup. void CapitalizeText(uint32_t id); // Shows `to` in place of `from` wherever a game text contains it (item names, // tooltips, ...). void ReplaceInTexts(const std::wstring& from, const std::wstring& to); // The game's text `id` without our changes (empty if there is none). std::wstring GameText(uint32_t id); // Text `id` as the game shows it, with our changes (without overrides). std::wstring ShownText(uint32_t id); // Shows `text` for the game's text `id` from now on (e.g. a tooltip naming a // key binding); setting the same text again costs nothing. void SetTextOverride(uint32_t id, const std::wstring& text); // The game's text under key `key` (TextManager::GetTextByKey 0x672fd0), e.g. // "UI_ATTRIB_STRENGTH"; empty if there is none. std::wstring GameTextByKey(const char* key); // A game wide string ({begin, end, capacity end}, e.g. a tooltip's text) as // text, and replaced by `value` (grown with the game's allocator). std::wstring WideStringText(const void* string); void SetWideString(void* string, const std::wstring& value); } // namespace game