2
===========================================================================
3
Copyright (C) 1999-2005 Id Software, Inc.
5
This file is part of Quake III Arena source code.
7
Quake III Arena source code is free software; you can redistribute it
8
and/or modify it under the terms of the GNU General Public License as
9
published by the Free Software Foundation; either version 2 of the License,
10
or (at your option) any later version.
12
Quake III Arena source code is distributed in the hope that it will be
13
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
17
You should have received a copy of the GNU General Public License
18
along with Quake III Arena source code; if not, write to the Free Software
19
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
===========================================================================
25
#define SERVERINFO_FRAMEL "menu/art/frame2_l"
26
#define SERVERINFO_FRAMER "menu/art/frame1_r"
27
#define SERVERINFO_BACK0 "menu/art/back_0"
28
#define SERVERINFO_BACK1 "menu/art/back_1"
30
static char* serverinfo_artlist[] =
50
char info[MAX_INFO_STRING];
54
static serverinfo_t s_serverinfo;
61
Add current server to favorites
64
void Favorites_Add( void )
71
trap_Cvar_VariableStringBuffer( "cl_currentServerAddress", serverbuff, sizeof(serverbuff) );
76
for (i=0; i<MAX_FAVORITESERVERS; i++)
78
trap_Cvar_VariableStringBuffer( va("server%d",i+1), adrstr, sizeof(adrstr) );
79
if (!Q_stricmp(serverbuff,adrstr))
85
// use first empty or non-numeric available slot
86
if ((adrstr[0] < '0' || adrstr[0] > '9' ) && !best)
91
trap_Cvar_Set( va("server%d",best), serverbuff);
100
static void ServerInfo_Event( void* ptr, int event )
102
switch (((menucommon_s*)ptr)->id)
105
if (event != QM_ACTIVATED)
113
if (event != QM_ACTIVATED)
126
static void ServerInfo_MenuDraw( void )
129
char key[MAX_INFO_KEY];
130
char value[MAX_INFO_VALUE];
133
y = SCREEN_HEIGHT/2 - s_serverinfo.numlines*(SMALLCHAR_HEIGHT)/2 - 20;
134
s = s_serverinfo.info;
136
Info_NextPair( &s, key, value );
141
Q_strcat( key, MAX_INFO_KEY, ":" );
143
UI_DrawString(SCREEN_WIDTH*0.50 - 8,y,key,UI_RIGHT|UI_SMALLFONT,color_red);
144
UI_DrawString(SCREEN_WIDTH*0.50 + 8,y,value,UI_LEFT|UI_SMALLFONT,text_color_normal);
146
y += SMALLCHAR_HEIGHT;
149
Menu_Draw( &s_serverinfo.menu );
157
static sfxHandle_t ServerInfo_MenuKey( int key )
159
return ( Menu_DefaultKey( &s_serverinfo.menu, key ) );
167
void ServerInfo_Cache( void )
171
// touch all our pics
174
if (!serverinfo_artlist[i])
176
trap_R_RegisterShaderNoMip(serverinfo_artlist[i]);
185
void UI_ServerInfoMenu( void )
188
char key[MAX_INFO_KEY];
189
char value[MAX_INFO_VALUE];
191
// zero set all our globals
192
memset( &s_serverinfo, 0 ,sizeof(serverinfo_t) );
196
s_serverinfo.menu.draw = ServerInfo_MenuDraw;
197
s_serverinfo.menu.key = ServerInfo_MenuKey;
198
s_serverinfo.menu.wrapAround = qtrue;
199
s_serverinfo.menu.fullscreen = qtrue;
201
s_serverinfo.banner.generic.type = MTYPE_BTEXT;
202
s_serverinfo.banner.generic.x = 320;
203
s_serverinfo.banner.generic.y = 16;
204
s_serverinfo.banner.string = "SERVER INFO";
205
s_serverinfo.banner.color = color_white;
206
s_serverinfo.banner.style = UI_CENTER;
208
s_serverinfo.framel.generic.type = MTYPE_BITMAP;
209
s_serverinfo.framel.generic.name = SERVERINFO_FRAMEL;
210
s_serverinfo.framel.generic.flags = QMF_INACTIVE;
211
s_serverinfo.framel.generic.x = 0;
212
s_serverinfo.framel.generic.y = 78;
213
s_serverinfo.framel.width = 256;
214
s_serverinfo.framel.height = 329;
216
s_serverinfo.framer.generic.type = MTYPE_BITMAP;
217
s_serverinfo.framer.generic.name = SERVERINFO_FRAMER;
218
s_serverinfo.framer.generic.flags = QMF_INACTIVE;
219
s_serverinfo.framer.generic.x = 376;
220
s_serverinfo.framer.generic.y = 76;
221
s_serverinfo.framer.width = 256;
222
s_serverinfo.framer.height = 334;
224
s_serverinfo.add.generic.type = MTYPE_PTEXT;
225
s_serverinfo.add.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
226
s_serverinfo.add.generic.callback = ServerInfo_Event;
227
s_serverinfo.add.generic.id = ID_ADD;
228
s_serverinfo.add.generic.x = 320;
229
s_serverinfo.add.generic.y = 371;
230
s_serverinfo.add.string = "ADD TO FAVORITES";
231
s_serverinfo.add.style = UI_CENTER|UI_SMALLFONT;
232
s_serverinfo.add.color = color_red;
233
if( trap_Cvar_VariableValue( "sv_running" ) ) {
234
s_serverinfo.add.generic.flags |= QMF_GRAYED;
237
s_serverinfo.back.generic.type = MTYPE_BITMAP;
238
s_serverinfo.back.generic.name = SERVERINFO_BACK0;
239
s_serverinfo.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
240
s_serverinfo.back.generic.callback = ServerInfo_Event;
241
s_serverinfo.back.generic.id = ID_BACK;
242
s_serverinfo.back.generic.x = 0;
243
s_serverinfo.back.generic.y = 480-64;
244
s_serverinfo.back.width = 128;
245
s_serverinfo.back.height = 64;
246
s_serverinfo.back.focuspic = SERVERINFO_BACK1;
248
trap_GetConfigString( CS_SERVERINFO, s_serverinfo.info, MAX_INFO_STRING );
250
s_serverinfo.numlines = 0;
251
s = s_serverinfo.info;
253
Info_NextPair( &s, key, value );
257
s_serverinfo.numlines++;
260
if (s_serverinfo.numlines > 16)
261
s_serverinfo.numlines = 16;
263
Menu_AddItem( &s_serverinfo.menu, (void*) &s_serverinfo.banner );
264
Menu_AddItem( &s_serverinfo.menu, (void*) &s_serverinfo.framel );
265
Menu_AddItem( &s_serverinfo.menu, (void*) &s_serverinfo.framer );
266
Menu_AddItem( &s_serverinfo.menu, (void*) &s_serverinfo.add );
267
Menu_AddItem( &s_serverinfo.menu, (void*) &s_serverinfo.back );
269
UI_PushMenu( &s_serverinfo.menu );