]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/xonotic/util.qc
Integrate with Transifex.
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / util.qc
index 486bcce8dd0ac10095c3557131fada9592a32a82..e5259cc8e73f4b646727e36d8e7926c24cc8fb2b 100644 (file)
@@ -31,7 +31,7 @@ string getZonedTooltipForIdentifier(string s)
                if(t != "")
                        return strzone(t);
        }
-       if(prvm_language == "en" || prvm_language == "")
+       if(prvm_language == "en")
        {
                t = cvar_description(s);
                if(t != "" && t != "custom cvar")
@@ -256,24 +256,31 @@ void setDependentWeird(entity e, float(entity) func)
 float _Nex_ExtResponseSystem_Queried;
 string _Nex_ExtResponseSystem_UpdateTo;
 string _Nex_ExtResponseSystem_UpdateToURL;
+string _Nex_ExtResponseSystem_Packs;
+float _Nex_ExtResponseSystem_PacksStep;
 
 void URI_Get_Callback(float id, float status, string data)
 {
-       if (id == URI_GET_DISCARD)
+       if(url_URI_Get_Callback(id, status, data))
        {
-               // discard
+               // handled
        }
-       else if(id == URI_GET_UPDATENOTIFICATION)
+       else if (id == URI_GET_DISCARD)
        {
-               UpdateNotification_URI_Get_Callback(id, status, data);
+               // discard
        }
-       else if(id >= URI_GET_CURL && id <= URI_GET_CURL_END)
+       else if (id >= URI_GET_CURL && id <= URI_GET_CURL_END)
        {
+               // sv_cmd curl
                Curl_URI_Get_Callback(id, status, data);
        }
+       else if (id == URI_GET_UPDATENOTIFICATION)
+       {
+               UpdateNotification_URI_Get_Callback(id, status, data);
+       }
        else
        {
-               print(sprintf(_("Received HTTP request data for an invalid id %d.\n"), id));
+               print(sprintf("Received HTTP request data for an invalid id %d.\n", id));
        }
 }
 
@@ -331,16 +338,105 @@ void UpdateNotification_URI_Get_Callback(float id, float status, string data)
                        _Nex_ExtResponseSystem_BannedServers = strzone(argv(3));
                        _Nex_ExtResponseSystem_BannedServersNeedsRefresh = 1;
                }
+
+               if(n >= 5)
+               {
+                       if(cvar("menu_updatecheck_getpacks"))
+                       {
+                               _Nex_ExtResponseSystem_Packs = strzone(argv(4));
+                               _Nex_ExtResponseSystem_PacksStep = 1;
+                       }
+               }
        }
 }
 
 // END OF URI SYSTEM ////////////////////////////////////////////////////////
 
