]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/main.qc
Update dpdefs
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / main.qc
index 5f2332c69096896ce639fce443df27d95eca1362..5044ef034186a11a0bd5411ae98363f21930f60e 100644 (file)
@@ -13,6 +13,7 @@
 #include <client/shownames.qh>
 #include <client/view.qh>
 #include <client/weapons/projectile.qh>
+#include <common/checkextension.qh>
 #include <common/deathtypes/all.qh>
 #include <common/effects/all.inc>
 #include <common/effects/all.qh>
@@ -42,7 +43,7 @@
 // CSQC_Init : Called every time the CSQC code is initialized (essentially at map load)
 // Useful for precaching things
 
-void CSQC_Init()
+void CSQC_Init(float apilevel, string enginename, float engineversion)
 {
        prvm_language = strzone(cvar_string("prvm_language"));
 
@@ -50,6 +51,8 @@ void CSQC_Init()
        LOG_TRACEF("^4CSQC Build information: ^1%s", WATERMARK);
 #endif
 
+       CheckEngineExtensions();
+
        {
                int i = 0;
                for ( ; i < 255; ++i)
@@ -195,6 +198,8 @@ void Shutdown()
 
        localcmd("\n-button12\n");
 
+       strfree(gametype_custom_name);
+
        deactivate_minigame();
        HUD_MinigameMenu_Close(NULL, NULL, NULL);
 
@@ -744,7 +749,7 @@ NET_HANDLE(ENT_CLIENT_NAGGER, bool isnew)
                for(int i = 0; i < maxclients;)
                        for(int f = ReadByte(), b = 0; b < 8 && i < maxclients; ++b, ++i)
                                if(playerslots[i])
-                                       playerslots[i].ready = (f & BIT(b));
+                                       playerslots[i].ready = f & BIT(b);
 
        return = true;
 
@@ -1060,13 +1065,25 @@ bool CSQC_Parse_TempEntity()
        return false;
 }
 
+bool autocvar_r_drawfog;
+bool autocvar_r_fog_exp2;
 string forcefog;
 void Fog_Force()
 {
        if (autocvar_cl_orthoview && autocvar_cl_orthoview_nofog)
-               localcmd("\nr_drawfog 0\n");
+       {
+               if (autocvar_r_drawfog)
+                       cvar_set("r_drawfog", "0");
+       }
        else if (forcefog != "")
-               localcmd(sprintf("\nfog %s\nr_fog_exp2 0\nr_drawfog 1\n", forcefog));
+       {
+               // using cvar_set as it's faster and safer than a command
+               if (!autocvar_r_drawfog)
+                       cvar_set("r_drawfog", "1");
+               if (autocvar_r_fog_exp2)
+                       cvar_set("r_fog_exp2", "0");
+               localcmd(sprintf("\nfog %s\n", forcefog));
+       }
 }
 
 bool net_handle_ServerWelcome();
@@ -1074,6 +1091,7 @@ NET_HANDLE(ENT_CLIENT_SCORES_INFO, bool isnew)
 {
        make_pure(this);
        gametype = ReadRegistered(Gametypes);
+       strcpy(gametype_custom_name, ReadString());
        teamplay = _MapInfo_GetTeamPlayBool(gametype);
        HUD_ModIcons_SetFunc();
        FOREACH(Scores, true, {
@@ -1366,7 +1384,7 @@ string translate_weaponarena(string s)
 
        int n = tokenizebyseparator(s, " & ");
        string wpn_list = "";
-       for (int i = 0; i < n; i++)
+       for (int i = 0; i < n; ++i)
        {
                Weapon wep = Weapon_from_name(argv(i));
                if (wep == WEP_Null)