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