1 /*
2 ===========================================================================
3 Copyright (C) 1999-2005 Id Software, Inc.
4
5 This file is part of Quake III Arena source code.
6
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.
11
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.
16
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 ===========================================================================
21 */
22 //
23 //
24 // ui_signup.c
25 //
26
27 #include "ui_local.h"
28
29
30 #define SIGNUP_FRAME "menu/art/cut_frame"
31
32 #define ID_NAME 100
33 #define ID_NAME_BOX 101
34 #define ID_PASSWORD 102
35 #define ID_PASSWORD_BOX 103
36 #define ID_AGAIN 104
37 #define ID_AGAIN_BOX 105
38 #define ID_EMAIL 106
39 #define ID_EMAIL_BOX 107
40 #define ID_SIGNUP 108
41 #define ID_CANCEL 109
42
43
44 typedef struct
45 {
46 menuframework_s menu;
47 menubitmap_s frame;
48 menutext_s name;
49 menufield_s name_box;
50 menutext_s password;
51 menufield_s password_box;
52 menutext_s again;
53 menufield_s again_box;
54 menutext_s email;
55 menufield_s email_box;
56 menutext_s signup;
57 menutext_s cancel;
58 } signup_t;
59
60 static signup_t s_signup;
61
62 static menuframework_s s_signup_menu;
63 static menuaction_s s_signup_signup;
64 static menuaction_s s_signup_cancel;
65
66 static vec4_t s_signup_color_prompt = {1.00, 0.43, 0.00, 1.00};
67
68 /*
69 ===============
70 Signup_MenuEvent
71 ===============
72 */
Signup_MenuEvent(void * ptr,int event)73 static void Signup_MenuEvent( void* ptr, int event ) {
74 //char cmd[1024];
75
76 if( event != QM_ACTIVATED ) {
77 return;
78 }
79
80 switch( ((menucommon_s*)ptr)->id ) {
81 case ID_SIGNUP:
82 if( strcmp(s_signup.password_box.field.buffer,
83 s_signup.again_box.field.buffer) != 0 )
84 {
85 // GRANK_FIXME - password mismatch
86 break;
87 }
88 // set name
89 //trap_Cvar_Set( "name", s_signup.name_box.field.buffer );
90 /*
91 trap_Cvar_Set( "rank_name", s_signup.name_box.field.buffer );
92 trap_Cvar_Set( "rank_pwd", s_signup.password_box.field.buffer );
93 */
94
95 // create account
96 /*
97 sprintf( cmd, "cmd rank_create \"%s\" \"%s\" \"%s\"\n",
98 s_signup.name_box.field.buffer,
99 s_signup.password_box.field.buffer,
100 s_signup.email_box.field.buffer );
101 trap_Cmd_ExecuteText( EXEC_APPEND, cmd );
102 */
103 trap_CL_UI_RankUserCreate(
104 s_signup.name_box.field.buffer,
105 s_signup.password_box.field.buffer,
106 s_signup.email_box.field.buffer );
107
108 UI_ForceMenuOff();
109 break;
110
111 case ID_CANCEL:
112 UI_PopMenu();
113 break;
114 }
115 }
116
117 /*
118 ===============
119 Signup_MenuInit
120 ===============
121 */
Signup_MenuInit(void)122 void Signup_MenuInit( void ) {
123 grank_status_t status;
124 int y;
125
126 memset( &s_signup, 0, sizeof(s_signup) );
127
128 Signup_Cache();
129
130 s_signup.menu.wrapAround = qtrue;
131 s_signup.menu.fullscreen = qfalse;
132
133 s_signup.frame.generic.type = MTYPE_BITMAP;
134 s_signup.frame.generic.flags = QMF_INACTIVE;
135 s_signup.frame.generic.name = SIGNUP_FRAME;
136 s_signup.frame.generic.x = 142; //320-233;
137 s_signup.frame.generic.y = 118; //240-166;
138 s_signup.frame.width = 359; //466;
139 s_signup.frame.height = 256; //332;
140
141 y = 194;
142
143 s_signup.name.generic.type = MTYPE_PTEXT;
144 s_signup.name.generic.flags = QMF_RIGHT_JUSTIFY|QMF_INACTIVE;
145 s_signup.name.generic.id = ID_NAME;
146 s_signup.name.generic.x = 310;
147 s_signup.name.generic.y = y;
148 s_signup.name.string = "NAME";
149 s_signup.name.style = UI_RIGHT|UI_SMALLFONT;
150 s_signup.name.color = s_signup_color_prompt;
151
152 s_signup.name_box.generic.type = MTYPE_FIELD;
153 s_signup.name_box.generic.ownerdraw = Rankings_DrawName;
154 s_signup.name_box.generic.name = "";
155 s_signup.name_box.generic.flags = 0;
156 s_signup.name_box.generic.x = 330;
157 s_signup.name_box.generic.y = y;
158 s_signup.name_box.field.widthInChars = 16;
159 s_signup.name_box.field.maxchars = 16;
160 y += 20;
161
162 s_signup.password.generic.type = MTYPE_PTEXT;
163 s_signup.password.generic.flags = QMF_RIGHT_JUSTIFY|QMF_INACTIVE;
164 s_signup.password.generic.id = ID_PASSWORD;
165 s_signup.password.generic.x = 310;
166 s_signup.password.generic.y = y;
167 s_signup.password.string = "PASSWORD";
168 s_signup.password.style = UI_RIGHT|UI_SMALLFONT;
169 s_signup.password.color = s_signup_color_prompt;
170
171 s_signup.password_box.generic.type = MTYPE_FIELD;
172 s_signup.password_box.generic.ownerdraw = Rankings_DrawPassword;
173 s_signup.password_box.generic.name = "";
174 s_signup.password_box.generic.flags = 0;
175 s_signup.password_box.generic.x = 330;
176 s_signup.password_box.generic.y = y;
177 s_signup.password_box.field.widthInChars = 16;
178 s_signup.password_box.field.maxchars = 16;
179 y += 20;
180
181 s_signup.again.generic.type = MTYPE_PTEXT;
182 s_signup.again.generic.flags = QMF_RIGHT_JUSTIFY|QMF_INACTIVE;
183 s_signup.again.generic.id = ID_AGAIN;
184 s_signup.again.generic.x = 310;
185 s_signup.again.generic.y = y;
186 s_signup.again.string = "(AGAIN)";
187 s_signup.again.style = UI_RIGHT|UI_SMALLFONT;
188 s_signup.again.color = s_signup_color_prompt;
189
190 s_signup.again_box.generic.type = MTYPE_FIELD;
191 s_signup.again_box.generic.ownerdraw = Rankings_DrawPassword;
192 s_signup.again_box.generic.name = "";
193 s_signup.again_box.generic.flags = 0;
194 s_signup.again_box.generic.x = 330;
195 s_signup.again_box.generic.y = y;
196 s_signup.again_box.field.widthInChars = 16;
197 s_signup.again_box.field.maxchars = 16;
198 y += 20;
199
200 s_signup.email.generic.type = MTYPE_PTEXT;
201 s_signup.email.generic.flags = QMF_RIGHT_JUSTIFY|QMF_INACTIVE;
202 s_signup.email.generic.id = ID_EMAIL;
203 s_signup.email.generic.x = 310;
204 s_signup.email.generic.y = y;
205 s_signup.email.string = "EMAIL";
206 s_signup.email.style = UI_RIGHT|UI_SMALLFONT;
207 s_signup.email.color = s_signup_color_prompt;
208
209 s_signup.email_box.generic.type = MTYPE_FIELD;
210 s_signup.email_box.generic.ownerdraw = Rankings_DrawText;
211 s_signup.email_box.generic.name = "";
212 s_signup.email_box.generic.flags = 0;
213 s_signup.email_box.generic.x = 330;
214 s_signup.email_box.generic.y = y;
215 s_signup.email_box.field.widthInChars = 16;
216 s_signup.email_box.field.maxchars = MAX_EDIT_LINE;
217 y += 40;
218
219 s_signup.signup.generic.type = MTYPE_PTEXT;
220 s_signup.signup.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
221 s_signup.signup.generic.id = ID_SIGNUP;
222 s_signup.signup.generic.callback = Signup_MenuEvent;
223 s_signup.signup.generic.x = 310;
224 s_signup.signup.generic.y = y;
225 s_signup.signup.string = "SIGN UP";
226 s_signup.signup.style = UI_RIGHT|UI_SMALLFONT;
227 s_signup.signup.color = colorRed;
228
229 s_signup.cancel.generic.type = MTYPE_PTEXT;
230 s_signup.cancel.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
231 s_signup.cancel.generic.id = ID_CANCEL;
232 s_signup.cancel.generic.callback = Signup_MenuEvent;
233 s_signup.cancel.generic.x = 330;
234 s_signup.cancel.generic.y = y;
235 s_signup.cancel.string = "CANCEL";
236 s_signup.cancel.style = UI_LEFT|UI_SMALLFONT;
237 s_signup.cancel.color = colorRed;
238 y += 20;
239
240 status = (grank_status_t)trap_Cvar_VariableValue("client_status");
241 if( (status != QGR_STATUS_NEW) && (status != QGR_STATUS_SPECTATOR) )
242 {
243 s_signup.name_box.generic.flags |= QMF_INACTIVE;
244 s_signup.password_box.generic.flags |= QMF_INACTIVE;
245 s_signup.again_box.generic.flags |= QMF_INACTIVE;
246 s_signup.email_box.generic.flags |= QMF_INACTIVE;
247 s_signup.signup.generic.flags |= QMF_INACTIVE;
248
249 s_signup.signup.color = colorMdGrey;
250 }
251
252 Menu_AddItem( &s_signup.menu, (void*) &s_signup.frame );
253 Menu_AddItem( &s_signup.menu, (void*) &s_signup.name );
254 Menu_AddItem( &s_signup.menu, (void*) &s_signup.name_box );
255 Menu_AddItem( &s_signup.menu, (void*) &s_signup.password );
256 Menu_AddItem( &s_signup.menu, (void*) &s_signup.password_box );
257 Menu_AddItem( &s_signup.menu, (void*) &s_signup.again );
258 Menu_AddItem( &s_signup.menu, (void*) &s_signup.again_box );
259 Menu_AddItem( &s_signup.menu, (void*) &s_signup.email );
260 Menu_AddItem( &s_signup.menu, (void*) &s_signup.email_box );
261 Menu_AddItem( &s_signup.menu, (void*) &s_signup.signup );
262 Menu_AddItem( &s_signup.menu, (void*) &s_signup.cancel );
263 }
264
265
266 /*
267 ===============
268 Signup_Cache
269 ===============
270 */
Signup_Cache(void)271 void Signup_Cache( void ) {
272 trap_R_RegisterShaderNoMip( SIGNUP_FRAME );
273 }
274
275
276 /*
277 ===============
278 UI_SignupMenu
279 ===============
280 */
UI_SignupMenu(void)281 void UI_SignupMenu( void ) {
282 Signup_MenuInit();
283 UI_PushMenu ( &s_signup.menu );
284 }
285
286
287