From 182eb874e8ce0c2886ef5dddbdced06fac481af2 Mon Sep 17 00:00:00 2001 From: truelight Date: Sun, 19 Dec 2004 15:14:55 +0000 Subject: (svn r1174) -Fix: [Network] All strings can now be translated (no more hardcoded strings) --- network.c | 90 +++++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 64 insertions(+), 26 deletions(-) (limited to 'network.c') diff --git a/network.c b/network.c index 85ad4bdb2..7d77901b8 100644 --- a/network.c +++ b/network.c @@ -38,6 +38,7 @@ static uint16 _network_client_index = NETWORK_SERVER_INDEX + 1; /* Some externs / forwards */ extern void ShowJoinStatusWindow(); extern void StateGameLoop(); +extern uint GetCurrentCurrencyRate(); // Function that looks up the CI for a given client-index NetworkClientInfo *NetworkFindClientInfoFromIndex(uint16 client_index) @@ -76,50 +77,88 @@ void NetworkGetClientName(char *client_name, size_t size, const NetworkClientSta // This puts a text-message to the console, or in the future, the chat-box, // (to keep it all a bit more general) -void CDECL NetworkTextMessage(NetworkAction action, uint16 color, const char *name, const char *str, ...) +// If 'self_send' is true, this is the client who is sending the message +void CDECL NetworkTextMessage(NetworkAction action, uint16 color, bool self_send, const char *name, const char *str, ...) { char buf[1024]; va_list va; const int duration = 10; // Game days the messages stay visible + char message[1024]; + char temp[1024]; + StringID TempStr = STR_NULL; va_start(va, str); vsprintf(buf, str, va); va_end(va); switch (action) { - case NETWORK_ACTION_JOIN_LEAVE: - IConsolePrintF(color, "*** %s %s", name, buf); - AddTextMessage(color, duration, "*** %s %s", name, buf); + case NETWORK_ACTION_JOIN: + GetString(temp, STR_NETWORK_CLIENT_JOINED); + snprintf(message, sizeof(message), "*** %s %s", name, temp); + break; + case NETWORK_ACTION_LEAVE: + GetString(temp, STR_NETWORK_ERR_LEFT); + snprintf(message, sizeof(message), "*** %s %s (%s)", name, temp, buf); break; case NETWORK_ACTION_GIVE_MONEY: - IConsolePrintF(color, "*** %s %s", name, buf); - AddTextMessage(color, duration, "*** %s %s", name, buf); + if (self_send) { + TempStr = AllocateName(name, 0); + SetDParam(0, TempStr); + SetDParam(1, atoi(buf)); + GetString(temp, STR_NETWORK_GAVE_MONEY_AWAY); + DeleteName(TempStr); + snprintf(message, sizeof(message), "*** %s", temp); + } else { + SetDParam(0, atoi(buf)); + GetString(temp, STR_NETWORK_GIVE_MONEY); + snprintf(message, sizeof(message), "*** %s %s", name, temp); + } break; case NETWORK_ACTION_CHAT_PLAYER: - IConsolePrintF(color, "[Team] %s: %s", name, buf); - AddTextMessage(color, duration, "[Team] %s: %s", name, buf); + if (self_send) { + TempStr = AllocateName(name, 0); + SetDParam(0, TempStr); + GetString(temp, STR_NETWORK_CHAT_TO_COMPANY); + DeleteName(TempStr); + snprintf(message, sizeof(message), "%s %s", temp, buf); + } else { + TempStr = AllocateName(name, 0); + SetDParam(0, TempStr); + GetString(temp, STR_NETWORK_CHAT_COMPANY); + DeleteName(TempStr); + snprintf(message, sizeof(message), "%s %s", temp, buf); + } break; case NETWORK_ACTION_CHAT_CLIENT: - IConsolePrintF(color, "[Private] %s: %s", name, buf); - AddTextMessage(color, duration, "[Private] %s: %s", name, buf); - break; - case NETWORK_ACTION_CHAT_TO_CLIENT: - IConsolePrintF(color, "[Private] To %s: %s", name, buf); - AddTextMessage(color, duration, "[Private] To %s: %s", name, buf); - break; - case NETWORK_ACTION_CHAT_TO_PLAYER: - IConsolePrintF(color, "[Team] To %s: %s", name, buf); - AddTextMessage(color, duration, "[Team] To %s: %s", name, buf); + if (self_send) { + TempStr = AllocateName(name, 0); + SetDParam(0, TempStr); + GetString(temp, STR_NETWORK_CHAT_TO_CLIENT); + DeleteName(TempStr); + snprintf(message, sizeof(message), "%s %s", temp, buf); + } else { + TempStr = AllocateName(name, 0); + SetDParam(0, TempStr); + GetString(temp, STR_NETWORK_CHAT_CLIENT); + DeleteName(TempStr); + snprintf(message, sizeof(message), "%s %s", temp, buf); + } break; case NETWORK_ACTION_NAME_CHANGE: - IConsolePrintF(color, "*** %s changed his name to %s", name, buf); - AddTextMessage(color, duration, "*** %s changed his name to %s", name, buf); + GetString(temp, STR_NETWORK_NAME_CHANGE); + snprintf(message, sizeof(message), "*** %s %s %s", name, temp, buf); break; default: - IConsolePrintF(color, "[All] %s: %s", name, buf); - AddTextMessage(color, duration, "[All] %s: %s", name, buf); + TempStr = AllocateName(name, 0); + SetDParam(0, TempStr); + GetString(temp, STR_NETWORK_CHAT_ALL); + DeleteName(TempStr); + snprintf(message, sizeof(message), "%s %s", temp, buf); break; } + + IConsolePrintF(color, message); + AddTextMessage(color, duration, message); } // Calculate the frame-lag of a client @@ -444,16 +483,15 @@ void NetworkCloseClient(NetworkClientState *cs) if (!cs->quited && _network_server && cs->status > STATUS_INACTIVE) { // We did not receive a leave message from this client... NetworkErrorCode errorno = NETWORK_ERROR_CONNECTION_LOST; - char str1[100], str2[100]; + char str[100]; char client_name[NETWORK_NAME_LENGTH]; NetworkClientState *new_cs; NetworkGetClientName(client_name, sizeof(client_name), cs); - GetString(str1, STR_NETWORK_ERR_LEFT); - GetString(str2, STR_NETWORK_ERR_CLIENT_GENERAL + errorno); + GetString(str, STR_NETWORK_ERR_CLIENT_GENERAL + errorno); - NetworkTextMessage(NETWORK_ACTION_JOIN_LEAVE, 1, client_name, "%s (%s)", str1, str2); + NetworkTextMessage(NETWORK_ACTION_LEAVE, 1, false, client_name, str); // Inform other clients of this... strange leaving ;) FOR_ALL_CLIENTS(new_cs) { -- cgit v1.2.3-54-g00ecf