r2921 - trunk/data/qcsrc/menu-div0test/nexuiz
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Fri Nov 9 04:09:24 EST 2007
Author: div0
Date: 2007-11-09 04:09:20 -0500 (Fri, 09 Nov 2007)
New Revision: 2921
Modified:
trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c
Log:
new server list refresh policy... (currently, the refresh button does nothing)
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c 2007-11-08 18:33:23 UTC (rev 2920)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c 2007-11-09 09:09:20 UTC (rev 2921)
@@ -21,6 +21,10 @@
ATTRIB(NexuizServerList, selectedServer, string, string_null) // to restore selected server when needed
METHOD(NexuizServerList, setSelected, void(entity, float))
METHOD(NexuizServerList, setSortOrder, void(entity, float, float))
+ ATTRIB(NexuizServerList, nextRefreshTime, float, 0)
+ METHOD(NexuizServerList, refreshServerList, void(entity, float)) // refresh mode: 0 = just reparametrize, 1 = send new requests, 2 = clear
+ ATTRIB(NexuizServerList, needsRefresh, float, 1)
+ METHOD(NexuizServerList, focusEnter, void(entity))
METHOD(NexuizServerList, positionSortButton, void(entity, entity, float, float, string, void(entity, entity)))
ATTRIB(NexuizServerList, sortButton1, entity, NULL)
ATTRIB(NexuizServerList, sortButton2, entity, NULL)
@@ -28,7 +32,7 @@
ATTRIB(NexuizServerList, sortButton4, entity, NULL)
ATTRIB(NexuizServerList, connectButton, entity, NULL)
ATTRIB(NexuizServerList, currentSortOrder, float, 0)
- ATTRIB(NexuizServerList, currentSortField, float, 0)
+ ATTRIB(NexuizServerList, currentSortField, float, -1)
ATTRIB(NexuizServerList, lastClickedServer, float, -1)
ATTRIB(NexuizServerList, lastClickedTime, float, 0)
ENDCLASS(NexuizServerList)
@@ -78,8 +82,6 @@
me.configureNexuizListBox(me);
ServerList_UpdateFieldIDs();
- resethostcachemasks();
- me.currentSortField = -1;
me.nItems = 0;
}
@@ -100,15 +102,55 @@
strunzone(me.selectedServer);
me.selectedServer = strzone(gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem));
}
+void refreshServerListNexuizServerList(entity me, float mode)
+{
+ // 0: just reparametrize
+ // 1: also ask for new servers
+ // 2: clear
+ print("refresh of type ", ftos(mode), "\n");
+ /* if(mode == 2) // borken
+ {
+ // clear list
+ localcmd("net_slist\n");
+ me.needsRefresh = 1; // net_slist kills sort order, so we need to restore it later
+ }
+ else */
+ {
+ resethostcachemasks();
+ sethostcachesort(me.currentSortField, me.currentSortOrder < 0);
+ resorthostcache();
+ if(mode >= 1)
+ refreshhostcache();
+ }
+}
+void focusEnterNexuizServerList(entity me)
+{
+ if(time < me.nextRefreshTime)
+ {
+ print("sorry, no refresh yet\n");
+ return;
+ }
+ me.nextRefreshTime = time + 60;
+ me.refreshServerList(me, 1);
+}
void drawNexuizServerList(entity me)
{
float i;
if(me.currentSortField == -1)
{
- refreshhostcache();
me.setSortOrder(me, SLIST_FIELD_PING, +1);
+ me.refreshServerList(me, 2);
}
+ else if(me.needsRefresh == 1)
+ {
+ me.needsRefresh = 2; // delay by one frame to make sure "slist" has been executed
+ }
+ else if(me.needsRefresh == 2)
+ {
+ me.needsRefresh = 0;
+ me.refreshServerList(me, 0);
+ }
me.nItems = gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT);
me.connectButton.disabled = (me.nItems == 0);
@@ -146,8 +188,7 @@
direction = -me.currentSortOrder;
me.currentSortOrder = direction;
me.currentSortField = field;
- sethostcachesort(field, direction < 0);
- resorthostcache();
+ me.needsRefresh = 1;
me.sortButton1.forcePressed = (field == SLIST_FIELD_PING);
me.sortButton2.forcePressed = (field == SLIST_FIELD_NAME);
me.sortButton3.forcePressed = (field == SLIST_FIELD_MAP);
More information about the nexuiz-commits
mailing list