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