2 CLASS(NexuizServerList) EXTENDS(NexuizListBox)
3 METHOD(NexuizServerList, configureNexuizServerList, void(entity))
4 ATTRIB(NexuizServerList, rowsPerItem, float, 1)
5 METHOD(NexuizServerList, draw, void(entity))
6 METHOD(NexuizServerList, drawListBoxItem, void(entity, float, vector, float))
7 METHOD(NexuizServerList, resizeNotify, void(entity, vector, vector, vector, vector))
9 ATTRIB(NexuizServerList, realFontSize, vector, '0 0 0')
10 ATTRIB(NexuizServerList, realUpperMargin, float, 0)
11 ATTRIB(NexuizServerList, columnPingOrigin, float, 0)
12 ATTRIB(NexuizServerList, columnPingSize, float, 0)
13 ATTRIB(NexuizServerList, columnNameOrigin, float, 0)
14 ATTRIB(NexuizServerList, columnNameSize, float, 0)
15 ATTRIB(NexuizServerList, columnMapOrigin, float, 0)
16 ATTRIB(NexuizServerList, columnMapSize, float, 0)
17 ATTRIB(NexuizServerList, columnPlayersOrigin, float, 0)
18 ATTRIB(NexuizServerList, columnPlayersSize, float, 0)
19 ENDCLASS(NexuizServerList)
20 entity makeNexuizServerList();
25 float SLIST_FIELD_CNAME;
26 float SLIST_FIELD_PING;
27 float SLIST_FIELD_GAME;
28 float SLIST_FIELD_MOD;
29 float SLIST_FIELD_MAP;
30 float SLIST_FIELD_NAME;
31 float SLIST_FIELD_MAXPLAYERS;
32 float SLIST_FIELD_NUMPLAYERS;
33 float SLIST_FIELD_NUMHUMANS;
34 float SLIST_FIELD_NUMBOTS;
35 float SLIST_FIELD_PROTOCOL;
36 void ServerList_UpdateFieldIDs()
38 SLIST_FIELD_CNAME = gethostcacheindexforkey( "cname" );
39 SLIST_FIELD_PING = gethostcacheindexforkey( "ping" );
40 SLIST_FIELD_GAME = gethostcacheindexforkey( "game" );
41 SLIST_FIELD_MOD = gethostcacheindexforkey( "mod" );
42 SLIST_FIELD_MAP = gethostcacheindexforkey( "map" );
43 SLIST_FIELD_NAME = gethostcacheindexforkey( "name" );
44 SLIST_FIELD_MAXPLAYERS = gethostcacheindexforkey( "maxplayers" );
45 SLIST_FIELD_NUMPLAYERS = gethostcacheindexforkey( "numplayers" );
46 SLIST_FIELD_NUMHUMANS = gethostcacheindexforkey( "numhumans" );
47 SLIST_FIELD_NUMBOTS = gethostcacheindexforkey( "numbots" );
48 SLIST_FIELD_PROTOCOL = gethostcacheindexforkey( "protocol" );
51 entity makeNexuizServerList()
54 me = spawnNexuizServerList();
55 me.configureNexuizServerList(me);
58 void configureNexuizServerListNexuizServerList(entity me)
60 me.configureNexuizListBox(me);
62 ServerList_UpdateFieldIDs();
63 resethostcachemasks();
68 void drawNexuizServerList(entity me)
70 me.nItems = gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT);
73 void resizeNotifyNexuizServerList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
75 resizeNotifyNexuizListBox(me, relOrigin, relSize, absOrigin, absSize);
77 me.realFontSize_y = me.fontSize / (absSize_y * me.itemHeight);
78 me.realFontSize_x = me.fontSize / (absSize_x * (1 - me.controlWidth));
79 me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
81 me.columnPingOrigin = 0;
82 me.columnPingSize = me.realFontSize_x * 4;
83 me.columnMapSize = me.realFontSize_x * 12;
84 me.columnPlayersSize = me.realFontSize_x * 6;
85 me.columnNameSize = 1 - me.columnPlayersSize - me.columnMapSize - me.columnPingSize - 3 * me.realFontSize_x;
86 me.columnNameOrigin = me.columnPingOrigin + me.columnPingSize + me.realFontSize_x;
87 me.columnMapOrigin = me.columnNameOrigin + me.columnNameSize + me.realFontSize_x;
88 me.columnPlayersOrigin = me.columnMapOrigin + me.columnMapSize + me.realFontSize_x;
90 void drawListBoxItemNexuizServerList(entity me, float i, vector absSize, float isSelected)
92 // layout: Ping, Server name, Map name, NP, TP, MP
99 draw_Fill('0 0 0', '1 1 0', '0 0 1', 0.5);
101 if(gethostcachenumber(SLIST_FIELD_NUMPLAYERS, i) >= gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i))
103 else if(!gethostcachenumber(SLIST_FIELD_NUMHUMANS, i))
108 p = gethostcachenumber(SLIST_FIELD_PING, i);
110 theColor = eX * (p / 50) + eY;
112 theColor = eX + eY * ((150 - p) / 100);
116 theAlpha *= (650 - p) / 500;
120 draw_Text(me.realUpperMargin * eY + (me.columnPingSize - draw_TextWidth(s) * me.realFontSize_x) * eX, s, me.realFontSize, theColor, theAlpha);
121 s = draw_TextShortenToWidth(gethostcachestring(SLIST_FIELD_NAME, i), me.columnNameSize / me.realFontSize_x);
122 draw_Text(me.realUpperMargin * eY + me.columnNameOrigin * eX, s, me.realFontSize, theColor, theAlpha);
123 s = draw_TextShortenToWidth(gethostcachestring(SLIST_FIELD_MAP, i), me.columnMapSize / me.realFontSize_x);
124 draw_Text(me.realUpperMargin * eY + (me.columnMapOrigin + (me.columnMapSize - draw_TextWidth(s) * me.realFontSize_x) * 0.5) * eX, s, me.realFontSize, theColor, theAlpha);
125 s = strcat(ftos(gethostcachenumber(SLIST_FIELD_NUMHUMANS, i)), "/", ftos(gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i)));
126 draw_Text(me.realUpperMargin * eY + (me.columnPlayersOrigin + (me.columnPlayersSize - draw_TextWidth(s) * me.realFontSize_x) * 0.5) * eX, s, me.realFontSize, theColor, theAlpha);