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_login.c
25 //
26 
27 #include "ui_local.h"
28 
29 
30 #define LOGIN_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_LOGIN		104
37 #define ID_CANCEL		105
38 
39 
40 typedef struct
41 {
42 	menuframework_s	menu;
43 	menubitmap_s	frame;
44 	menutext_s		name;
45 	menufield_s		name_box;
46 	menutext_s		password;
47 	menufield_s		password_box;
48 	menutext_s		login;
49 	menutext_s		cancel;
50 } login_t;
51 
52 static login_t	s_login;
53 
54 static menuframework_s	s_login_menu;
55 static menuaction_s		s_login_login;
56 static menuaction_s		s_login_cancel;
57 
58 static vec4_t s_login_color_prompt  = {1.00, 0.43, 0.00, 1.00};
59 
60 /*
61 ===============
62 Login_MenuEvent
63 ===============
64 */
Login_MenuEvent(void * ptr,int event)65 static void Login_MenuEvent( void* ptr, int event ) {
66 	if( event != QM_ACTIVATED ) {
67 		return;
68 	}
69 
70 	switch( ((menucommon_s*)ptr)->id ) {
71 	case ID_LOGIN:
72 		// set name								``
73 		//trap_Cvar_Set( "name", s_login.name_box.field.buffer );
74 		/*
75 		trap_Cvar_Set( "rank_name", s_login.name_box.field.buffer );
76 		trap_Cvar_Set( "rank_pwd", s_login.password_box.field.buffer );
77 		*/
78 
79 		// login
80 		trap_CL_UI_RankUserLogin(
81 			s_login.name_box.field.buffer,
82 			s_login.password_box.field.buffer );
83 
84 		UI_ForceMenuOff();
85 		break;
86 
87 	case ID_CANCEL:
88 		UI_PopMenu();
89 		break;
90 	}
91 }
92 
93 
94 /*
95 ===============
96 Login_MenuInit
97 ===============
98 */
Login_MenuInit(void)99 void Login_MenuInit( void ) {
100 	int				y;
101 
102 	memset( &s_login, 0, sizeof(s_login) );
103 
104 	Login_Cache();
105 
106 	s_login.menu.wrapAround = qtrue;
107 	s_login.menu.fullscreen = qfalse;
108 
109 	s_login.frame.generic.type			= MTYPE_BITMAP;
110 	s_login.frame.generic.flags			= QMF_INACTIVE;
111 	s_login.frame.generic.name			= LOGIN_FRAME;
112 	s_login.frame.generic.x				= 142; //320-233;
113 	s_login.frame.generic.y				= 118; //240-166;
114 	s_login.frame.width					= 359; //466;
115 	s_login.frame.height				= 256; //332;
116 
117 	y = 214;
118 
119 	s_login.name.generic.type			= MTYPE_PTEXT;
120 	s_login.name.generic.flags			= QMF_RIGHT_JUSTIFY|QMF_INACTIVE;
121 	s_login.name.generic.id				= ID_NAME;
122 	s_login.name.generic.x				= 310;
123 	s_login.name.generic.y				= y;
124 	s_login.name.string					= "NAME";
125 	s_login.name.style					= UI_RIGHT|UI_SMALLFONT;
126 	s_login.name.color					= s_login_color_prompt;
127 
128 	s_login.name_box.generic.type		= MTYPE_FIELD;
129 	s_login.name_box.generic.ownerdraw	= Rankings_DrawName;
130 	s_login.name_box.generic.name		= "";
131 	s_login.name_box.generic.flags		= 0;
132 	s_login.name_box.generic.x			= 330;
133 	s_login.name_box.generic.y			= y;
134 	s_login.name_box.field.widthInChars	= 16;
135 	s_login.name_box.field.maxchars		= 16;
136 	y += 20;
137 
138 	s_login.password.generic.type		= MTYPE_PTEXT;
139 	s_login.password.generic.flags		= QMF_RIGHT_JUSTIFY|QMF_INACTIVE;
140 	s_login.password.generic.id			= ID_PASSWORD;
141 	s_login.password.generic.x			= 310;
142 	s_login.password.generic.y			= y;
143 	s_login.password.string				= "PASSWORD";
144 	s_login.password.style				= UI_RIGHT|UI_SMALLFONT;
145 	s_login.password.color				= s_login_color_prompt;
146 
147 	s_login.password_box.generic.type		= MTYPE_FIELD;
148 	s_login.password_box.generic.ownerdraw	= Rankings_DrawPassword;
149 	s_login.password_box.generic.name		= "";
150 	s_login.password_box.generic.flags		= 0;
151 	s_login.password_box.generic.x			= 330;
152 	s_login.password_box.generic.y			= y;
153 	s_login.password_box.field.widthInChars	= 16;
154 	s_login.password_box.field.maxchars		= 16;
155 	y += 40;
156 
157 	s_login.login.generic.type				= MTYPE_PTEXT;
158 	s_login.login.generic.flags				= QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
159 	s_login.login.generic.id				= ID_LOGIN;
160 	s_login.login.generic.callback			= Login_MenuEvent;
161 	s_login.login.generic.x					= 310;
162 	s_login.login.generic.y					= y;
163 	s_login.login.string					= "LOGIN";
164 	s_login.login.style						= UI_RIGHT|UI_SMALLFONT;
165 	s_login.login.color						= colorRed;
166 
167 	s_login.cancel.generic.type				= MTYPE_PTEXT;
168 	s_login.cancel.generic.flags			= QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
169 	s_login.cancel.generic.id				= ID_CANCEL;
170 	s_login.cancel.generic.callback			= Login_MenuEvent;
171 	s_login.cancel.generic.x				= 330;
172 	s_login.cancel.generic.y				= y;
173 	s_login.cancel.string					= "CANCEL";
174 	s_login.cancel.style					= UI_LEFT|UI_SMALLFONT;
175 	s_login.cancel.color					= colorRed;
176 	y += 20;
177 
178 	Menu_AddItem( &s_login.menu, (void*) &s_login.frame );
179 	Menu_AddItem( &s_login.menu, (void*) &s_login.name );
180 	Menu_AddItem( &s_login.menu, (void*) &s_login.name_box );
181 	Menu_AddItem( &s_login.menu, (void*) &s_login.password );
182 	Menu_AddItem( &s_login.menu, (void*) &s_login.password_box );
183 	Menu_AddItem( &s_login.menu, (void*) &s_login.login );
184 	Menu_AddItem( &s_login.menu, (void*) &s_login.cancel );
185 }
186 
187 
188 /*
189 ===============
190 Login_Cache
191 ===============
192 */
Login_Cache(void)193 void Login_Cache( void ) {
194 	trap_R_RegisterShaderNoMip( LOGIN_FRAME );
195 }
196 
197 
198 /*
199 ===============
200 UI_LoginMenu
201 ===============
202 */
UI_LoginMenu(void)203 void UI_LoginMenu( void ) {
204 	Login_MenuInit();
205 	UI_PushMenu ( &s_login.menu );
206 }
207 
208 
209