/* =============== Demos_MenuInit =============== */ static void Demos_MenuInit (const char *dirName) { int i; int len; char *demoname, extension[32]; memset( &s_demos, 0 ,sizeof(demos_t) ); s_demos.menu.key = UI_DemosMenu_Key; Q_strncpyz(s_demos.dirName, dirName, sizeof(s_demos.dirName)); //Com_sprintf(s_demos.dirName, sizeof(s_demos.dirName), "%s%s", UseQuakeLiveDir ? "ql:" : "", dirName); //Com_Printf("dirname '%s'\n", s_demos.dirName); Demos_Cache(); s_demos.menu.fullscreen = qtrue; s_demos.menu.wrapAround = qtrue; s_demos.banner.generic.type = MTYPE_BTEXT; //MTYPE_PTEXT; //MTYPE_BTEXT; s_demos.banner.generic.x = 320; s_demos.banner.generic.y = 16; //s_demos.banner.width = 10; //s_demos.banner.height = 10; s_demos.banner.string = "DEMOS"; s_demos.banner.color = color_white; s_demos.banner.style = UI_CENTER; s_demos.framel.generic.type = MTYPE_BITMAP; s_demos.framel.generic.name = ART_FRAMEL; s_demos.framel.generic.flags = QMF_INACTIVE; s_demos.framel.generic.x = 0; s_demos.framel.generic.y = 78; s_demos.framel.width = 256; s_demos.framel.height = 329; s_demos.framer.generic.type = MTYPE_BITMAP; s_demos.framer.generic.name = ART_FRAMER; s_demos.framer.generic.flags = QMF_INACTIVE; s_demos.framer.generic.x = 376; s_demos.framer.generic.y = 76; s_demos.framer.width = 256; s_demos.framer.height = 334; #if 1 s_demos.arrows.generic.type = MTYPE_BITMAP; s_demos.arrows.generic.name = ART_ARROWS; s_demos.arrows.generic.flags = QMF_INACTIVE; s_demos.arrows.generic.x = 320-ARROWS_WIDTH/2; s_demos.arrows.generic.y = 400; s_demos.arrows.width = ARROWS_WIDTH; s_demos.arrows.height = ARROWS_HEIGHT; #endif #if 0 s_demos.left.generic.type = MTYPE_BITMAP; s_demos.left.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY; s_demos.left.generic.x = 320-ARROWS_WIDTH/2; s_demos.left.generic.y = 400; s_demos.left.generic.id = ID_LEFT; s_demos.left.generic.callback = Demos_MenuEvent; s_demos.left.width = ARROWS_WIDTH/2; s_demos.left.height = ARROWS_HEIGHT; s_demos.left.focuspic = ART_ARROWLEFT; s_demos.right.generic.type = MTYPE_BITMAP; s_demos.right.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY; s_demos.right.generic.x = 320; s_demos.right.generic.y = 400; s_demos.right.generic.id = ID_RIGHT; s_demos.right.generic.callback = Demos_MenuEvent; s_demos.right.width = ARROWS_WIDTH/2; s_demos.right.height = ARROWS_HEIGHT; s_demos.right.focuspic = ART_ARROWRIGHT; #endif s_demos.back.generic.type = MTYPE_BITMAP; s_demos.back.generic.name = ART_BACK0; s_demos.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_demos.back.generic.id = ID_BACK; s_demos.back.generic.callback = Demos_MenuEvent; s_demos.back.generic.x = 0; s_demos.back.generic.y = 480-64; s_demos.back.width = 128; s_demos.back.height = 64; s_demos.back.focuspic = ART_BACK1; s_demos.go.generic.type = MTYPE_BITMAP; s_demos.go.generic.name = ART_GO0; s_demos.go.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_demos.go.generic.id = ID_GO; s_demos.go.generic.callback = Demos_MenuEvent; s_demos.go.generic.x = 640; s_demos.go.generic.y = 480-64; s_demos.go.width = 128; s_demos.go.height = 64; s_demos.go.focuspic = ART_GO1; s_demos.list.generic.type = MTYPE_SCROLLLIST; s_demos.list.generic.flags = QMF_PULSEIFFOCUS; s_demos.list.generic.callback = Demos_MenuEvent; s_demos.list.generic.id = ID_LIST; s_demos.list.generic.x = 20; //118; s_demos.list.generic.y = 90; //130; s_demos.list.width = 40; //16; s_demos.list.height = 20; //14; Com_sprintf(extension, sizeof(extension), ".%s%d", DEMOEXT, (int) trap_Cvar_VariableValue("protocol")); //s_demos.list.numitems = trap_FS_GetFileList( "demos", extension, s_demos.names, NAMEBUFSIZE ); //s_demos.list.numitems = trap_FS_GetFileList("demos", "*wantDirs", s_demos.names, NAMEBUFSIZE); s_demos.list.numitems = trap_FS_GetFileList(dirName, "*wantDirs", s_demos.names, NAMEBUFSIZE); s_demos.list.itemnames = (const char **)s_demos.demolist; s_demos.list.columns = 1; if (!s_demos.list.numitems) { //strcpy( s_demos.names, "No Demos Found." ); Q_strncpyz(s_demos.names, "../", sizeof(s_demos.names)); s_demos.list.numitems = 1; //degenerate case, not selectable s_demos.go.generic.flags |= (QMF_INACTIVE|QMF_HIDDEN); } else if (s_demos.list.numitems > MAX_DEMOS) { Com_Printf("^1maximum number of demos (%d) for a directory, skipping some demos\n", MAX_DEMOS); s_demos.list.numitems = MAX_DEMOS; } demoname = s_demos.names; for ( i = 0; i < s_demos.list.numitems; i++ ) { s_demos.list.itemnames[i] = demoname; len = strlen( demoname ); #if 0 // strip extension if (!Q_stricmp(demoname + len - 4,".dm3")) demoname[len-4] = '\0'; #endif // Q_strupr(demoname); demoname += len + 1; } qsort(s_demos.list.itemnames, s_demos.list.numitems, sizeof(char *), CmpStrings); #if 0 for (i = 0; i < s_demos.list.numitems; i++) { Com_Printf("%d: %s\n", i, s_demos.list.itemnames[i]); } #endif Menu_AddItem( &s_demos.menu, &s_demos.banner ); //Menu_AddItem( &s_demos.menu, &s_demos.framel ); //Menu_AddItem( &s_demos.menu, &s_demos.framer ); Menu_AddItem( &s_demos.menu, &s_demos.list ); //Menu_AddItem( &s_demos.menu, &s_demos.arrows ); //Menu_AddItem( &s_demos.menu, &s_demos.left ); //Menu_AddItem( &s_demos.menu, &s_demos.right ); Menu_AddItem( &s_demos.menu, &s_demos.back ); Menu_AddItem( &s_demos.menu, &s_demos.go ); }
/* =============== Demos_MenuInit =============== */ static void Demos_MenuInit( void ) { int i; int len; char *demoname, extension[32]; memset( &s_demos, 0 ,sizeof(demos_t) ); s_demos.menu.key = UI_DemosMenu_Key; Demos_Cache(); s_demos.menu.fullscreen = qtrue; s_demos.menu.wrapAround = qtrue; s_demos.banner.generic.type = MTYPE_BTEXT; s_demos.banner.generic.x = 320; s_demos.banner.generic.y = 16; s_demos.banner.string = "DEMOS"; s_demos.banner.color = color_white; s_demos.banner.style = UI_CENTER; s_demos.framel.generic.type = MTYPE_BITMAP; s_demos.framel.generic.name = ART_FRAMEL; s_demos.framel.generic.flags = QMF_INACTIVE; s_demos.framel.generic.x = 0; s_demos.framel.generic.y = 78; s_demos.framel.width = 256; s_demos.framel.height = 329; s_demos.framer.generic.type = MTYPE_BITMAP; s_demos.framer.generic.name = ART_FRAMER; s_demos.framer.generic.flags = QMF_INACTIVE; s_demos.framer.generic.x = 376; s_demos.framer.generic.y = 76; s_demos.framer.width = 256; s_demos.framer.height = 334; s_demos.arrows.generic.type = MTYPE_BITMAP; s_demos.arrows.generic.name = ART_ARROWS; s_demos.arrows.generic.flags = QMF_INACTIVE; s_demos.arrows.generic.x = 320-ARROWS_WIDTH/2; s_demos.arrows.generic.y = 400; s_demos.arrows.width = ARROWS_WIDTH; s_demos.arrows.height = ARROWS_HEIGHT; s_demos.left.generic.type = MTYPE_BITMAP; s_demos.left.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY; s_demos.left.generic.x = 320-ARROWS_WIDTH/2; s_demos.left.generic.y = 400; s_demos.left.generic.id = ID_LEFT; s_demos.left.generic.callback = Demos_MenuEvent; s_demos.left.width = ARROWS_WIDTH/2; s_demos.left.height = ARROWS_HEIGHT; s_demos.left.focuspic = ART_ARROWLEFT; s_demos.right.generic.type = MTYPE_BITMAP; s_demos.right.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY; s_demos.right.generic.x = 320; s_demos.right.generic.y = 400; s_demos.right.generic.id = ID_RIGHT; s_demos.right.generic.callback = Demos_MenuEvent; s_demos.right.width = ARROWS_WIDTH/2; s_demos.right.height = ARROWS_HEIGHT; s_demos.right.focuspic = ART_ARROWRIGHT; s_demos.back.generic.type = MTYPE_BITMAP; s_demos.back.generic.name = ART_BACK0; s_demos.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_demos.back.generic.id = ID_BACK; s_demos.back.generic.callback = Demos_MenuEvent; s_demos.back.generic.x = 0; s_demos.back.generic.y = 480-64; s_demos.back.width = 128; s_demos.back.height = 64; s_demos.back.focuspic = ART_BACK1; s_demos.go.generic.type = MTYPE_BITMAP; s_demos.go.generic.name = ART_GO0; s_demos.go.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_demos.go.generic.id = ID_GO; s_demos.go.generic.callback = Demos_MenuEvent; s_demos.go.generic.x = 640; s_demos.go.generic.y = 480-64; s_demos.go.width = 128; s_demos.go.height = 64; s_demos.go.focuspic = ART_GO1; s_demos.list.generic.type = MTYPE_SCROLLLIST; s_demos.list.generic.flags = QMF_PULSEIFFOCUS; s_demos.list.generic.callback = Demos_MenuEvent; s_demos.list.generic.id = ID_LIST; s_demos.list.generic.x = 118; s_demos.list.generic.y = 130; s_demos.list.width = 16; s_demos.list.height = 14; Com_sprintf(extension, sizeof(extension), "dm_%d", (int)UI_trap_Cvar_VariableValue( "protocol" ) ); s_demos.list.numitems = UI_trap_FS_GetFileList( "demos", extension, s_demos.names, NAMEBUFSIZE ); s_demos.list.itemnames = (const char **)s_demos.demolist; s_demos.list.columns = 3; if (!s_demos.list.numitems) { strcpy( s_demos.names, "No Demos Found." ); s_demos.list.numitems = 1; //degenerate case, not selectable s_demos.go.generic.flags |= (QMF_INACTIVE|QMF_HIDDEN); } else if (s_demos.list.numitems > MAX_DEMOS) s_demos.list.numitems = MAX_DEMOS; demoname = s_demos.names; for ( i = 0; i < s_demos.list.numitems; i++ ) { s_demos.list.itemnames[i] = demoname; // strip extension len = strlen( demoname ); if (!Q_stricmp(demoname + len - 4,".dm3")) demoname[len-4] = '\0'; Q_strupr(demoname); demoname += len + 1; } Menu_AddItem( &s_demos.menu, &s_demos.banner ); Menu_AddItem( &s_demos.menu, &s_demos.framel ); Menu_AddItem( &s_demos.menu, &s_demos.framer ); Menu_AddItem( &s_demos.menu, &s_demos.list ); Menu_AddItem( &s_demos.menu, &s_demos.arrows ); Menu_AddItem( &s_demos.menu, &s_demos.left ); Menu_AddItem( &s_demos.menu, &s_demos.right ); Menu_AddItem( &s_demos.menu, &s_demos.back ); Menu_AddItem( &s_demos.menu, &s_demos.go ); }
/* =============== Demos_MenuInit =============== */ static void Demos_MenuInit( void ) { int i,j; int len, extlen; char *demoname, extension[32]; memset( &s_demos, 0 ,sizeof(demos_t) ); s_demos.menu.key = UI_DemosMenu_Key; Demos_Cache(); s_demos.menu.fullscreen = qtrue; s_demos.menu.wrapAround = qtrue; s_demos.menu.bgparts = BGP_DEMOBG|BGP_SIMPLEBG; s_demos.left.generic.type = MTYPE_BITMAP1024S; s_demos.left.x = 96;//367; s_demos.left.y = 240;//524; s_demos.left.w = 38;//99; s_demos.left.h = 98;//38; s_demos.left.shader = trap_R_RegisterShaderNoMip(ART_ARROWUP0); s_demos.left.mouseovershader = trap_R_RegisterShaderNoMip(ART_ARROWUP1); s_demos.left.generic.callback = Demos_MenuEvent; s_demos.left.generic.id = ID_LEFT; s_demos.right.generic.type = MTYPE_BITMAP1024S; s_demos.right.x = 96;//561; s_demos.right.y = 422;//524; s_demos.right.w = 38;//98; s_demos.right.h = 98;//38; s_demos.right.shader = trap_R_RegisterShaderNoMip(ART_ARROWDOWN0); s_demos.right.mouseovershader = trap_R_RegisterShaderNoMip(ART_ARROWDOWN1); s_demos.right.generic.callback = Demos_MenuEvent; s_demos.right.generic.id = ID_RIGHT; s_demos.back.generic.type = MTYPE_BITMAP; s_demos.back.generic.name = ART_BACK0; s_demos.back.generic.flags = QMF_LEFT_JUSTIFY | QMF_PULSEIFFOCUS; s_demos.back.generic.x = 8; s_demos.back.generic.y = 440; s_demos.back.generic.id = ID_BACK; s_demos.back.generic.callback = Demos_MenuEvent; s_demos.back.width = 80; s_demos.back.height = 40; s_demos.back.focuspic = ART_BACK1; s_demos.back.focuspicinstead = qtrue; s_demos.go.generic.type = MTYPE_BITMAP1024S; s_demos.go.x = 84;//815; s_demos.go.y = 350;//633; s_demos.go.w = 63;//181; s_demos.go.h = 63;//110; s_demos.go.shader = trap_R_RegisterShaderNoMip(ART_GO0); s_demos.go.mouseovershader = trap_R_RegisterShaderNoMip(ART_GO1); s_demos.go.generic.callback = Demos_MenuEvent; s_demos.go.generic.id = ID_GO; s_demos.list.generic.type = MTYPE_SCROLLLIST; s_demos.list.generic.flags = QMF_PULSEIFFOCUS; s_demos.list.generic.callback = Demos_MenuEvent; s_demos.list.generic.id = ID_LIST; s_demos.list.generic.x = 100; s_demos.list.generic.y = 60; s_demos.list.width = 28; s_demos.list.height = 20; s_demos.list.columns = 1; demoname = s_demos.names; s_demos.list.itemnames = (const char **)s_demos.demolist; j=0; while( demo_protocols[j] ) { int demosToAdd; Com_sprintf(extension, sizeof(extension), ".%s%d", DEMOEXT, demo_protocols[j] ); demosToAdd = trap_FS_GetFileList("demos", extension, demoname, ARRAY_LEN(s_demos.names) - (demoname - s_demos.names) ); for(i=0; i < demosToAdd; i++) { s_demos.list.itemnames[ s_demos.list.numitems++ ] = demoname; len = strlen(demoname); demoname += len + 1; if( s_demos.list.numitems >= MAX_DEMOS ) break; } if( s_demos.list.numitems >= MAX_DEMOS ) break; j++; } if( 0 == s_demos.list.numitems ) { s_demos.list.itemnames[0] = "No Demos Found."; s_demos.list.numitems = 1; //degenerate case, not selectable s_demos.go.generic.flags |= (QMF_INACTIVE|QMF_HIDDEN); } qsort( s_demos.list.itemnames, s_demos.list.numitems, sizeof( s_demos.list.itemnames[0] ), UI_SortDemos ); Menu_AddItem( &s_demos.menu, &s_demos.list ); Menu_AddItem( &s_demos.menu, &s_demos.left ); Menu_AddItem( &s_demos.menu, &s_demos.right ); Menu_AddItem( &s_demos.menu, &s_demos.back ); Menu_AddItem( &s_demos.menu, &s_demos.go ); }