diff options
-rw-r--r-- | src/control/Script.cpp | 2 | ||||
-rw-r--r-- | src/render/Font.cpp | 7 | ||||
-rw-r--r-- | src/text/Messages.cpp | 45 |
3 files changed, 34 insertions, 20 deletions
diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 0df6d5a2..8b046bf2 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -4126,6 +4126,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command) CMessages::AddMessageJumpQ(key, ScriptParams[0], ScriptParams[1]); return 0; } + /* case COMMAND_PRINT_SOON: { wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp); @@ -4133,6 +4134,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command) CMessages::AddMessageSoon(key, ScriptParams[0], ScriptParams[1]); return 0; } + */ case COMMAND_CLEAR_PRINTS: CMessages::ClearMessages(); return 0; diff --git a/src/render/Font.cpp b/src/render/Font.cpp index f14e45cd..b6ae601f 100644 --- a/src/render/Font.cpp +++ b/src/render/Font.cpp @@ -468,17 +468,21 @@ bool CFont::IsAnsiCharacter(wchar *s) void CFont::PrintString(float xstart, float ystart, wchar *s) { - CRect rect; + CRect rect(1000000.0f, -1000000.0f, 1000000.0f, -1000000.0f); int numSpaces; float lineLength; float x, y; bool first; wchar *start, *t; + Details.bFlash = false; + if(*s == '*') return; + Details.anonymous_25++; if(Details.background){ + RenderState.color = Details.color; GetNumberLines(xstart, ystart, s); // BUG: result not used GetTextRect(&rect, xstart, ystart, s); CSprite2d::DrawRect(rect, Details.backgroundColor); @@ -1292,6 +1296,7 @@ CFont::RenderFontBuffer() RenderState = *(CFontRenderState*)&FontRenderStateBuf[0]; textPosX = RenderState.fTextPosX; textPosY = RenderState.fTextPosY; + color = RenderState.color; tFontRenderStatePointer pRenderStateBufPointer; pRenderStateBufPointer.pRenderState = (CFontRenderState*)&FontRenderStateBuf[0]; for (++pRenderStateBufPointer.pRenderState; pRenderStateBufPointer.pStr < FontRenderStatePointer.pStr; pRenderStateBufPointer.pStr++) { diff --git a/src/text/Messages.cpp b/src/text/Messages.cpp index 82ab294c..70225860 100644 --- a/src/text/Messages.cpp +++ b/src/text/Messages.cpp @@ -11,6 +11,8 @@ #include "Font.h" +// --MIAMI: file done + tMessage CMessages::BriefMessages[NUMBRIEFMESSAGES]; tPreviousBrief CMessages::PreviousBriefs[NUMPREVIOUSBRIEFS]; tBigMessage CMessages::BIGMessages[NUMBIGMESSAGES]; @@ -70,7 +72,7 @@ CMessages::WideStringCompare(wchar *str1, wchar *str2, uint16 size) return false; for (int32 i = 0; i < size; i++) { - if (FixupChar(str1[i]) == '\0') + if (FixupChar(str1[i]) == '\0' || i > size) break; if (FixupChar(str1[i]) != FixupChar(str2[i])) @@ -297,6 +299,7 @@ CMessages::AddBigMessage(wchar *msg, uint32 time, uint16 style) BIGMessages[style].m_Stack[0].m_nNumber[5] = -1; BIGMessages[style].m_Stack[0].m_pString = nil; } + void CMessages::AddBigMessageQ(wchar *msg, uint32 time, uint16 style) { @@ -327,10 +330,8 @@ CMessages::AddBigMessageQ(wchar *msg, uint32 time, uint16 style) void CMessages::AddToPreviousBriefArray(wchar *text, int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6, wchar *string) { - int32 i = 0; - while (i < NUMPREVIOUSBRIEFS) { - if (PreviousBriefs[i].m_pText == nil) - break; + int32 i; + for (i = 0; PreviousBriefs[i].m_pText && i < NUMPREVIOUSBRIEFS; i++) { if (PreviousBriefs[i].m_nNumber[0] == n1 && PreviousBriefs[i].m_nNumber[1] == n2 && PreviousBriefs[i].m_nNumber[2] == n3 @@ -340,8 +341,6 @@ CMessages::AddToPreviousBriefArray(wchar *text, int32 n1, int32 n2, int32 n3, in && PreviousBriefs[i].m_pText == text && PreviousBriefs[i].m_pString == string) return; - - i++; } if (i != 0) { @@ -374,6 +373,14 @@ CMessages::InsertNumberInString(wchar *str, int32 n1, int32 n2, int32 n3, int32 return; } + sprintf(numStr, "%d", n1); + size_t outLen = strlen(numStr); + AsciiToUnicode(numStr, wNumStr); + if (str[0] == 0) { + *outstr = '\0'; + return; + } + int32 size = GetWideStringLength(str); int32 i = 0; @@ -385,6 +392,11 @@ CMessages::InsertNumberInString(wchar *str, int32 n1, int32 n2, int32 n3, int32 #else if (str[c] == '~' && str[c + 1] == '1' && str[c + 2] == '~') { #endif + c += 3; + for (int j=0; j<outLen; j++) + *(outstr++) = wNumStr[j++]; + + i++; switch (i) { case 0: sprintf(numStr, "%d", n1); break; case 1: sprintf(numStr, "%d", n2); break; @@ -393,14 +405,8 @@ CMessages::InsertNumberInString(wchar *str, int32 n1, int32 n2, int32 n3, int32 case 4: sprintf(numStr, "%d", n5); break; case 5: sprintf(numStr, "%d", n6); break; } - i++; + outLen = strlen(numStr); AsciiToUnicode(numStr, wNumStr); - - int j = 0; - while (wNumStr[j] != '\0') - *(outstr++) = wNumStr[j++]; - - c += 3; } else { *(outstr++) = str[c++]; } @@ -424,10 +430,9 @@ CMessages::InsertStringInString(wchar *str1, wchar *str2) for (i = 0; i < total_size; ) { #ifdef MORE_LANGUAGES if ((CFont::IsJapanese() && *_str1 == (0x8000 | '~') && *(_str1 + 1) == (0x8000 | 'a') && *(_str1 + 2) == (0x8000 | '~')) - || (*_str1 == '~' && *(_str1 + 1) == 'a' && *(_str1 + 2) == '~')) - { + || (*_str1 == '~' && *(_str1 + 1) == 'a' && *(_str1 + 2) == '~')) { #else - if (*_str1 == '~' && *(_str1 + 1) == 'a' && *(_str1 + 2) == '~') { + if (*_str1 == '~' && *(_str1 + 1) == 'a' && *(_str1 + 2) == '~') { #endif _str1 += 3; for (int j = 0; j < str2_size; j++) { @@ -466,10 +471,12 @@ CMessages::InsertPlayerControlKeysInString(wchar *str) if (str[i] == '~' && str[i + 1] == 'k' && str[i + 2] == '~') { #endif i += 4; - for (int32 cont = 0; cont < MAX_CONTROLLERACTIONS; cont++) { + bool done = false; + 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)) { + done = true; ControlsManager.GetWideStringOfCommandKeys(cont, keybuf, 256); uint16 keybuf_size = GetWideStringLength(keybuf); for (uint16 j = 0; j < keybuf_size; j++) { @@ -751,7 +758,7 @@ CMessages::ClearThisPrint(wchar *str) } BriefMessages[i].m_pText = nil; BriefMessages[0].m_nStartTime = CTimer::GetTimeInMilliseconds(); - if (BriefMessages[0].m_pText == nil) + if (BriefMessages[0].m_pText != nil) AddToPreviousBriefArray( BriefMessages[0].m_pText, BriefMessages[0].m_nNumber[0], |