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

ui_demo2.c File Reference

#include "ui_local.h"

Include dependency graph for ui_demo2.c:

Include dependency graph

Go to the source code of this file.

Data Structures

struct  demos_t

Defines

#define ARROWS_HEIGHT   48
#define ARROWS_WIDTH   128
#define ART_ARROWLEFT   "menu/art/arrows_horz_left"
#define ART_ARROWRIGHT   "menu/art/arrows_horz_right"
#define ART_ARROWS   "menu/art/arrows_horz_0"
#define ART_BACK0   "menu/art/back_0"
#define ART_BACK1   "menu/art/back_1"
#define ART_FRAMEL   "menu/art/frame2_l"
#define ART_FRAMER   "menu/art/frame1_r"
#define ART_GO0   "menu/art/play_0"
#define ART_GO1   "menu/art/play_1"
#define ID_BACK   10
#define ID_GO   11
#define ID_LEFT   14
#define ID_LIST   12
#define ID_RIGHT   13
#define MAX_DEMOS   128
#define NAMEBUFSIZE   ( MAX_DEMOS * 16 )

Functions

void Demos_Cache (void)
void Demos_MenuEvent (void *ptr, int event)
void Demos_MenuInit (void)
void UI_DemosMenu (void)
sfxHandle_t UI_DemosMenu_Key (int key)

Variables

demos_t s_demos


Define Documentation

#define ARROWS_HEIGHT   48
 

Definition at line 55 of file ui_demo2.c.

#define ARROWS_WIDTH   128
 

Definition at line 54 of file ui_demo2.c.

Referenced by Demos_MenuInit(), and LoadConfig_MenuInit().

#define ART_ARROWLEFT   "menu/art/arrows_horz_left"
 

Definition at line 42 of file ui_demo2.c.

Referenced by Demos_Cache(), and UI_LoadConfig_Cache().

#define ART_ARROWRIGHT   "menu/art/arrows_horz_right"
 

Definition at line 43 of file ui_demo2.c.

Referenced by Demos_Cache(), and UI_LoadConfig_Cache().

#define ART_ARROWS   "menu/art/arrows_horz_0"
 

Definition at line 41 of file ui_demo2.c.

#define ART_BACK0   "menu/art/back_0"
 

Definition at line 35 of file ui_demo2.c.

#define ART_BACK1   "menu/art/back_1"
 

Definition at line 36 of file ui_demo2.c.

#define ART_FRAMEL   "menu/art/frame2_l"
 

Definition at line 39 of file ui_demo2.c.

#define ART_FRAMER   "menu/art/frame1_r"
 

Definition at line 40 of file ui_demo2.c.

#define ART_GO0   "menu/art/play_0"
 

Definition at line 37 of file ui_demo2.c.

Referenced by Demos_Cache().

#define ART_GO1   "menu/art/play_1"
 

Definition at line 38 of file ui_demo2.c.

Referenced by Demos_Cache().

#define ID_BACK   10
 

Definition at line 48 of file ui_demo2.c.

#define ID_GO   11
 

Definition at line 49 of file ui_demo2.c.

#define ID_LEFT   14
 

Definition at line 52 of file ui_demo2.c.

#define ID_LIST   12
 

Definition at line 50 of file ui_demo2.c.

#define ID_RIGHT   13
 

Definition at line 51 of file ui_demo2.c.

#define MAX_DEMOS   128
 

Definition at line 45 of file ui_demo2.c.

#define NAMEBUFSIZE   ( MAX_DEMOS * 16 )
 

Definition at line 46 of file ui_demo2.c.

Referenced by Demos_MenuInit(), and LoadConfig_MenuInit().


Function Documentation

void Demos_Cache void   ) 
 

Definition at line 271 of file ui_demo2.c.

References ART_ARROWLEFT, ART_ARROWRIGHT, ART_ARROWS, ART_BACK0, ART_BACK1, ART_FRAMEL, ART_FRAMER, ART_GO0, ART_GO1, and trap_R_RegisterShaderNoMip().

