]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/menu/nexuiz/dialog_multiplayer_join_serverinfo.c
Ronans server info dialog
[divverent/nexuiz.git] / data / qcsrc / menu / nexuiz / dialog_multiplayer_join_serverinfo.c
1 #ifdef INTERFACE
2 CLASS(NexuizServerInfoDialog) EXTENDS(NexuizDialog)
3         METHOD(NexuizServerInfoDialog, fill, void(entity))
4         METHOD(NexuizServerInfoDialog, loadServerInfo, void(entity, float))
5         ATTRIB(NexuizServerInfoDialog, title, string, "Server Information")
6         ATTRIB(NexuizServerInfoDialog, color, vector, SKINCOLOR_DIALOG_SERVERINFO)
7         ATTRIB(NexuizServerInfoDialog, intendedWidth, float, 0.60)
8         ATTRIB(NexuizServerInfoDialog, rows, float, 11)
9         ATTRIB(NexuizServerInfoDialog, columns, float, 12)
10
11         ATTRIB(NexuizServerInfoDialog, currentServerName, string, string_null)
12         ATTRIB(NexuizServerInfoDialog, currentServerCName, string, string_null)
13         ATTRIB(NexuizServerInfoDialog, currentServerType, string, string_null)
14         ATTRIB(NexuizServerInfoDialog, currentServerMap, string, string_null)
15         ATTRIB(NexuizServerInfoDialog, currentServerPlayers, string, string_null)
16         ATTRIB(NexuizServerInfoDialog, currentServerNumPlayers, string, string_null)
17         ATTRIB(NexuizServerInfoDialog, currentServerNumBots, string, string_null)
18         ATTRIB(NexuizServerInfoDialog, currentServerMod, string, string_null)
19         ATTRIB(NexuizServerInfoDialog, currentServerVersion, string, string_null)
20         ATTRIB(NexuizServerInfoDialog, currentServerPing, string, string_null)
21
22         ATTRIB(NexuizServerInfoDialog, nameLabel, entity, NULL)
23         ATTRIB(NexuizServerInfoDialog, cnameLabel, entity, NULL)
24         ATTRIB(NexuizServerInfoDialog, typeLabel, entity, NULL)
25         ATTRIB(NexuizServerInfoDialog, mapLabel, entity, NULL)
26         ATTRIB(NexuizServerInfoDialog, rawPlayerList, entity, NULL)
27         ATTRIB(NexuizServerInfoDialog, numPlayersLabel, entity, NULL)
28         ATTRIB(NexuizServerInfoDialog, numBotsLabel, entity, NULL)
29         ATTRIB(NexuizServerInfoDialog, modLabel, entity, NULL)
30         ATTRIB(NexuizServerInfoDialog, versionLabel, entity, NULL)
31         ATTRIB(NexuizServerInfoDialog, pingLabel, entity, NULL)
32
33 ENDCLASS(NexuizServerInfoDialog)
34 #endif
35 float SLIST_FIELD_NAME;
36 float SLIST_FIELD_CNAME;
37 float SLIST_FIELD_QCSTATUS;
38 float SLIST_FIELD_MAP;
39 float SLIST_FIELD_PLAYERS;
40 float SLIST_FIELD_NUMHUMANS;
41 float SLIST_FIELD_MAXPLAYERS;
42 float SLIST_FIELD_NUMBOTS;
43 float SLIST_FIELD_MOD;
44 float SLIST_FIELD_PING;
45 string CURRENT_IP; //used by join button
46 void Join_Click(entity me);
47 #ifdef IMPLEMENTATION
48 void loadServerInfoNexuizServerInfoDialog(entity me, float i)
49 {
50         float m;
51         string s, typestr, versionstr, numh, maxp;
52
53         SLIST_FIELD_NAME = gethostcacheindexforkey("name");
54         me.currentServerName = strzone(gethostcachestring(SLIST_FIELD_NAME, i));
55         me.nameLabel.setText(me.nameLabel, me.currentServerName);
56
57         SLIST_FIELD_CNAME = gethostcacheindexforkey("cname");
58         me.currentServerCName = strzone(gethostcachestring(SLIST_FIELD_CNAME, i));
59         CURRENT_IP = me.currentServerCName; //used by join button
60         me.cnameLabel.setText(me.cnameLabel, me.currentServerCName);
61
62         SLIST_FIELD_QCSTATUS = gethostcacheindexforkey("qcstatus");
63         s = gethostcachestring(SLIST_FIELD_QCSTATUS, i);
64         m = tokenizebyseparator(s, ":");
65         if(m > 1)
66         {
67                 typestr = argv (0);
68                 versionstr = argv(1);
69         }
70         else
71         {
72                 typestr = "N.A.";
73                 versionstr = "N.A.";
74         }
75         me.currentServerType = strzone(typestr);
76         me.typeLabel.setText(me.typeLabel, me.currentServerType);
77
78
79         SLIST_FIELD_MAP = gethostcacheindexforkey("map");
80         me.currentServerMap = strzone(gethostcachestring(SLIST_FIELD_MAP, i));
81         me.mapLabel.setText(me.mapLabel, me.currentServerMap);
82
83         SLIST_FIELD_PLAYERS = gethostcacheindexforkey("players");
84         me.currentServerPlayers = strzone(gethostcachestring(SLIST_FIELD_PLAYERS, i));
85         me.rawPlayerList.setPlayerList(me.rawPlayerList, me.currentServerPlayers);
86
87         SLIST_FIELD_NUMHUMANS = gethostcacheindexforkey("numhumans");
88         numh = ftos(gethostcachenumber(SLIST_FIELD_NUMHUMANS, i));
89         SLIST_FIELD_MAXPLAYERS = gethostcacheindexforkey("maxplayers");
90         maxp = ftos(gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i));
91         me.currentServerNumPlayers = strzone(strcat(numh,"/",maxp));
92         me.numPlayersLabel.setText(me.numPlayersLabel, me.currentServerNumPlayers);
93
94         SLIST_FIELD_NUMBOTS = gethostcacheindexforkey("numbots");
95         s = ftos(gethostcachenumber(SLIST_FIELD_NUMBOTS, i));
96         me.currentServerNumBots = strzone(s);
97         me.numBotsLabel.setText(me.numBotsLabel, me.currentServerNumBots);
98
99         SLIST_FIELD_MOD = gethostcacheindexforkey("mod");
100         me.currentServerMod = strzone(gethostcachestring(SLIST_FIELD_MOD, i));
101         me.modLabel.setText(me.modLabel, me.currentServerMod);
102
103         me.currentServerVersion = strzone(versionstr);
104         me.versionLabel.setText(me.versionLabel, me.currentServerVersion);
105
106         SLIST_FIELD_PING = gethostcacheindexforkey("ping");
107         s = ftos(gethostcachenumber(SLIST_FIELD_PING, i));
108         me.currentServerPing = strzone(s);
109         me.pingLabel.setText(me.pingLabel, me.currentServerPing);
110 }
111
112 void fillNexuizServerInfoDialog(entity me)
113 {
114         entity e;
115         me.TR(me);
116                 me.TD(me, 1, me.columns, e = makeNexuizTextLabel(0.5, ""));
117                         e.alpha = 1;
118                         e.colorL = SKINCOLOR_SERVERINFO_NAME;
119                         e.allowCut = 1;
120                         me.nameLabel = e;
121         me.TR(me);
122                 me.TD(me, 1, me.columns, e = makeNexuizTextLabel(0.5, ""));
123                         e.alpha = 1;
124                         e.colorL = SKINCOLOR_SERVERINFO_IP;
125                         e.allowCut = 1;
126                         me.cnameLabel = e;
127
128         me.TR(me);
129                 me.TD(me, 1, 6, e = makeNexuizTextLabel(0, "Players :"));
130                         e.alpha = 1;
131         me.TR(me);
132                 me.TD(me, me.rows - 4, 5.5, e = makeNexuizPlayerList());
133                         me.rawPlayerList = e;
134
135         me.gotoRC(me, 1, 6); me.setFirstColumn(me, me.currentColumn);
136
137         me.TR(me);
138                 me.TD(me, 1, 1.75, e = makeNexuizTextLabel(0, "Type :"));
139                         e.alpha = 1;
140                 me.TD(me, 1, 4.5, e = makeNexuizTextLabel(0, ""));
141                         e.allowCut = 1;
142                         me.typeLabel = e;
143         me.TR(me);
144                 me.TD(me, 1, 1.75, e = makeNexuizTextLabel(0, "Map :"));
145                         e.alpha = 1;
146                 me.TD(me, 1, 4.5, e = makeNexuizTextLabel(0, ""));
147                         e.allowCut = 1;
148                         me.mapLabel = e;
149         me.TR(me);
150                 me.TD(me, 1, 1.75, e = makeNexuizTextLabel(0, "Players :"));
151                         e.alpha = 1;
152                 me.TD(me, 1, 4.5, e = makeNexuizTextLabel(0, ""));
153                         e.allowCut = 1;
154                         me.numPlayersLabel = e;
155         me.TR(me);
156                 me.TD(me, 1, 1.75, e = makeNexuizTextLabel(0, "Bots :"));
157                         e.alpha = 1;
158                 me.TD(me, 1, 4.5, e = makeNexuizTextLabel(0, ""));
159                         e.allowCut = 1;
160                         me.numBotsLabel = e;
161         me.TR(me);
162                 me.TD(me, 1, 1.75, e = makeNexuizTextLabel(0, "Mod :"));
163                         e.alpha = 1;
164                 me.TD(me, 1, 4.5, e = makeNexuizTextLabel(0, ""));
165                         e.allowCut = 1;
166                         me.modLabel = e;
167         me.TR(me);
168                 me.TD(me, 1, 1.75, e = makeNexuizTextLabel(0, "Version :"));
169                         e.alpha = 1;
170                 me.TD(me, 1, 4.5, e = makeNexuizTextLabel(0, ""));
171                         e.allowCut = 1;
172                         me.versionLabel = e;
173         me.TR(me);
174                 me.TD(me, 1, 1.75, e = makeNexuizTextLabel(0, "Ping :"));
175                         e.alpha = 1;
176                 me.TD(me, 1, 4.5, e = makeNexuizTextLabel(0, ""));
177                         e.allowCut = 1;
178                         me.pingLabel = e;
179
180         me.gotoRC(me, me.rows - 1, 0);
181
182                 me.TD(me, 1, me.columns - 6, e = makeNexuizButton("OK", '0 0 0'));
183                         e.onClick = Dialog_Close;
184                         e.onClickEntity = me;
185                 me.TD(me, 1, me.columns - 6, e = makeNexuizButton("Join!", '0 0 0'));
186                         e.onClick = Join_Click;
187                         e.onClickEntity = me;
188 }
189
190 void Join_Click(entity me)
191 {
192         localcmd("connect ", CURRENT_IP, "\n");
193 }
194
195 #endif