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
/*********************************************************************************
27
*********************************************************************************/
29
#define SPECIFYSERVER_FRAMEL "menu/art/frame2_l"
30
#define SPECIFYSERVER_FRAMER "menu/art/frame1_r"
31
#define SPECIFYSERVER_BACK0 "menu/art/back_0"
32
#define SPECIFYSERVER_BACK1 "menu/art/back_1"
33
#define SPECIFYSERVER_FIGHT0 "menu/art/fight_0"
34
#define SPECIFYSERVER_FIGHT1 "menu/art/fight_1"
36
#define ID_SPECIFYSERVERBACK 102
37
#define ID_SPECIFYSERVERGO 103
39
static char* specifyserver_artlist[] =
62
static specifyserver_t s_specifyserver;
69
static void SpecifyServer_Event( void* ptr, int event )
73
switch (((menucommon_s*)ptr)->id)
75
case ID_SPECIFYSERVERGO:
76
if (event != QM_ACTIVATED)
79
if (s_specifyserver.domain.field.buffer[0])
81
strcpy(buff,s_specifyserver.domain.field.buffer);
82
if (s_specifyserver.port.field.buffer[0])
83
Com_sprintf( buff+strlen(buff), 128, ":%s", s_specifyserver.port.field.buffer );
85
trap_Cmd_ExecuteText( EXEC_APPEND, va( "connect %s\n", buff ) );
89
case ID_SPECIFYSERVERBACK:
90
if (event != QM_ACTIVATED)
100
SpecifyServer_MenuInit
103
void SpecifyServer_MenuInit( void )
105
// zero set all our globals
106
memset( &s_specifyserver, 0 ,sizeof(specifyserver_t) );
108
SpecifyServer_Cache();
110
s_specifyserver.menu.wrapAround = qtrue;
111
s_specifyserver.menu.fullscreen = qtrue;
113
s_specifyserver.banner.generic.type = MTYPE_BTEXT;
114
s_specifyserver.banner.generic.x = 320;
115
s_specifyserver.banner.generic.y = 16;
116
s_specifyserver.banner.string = "SPECIFY SERVER";
117
s_specifyserver.banner.color = color_white;
118
s_specifyserver.banner.style = UI_CENTER;
120
s_specifyserver.framel.generic.type = MTYPE_BITMAP;
121
s_specifyserver.framel.generic.name = SPECIFYSERVER_FRAMEL;
122
s_specifyserver.framel.generic.flags = QMF_INACTIVE;
123
s_specifyserver.framel.generic.x = 0;
124
s_specifyserver.framel.generic.y = 78;
125
s_specifyserver.framel.width = 256;
126
s_specifyserver.framel.height = 329;
128
s_specifyserver.framer.generic.type = MTYPE_BITMAP;
129
s_specifyserver.framer.generic.name = SPECIFYSERVER_FRAMER;
130
s_specifyserver.framer.generic.flags = QMF_INACTIVE;
131
s_specifyserver.framer.generic.x = 376;
132
s_specifyserver.framer.generic.y = 76;
133
s_specifyserver.framer.width = 256;
134
s_specifyserver.framer.height = 334;
136
s_specifyserver.domain.generic.type = MTYPE_FIELD;
137
s_specifyserver.domain.generic.name = "Address:";
138
s_specifyserver.domain.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
139
s_specifyserver.domain.generic.x = 206;
140
s_specifyserver.domain.generic.y = 220;
141
s_specifyserver.domain.field.widthInChars = 38;
142
s_specifyserver.domain.field.maxchars = 80;
144
s_specifyserver.port.generic.type = MTYPE_FIELD;
145
s_specifyserver.port.generic.name = "Port:";
146
s_specifyserver.port.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT|QMF_NUMBERSONLY;
147
s_specifyserver.port.generic.x = 206;
148
s_specifyserver.port.generic.y = 250;
149
s_specifyserver.port.field.widthInChars = 6;
150
s_specifyserver.port.field.maxchars = 5;
152
s_specifyserver.go.generic.type = MTYPE_BITMAP;
153
s_specifyserver.go.generic.name = SPECIFYSERVER_FIGHT0;
154
s_specifyserver.go.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
155
s_specifyserver.go.generic.callback = SpecifyServer_Event;
156
s_specifyserver.go.generic.id = ID_SPECIFYSERVERGO;
157
s_specifyserver.go.generic.x = 640;
158
s_specifyserver.go.generic.y = 480-64;
159
s_specifyserver.go.width = 128;
160
s_specifyserver.go.height = 64;
161
s_specifyserver.go.focuspic = SPECIFYSERVER_FIGHT1;
163
s_specifyserver.back.generic.type = MTYPE_BITMAP;
164
s_specifyserver.back.generic.name = SPECIFYSERVER_BACK0;
165
s_specifyserver.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
166
s_specifyserver.back.generic.callback = SpecifyServer_Event;
167
s_specifyserver.back.generic.id = ID_SPECIFYSERVERBACK;
168
s_specifyserver.back.generic.x = 0;
169
s_specifyserver.back.generic.y = 480-64;
170
s_specifyserver.back.width = 128;
171
s_specifyserver.back.height = 64;
172
s_specifyserver.back.focuspic = SPECIFYSERVER_BACK1;
174
Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.banner );
175
Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.framel );
176
Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.framer );
177
Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.domain );
178
Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.port );
179
Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.go );
180
Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.back );
182
Com_sprintf( s_specifyserver.port.field.buffer, 6, "%i", 27960 );
190
void SpecifyServer_Cache( void )
194
// touch all our pics
197
if (!specifyserver_artlist[i])
199
trap_R_RegisterShaderNoMip(specifyserver_artlist[i]);
208
void UI_SpecifyServerMenu( void )
210
SpecifyServer_MenuInit();
211
UI_PushMenu( &s_specifyserver.menu );