]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/xonotic/util.qc
support update pk3s (+menu_updatecheck_getpacks 0 to opt out)
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / util.qc
index 580f22a93c7c7e5caab333763150067fa5a0173f..e733b7460b38d3d4de90203b5a34da2cc169f417 100644 (file)
@@ -256,6 +256,8 @@ 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)
 {
@@ -336,6 +338,15 @@ 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;
+                       }
+               }
        }
 }
 
@@ -435,6 +446,30 @@ void preMenuDraw()
                }
        }
 
+       if(_Nex_ExtResponseSystem_PacksStep > 0)
+       {
+               float n;
+               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)
+                               localcmd("\nmenu_restart\n");
+                       _Nex_ExtResponseSystem_PacksStep = 0;
+               }
+               else
+                       _Nex_ExtResponseSystem_PacksStep = 2;
+       }
+
        if(_Nex_ExtResponseSystem_UpdateTo != "")
        {
                // TODO rather turn this into a dialog