00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "ui_local.h"
00024
00025
00026
00027
00028
00029 #define MAX_LISTBOXITEMS 128
00030 #define MAX_LISTBOXWIDTH 40
00031 #define MAX_LEAGUENAME 80
00032
00033 #define SPECIFYLEAGUE_FRAMEL "menu/art/frame2_l"
00034 #define SPECIFYLEAGUE_FRAMER "menu/art/frame1_r"
00035 #define SPECIFYLEAGUE_BACK0 "menu/art/back_0"
00036 #define SPECIFYLEAGUE_BACK1 "menu/art/back_1"
00037 #define SPECIFYLEAGUE_ARROWS0 "menu/art/arrows_vert_0"
00038 #define SPECIFYLEAGUE_UP "menu/art/arrows_vert_top"
00039 #define SPECIFYLEAGUE_DOWN "menu/art/arrows_vert_bot"
00040 #define GLOBALRANKINGS_LOGO "menu/art/gr/grlogo"
00041 #define GLOBALRANKINGS_LETTERS "menu/art/gr/grletters"
00042
00043 #define ID_SPECIFYLEAGUENAME 100
00044 #define ID_SPECIFYLEAGUELIST 101
00045 #define ID_SPECIFYLEAGUEUP 102
00046 #define ID_SPECIFYLEAGUEDOWN 103
00047 #define ID_SPECIFYLEAGUEBACK 104
00048
00049 static char* specifyleague_artlist[] =
00050 {
00051 SPECIFYLEAGUE_FRAMEL,
00052 SPECIFYLEAGUE_FRAMER,
00053 SPECIFYLEAGUE_ARROWS0,
00054 SPECIFYLEAGUE_UP,
00055 SPECIFYLEAGUE_DOWN,
00056 SPECIFYLEAGUE_BACK0,
00057 SPECIFYLEAGUE_BACK1,
00058 GLOBALRANKINGS_LOGO,
00059 GLOBALRANKINGS_LETTERS,
00060 NULL
00061 };
00062
00063 static char playername[80];
00064
00065 typedef struct
00066 {
00067 menuframework_s menu;
00068 menutext_s banner;
00069 menubitmap_s framel;
00070 menubitmap_s framer;
00071 menufield_s rankname;
00072 menulist_s list;
00073 menubitmap_s arrows;
00074 menubitmap_s up;
00075 menubitmap_s down;
00076 menubitmap_s back;
00077 menubitmap_s grlogo;
00078 menubitmap_s grletters;
00079 } specifyleague_t;
00080
00081 static specifyleague_t s_specifyleague;
00082
00083
00084 typedef struct {
00085 char buff[MAX_LISTBOXWIDTH];
00086 char leaguename[MAX_LEAGUENAME];
00087 } table_t;
00088
00089 table_t league_table[MAX_LISTBOXITEMS];
00090 char *leaguename_items[MAX_LISTBOXITEMS];
00091
00092
00093 static void SpecifyLeague_GetList()
00094 {
00095 int count = 0;
00096 int i;
00097
00098 Q_strncpyz( playername,
00099 s_specifyleague.rankname.field.buffer,
00100 sizeof(playername) );
00101
00102 count = trap_CL_UI_RankGetLeauges( playername );
00103
00104 for(i = 0; i < count; i++)
00105 {
00106 char s[MAX_LEAGUENAME];
00107 const char *var;
00108 var = va( "leaguename%i", i+1 );
00109 trap_Cvar_VariableStringBuffer( var, s, sizeof(s) );
00110 Q_strncpyz(league_table[i].leaguename, s, sizeof(league_table[i].leaguename) );
00111 Q_strncpyz(league_table[i].buff, league_table[i].leaguename, sizeof(league_table[i].buff) );
00112 }
00113
00114 s_specifyleague.list.numitems = count;
00115 }
00116
00117
00118
00119
00120
00121
00122 static void SpecifyLeague_Event( void* ptr, int event )
00123 {
00124 int id;
00125 id = ((menucommon_s*)ptr)->id;
00126
00127
00128
00129
00130 switch (id)
00131 {
00132 case ID_SPECIFYLEAGUELIST:
00133 if( event == QM_GOTFOCUS ) {
00134
00135 }
00136 break;
00137
00138 case ID_SPECIFYLEAGUEUP:
00139 if( event == QM_ACTIVATED )
00140 ScrollList_Key( &s_specifyleague.list, K_UPARROW );
00141 break;
00142
00143 case ID_SPECIFYLEAGUEDOWN:
00144 if( event == QM_ACTIVATED )
00145 ScrollList_Key( &s_specifyleague.list, K_DOWNARROW );
00146 break;
00147
00148 case ID_SPECIFYLEAGUENAME:
00149 if( (event == QM_LOSTFOCUS) &&
00150 (Q_strncmp(playername,
00151 s_specifyleague.rankname.field.buffer,
00152 strlen(s_specifyleague.rankname.field.buffer)) != 0))
00153 {
00154 SpecifyLeague_GetList();
00155 }
00156 break;
00157
00158 case ID_SPECIFYLEAGUEBACK:
00159 if( event == QM_ACTIVATED )
00160 {
00161 trap_Cvar_Set( "sv_leagueName", league_table[s_specifyleague.list.curvalue].leaguename);
00162 UI_PopMenu();
00163 }
00164 break;
00165 }
00166 }
00167
00168
00169
00170
00171
00172
00173 void SpecifyLeague_MenuInit( void )
00174 {
00175 int i;
00176
00177 memset( &s_specifyleague, 0 ,sizeof(specifyleague_t) );
00178
00179 SpecifyLeague_Cache();
00180
00181 s_specifyleague.menu.wrapAround = qtrue;
00182 s_specifyleague.menu.fullscreen = qtrue;
00183
00184 s_specifyleague.banner.generic.type = MTYPE_BTEXT;
00185 s_specifyleague.banner.generic.x = 320;
00186 s_specifyleague.banner.generic.y = 16;
00187 s_specifyleague.banner.string = "CHOOSE LEAGUE";
00188 s_specifyleague.banner.color = color_white;
00189 s_specifyleague.banner.style = UI_CENTER;
00190
00191 s_specifyleague.framel.generic.type = MTYPE_BITMAP;
00192 s_specifyleague.framel.generic.name = SPECIFYLEAGUE_FRAMEL;
00193 s_specifyleague.framel.generic.flags = QMF_INACTIVE;
00194 s_specifyleague.framel.generic.x = 0;
00195 s_specifyleague.framel.generic.y = 78;
00196 s_specifyleague.framel.width = 256;
00197 s_specifyleague.framel.height = 334;
00198
00199 s_specifyleague.framer.generic.type = MTYPE_BITMAP;
00200 s_specifyleague.framer.generic.name = SPECIFYLEAGUE_FRAMER;
00201 s_specifyleague.framer.generic.flags = QMF_INACTIVE;
00202 s_specifyleague.framer.generic.x = 376;
00203 s_specifyleague.framer.generic.y = 76;
00204 s_specifyleague.framer.width = 256;
00205 s_specifyleague.framer.height = 334;
00206
00207 s_specifyleague.grlogo.generic.type = MTYPE_BITMAP;
00208 s_specifyleague.grlogo.generic.name = GLOBALRANKINGS_LOGO;
00209 s_specifyleague.grlogo.generic.flags = QMF_INACTIVE;
00210 s_specifyleague.grlogo.generic.x = 0;
00211 s_specifyleague.grlogo.generic.y = 0;
00212 s_specifyleague.grlogo.width = 64;
00213 s_specifyleague.grlogo.height = 128;
00214
00215 s_specifyleague.rankname.generic.type = MTYPE_FIELD;
00216 s_specifyleague.rankname.generic.name = "Player Name:";
00217 s_specifyleague.rankname.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
00218 s_specifyleague.rankname.generic.callback = SpecifyLeague_Event;
00219 s_specifyleague.rankname.generic.id = ID_SPECIFYLEAGUENAME;
00220 s_specifyleague.rankname.generic.x = 226;
00221 s_specifyleague.rankname.generic.y = 128;
00222 s_specifyleague.rankname.field.widthInChars = 32;
00223 s_specifyleague.rankname.field.maxchars = 80;
00224
00225 s_specifyleague.list.generic.type = MTYPE_SCROLLLIST;
00226 s_specifyleague.list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
00227 s_specifyleague.list.generic.id = ID_SPECIFYLEAGUELIST;
00228 s_specifyleague.list.generic.callback = SpecifyLeague_Event;
00229 s_specifyleague.list.generic.x = 160;
00230 s_specifyleague.list.generic.y = 200;
00231 s_specifyleague.list.width = MAX_LISTBOXWIDTH;
00232 s_specifyleague.list.height = 8;
00233 s_specifyleague.list.itemnames = (const char **)leaguename_items;
00234 s_specifyleague.list.numitems = 0;
00235 for( i = 0; i < MAX_LISTBOXITEMS; i++ ) {
00236 league_table[i].buff[0] = 0;
00237 league_table[i].leaguename[0] = 0;
00238 leaguename_items[i] = league_table[i].buff;
00239 }
00240
00241 s_specifyleague.arrows.generic.type = MTYPE_BITMAP;
00242 s_specifyleague.arrows.generic.name = SPECIFYLEAGUE_ARROWS0;
00243 s_specifyleague.arrows.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE;
00244 s_specifyleague.arrows.generic.callback = SpecifyLeague_Event;
00245 s_specifyleague.arrows.generic.x = 512;
00246 s_specifyleague.arrows.generic.y = 240-64+16;
00247 s_specifyleague.arrows.width = 64;
00248 s_specifyleague.arrows.height = 128;
00249
00250 s_specifyleague.up.generic.type = MTYPE_BITMAP;
00251 s_specifyleague.up.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY;
00252 s_specifyleague.up.generic.callback = SpecifyLeague_Event;
00253 s_specifyleague.up.generic.id = ID_SPECIFYLEAGUEUP;
00254 s_specifyleague.up.generic.x = 512;
00255 s_specifyleague.up.generic.y = 240-64+16;
00256 s_specifyleague.up.width = 64;
00257 s_specifyleague.up.height = 64;
00258 s_specifyleague.up.focuspic = SPECIFYLEAGUE_UP;
00259
00260 s_specifyleague.down.generic.type = MTYPE_BITMAP;
00261 s_specifyleague.down.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY;
00262 s_specifyleague.down.generic.callback = SpecifyLeague_Event;
00263 s_specifyleague.down.generic.id = ID_SPECIFYLEAGUEDOWN;
00264 s_specifyleague.down.generic.x = 512;
00265 s_specifyleague.down.generic.y = 240+16;
00266 s_specifyleague.down.width = 64;
00267 s_specifyleague.down.height = 64;
00268 s_specifyleague.down.focuspic = SPECIFYLEAGUE_DOWN;
00269
00270 s_specifyleague.back.generic.type = MTYPE_BITMAP;
00271 s_specifyleague.back.generic.name = SPECIFYLEAGUE_BACK0;
00272 s_specifyleague.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
00273 s_specifyleague.back.generic.callback = SpecifyLeague_Event;
00274 s_specifyleague.back.generic.id = ID_SPECIFYLEAGUEBACK;
00275 s_specifyleague.back.generic.x = 0;
00276 s_specifyleague.back.generic.y = 480-64;
00277 s_specifyleague.back.width = 128;
00278 s_specifyleague.back.height = 64;
00279 s_specifyleague.back.focuspic = SPECIFYLEAGUE_BACK1;
00280
00281 Menu_AddItem( &s_specifyleague.menu, &s_specifyleague.banner );
00282 Menu_AddItem( &s_specifyleague.menu, &s_specifyleague.framel );
00283 Menu_AddItem( &s_specifyleague.menu, &s_specifyleague.framer );
00284 Menu_AddItem( &s_specifyleague.menu, &s_specifyleague.grlogo );
00285 Menu_AddItem( &s_specifyleague.menu, &s_specifyleague.rankname );
00286 Menu_AddItem( &s_specifyleague.menu, &s_specifyleague.list );
00287 Menu_AddItem( &s_specifyleague.menu, &s_specifyleague.arrows );
00288 Menu_AddItem( &s_specifyleague.menu, &s_specifyleague.up );
00289 Menu_AddItem( &s_specifyleague.menu, &s_specifyleague.down );
00290 Menu_AddItem( &s_specifyleague.menu, &s_specifyleague.back );
00291
00292
00293
00294 Q_strncpyz( s_specifyleague.rankname.field.buffer,
00295 UI_Cvar_VariableString("name"),
00296 sizeof(s_specifyleague.rankname.field.buffer) );
00297
00298 Q_strncpyz( playername,
00299 UI_Cvar_VariableString("name"),
00300 sizeof(playername) );
00301
00302 SpecifyLeague_GetList();
00303 }
00304
00305
00306
00307
00308
00309
00310 void SpecifyLeague_Cache( void )
00311 {
00312 int i;
00313
00314
00315 for (i=0; ;i++)
00316 {
00317 if (!specifyleague_artlist[i])
00318 break;
00319 trap_R_RegisterShaderNoMip(specifyleague_artlist[i]);
00320 }
00321 }
00322
00323
00324
00325
00326
00327
00328 void UI_SpecifyLeagueMenu( void )
00329 {
00330 SpecifyLeague_MenuInit();
00331 UI_PushMenu( &s_specifyleague.menu );
00332 }
00333