]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add updatenotification support for recommended servers
authorSamual Lenks <samual@xonotic.org>
Thu, 10 Oct 2013 17:40:32 +0000 (13:40 -0400)
committerSamual Lenks <samual@xonotic.org>
Thu, 10 Oct 2013 17:40:32 +0000 (13:40 -0400)
qcsrc/menu/xonotic/serverlist.c
qcsrc/menu/xonotic/util.qc
qcsrc/menu/xonotic/util.qh

index 3fa4e4b774fe8efd5fb02debe3067e35c327a2a4..582e047be7e782dbde4118ffcf69af098804ca2f 100644 (file)
@@ -64,7 +64,7 @@ entity makeXonoticServerList();
 var float autocvar_menu_slist_categories = TRUE;
 var float autocvar_menu_slist_categories_onlyifmultiple = TRUE; 
 var float autocvar_menu_slist_purethreshold = 10;
-var string autocvar_menu_slist_recommended = "76.124.107.5:26004";
+//var string autocvar_menu_slist_recommended = "76.124.107.5:26004";
 
 // server cache fields
 #define SLIST_FIELDS \
@@ -99,7 +99,7 @@ entity RetrieveCategoryEnt(float catnum);
 
 float IsServerInList(string list, string srv);
 #define IsFavorite(srv) IsServerInList(cvar_string("net_slist_favorites"), srv)
-#define IsRecommended(srv) IsServerInList(cvar_string("menu_slist_recommended"), srv) // todo: use update notification instead of cvar
+#define IsRecommended(srv) IsServerInList(_Nex_ExtResponseSystem_RecommendedServers, srv)
 
 float CheckCategoryOverride(float cat);
 float CheckCategoryForEntry(float entry); 
@@ -582,6 +582,13 @@ void XonoticServerList_draw(entity me)
                _Nex_ExtResponseSystem_BannedServersNeedsRefresh = 0;
        }
 
+       if(_Nex_ExtResponseSystem_RecommendedServersNeedsRefresh)
+       {
+               if(!me.needsRefresh)
+                       me.needsRefresh = 3;
+               _Nex_ExtResponseSystem_RecommendedServersNeedsRefresh = 0;
+       }
+
        if(me.currentSortField == -1)
        {
                me.setSortOrder(me, SLIST_FIELD_PING, +1);
@@ -596,6 +603,11 @@ void XonoticServerList_draw(entity me)
                me.needsRefresh = 0;
                me.refreshServerList(me, REFRESHSERVERLIST_REFILTER);
        }
+       else if(me.needsRefresh == 3)
+       {
+               me.needsRefresh = 0;
+               me.refreshServerList(me, REFRESHSERVERLIST_RESORT);
+       }
 
        owned = ((me.selectedServer == me.ipAddressBox.text) && (me.ipAddressBox.text != ""));
 
index e5259cc8e73f4b646727e36d8e7926c24cc8fb2b..d40f5b481a11dc83f4377a6cc943082030f7aac9 100644 (file)
@@ -347,6 +347,12 @@ void UpdateNotification_URI_Get_Callback(float id, float status, string data)
                                _Nex_ExtResponseSystem_PacksStep = 1;
                        }
                }
+
+               if(n >= 6)
+               {
+                       _Nex_ExtResponseSystem_RecommendedServers = strzone(argv(5));
+                       _Nex_ExtResponseSystem_RecommendedServersNeedsRefresh = 1;
+               }
        }
 }
 
index be13ee289b25607149d3e803621b1234eae0b6cc..707d06b077975f4dc35033f7d5924809302c74e5 100644 (file)
@@ -45,3 +45,5 @@ void dialog_hudpanel_common_notoggle(entity me, string panelname);
 
 string _Nex_ExtResponseSystem_BannedServers;
 float _Nex_ExtResponseSystem_BannedServersNeedsRefresh;
+string _Nex_ExtResponseSystem_RecommendedServers;
+float _Nex_ExtResponseSystem_RecommendedServersNeedsRefresh;