1
0
Fork 0

Codechange: [Network] Change ChatMessage's message to std::string and simplify some code

pull/9213/head
rubidium42 2021-05-08 10:19:42 +02:00 committed by GitHub
parent a879996012
commit e2774354b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 5 additions and 14 deletions

View File

@ -262,7 +262,7 @@ void NetworkTextMessage(NetworkAction action, TextColour colour, bool self_send,
DEBUG(desync, 1, "msg: %08x; %02x; %s", _date, _date_fract, message); DEBUG(desync, 1, "msg: %08x; %02x; %s", _date, _date_fract, message);
IConsolePrintF(colour, "%s", message); IConsolePrintF(colour, "%s", message);
NetworkAddChatMessage((TextColour)colour, _settings_client.gui.network_chat_timeout, "%s", message); NetworkAddChatMessage((TextColour)colour, _settings_client.gui.network_chat_timeout, message);
} }
/* Calculate the frame-lag of a client */ /* Calculate the frame-lag of a client */

View File

@ -39,7 +39,7 @@ static const uint NETWORK_CHAT_LINE_SPACING = 3;
/** Container for a message. */ /** Container for a message. */
struct ChatMessage { struct ChatMessage {
char message[DRAW_STRING_BUFFER]; ///< The action message. std::string message; ///< The action message.
TextColour colour; ///< The colour of the message. TextColour colour; ///< The colour of the message.
std::chrono::steady_clock::time_point remove_time; ///< The time to remove the message. std::chrono::steady_clock::time_point remove_time; ///< The time to remove the message.
}; };
@ -87,23 +87,14 @@ static inline bool HaveChatMessages(bool show_all)
* @param duration The duration of the chat message in seconds * @param duration The duration of the chat message in seconds
* @param message message itself in printf() style * @param message message itself in printf() style
*/ */
void CDECL NetworkAddChatMessage(TextColour colour, uint duration, const char *message, ...) void CDECL NetworkAddChatMessage(TextColour colour, uint duration, const std::string &message)
{ {
char buf[DRAW_STRING_BUFFER];
va_list va;
va_start(va, message);
vseprintf(buf, lastof(buf), message, va);
va_end(va);
Utf8TrimString(buf, DRAW_STRING_BUFFER);
if (_chatmsg_list.size() == MAX_CHAT_MESSAGES) { if (_chatmsg_list.size() == MAX_CHAT_MESSAGES) {
_chatmsg_list.pop_back(); _chatmsg_list.pop_back();
} }
ChatMessage *cmsg = &_chatmsg_list.emplace_front(); ChatMessage *cmsg = &_chatmsg_list.emplace_front();
strecpy(cmsg->message, buf, lastof(cmsg->message)); cmsg->message = message;
cmsg->colour = (colour & TC_IS_PALETTE_COLOUR) ? colour : TC_WHITE; cmsg->colour = (colour & TC_IS_PALETTE_COLOUR) ? colour : TC_WHITE;
cmsg->remove_time = std::chrono::steady_clock::now() + std::chrono::seconds(duration); cmsg->remove_time = std::chrono::steady_clock::now() + std::chrono::seconds(duration);

View File

@ -84,7 +84,7 @@ uint NetworkServerKickOrBanIP(ClientID client_id, bool ban, const char *reason);
uint NetworkServerKickOrBanIP(const char *ip, bool ban, const char *reason); uint NetworkServerKickOrBanIP(const char *ip, bool ban, const char *reason);
void NetworkInitChatMessage(); void NetworkInitChatMessage();
void CDECL NetworkAddChatMessage(TextColour colour, uint duration, const char *message, ...) WARN_FORMAT(3, 4); void CDECL NetworkAddChatMessage(TextColour colour, uint duration, const std::string &message);
void NetworkUndrawChatMessage(); void NetworkUndrawChatMessage();
void NetworkChatMessageLoop(); void NetworkChatMessageLoop();