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 #define ART_BACK0 "menu/art/back_0"
00027 #define ART_BACK1 "menu/art/back_1"
00028 #define ART_FRAMEL "menu/art/frame2_l"
00029 #define ART_FRAMER "menu/art/frame1_r"
00030
00031 #define VERTICAL_SPACING 30
00032
00033 #define ID_BACK 10
00034 #define ID_CIN_IDLOGO 11
00035 #define ID_CIN_INTRO 12
00036 #define ID_CIN_TIER1 13
00037 #define ID_CIN_TIER2 14
00038 #define ID_CIN_TIER3 15
00039 #define ID_CIN_TIER4 16
00040 #define ID_CIN_TIER5 17
00041 #define ID_CIN_TIER6 18
00042 #define ID_CIN_TIER7 19
00043 #define ID_CIN_END 20
00044
00045
00046 typedef struct {
00047 menuframework_s menu;
00048 menutext_s banner;
00049 menubitmap_s framel;
00050 menubitmap_s framer;
00051 menutext_s cin_idlogo;
00052 menutext_s cin_intro;
00053 menutext_s cin_tier1;
00054 menutext_s cin_tier2;
00055 menutext_s cin_tier3;
00056 menutext_s cin_tier4;
00057 menutext_s cin_tier5;
00058 menutext_s cin_tier6;
00059 menutext_s cin_tier7;
00060 menutext_s cin_end;
00061 menubitmap_s back;
00062 } cinematicsMenuInfo_t;
00063
00064 static cinematicsMenuInfo_t cinematicsMenuInfo;
00065
00066 static char *cinematics[] = {
00067 "idlogo",
00068 "intro",
00069 "tier1",
00070 "tier2",
00071 "tier3",
00072 "tier4",
00073 "tier5",
00074 "tier6",
00075 "tier7",
00076 "end"
00077 };
00078
00079
00080
00081
00082
00083
00084 static void UI_CinematicsMenu_BackEvent( void *ptr, int event ) {
00085 if( event != QM_ACTIVATED ) {
00086 return;
00087 }
00088 UI_PopMenu();
00089 }
00090
00091
00092
00093
00094
00095
00096
00097 static void UI_CinematicsMenu_Event( void *ptr, int event ) {
00098 int n;
00099
00100 if (event != QM_ACTIVATED)
00101 return;
00102
00103 n = ((menucommon_s*)ptr)->id - ID_CIN_IDLOGO;
00104 trap_Cvar_Set( "nextmap", va( "ui_cinematics %i", n ) );
00105 if( uis.demoversion && ((menucommon_s*)ptr)->id == ID_CIN_END ) {
00106 trap_Cmd_ExecuteText( EXEC_APPEND, "disconnect; cinematic demoEnd.RoQ 1\n" );
00107 }
00108 else {
00109 trap_Cmd_ExecuteText( EXEC_APPEND, va( "disconnect; cinematic %s.RoQ\n", cinematics[n] ) );
00110 }
00111 }
00112
00113
00114
00115
00116
00117
00118
00119 static void UI_CinematicsMenu_Init( void ) {
00120 int y;
00121
00122 UI_CinematicsMenu_Cache();
00123
00124 memset( &cinematicsMenuInfo, 0, sizeof(cinematicsMenuInfo) );
00125 cinematicsMenuInfo.menu.fullscreen = qtrue;
00126
00127 cinematicsMenuInfo.banner.generic.type = MTYPE_BTEXT;
00128 cinematicsMenuInfo.banner.generic.x = 320;
00129 cinematicsMenuInfo.banner.generic.y = 16;
00130 cinematicsMenuInfo.banner.string = "CINEMATICS";
00131 cinematicsMenuInfo.banner.color = color_white;
00132 cinematicsMenuInfo.banner.style = UI_CENTER;
00133
00134 cinematicsMenuInfo.framel.generic.type = MTYPE_BITMAP;
00135 cinematicsMenuInfo.framel.generic.name = ART_FRAMEL;
00136 cinematicsMenuInfo.framel.generic.flags = QMF_INACTIVE;
00137 cinematicsMenuInfo.framel.generic.x = 0;
00138 cinematicsMenuInfo.framel.generic.y = 78;
00139 cinematicsMenuInfo.framel.width = 256;
00140 cinematicsMenuInfo.framel.height = 329;
00141
00142 cinematicsMenuInfo.framer.generic.type = MTYPE_BITMAP;
00143 cinematicsMenuInfo.framer.generic.name = ART_FRAMER;
00144 cinematicsMenuInfo.framer.generic.flags = QMF_INACTIVE;
00145 cinematicsMenuInfo.framer.generic.x = 376;
00146 cinematicsMenuInfo.framer.generic.y = 76;
00147 cinematicsMenuInfo.framer.width = 256;
00148 cinematicsMenuInfo.framer.height = 334;
00149
00150 y = 100;
00151 cinematicsMenuInfo.cin_idlogo.generic.type = MTYPE_PTEXT;
00152 cinematicsMenuInfo.cin_idlogo.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
00153 cinematicsMenuInfo.cin_idlogo.generic.x = 320;
00154 cinematicsMenuInfo.cin_idlogo.generic.y = y;
00155 cinematicsMenuInfo.cin_idlogo.generic.id = ID_CIN_IDLOGO;
00156 cinematicsMenuInfo.cin_idlogo.generic.callback = UI_CinematicsMenu_Event;
00157 cinematicsMenuInfo.cin_idlogo.string = "ID LOGO";
00158 cinematicsMenuInfo.cin_idlogo.color = color_red;
00159 cinematicsMenuInfo.cin_idlogo.style = UI_CENTER;
00160
00161 y += VERTICAL_SPACING;
00162 cinematicsMenuInfo.cin_intro.generic.type = MTYPE_PTEXT;
00163 cinematicsMenuInfo.cin_intro.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
00164 cinematicsMenuInfo.cin_intro.generic.x = 320;
00165 cinematicsMenuInfo.cin_intro.generic.y = y;
00166 cinematicsMenuInfo.cin_intro.generic.id = ID_CIN_INTRO;
00167 cinematicsMenuInfo.cin_intro.generic.callback = UI_CinematicsMenu_Event;
00168 cinematicsMenuInfo.cin_intro.string = "INTRO";
00169 cinematicsMenuInfo.cin_intro.color = color_red;
00170 cinematicsMenuInfo.cin_intro.style = UI_CENTER;
00171 if( uis.demoversion ) {
00172 cinematicsMenuInfo.cin_intro.generic.flags |= QMF_GRAYED;
00173 }
00174
00175 y += VERTICAL_SPACING;
00176 cinematicsMenuInfo.cin_tier1.generic.type = MTYPE_PTEXT;
00177 cinematicsMenuInfo.cin_tier1.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
00178 cinematicsMenuInfo.cin_tier1.generic.x = 320;
00179 cinematicsMenuInfo.cin_tier1.generic.y = y;
00180 cinematicsMenuInfo.cin_tier1.generic.id = ID_CIN_TIER1;
00181 cinematicsMenuInfo.cin_tier1.generic.callback = UI_CinematicsMenu_Event;
00182 cinematicsMenuInfo.cin_tier1.string = "Tier 1";
00183 cinematicsMenuInfo.cin_tier1.color = color_red;
00184 cinematicsMenuInfo.cin_tier1.style = UI_CENTER;
00185 if( !UI_CanShowTierVideo( 1 ) ) {
00186 cinematicsMenuInfo.cin_tier1.generic.flags |= QMF_GRAYED;
00187 }
00188
00189 y += VERTICAL_SPACING;
00190 cinematicsMenuInfo.cin_tier2.generic.type = MTYPE_PTEXT;
00191 cinematicsMenuInfo.cin_tier2.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
00192 cinematicsMenuInfo.cin_tier2.generic.x = 320;
00193 cinematicsMenuInfo.cin_tier2.generic.y = y;
00194 cinematicsMenuInfo.cin_tier2.generic.id = ID_CIN_TIER2;
00195 cinematicsMenuInfo.cin_tier2.generic.callback = UI_CinematicsMenu_Event;
00196 cinematicsMenuInfo.cin_tier2.string = "Tier 2";
00197 cinematicsMenuInfo.cin_tier2.color = color_red;
00198 cinematicsMenuInfo.cin_tier2.style = UI_CENTER;
00199 if( !UI_CanShowTierVideo( 2 ) ) {
00200 cinematicsMenuInfo.cin_tier2.generic.flags |= QMF_GRAYED;
00201 }
00202
00203 y += VERTICAL_SPACING;
00204 cinematicsMenuInfo.cin_tier3.generic.type = MTYPE_PTEXT;
00205 cinematicsMenuInfo.cin_tier3.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
00206 cinematicsMenuInfo.cin_tier3.generic.x = 320;
00207 cinematicsMenuInfo.cin_tier3.generic.y = y;
00208 cinematicsMenuInfo.cin_tier3.generic.id = ID_CIN_TIER3;
00209 cinematicsMenuInfo.cin_tier3.generic.callback = UI_CinematicsMenu_Event;
00210 cinematicsMenuInfo.cin_tier3.string = "Tier 3";
00211 cinematicsMenuInfo.cin_tier3.color = color_red;
00212 cinematicsMenuInfo.cin_tier3.style = UI_CENTER;
00213 if( !UI_CanShowTierVideo( 3 ) ) {
00214 cinematicsMenuInfo.cin_tier3.generic.flags |= QMF_GRAYED;
00215 }
00216
00217 y += VERTICAL_SPACING;
00218 cinematicsMenuInfo.cin_tier4.generic.type = MTYPE_PTEXT;
00219 cinematicsMenuInfo.cin_tier4.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
00220 cinematicsMenuInfo.cin_tier4.generic.x = 320;
00221 cinematicsMenuInfo.cin_tier4.generic.y = y;
00222 cinematicsMenuInfo.cin_tier4.generic.id = ID_CIN_TIER4;
00223 cinematicsMenuInfo.cin_tier4.generic.callback = UI_CinematicsMenu_Event;
00224 cinematicsMenuInfo.cin_tier4.string = "Tier 4";
00225 cinematicsMenuInfo.cin_tier4.color = color_red;
00226 cinematicsMenuInfo.cin_tier4.style = UI_CENTER;
00227 if( !UI_CanShowTierVideo( 4 ) ) {
00228 cinematicsMenuInfo.cin_tier4.generic.flags |= QMF_GRAYED;
00229 }
00230
00231 y += VERTICAL_SPACING;
00232 cinematicsMenuInfo.cin_tier5.generic.type = MTYPE_PTEXT;
00233 cinematicsMenuInfo.cin_tier5.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
00234 cinematicsMenuInfo.cin_tier5.generic.x = 320;
00235 cinematicsMenuInfo.cin_tier5.generic.y = y;
00236 cinematicsMenuInfo.cin_tier5.generic.id = ID_CIN_TIER5;
00237 cinematicsMenuInfo.cin_tier5.generic.callback = UI_CinematicsMenu_Event;
00238 cinematicsMenuInfo.cin_tier5.string = "Tier 5";
00239 cinematicsMenuInfo.cin_tier5.color = color_red;
00240 cinematicsMenuInfo.cin_tier5.style = UI_CENTER;
00241 if( !UI_CanShowTierVideo( 5 ) ) {
00242 cinematicsMenuInfo.cin_tier5.generic.flags |= QMF_GRAYED;
00243 }
00244
00245 y += VERTICAL_SPACING;
00246 cinematicsMenuInfo.cin_tier6.generic.type = MTYPE_PTEXT;
00247 cinematicsMenuInfo.cin_tier6.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
00248 cinematicsMenuInfo.cin_tier6.generic.x = 320;
00249 cinematicsMenuInfo.cin_tier6.generic.y = y;
00250 cinematicsMenuInfo.cin_tier6.generic.id = ID_CIN_TIER6;
00251 cinematicsMenuInfo.cin_tier6.generic.callback = UI_CinematicsMenu_Event;
00252 cinematicsMenuInfo.cin_tier6.string = "Tier 6";
00253 cinematicsMenuInfo.cin_tier6.color = color_red;
00254 cinematicsMenuInfo.cin_tier6.style = UI_CENTER;
00255 if( !UI_CanShowTierVideo( 6 ) ) {
00256 cinematicsMenuInfo.cin_tier6.generic.flags |= QMF_GRAYED;
00257 }
00258
00259 y += VERTICAL_SPACING;
00260 cinematicsMenuInfo.cin_tier7.generic.type = MTYPE_PTEXT;
00261 cinematicsMenuInfo.cin_tier7.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
00262 cinematicsMenuInfo.cin_tier7.generic.x = 320;
00263 cinematicsMenuInfo.cin_tier7.generic.y = y;
00264 cinematicsMenuInfo.cin_tier7.generic.id = ID_CIN_TIER7;
00265 cinematicsMenuInfo.cin_tier7.generic.callback = UI_CinematicsMenu_Event;
00266 cinematicsMenuInfo.cin_tier7.string = "Tier 7";
00267 cinematicsMenuInfo.cin_tier7.color = color_red;
00268 cinematicsMenuInfo.cin_tier7.style = UI_CENTER;
00269 if( !UI_CanShowTierVideo( 7 ) ) {
00270 cinematicsMenuInfo.cin_tier7.generic.flags |= QMF_GRAYED;
00271 }
00272
00273 y += VERTICAL_SPACING;
00274 cinematicsMenuInfo.cin_end.generic.type = MTYPE_PTEXT;
00275 cinematicsMenuInfo.cin_end.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
00276 cinematicsMenuInfo.cin_end.generic.x = 320;
00277 cinematicsMenuInfo.cin_end.generic.y = y;
00278 cinematicsMenuInfo.cin_end.generic.id = ID_CIN_END;
00279 cinematicsMenuInfo.cin_end.generic.callback = UI_CinematicsMenu_Event;
00280 cinematicsMenuInfo.cin_end.string = "END";
00281 cinematicsMenuInfo.cin_end.color = color_red;
00282 cinematicsMenuInfo.cin_end.style = UI_CENTER;
00283 if( !UI_CanShowTierVideo( 8 ) ) {
00284 cinematicsMenuInfo.cin_end.generic.flags |= QMF_GRAYED;
00285 }
00286
00287 cinematicsMenuInfo.back.generic.type = MTYPE_BITMAP;
00288 cinematicsMenuInfo.back.generic.name = ART_BACK0;
00289 cinematicsMenuInfo.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
00290 cinematicsMenuInfo.back.generic.id = ID_BACK;
00291 cinematicsMenuInfo.back.generic.callback = UI_CinematicsMenu_BackEvent;
00292 cinematicsMenuInfo.back.generic.x = 0;
00293 cinematicsMenuInfo.back.generic.y = 480-64;
00294 cinematicsMenuInfo.back.width = 128;
00295 cinematicsMenuInfo.back.height = 64;
00296 cinematicsMenuInfo.back.focuspic = ART_BACK1;
00297
00298 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.banner );
00299 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.framel );
00300 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.framer );
00301 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_idlogo );
00302 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_intro );
00303 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier1 );
00304 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier2 );
00305 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier3 );
00306 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier4 );
00307 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier5 );
00308 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier6 );
00309 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier7 );
00310 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_end );
00311 Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.back );
00312 }
00313
00314
00315
00316
00317
00318
00319
00320 void UI_CinematicsMenu_Cache( void ) {
00321 trap_R_RegisterShaderNoMip( ART_BACK0 );
00322 trap_R_RegisterShaderNoMip( ART_BACK1 );
00323 trap_R_RegisterShaderNoMip( ART_FRAMEL );
00324 trap_R_RegisterShaderNoMip( ART_FRAMER );
00325 }
00326
00327
00328
00329
00330
00331
00332
00333 void UI_CinematicsMenu( void ) {
00334 UI_CinematicsMenu_Init();
00335 UI_PushMenu( &cinematicsMenuInfo.menu );
00336 }
00337
00338
00339
00340
00341
00342
00343
00344 void UI_CinematicsMenu_f( void ) {
00345 int n;
00346
00347 n = atoi( UI_Argv( 1 ) );
00348 UI_CinematicsMenu();
00349 Menu_SetCursorToItem( &cinematicsMenuInfo.menu, cinematicsMenuInfo.menu.items[n + 3] );
00350 }