X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fmain.qc;h=d1f6e1b8d102d67570dd1b2e09a37ed93c94bacf;hb=af6032d7f97d3915ab37dca9f4ec2111a1bbf0c7;hp=757effd99bf766574f3fb328e25766ad5e782a90;hpb=579b98f2d87d5d2753618322ade31af1422d91ec;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/main.qc b/qcsrc/client/main.qc index 757effd99..d1f6e1b8d 100644 --- a/qcsrc/client/main.qc +++ b/qcsrc/client/main.qc @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -57,6 +58,8 @@ void CSQC_Init() maxclients = i; } + ReplicateVars(REPLICATEVARS_SEND_ALL); + // needs to be done so early because of the constants they create static_init(); static_init_late(); @@ -187,7 +190,7 @@ void Shutdown() deactivate_minigame(); HUD_MinigameMenu_Close(NULL, NULL, NULL); - ReplicateVars(true); // destroy + ReplicateVars(REPLICATEVARS_DESTROY); } void AuditLists() @@ -450,10 +453,13 @@ float CSQC_InputEvent(int bInputType, float nPrimary, float nSecondary) { TC(int, bInputType); bool override = false; + override |= HUD_Panel_InputEvent(bInputType, nPrimary, nSecondary); if (override) return true; + override |= HUD_Panel_Chat_InputEvent(bInputType, nPrimary, nSecondary); + override |= QuickMenu_InputEvent(bInputType, nPrimary, nSecondary); override |= HUD_Radar_InputEvent(bInputType, nPrimary, nSecondary); @@ -1183,12 +1189,10 @@ NET_HANDLE(TE_CSQC_RACE, bool isNew) case RACE_NET_SPEED_AWARD: race_speedaward = ReadInt24_t() * GetSpeedUnitFactor(autocvar_hud_panel_physics_speed_unit); strcpy(race_speedaward_holder, ReadString()); - strcpy(race_speedaward_unit, GetSpeedUnit(autocvar_hud_panel_physics_speed_unit)); break; case RACE_NET_SPEED_AWARD_BEST: race_speedaward_alltimebest = ReadInt24_t() * GetSpeedUnitFactor(autocvar_hud_panel_physics_speed_unit); strcpy(race_speedaward_alltimebest_holder, ReadString()); - strcpy(race_speedaward_alltimebest_unit, GetSpeedUnit(autocvar_hud_panel_physics_speed_unit)); break; case RACE_NET_RANKINGS_CNT: RANKINGS_DISPLAY_CNT = ReadByte(); @@ -1282,6 +1286,40 @@ NET_HANDLE(TE_CSQC_WEAPONCOMPLAIN, bool isNew) } } +NET_HANDLE(TE_CSQC_SERVERINFO, bool isNew) +{ + bool force_centerprint = ReadByte(); + string hostname = ReadString(); + string ver = ReadString(); + string modifications = ReadString(); + string cache_mutatormsg = ReadString(); + string mutator_msg = ReadString(); + string motd = ReadString(); + + string msg = ""; + msg = strcat(msg, ver); + msg = strcat(msg, "^8\n\n", _("match type is "), " ^1", MapInfo_Type_ToText(gametype), "^8\n"); + 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); + msg = strcat(msg, mutator_msg); // trust that the mutator will do proper formatting + if (motd != "") + msg = strcat(msg, "\n\n^8", _("MOTD:"), " ^7", motd); + + if (!force_centerprint && !isdemo() && cvar("_menu_welcome_dialog_available") && autocvar_cl_welcome_in_menu_dialog) + { + string welcomedialog_args; + welcomedialog_args = strcat("HOSTNAME \"", hostname, "\""); + msg = MakeConsoleSafe(strreplace("\n", "\\n", msg)); + welcomedialog_args = strcat(welcomedialog_args, " WELCOME \"", msg, "\""); + localcmd("\nmenu_cmd directmenu Welcome ", welcomedialog_args, "\n"); + } + else + centerprint_Add(ORDINAL(CPID_MOTD), strcat(hostname, "\n\n\n", msg), -1, 0); + return true; +} + string _getcommandkey(string cmd_name, string command, bool forcename) { string keys;