From: terencehill Date: Fri, 8 Apr 2022 12:37:02 +0000 (+0200) Subject: Merge branch 'master' into terencehill/welcome_dialog_translatable X-Git-Tag: xonotic-v0.8.5~81^2~1 X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=6f3a2d52796c4bb7cb689188e2fe5a733ad49d7c;hp=-c Merge branch 'master' into terencehill/welcome_dialog_translatable --- 6f3a2d52796c4bb7cb689188e2fe5a733ad49d7c diff --combined qcsrc/client/main.qc index 3c3b5bc7e8,8165f4cead..1c7013a834 --- a/qcsrc/client/main.qc +++ b/qcsrc/client/main.qc @@@ -490,7 -490,7 +490,7 @@@ float CSQC_InputEvent(int bInputType, f if (nPrimary == K_ESCAPE && !(hudShiftState & S_SHIFT) && key_pressed) { - if (cvar("_menu_gamemenu_dialog_available")) + if (!isdemo() && cvar("_menu_gamemenu_dialog_available")) { localcmd("\nmenu_showgamemenudialog\n"); return true; @@@ -1053,7 -1053,9 +1053,9 @@@ NET_HANDLE(ENT_CLIENT_SCORES_INFO, boo strcpy(teamscores_label(i), ReadString()); teamscores_flags(i) = ReadByte(); } - net_handle_ServerWelcome(); + bool welcome_msg_too = ReadByte(); + if (welcome_msg_too) + net_handle_ServerWelcome(); return = true; Scoreboard_InitScores(); Gamemode_Init(); @@@ -1314,55 -1316,6 +1316,55 @@@ NET_HANDLE(TE_CSQC_WEAPONCOMPLAIN, boo } } +string translate_modifications(string s) +{ + return build_mutator_list(s); +} + +string translate_weaponarena(string s) +{ + if (s == "") return s; + if (s == "All Weapons Arena") return _("All Weapons Arena"); + if (s == "All Available Weapons Arena") return _("All Available Weapons Arena"); + if (s == "Most Weapons Arena") return _("Most Weapons Arena"); + if (s == "Most Available Weapons Arena") return _("Most Available Weapons Arena"); + if (s == "Dev All Weapons Arena") return s; // development option, do not translate + if (s == "Dev All Available Weapons Arena") return s; // development option, do not translate + if (s == "No Weapons Arena") return _("No Weapons Arena"); + + int n = tokenizebyseparator(s, " & "); + string wpn_list = ""; + for (int i = 0; i < n; i++) + { + Weapon wep = Weapon_from_name(argv(i)); + if (wep == WEP_Null) + LOG_INFO("^3Warning: ^7server sent an invalid weapon name\n"); + wpn_list = cons_mid(wpn_list, " & ", wep.m_name); + } + if (wpn_list != "") + return sprintf(_("%s Arena"), wpn_list); + else + return _("No Weapons Arena"); +} + +string GetVersionMessage(string hostversion, bool version_mismatch, bool version_check) +{ + string xonotic_hostversion = strcat("Xonotic ", hostversion); + if (version_mismatch) + { + if(!version_check) + return strcat(sprintf(_("This is %s"), xonotic_hostversion), "\n^3", + _("Your client version is outdated."), "\n\n\n", + _("### YOU WON'T BE ABLE TO PLAY ON THIS SERVER ###"), "\n\n\n", + _("Please update!")); + else + return strcat(sprintf(_("This is %s"), xonotic_hostversion), "\n^3", + _("This server is using an outdated Xonotic version."), "\n\n\n", + _("### THIS SERVER IS INCOMPATIBLE AND THUS YOU CANNOT JOIN ###")); + } + return sprintf(_("Welcome to %s"), xonotic_hostversion); +} + bool net_handle_ServerWelcome() { bool campaign = ReadByte(); @@@ -1386,32 -1339,20 +1388,32 @@@ bool force_centerprint = ReadByte(); string hostname = ReadString(); - string ver = ReadString(); - string modifications = ReadString(); + + string hostversion = ReadString(); + bool version_mismatch = ReadByte(); + bool version_check = ReadByte(); + string ver = GetVersionMessage(hostversion, version_mismatch, version_check); + + string modifications = translate_modifications(ReadString()); + string weaponarena_list = translate_weaponarena(ReadString()); string cache_mutatormsg = ReadString(); - string mutator_msg = ReadString(); string motd = ReadString(); string msg = ""; msg = strcat(msg, ver); msg = strcat(msg, "^8\n\n", strcat(_("Gametype:"), " ^1", MapInfo_Type_ToText(gametype)), "^8\n"); + + modifications = cons_mid(modifications, ", ", weaponarena_list); if(modifications != "") msg = strcat(msg, "^8\n", _("Active modifications:"), " ^3", modifications, "^8\n"); + if (cache_mutatormsg != "") msg = strcat(msg, "\n\n^8", _("Special gameplay tips:"), " ^7", cache_mutatormsg); + string mutator_msg = ""; + MUTATOR_CALLHOOK(BuildGameplayTipsString, mutator_msg); + mutator_msg = M_ARGV(0, string); msg = strcat(msg, mutator_msg); // trust that the mutator will do proper formatting + if (motd != "") msg = strcat(msg, "\n\n^8", _("MOTD:"), " ^7", motd);