Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

ui_cinematics.c

Go to the documentation of this file.
00001 /*
00002 ===========================================================================
00003 Copyright (C) 1999-2005 Id Software, Inc.
00004 
00005 This file is part of Quake III Arena source code.
00006 
00007 Quake III Arena source code is free software; you can redistribute it
00008 and/or modify it under the terms of the GNU General Public License as
00009 published by the Free Software Foundation; either version 2 of the License,
00010 or (at your option) any later version.
00011 
00012 Quake III Arena source code is distributed in the hope that it will be
00013 useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 GNU General Public License for more details.
00016 
00017 You should have received a copy of the GNU General Public License
00018 along with Foobar; if not, write to the Free Software
00019 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
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 UI_CinematicsMenu_BackEvent
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 UI_CinematicsMenu_Event
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 UI_CinematicsMenu_Init
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 UI_CinematicsMenu_Cache
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 UI_CinematicsMenu
00331 ===============
00332 */
00333 void UI_CinematicsMenu( void ) {
00334     UI_CinematicsMenu_Init();
00335     UI_PushMenu( &cinematicsMenuInfo.menu );
00336 }
00337 
00338 
00339 /*
00340 ===============
00341 UI_CinematicsMenu_f
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 }

Generated on Thu Aug 25 12:37:39 2005 for Quake III Arena by  doxygen 1.3.9.1