diff options
author | Sergeanur <s.anureev@yandex.ua> | 2021-01-22 04:49:17 +0100 |
---|---|---|
committer | Sergeanur <s.anureev@yandex.ua> | 2021-01-22 04:49:17 +0100 |
commit | 8dab92d158be70e49b9fff04f7187023aa1cf3c3 (patch) | |
tree | 595da8f58e3350fa71fb752cbeeb89024faa5c61 /src/text/Messages.cpp | |
parent | Load LCS radar blips (diff) | |
download | re3-8dab92d158be70e49b9fff04f7187023aa1cf3c3.tar re3-8dab92d158be70e49b9fff04f7187023aa1cf3c3.tar.gz re3-8dab92d158be70e49b9fff04f7187023aa1cf3c3.tar.bz2 re3-8dab92d158be70e49b9fff04f7187023aa1cf3c3.tar.lz re3-8dab92d158be70e49b9fff04f7187023aa1cf3c3.tar.xz re3-8dab92d158be70e49b9fff04f7187023aa1cf3c3.tar.zst re3-8dab92d158be70e49b9fff04f7187023aa1cf3c3.zip |
Diffstat (limited to 'src/text/Messages.cpp')
-rw-r--r-- | src/text/Messages.cpp | 78 |
1 files changed, 73 insertions, 5 deletions
diff --git a/src/text/Messages.cpp b/src/text/Messages.cpp index 440746c0..1027c0ee 100644 --- a/src/text/Messages.cpp +++ b/src/text/Messages.cpp @@ -11,6 +11,8 @@ #include "Font.h" +#include "Pad.h" + // --MIAMI: file done tMessage CMessages::BriefMessages[NUMBRIEFMESSAGES]; @@ -443,6 +445,64 @@ CMessages::InsertStringInString(wchar *str1, wchar *str2) str1[i++] = '\0'; } +int +CMessages::GetTokenPadKeyString(const wchar *in, wchar *out) +{ + wchar str[256]; + memset(str, 0, sizeof(str)); + str[0] = 'C'; + + // TODO: there was a switch here but that's stupid + str[1] = CPad::GetPad(0)->Mode + 48; + + while (*in != '~') in++; + in++; + + int i = 1; + while (*in != '~') + str[1+i++] = *(in++); + + wchar *text = TheText.Get(UnicodeToAscii(str)); + if (!text) return i; + while (text[0] != '\0') + { + if (text[0] == '~') + { + switch (text[1]) + { + case 'L': + *(out++) = 'M'; + break; + case 'N': + *(out++) = 'O'; + break; + case 'O': + *(out++) = 227; + break; + case 'R': + *(out++) = 'S'; + break; + case 'S': + *(out++) = 225; + break; + case 'T': + *(out++) = 224; + break; + case 'X': + *(out++) = 226; + break; + default: + break; + } + text += 3; + } + else { + *(out++) = *(text++); + } + } + return i; +} + void CMessages::InsertPlayerControlKeysInString(wchar *str) { @@ -452,7 +512,7 @@ CMessages::InsertPlayerControlKeysInString(wchar *str) if (!str) return; uint16 strSize = GetWideStringLength(str); - memset(keybuf, 0, 256*sizeof(wchar)); + memset(keybuf, 0, 256*sizeof(wchar)); // not memset? :O wchar *_outstr = outstr; for (i = 0; i < strSize;) { @@ -462,9 +522,16 @@ CMessages::InsertPlayerControlKeysInString(wchar *str) #else if (str[i] == '~' && str[i + 1] == 'k' && str[i + 2] == '~') { #endif + memset(keybuf, 0, 256 * sizeof(wchar)); i += 4; - bool done = false; - for (int32 cont = 0; cont < MAX_CONTROLLERACTIONS && !done; cont++) { + i += GetTokenPadKeyString(&str[i], keybuf) + 1; + uint16 keybuf_size = GetWideStringLength(keybuf); + for (uint16 j = 0; j < keybuf_size; j++) { + *(_outstr++) = keybuf[j]; + keybuf[j] = '\0'; + } + + /*for (int32 cont = 0; cont < MAX_CONTROLLERACTIONS && !done; cont++) { uint16 contSize = GetWideStringLength(ControlsManager.m_aActionNames[cont]); if (contSize != 0) { if (WideStringCompare(&str[i], ControlsManager.m_aActionNames[cont], contSize)) { @@ -478,7 +545,7 @@ CMessages::InsertPlayerControlKeysInString(wchar *str) i += contSize + 1; } } - } + }*/ } else { *(_outstr++) = str[i++]; } @@ -823,4 +890,5 @@ CMessages::ClearThisBigPrintNow(uint32 id) ClearThisBigPrint(BIGMessages[id].m_Stack[0].m_pText); CHud::m_BigMessage[id][0] = '\0'; BigMessageInUse[id] = 0.0f; -}
\ No newline at end of file +} + |