Referenced by Demos_MenuInit(), and UI_Cache_f().

00271                          {
00272     trap_R_RegisterShaderNoMip( ART_BACK0 );
00273     trap_R_RegisterShaderNoMip( ART_BACK1 );
00274     trap_R_RegisterShaderNoMip( ART_GO0 );
00275     trap_R_RegisterShaderNoMip( ART_GO1 );
00276     trap_R_RegisterShaderNoMip( ART_FRAMEL );
00277     trap_R_RegisterShaderNoMip( ART_FRAMER );
00278     trap_R_RegisterShaderNoMip( ART_ARROWS );
00279     trap_R_RegisterShaderNoMip( ART_ARROWLEFT );
00280     trap_R_RegisterShaderNoMip( ART_ARROWRIGHT );
00281 }

Here is the call graph for this function:

void Demos_MenuEvent void *  ptr,
int  event
[static]
 

Definition at line 86 of file ui_demo2.c.

References menulist_s::curvalue, EXEC_APPEND, ID_BACK, ID_GO, ID_LEFT, ID_RIGHT, menulist_s::itemnames, K_LEFTARROW, K_RIGHTARROW, demos_t::list, s_demos, ScrollList_Key(), trap_Cmd_ExecuteText(), UI_ForceMenuOff(), UI_PopMenu(), and va().

00086                                                     {
00087     if( event != QM_ACTIVATED ) {
00088         return;
00089     }
00090 
00091     switch( ((menucommon_s*)ptr)->id ) {
00092     case ID_GO:
00093         UI_ForceMenuOff ();
00094         trap_Cmd_ExecuteText( EXEC_APPEND, va( "demo %s\n",
00095                                 s_demos.list.itemnames[s_demos.list.curvalue]) );
00096         break;
00097 
00098     case ID_BACK:
00099         UI_PopMenu();
00100         break;
00101 
00102     case ID_LEFT:
00103         ScrollList_Key( &s_demos.list, K_LEFTARROW );
00104         break;
00105 
00106     case ID_RIGHT:
00107         ScrollList_Key( &s_demos.list, K_RIGHTARROW );
00108         break;
00109     }
00110 }

Here is the call graph for this function:

void Demos_MenuInit void   )  [static]
 

Definition at line 132 of file ui_demo2.c.

References demos_t::arrows, ARROWS_WIDTH, demos_t::back, demos_t::banner, menucommon_s::callback, menutext_s::color, menulist_s::columns, Com_sprintf(), demos_t::demolist, Demos_Cache(), menucommon_s::flags, menubitmap_s::focuspic, demos_t::framel, demos_t::framer, _tag_menuframework::fullscreen, menulist_s::generic, menubitmap_s::generic, menutext_s::generic, demos_t::go, menulist_s::height, menubitmap_s::height, i, menucommon_s::id, menulist_s::itemnames, _tag_menuframework::key, demos_t::left, demos_t::list, memset(), demos_t::menu, Menu_AddItem(), menucommon_s::name, NAMEBUFSIZE, demos_t::names, menulist_s::numitems, Q_stricmp(), Q_strupr(), QMF_INACTIVE, QMF_LEFT_JUSTIFY, QMF_PULSEIFFOCUS, QMF_RIGHT_JUSTIFY, demos_t::right, s_demos, strcpy(), menutext_s::string, strlen(), menutext_s::style, trap_Cvar_VariableValue(), trap_FS_GetFileList(), menucommon_s::type, menulist_s::width, menubitmap_s::width, _tag_menuframework::wrapAround, menucommon_s::x, and menucommon_s::y.

Referenced by UI_DemosMenu().