+void updateCheck()
+{
+       if(cvar("menu_updatecheck"))
+       {
+               if(!_Nex_ExtResponseSystem_Queried)
+               {
+                       _Nex_ExtResponseSystem_Queried = 1;
+                       float startcnt;
+                       string uri;
+
+                       cvar_set("cl_startcount", ftos(startcnt = cvar("cl_startcount") + 1));
+
+                       // for privacy, munge the start count a little
+                       startcnt = floor((floor(startcnt / 10) + random()) * 10);
+                       uri = sprintf("http://www.xonotic.org/dl/checkupdate.txt?version=%s&cnt=%d", uri_escape(cvar_string("g_xonoticversion")), startcnt);
+
+#ifdef CVAR_POPCON
+                       float cvar_handle, popcon_handle;
+                       float n, i, j;
+                       string k, s;
+                       cvar_handle = buf_create();
+                       buf_cvarlist(cvar_handle, "", "");
+                       n = buf_getsize(cvar_handle);
+                       popcon_handle = buf_create();
+                       for(i= 0, j = 0; i < n; ++i)
+                       {
+                               k = bufstr_get(cvar_handle, i);
+                               if(!(cvar_type(k) & CVAR_TYPEFLAG_SAVED))
+                                       continue;
+                               s = sprintf("%s=%d", uri_escape(k), cvar_string(k) != cvar_defstring(k));
+                               bufstr_set(popcon_handle, j, s);
+                               ++j;
+                       }
+                       buf_del(cvar_handle);
+                       uri_postbuf(
+                               uri, URI_GET_UPDATENOTIFICATION,
+                               "application/x-www-form-urlencoded",
+                               "&",
+                               popcon_handle
+                       );
+                       buf_del(popcon_handle);
+#else
+                       uri_get(uri, URI_GET_UPDATENOTIFICATION);
+#endif
+               }
+       }
+
+       if(_Nex_ExtResponseSystem_PacksStep > 0)
+       {
+               float n, i;
+               float allgood;
+               n = tokenize_console(_Nex_ExtResponseSystem_Packs);
+               allgood = TRUE;
+               for(i = 0; i+1 < n; i += 2)
+               {
+                       if(fexists(argv(i+1)))
+                               continue;
+                       allgood = FALSE;
+                       if(_Nex_ExtResponseSystem_PacksStep == 1) // first run
+                               localcmd("\ncurl --pak \"", argv(i), "\"\n");
+               }
+               if(allgood)
+               {
+                       if(_Nex_ExtResponseSystem_PacksStep == 2)
+                       {
+                               if(!Menu_Active)
+                                       cvar_set("_menu_initialized", "0");
+                                       // HACK: cause m_hide call on next start
+                               localcmd("\nmenu_restart\n");
+                       }
+                       _Nex_ExtResponseSystem_PacksStep = 0;
+               }
+               else
+                       _Nex_ExtResponseSystem_PacksStep = 2;
+       }
+
+}
+
 float preMenuInit()
 {
        vector sz;
        vector boxA, boxB;
 
+       updateCheck();
+
        MapInfo_Cache_Create();
        MapInfo_Enumerate();
        if(!MapInfo_FilterGametype(MAPINFO_TYPE_ALL, 0, 0, 0, 1))
@@ -369,7 +465,7 @@ float preMenuInit()
 string campaign_name_previous;
 float campaign_won_previous;
 #ifdef WATERMARK
-var string autocvar_menu_watermark = WATERMARK();
+var string autocvar_menu_watermark = WATERMARK;
 #else
 var string autocvar_menu_watermark = "";
 #endif
@@ -377,58 +473,14 @@ void postMenuDraw()
 {
        if(autocvar_menu_watermark != "")
        {
-               vector fs = '48 48 0';
                draw_CenterText('0.5 0.1 0', sprintf(_("^1%s TEST BUILD"), autocvar_menu_watermark), globalToBoxSize('32 32 0', draw_scale), '1 1 1', 0.05, 1);
        }
 }
 void preMenuDraw()
 {
-       vector fs, sz, line, mid;
+       vector fs, sz = '0 0 0', line, mid;
 
-       if(cvar("menu_updatecheck"))
-       {
-               if(!_Nex_ExtResponseSystem_Queried)
-               {
-                       _Nex_ExtResponseSystem_Queried = 1;
-                       float startcnt;
-                       string uri;
-
-                       cvar_set("cl_startcount", ftos(startcnt = cvar("cl_startcount") + 1));
-
-                       // for privacy, munge the start count a little
-                       startcnt = floor((floor(startcnt / 10) + random()) * 10);
-                       uri = sprintf("http://www.xonotic.org/dl/checkupdate.txt?version=%s&cnt=%d", uri_escape(cvar_string("g_xonoticversion")), startcnt);
-
-#ifdef CVAR_POPCON
-                       float cvar_handle, popcon_handle;
-                       float n, i, j;
-                       string k, s;
-                       cvar_handle = buf_create();
-                       buf_cvarlist(cvar_handle, "", "");
-                       n = buf_getsize(cvar_handle);
-                       popcon_handle = buf_create();
-                       for(i= 0, j = 0; i < n; ++i)
-                       {
-                               k = bufstr_get(cvar_handle, i);
-                               if(!(cvar_type(k) & CVAR_TYPEFLAG_SAVED))
-                                       continue;
-                               s = sprintf("%s=%d", uri_escape(k), cvar_string(k) != cvar_defstring(k));
-                               bufstr_set(popcon_handle, j, s);
-                               ++j;
-                       }
-                       buf_del(cvar_handle);
-                       uri_postbuf(
-                               uri, URI_GET_UPDATENOTIFICATION,
-                               "application/x-www-form-urlencoded",
-                               "&",
-                               popcon_handle
-                       );
-                       buf_del(popcon_handle);
-#else
-                       uri_get(uri, URI_GET_UPDATENOTIFICATION);
-#endif
-               }
-       }
+       updateCheck();
 
        if(_Nex_ExtResponseSystem_UpdateTo != "")
        {
@@ -557,7 +609,6 @@ float updateCompression()
        GAMETYPE(MAPINFO_TYPE_ONSLAUGHT) \
        GAMETYPE(MAPINFO_TYPE_RACE) \
        GAMETYPE(MAPINFO_TYPE_CTS) \
-       GAMETYPE(MAPINFO_TYPE_RUNEMATCH) \
        GAMETYPE(MAPINFO_TYPE_TEAM_DEATHMATCH) \
        /* nothing */
 
@@ -569,6 +620,8 @@ float GameType_GetID(float cnt)
        #define GAMETYPE(id) if(i++ == cnt) return id;
        GAMETYPES
        #undef GAMETYPE
+
+       unused_float = i;
        
        return 0;
 }