diff --git a/source/blood/src/messages.cpp b/source/blood/src/messages.cpp index 8350c7086..6981527a0 100644 --- a/source/blood/src/messages.cpp +++ b/source/blood/src/messages.cpp @@ -518,7 +518,7 @@ void CGameMessageMgr::SortMessagesByTime(messageStruct** messages, int count) { void CPlayerMsg::Clear(void) { - at4[0] = 0; + text[0] = 0; at0 = 0; } @@ -531,7 +531,7 @@ void CPlayerMsg::Term(void) void CPlayerMsg::Draw(void) { char buffer[44]; - strcpy(buffer, at4); + strcpy(buffer, text); if ((int)totalclock & 16) strcat(buffer, "_"); int x = gViewMode == 3 ? gViewX0S : 0; @@ -546,8 +546,8 @@ bool CPlayerMsg::AddChar(char ch) { if (at0 < 40) { - at4[at0++] = ch; - at4[at0] = 0; + text[at0++] = ch; + text[at0] = 0; return true; } return false; @@ -556,20 +556,32 @@ bool CPlayerMsg::AddChar(char ch) void CPlayerMsg::DelChar(void) { if (at0 > 0) - at4[--at0] = 0; + text[--at0] = 0; } void CPlayerMsg::Set(const char * pzString) { - strncpy(at4, pzString, 40); + strncpy(text, pzString, 40); at0 = ClipHigh(strlen(pzString), 40); - at4[at0] = 0; + text[at0] = 0; } void CPlayerMsg::Send(void) { - netBroadcastMessage(myconnectindex, at4); - viewSetMessage(at4); + if (VanillaMode() || !IsWhitespaceOnly(text)) + { + netBroadcastMessage(myconnectindex, text); + if (!VanillaMode()) + { + char *myName = gProfile[myconnectindex].name; + char szTemp[128]; + sprintf(szTemp, "%s: %s", myName, text); + viewSetMessage(szTemp, 10); // 10: dark blue + } + else + viewSetMessage(text); + } + Term(); keyFlushScans(); } @@ -611,7 +623,7 @@ void CPlayerMsg::ProcessKeys(void) break; case sc_Enter: case sc_kpad_Enter: - if (gCheatMgr.Check(at4)) + if (gCheatMgr.Check(text)) Term(); else Send(); @@ -629,6 +641,15 @@ void CPlayerMsg::ProcessKeys(void) } } +bool CPlayerMsg::IsWhitespaceOnly(const char * const pzString) +{ + const char *p = pzString; + while (*p != 0) + if (*p++ > 32) + return false; + return true; +} + CCheatMgr::CHEATINFO CCheatMgr::s_CheatInfo[] = { {"NQLGB", kCheatMpkfa, 0 }, // MPKFA (Invincibility) {"DBQJONZBTT", kCheatCapInMyAss, 0 }, // CAPINMYASS (Disable invincibility ) diff --git a/source/blood/src/messages.h b/source/blood/src/messages.h index c184bb811..03b44ca45 100644 --- a/source/blood/src/messages.h +++ b/source/blood/src/messages.h @@ -81,8 +81,8 @@ class CPlayerMsg { public: int at0; - char at4[41]; - CPlayerMsg() { at0 = 0; at4[0] = 0; } + char text[41]; + CPlayerMsg() { at0 = 0; text[0] = 0; } void Clear(void); void Term(void); void Draw(void); @@ -91,6 +91,8 @@ public: void Set(const char *pzString); void Send(void); void ProcessKeys(void); +private: + bool IsWhitespaceOnly(const char* const pzString); }; class CCheatMgr diff --git a/source/blood/src/network.cpp b/source/blood/src/network.cpp index ba0e95c38..b65488cb6 100644 --- a/source/blood/src/network.cpp +++ b/source/blood/src/network.cpp @@ -501,7 +501,7 @@ void netGetPackets(void) pPacket += 4; if (*pPacket != '/' || (*pPacket == 0 && *(pPacket+1) == 0) || (*(pPacket+1) >= '1' && *(pPacket+1) <= '8' && *(pPacket+1)-'1' == myconnectindex)) { - sprintf(buffer, "%s: %s", gProfile[nPlayer].name, pPacket); + sprintf(buffer, VanillaMode() ? "%s : %s" : "%s: %s", gProfile[nPlayer].name, pPacket); viewSetMessage(buffer, VanillaMode() ? 0 : 10); // 10: dark blue sndStartSample("DMRADIO", 128, -1); }