00132                                    {
00133     int     i;
00134     int     len;
00135     char    *demoname, extension[32];
00136 
00137     memset( &s_demos, 0 ,sizeof(demos_t) );
00138     s_demos.menu.key = UI_DemosMenu_Key;
00139 
00140     Demos_Cache();
00141 
00142     s_demos.menu.fullscreen = qtrue;
00143     s_demos.menu.wrapAround = qtrue;
00144 
00145     s_demos.banner.generic.type     = MTYPE_BTEXT;
00146     s_demos.banner.generic.x        = 320;
00147     s_demos.banner.generic.y        = 16;
00148     s_demos.banner.string           = "DEMOS";
00149     s_demos.banner.color            = color_white;
00150     s_demos.banner.style            = UI_CENTER;
00151 
00152     s_demos.framel.generic.type     = MTYPE_BITMAP;
00153     s_demos.framel.generic.name     = ART_FRAMEL;
00154     s_demos.framel.generic.flags    = QMF_INACTIVE;
00155     s_demos.framel.generic.x        = 0;  
00156     s_demos.framel.generic.y        = 78;
00157     s_demos.framel.width            = 256;
00158     s_demos.framel.height           = 329;
00159 
00160     s_demos.framer.generic.type     = MTYPE_BITMAP;
00161     s_demos.framer.generic.name     = ART_FRAMER;
00162     s_demos.framer.generic.flags    = QMF_INACTIVE;
00163     s_demos.framer.generic.x        = 376;
00164     s_demos.framer.generic.y        = 76;
00165     s_demos.framer.width            = 256;
00166     s_demos.framer.height           = 334;
00167 
00168     s_demos.arrows.generic.type     = MTYPE_BITMAP;
00169     s_demos.arrows.generic.name     = ART_ARROWS;
00170     s_demos.arrows.generic.flags    = QMF_INACTIVE;
00171     s_demos.arrows.generic.x        = 320-ARROWS_WIDTH/2;
00172     s_demos.arrows.generic.y        = 400;
00173     s_demos.arrows.width            = ARROWS_WIDTH;
00174     s_demos.arrows.height           = ARROWS_HEIGHT;
00175 
00176     s_demos.left.generic.type       = MTYPE_BITMAP;
00177     s_demos.left.generic.flags      = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY;
00178     s_demos.left.generic.x          = 320-ARROWS_WIDTH/2;
00179     s_demos.left.generic.y          = 400;
00180     s_demos.left.generic.id         = ID_LEFT;
00181     s_demos.left.generic.callback   = Demos_MenuEvent;
00182     s_demos.left.width              = ARROWS_WIDTH/2;
00183     s_demos.left.height             = ARROWS_HEIGHT;
00184     s_demos.left.focuspic           = ART_ARROWLEFT;
00185 
00186     s_demos.right.generic.type      = MTYPE_BITMAP;
00187     s_demos.right.generic.flags     = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY;
00188     s_demos.right.generic.x         = 320;
00189     s_demos.right.generic.y         = 400;
00190     s_demos.right.generic.id        = ID_RIGHT;
00191     s_demos.right.generic.callback  = Demos_MenuEvent;
00192     s_demos.right.width             = ARROWS_WIDTH/2;
00193     s_demos.right.height            = ARROWS_HEIGHT;
00194     s_demos.right.focuspic          = ART_ARROWRIGHT;
00195 
00196     s_demos.back.generic.type       = MTYPE_BITMAP;
00197     s_demos.back.generic.name       = ART_BACK0;
00198     s_demos.back.generic.flags      = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
00199     s_demos.back.generic.id         = ID_BACK;
00200     s_demos.back.generic.callback   = Demos_MenuEvent;
00201     s_demos.back.generic.x          = 0;
00202     s_demos.back.generic.y          = 480-64;
00203     s_demos.back.width              = 128;
00204     s_demos.back.height             = 64;
00205     s_demos.back.focuspic           = ART_BACK1;
00206 
00207     s_demos.go.generic.type         = MTYPE_BITMAP;
00208     s_demos.go.generic.name         = ART_GO0;
00209     s_demos.go.generic.flags        = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
00210     s_demos.go.generic.id           = ID_GO;
00211     s_demos.go.generic.callback     = Demos_MenuEvent;
00212     s_demos.go.generic.x            = 640;
00213     s_demos.go.generic.y            = 480-64;
00214     s_demos.go.width                = 128;
00215     s_demos.go.height               = 64;
00216     s_demos.go.focuspic             = ART_GO1;
00217 
00218     s_demos.list.generic.type       = MTYPE_SCROLLLIST;
00219     s_demos.list.generic.flags      = QMF_PULSEIFFOCUS;
00220     s_demos.list.generic.callback   = Demos_MenuEvent;
00221     s_demos.list.generic.id         = ID_LIST;
00222     s_demos.list.generic.x          = 118;
00223     s_demos.list.generic.y          = 130;
00224     s_demos.list.width              = 16;
00225     s_demos.list.height             = 14;
00226     Com_sprintf(extension, sizeof(extension), "dm_%d", (int)trap_Cvar_VariableValue( "protocol" ) );
00227     s_demos.list.numitems           = trap_FS_GetFileList( "demos", extension, s_demos.names, NAMEBUFSIZE );
00228     s_demos.list.itemnames          = (const char **)s_demos.demolist;
00229     s_demos.list.columns            = 3;
00230 
00231     if (!s_demos.list.numitems) {
00232         strcpy( s_demos.names, "No Demos Found." );
00233         s_demos.list.numitems = 1;
00234 
00235         //degenerate case, not selectable
00236         s_demos.go.generic.flags |= (QMF_INACTIVE|QMF_HIDDEN);
00237     }
00238     else if (s_demos.list.numitems > MAX_DEMOS)
00239         s_demos.list.numitems = MAX_DEMOS;
00240 
00241     demoname = s_demos.names;
00242     for ( i = 0; i < s_demos.list.numitems; i++ ) {
00243         s_demos.list.itemnames[i] = demoname;
00244         
00245         // strip extension
00246         len = strlen( demoname );
00247         if (!Q_stricmp(demoname +  len - 4,".dm3"))
00248             demoname[len-4] = '\0';
00249 
00250         Q_strupr(demoname);
00251 
00252         demoname += len + 1;
00253     }
00254 
00255     Menu_AddItem( &s_demos.menu, &s_demos.banner );
00256     Menu_AddItem( &s_demos.menu, &s_demos.framel );
00257     Menu_AddItem( &s_demos.menu, &s_demos.framer );
00258     Menu_AddItem( &s_demos.menu, &s_demos.list );
00259     Menu_AddItem( &s_demos.menu, &s_demos.arrows );
00260     Menu_AddItem( &s_demos.menu, &s_demos.left );
00261     Menu_AddItem( &s_demos.menu, &s_demos.right );
00262     Menu_AddItem( &s_demos.menu, &s_demos.back );
00263     Menu_AddItem( &s_demos.menu, &s_demos.go );
00264 }

Here is the call graph for this function:

void UI_DemosMenu void   ) 
 

Definition at line 288 of file ui_demo2.c.

References Demos_MenuInit(), demos_t::menu, s_demos, and UI_PushMenu().

Referenced by Main_MenuEvent().

00288                           {
00289     Demos_MenuInit();
00290     UI_PushMenu( &s_demos.menu );
00291 }

Here is the call graph for this function:

sfxHandle_t UI_DemosMenu_Key int  key  )  [static]
 

Definition at line 118 of file ui_demo2.c.

References demos_t::menu, Menu_DefaultKey(), Menu_ItemAtCursor(), s_demos, and sfxHandle_t.

00118                                                {
00119     menucommon_s    *item;
00120 
00121     item = Menu_ItemAtCursor( &s_demos.menu );
00122 
00123     return Menu_DefaultKey( &s_demos.menu, key );
00124 }

Here is the call graph for this function:


Variable Documentation

demos_t s_demos [static]
 

Definition at line 78 of file ui_demo2.c.

Referenced by Demos_MenuEvent(), Demos_MenuInit(), UI_DemosMenu(), and UI_DemosMenu_Key().


Generated on Thu Aug 25 14:28:20 2005 for Quake III Arena by  doxygen 1.3.9.1