/* ================= UI_SPSkillMenu_Init ================= */ static void UI_SPSkillMenu_Init( void ) { int skill; memset( &skillMenuInfo, 0, sizeof(skillMenuInfo) ); skillMenuInfo.menu.fullscreen = qtrue; #ifndef TA_MISC // SRB2_SKILLS skillMenuInfo.menu.key = UI_SPSkillMenu_Key; #endif UI_SPSkillMenu_Cache(); skillMenuInfo.art_frame.generic.type = MTYPE_BITMAP; skillMenuInfo.art_frame.generic.name = ART_FRAME; skillMenuInfo.art_frame.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; skillMenuInfo.art_frame.generic.x = 142; skillMenuInfo.art_frame.generic.y = 118; skillMenuInfo.art_frame.width = 359; skillMenuInfo.art_frame.height = 256; skillMenuInfo.art_banner.generic.type = MTYPE_BTEXT; skillMenuInfo.art_banner.generic.flags = QMF_CENTER_JUSTIFY; skillMenuInfo.art_banner.generic.x = 320; skillMenuInfo.art_banner.generic.y = 16; skillMenuInfo.art_banner.string = "DIFFICULTY"; skillMenuInfo.art_banner.color = text_banner_color; skillMenuInfo.art_banner.style = UI_CENTER; skillMenuInfo.item_baby.generic.type = MTYPE_PTEXT; skillMenuInfo.item_baby.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_baby.generic.x = 320; skillMenuInfo.item_baby.generic.y = 170; skillMenuInfo.item_baby.generic.callback = UI_SPSkillMenu_SkillEvent; skillMenuInfo.item_baby.generic.id = ID_BABY; #ifdef TA_MISC // SRB2_SKILLS skillMenuInfo.item_baby.string = "Easy"; #else skillMenuInfo.item_baby.string = "I Can Win"; #endif skillMenuInfo.item_baby.color = text_big_color; skillMenuInfo.item_baby.style = UI_CENTER; skillMenuInfo.item_easy.generic.type = MTYPE_PTEXT; skillMenuInfo.item_easy.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_easy.generic.x = 320; skillMenuInfo.item_easy.generic.y = 198; skillMenuInfo.item_easy.generic.callback = UI_SPSkillMenu_SkillEvent; skillMenuInfo.item_easy.generic.id = ID_EASY; #ifdef TA_MISC // SRB2_SKILLS skillMenuInfo.item_easy.string = "Normal"; #else skillMenuInfo.item_easy.string = "Bring It On"; #endif skillMenuInfo.item_easy.color = text_big_color; skillMenuInfo.item_easy.style = UI_CENTER; skillMenuInfo.item_medium.generic.type = MTYPE_PTEXT; skillMenuInfo.item_medium.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_medium.generic.x = 320; skillMenuInfo.item_medium.generic.y = 227; skillMenuInfo.item_medium.generic.callback = UI_SPSkillMenu_SkillEvent; skillMenuInfo.item_medium.generic.id = ID_MEDIUM; #ifdef TA_MISC // SRB2_SKILLS skillMenuInfo.item_medium.string = "Hard"; #else skillMenuInfo.item_medium.string = "Hurt Me Plenty"; #endif skillMenuInfo.item_medium.color = text_big_color; skillMenuInfo.item_medium.style = UI_CENTER; skillMenuInfo.item_hard.generic.type = MTYPE_PTEXT; skillMenuInfo.item_hard.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_hard.generic.x = 320; skillMenuInfo.item_hard.generic.y = 255; skillMenuInfo.item_hard.generic.callback = UI_SPSkillMenu_SkillEvent; skillMenuInfo.item_hard.generic.id = ID_HARD; #ifdef TA_MISC // SRB2_SKILLS skillMenuInfo.item_hard.string = "Very Hard"; #else skillMenuInfo.item_hard.string = "Hardcore"; #endif skillMenuInfo.item_hard.color = text_big_color; skillMenuInfo.item_hard.style = UI_CENTER; skillMenuInfo.item_nightmare.generic.type = MTYPE_PTEXT; skillMenuInfo.item_nightmare.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_nightmare.generic.x = 320; skillMenuInfo.item_nightmare.generic.y = 283; skillMenuInfo.item_nightmare.generic.callback = UI_SPSkillMenu_SkillEvent; skillMenuInfo.item_nightmare.generic.id = ID_NIGHTMARE; #ifdef TA_MISC // SRB2_SKILLS skillMenuInfo.item_nightmare.string = "Ultimate"; #else skillMenuInfo.item_nightmare.string = "NIGHTMARE!"; #endif skillMenuInfo.item_nightmare.color = text_big_color; skillMenuInfo.item_nightmare.style = UI_CENTER; skillMenuInfo.item_back.generic.type = MTYPE_BITMAP; skillMenuInfo.item_back.generic.name = ART_BACK; skillMenuInfo.item_back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_back.generic.x = 0; skillMenuInfo.item_back.generic.y = 480-64; skillMenuInfo.item_back.generic.callback = UI_SPSkillMenu_BackEvent; skillMenuInfo.item_back.generic.id = ID_BACK; skillMenuInfo.item_back.width = 128; skillMenuInfo.item_back.height = 64; skillMenuInfo.item_back.focuspic = ART_BACK_FOCUS; #ifndef TA_MISC // SRB2_SKILLS skillMenuInfo.art_skillPic.generic.type = MTYPE_BITMAP; skillMenuInfo.art_skillPic.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; skillMenuInfo.art_skillPic.generic.x = 320-64; skillMenuInfo.art_skillPic.generic.y = 368; skillMenuInfo.art_skillPic.width = 128; skillMenuInfo.art_skillPic.height = 96; #endif skillMenuInfo.item_fight.generic.type = MTYPE_BITMAP; skillMenuInfo.item_fight.generic.name = ART_FIGHT; skillMenuInfo.item_fight.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; skillMenuInfo.item_fight.generic.callback = UI_SPSkillMenu_FightEvent; skillMenuInfo.item_fight.generic.id = ID_FIGHT; skillMenuInfo.item_fight.generic.x = 640; skillMenuInfo.item_fight.generic.y = 480-64; skillMenuInfo.item_fight.width = 128; skillMenuInfo.item_fight.height = 64; skillMenuInfo.item_fight.focuspic = ART_FIGHT_FOCUS; Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.art_frame ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.art_banner ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_baby ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_easy ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_medium ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_hard ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_nightmare ); #ifndef TA_MISC // SRB2_SKILLS Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.art_skillPic ); #endif Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_back ); Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_fight ); skill = (int)Com_Clamp( 1, 5, trap_Cvar_VariableValue( "g_spSkill" ) ); #ifdef TURTLEARENA SetSkillColor( skill, color_orange ); #else SetSkillColor( skill, color_white ); #endif #ifndef TA_MISC // SRB2_SKILLS skillMenuInfo.art_skillPic.shader = skillMenuInfo.skillpics[skill - 1]; if( skill == 5 ) { trap_S_StartLocalSound( skillMenuInfo.nightmareSound, CHAN_ANNOUNCER ); } #endif }
/* =============== UI_CinematicsMenu_Init =============== */ static void UI_CinematicsMenu_Init( void ) { int y; UI_CinematicsMenu_Cache(); memset( &cinematicsMenuInfo, 0, sizeof(cinematicsMenuInfo) ); cinematicsMenuInfo.menu.fullscreen = qtrue; cinematicsMenuInfo.banner.generic.type = MTYPE_BTEXT; cinematicsMenuInfo.banner.generic.x = 320; cinematicsMenuInfo.banner.generic.y = 16; cinematicsMenuInfo.banner.string = "CINEMATICS"; cinematicsMenuInfo.banner.color = color_white; cinematicsMenuInfo.banner.style = UI_CENTER; cinematicsMenuInfo.framel.generic.type = MTYPE_BITMAP; cinematicsMenuInfo.framel.generic.name = ART_FRAMEL; cinematicsMenuInfo.framel.generic.flags = QMF_INACTIVE; cinematicsMenuInfo.framel.generic.x = 0; cinematicsMenuInfo.framel.generic.y = 78; cinematicsMenuInfo.framel.width = 256; cinematicsMenuInfo.framel.height = 329; cinematicsMenuInfo.framer.generic.type = MTYPE_BITMAP; cinematicsMenuInfo.framer.generic.name = ART_FRAMER; cinematicsMenuInfo.framer.generic.flags = QMF_INACTIVE; cinematicsMenuInfo.framer.generic.x = 376; cinematicsMenuInfo.framer.generic.y = 76; cinematicsMenuInfo.framer.width = 256; cinematicsMenuInfo.framer.height = 334; y = 100; cinematicsMenuInfo.cin_idlogo.generic.type = MTYPE_PTEXT; cinematicsMenuInfo.cin_idlogo.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; cinematicsMenuInfo.cin_idlogo.generic.x = 320; cinematicsMenuInfo.cin_idlogo.generic.y = y; cinematicsMenuInfo.cin_idlogo.generic.id = ID_CIN_IDLOGO; cinematicsMenuInfo.cin_idlogo.generic.callback = UI_CinematicsMenu_Event; cinematicsMenuInfo.cin_idlogo.string = "ID LOGO"; cinematicsMenuInfo.cin_idlogo.color = color_red; cinematicsMenuInfo.cin_idlogo.style = UI_CENTER; y += VERTICAL_SPACING; cinematicsMenuInfo.cin_intro.generic.type = MTYPE_PTEXT; cinematicsMenuInfo.cin_intro.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; cinematicsMenuInfo.cin_intro.generic.x = 320; cinematicsMenuInfo.cin_intro.generic.y = y; cinematicsMenuInfo.cin_intro.generic.id = ID_CIN_INTRO; cinematicsMenuInfo.cin_intro.generic.callback = UI_CinematicsMenu_Event; cinematicsMenuInfo.cin_intro.string = "INTRO"; cinematicsMenuInfo.cin_intro.color = color_red; cinematicsMenuInfo.cin_intro.style = UI_CENTER; if( uis.demoversion ) { cinematicsMenuInfo.cin_intro.generic.flags |= QMF_GRAYED; } y += VERTICAL_SPACING; cinematicsMenuInfo.cin_tier1.generic.type = MTYPE_PTEXT; cinematicsMenuInfo.cin_tier1.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; cinematicsMenuInfo.cin_tier1.generic.x = 320; cinematicsMenuInfo.cin_tier1.generic.y = y; cinematicsMenuInfo.cin_tier1.generic.id = ID_CIN_TIER1; cinematicsMenuInfo.cin_tier1.generic.callback = UI_CinematicsMenu_Event; cinematicsMenuInfo.cin_tier1.string = "Tier 1"; cinematicsMenuInfo.cin_tier1.color = color_red; cinematicsMenuInfo.cin_tier1.style = UI_CENTER; if( !UI_CanShowTierVideo( 1 ) ) { cinematicsMenuInfo.cin_tier1.generic.flags |= QMF_GRAYED; } y += VERTICAL_SPACING; cinematicsMenuInfo.cin_tier2.generic.type = MTYPE_PTEXT; cinematicsMenuInfo.cin_tier2.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; cinematicsMenuInfo.cin_tier2.generic.x = 320; cinematicsMenuInfo.cin_tier2.generic.y = y; cinematicsMenuInfo.cin_tier2.generic.id = ID_CIN_TIER2; cinematicsMenuInfo.cin_tier2.generic.callback = UI_CinematicsMenu_Event; cinematicsMenuInfo.cin_tier2.string = "Tier 2"; cinematicsMenuInfo.cin_tier2.color = color_red; cinematicsMenuInfo.cin_tier2.style = UI_CENTER; if( !UI_CanShowTierVideo( 2 ) ) { cinematicsMenuInfo.cin_tier2.generic.flags |= QMF_GRAYED; } y += VERTICAL_SPACING; cinematicsMenuInfo.cin_tier3.generic.type = MTYPE_PTEXT; cinematicsMenuInfo.cin_tier3.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; cinematicsMenuInfo.cin_tier3.generic.x = 320; cinematicsMenuInfo.cin_tier3.generic.y = y; cinematicsMenuInfo.cin_tier3.generic.id = ID_CIN_TIER3; cinematicsMenuInfo.cin_tier3.generic.callback = UI_CinematicsMenu_Event; cinematicsMenuInfo.cin_tier3.string = "Tier 3"; cinematicsMenuInfo.cin_tier3.color = color_red; cinematicsMenuInfo.cin_tier3.style = UI_CENTER; if( !UI_CanShowTierVideo( 3 ) ) { cinematicsMenuInfo.cin_tier3.generic.flags |= QMF_GRAYED; } y += VERTICAL_SPACING; cinematicsMenuInfo.cin_tier4.generic.type = MTYPE_PTEXT; cinematicsMenuInfo.cin_tier4.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; cinematicsMenuInfo.cin_tier4.generic.x = 320; cinematicsMenuInfo.cin_tier4.generic.y = y; cinematicsMenuInfo.cin_tier4.generic.id = ID_CIN_TIER4; cinematicsMenuInfo.cin_tier4.generic.callback = UI_CinematicsMenu_Event; cinematicsMenuInfo.cin_tier4.string = "Tier 4"; cinematicsMenuInfo.cin_tier4.color = color_red; cinematicsMenuInfo.cin_tier4.style = UI_CENTER; if( !UI_CanShowTierVideo( 4 ) ) { cinematicsMenuInfo.cin_tier4.generic.flags |= QMF_GRAYED; } y += VERTICAL_SPACING; cinematicsMenuInfo.cin_tier5.generic.type = MTYPE_PTEXT; cinematicsMenuInfo.cin_tier5.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; cinematicsMenuInfo.cin_tier5.generic.x = 320; cinematicsMenuInfo.cin_tier5.generic.y = y; cinematicsMenuInfo.cin_tier5.generic.id = ID_CIN_TIER5; cinematicsMenuInfo.cin_tier5.generic.callback = UI_CinematicsMenu_Event; cinematicsMenuInfo.cin_tier5.string = "Tier 5"; cinematicsMenuInfo.cin_tier5.color = color_red; cinematicsMenuInfo.cin_tier5.style = UI_CENTER; if( !UI_CanShowTierVideo( 5 ) ) { cinematicsMenuInfo.cin_tier5.generic.flags |= QMF_GRAYED; } y += VERTICAL_SPACING; cinematicsMenuInfo.cin_tier6.generic.type = MTYPE_PTEXT; cinematicsMenuInfo.cin_tier6.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; cinematicsMenuInfo.cin_tier6.generic.x = 320; cinematicsMenuInfo.cin_tier6.generic.y = y; cinematicsMenuInfo.cin_tier6.generic.id = ID_CIN_TIER6; cinematicsMenuInfo.cin_tier6.generic.callback = UI_CinematicsMenu_Event; cinematicsMenuInfo.cin_tier6.string = "Tier 6"; cinematicsMenuInfo.cin_tier6.color = color_red; cinematicsMenuInfo.cin_tier6.style = UI_CENTER; if( !UI_CanShowTierVideo( 6 ) ) { cinematicsMenuInfo.cin_tier6.generic.flags |= QMF_GRAYED; } y += VERTICAL_SPACING; cinematicsMenuInfo.cin_tier7.generic.type = MTYPE_PTEXT; cinematicsMenuInfo.cin_tier7.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; cinematicsMenuInfo.cin_tier7.generic.x = 320; cinematicsMenuInfo.cin_tier7.generic.y = y; cinematicsMenuInfo.cin_tier7.generic.id = ID_CIN_TIER7; cinematicsMenuInfo.cin_tier7.generic.callback = UI_CinematicsMenu_Event; cinematicsMenuInfo.cin_tier7.string = "Tier 7"; cinematicsMenuInfo.cin_tier7.color = color_red; cinematicsMenuInfo.cin_tier7.style = UI_CENTER; if( !UI_CanShowTierVideo( 7 ) ) { cinematicsMenuInfo.cin_tier7.generic.flags |= QMF_GRAYED; } y += VERTICAL_SPACING; cinematicsMenuInfo.cin_end.generic.type = MTYPE_PTEXT; cinematicsMenuInfo.cin_end.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; cinematicsMenuInfo.cin_end.generic.x = 320; cinematicsMenuInfo.cin_end.generic.y = y; cinematicsMenuInfo.cin_end.generic.id = ID_CIN_END; cinematicsMenuInfo.cin_end.generic.callback = UI_CinematicsMenu_Event; cinematicsMenuInfo.cin_end.string = "END"; cinematicsMenuInfo.cin_end.color = color_red; cinematicsMenuInfo.cin_end.style = UI_CENTER; if( !UI_CanShowTierVideo( 8 ) ) { cinematicsMenuInfo.cin_end.generic.flags |= QMF_GRAYED; } cinematicsMenuInfo.back.generic.type = MTYPE_BITMAP; cinematicsMenuInfo.back.generic.name = ART_BACK0; cinematicsMenuInfo.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; cinematicsMenuInfo.back.generic.id = ID_BACK; cinematicsMenuInfo.back.generic.callback = UI_CinematicsMenu_BackEvent; cinematicsMenuInfo.back.generic.x = 0; cinematicsMenuInfo.back.generic.y = 480-64; cinematicsMenuInfo.back.width = 128; cinematicsMenuInfo.back.height = 64; cinematicsMenuInfo.back.focuspic = ART_BACK1; Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.banner ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.framel ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.framer ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_idlogo ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_intro ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier1 ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier2 ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier3 ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier4 ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier5 ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier6 ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_tier7 ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.cin_end ); Menu_AddItem( &cinematicsMenuInfo.menu, &cinematicsMenuInfo.back ); }
/* ================= InGame_MenuInit ================= */ void InGame_MenuInit(void) { int y; uiClientState_t cs; char info[MAX_INFO_STRING]; int team; memset(&s_ingame, 0, sizeof(ingamemenu_t)); InGame_Cache(); s_ingame.menu.wrapAround = qtrue; s_ingame.menu.fullscreen = qfalse; s_ingame.frame.generic.type = MTYPE_BITMAP; s_ingame.frame.generic.flags = QMF_INACTIVE; s_ingame.frame.generic.name = INGAME_FRAME; s_ingame.frame.generic.x = 320 - 233; //142; s_ingame.frame.generic.y = 240 - 166; //118; s_ingame.frame.width = 466; //359; s_ingame.frame.height = 332; //256; //y = 96; y = 88; s_ingame.team.generic.type = MTYPE_PTEXT; s_ingame.team.generic.flags = QMF_CENTER_JUSTIFY | QMF_PULSEIFFOCUS; s_ingame.team.generic.x = 320; s_ingame.team.generic.y = y; s_ingame.team.generic.id = ID_TEAM; s_ingame.team.generic.callback = InGame_Event; s_ingame.team.string = "START"; s_ingame.team.color = color_red; s_ingame.team.style = UI_CENTER | UI_SMALLFONT; y += INGAME_MENU_VERTICAL_SPACING; s_ingame.addbots.generic.type = MTYPE_PTEXT; s_ingame.addbots.generic.flags = QMF_CENTER_JUSTIFY | QMF_PULSEIFFOCUS; s_ingame.addbots.generic.x = 320; s_ingame.addbots.generic.y = y; s_ingame.addbots.generic.id = ID_ADDBOTS; s_ingame.addbots.generic.callback = InGame_Event; s_ingame.addbots.string = "ADD BOTS"; s_ingame.addbots.color = color_red; s_ingame.addbots.style = UI_CENTER | UI_SMALLFONT; if (!trap_Cvar_VariableValue("sv_running") || !trap_Cvar_VariableValue("bot_enable") || (trap_Cvar_VariableValue("g_gametype") == GT_SINGLE_PLAYER)) { s_ingame.addbots.generic.flags |= QMF_GRAYED; } y += INGAME_MENU_VERTICAL_SPACING; s_ingame.removebots.generic.type = MTYPE_PTEXT; s_ingame.removebots.generic.flags = QMF_CENTER_JUSTIFY | QMF_PULSEIFFOCUS; s_ingame.removebots.generic.x = 320; s_ingame.removebots.generic.y = y; s_ingame.removebots.generic.id = ID_REMOVEBOTS; s_ingame.removebots.generic.callback = InGame_Event; s_ingame.removebots.string = "REMOVE BOTS"; s_ingame.removebots.color = color_red; s_ingame.removebots.style = UI_CENTER | UI_SMALLFONT; if (!trap_Cvar_VariableValue("sv_running") || !trap_Cvar_VariableValue("bot_enable") || (trap_Cvar_VariableValue("g_gametype") == GT_SINGLE_PLAYER)) { s_ingame.removebots.generic.flags |= QMF_GRAYED; } y += INGAME_MENU_VERTICAL_SPACING; s_ingame.setup.generic.type = MTYPE_PTEXT; s_ingame.setup.generic.flags = QMF_CENTER_JUSTIFY | QMF_PULSEIFFOCUS; s_ingame.setup.generic.x = 320; s_ingame.setup.generic.y = y; s_ingame.setup.generic.id = ID_SETUP; s_ingame.setup.generic.callback = InGame_Event; s_ingame.setup.string = "SETUP"; s_ingame.setup.color = color_red; s_ingame.setup.style = UI_CENTER | UI_SMALLFONT; y += INGAME_MENU_VERTICAL_SPACING; s_ingame.loadout.generic.type = MTYPE_PTEXT; s_ingame.loadout.generic.flags = QMF_CENTER_JUSTIFY | QMF_PULSEIFFOCUS; s_ingame.loadout.generic.x = 320; s_ingame.loadout.generic.y = y; s_ingame.loadout.generic.id = ID_LOADOUT; s_ingame.loadout.generic.callback = InGame_Event; s_ingame.loadout.string = "LOADOUT"; s_ingame.loadout.color = color_red; s_ingame.loadout.style = UI_CENTER | UI_SMALLFONT; y += INGAME_MENU_VERTICAL_SPACING; s_ingame.server.generic.type = MTYPE_PTEXT; s_ingame.server.generic.flags = QMF_CENTER_JUSTIFY | QMF_PULSEIFFOCUS; s_ingame.server.generic.x = 320; s_ingame.server.generic.y = y; s_ingame.server.generic.id = ID_SERVERINFO; s_ingame.server.generic.callback = InGame_Event; s_ingame.server.string = "SERVER INFO"; s_ingame.server.color = color_red; s_ingame.server.style = UI_CENTER | UI_SMALLFONT; y += INGAME_MENU_VERTICAL_SPACING; s_ingame.restart.generic.type = MTYPE_PTEXT; s_ingame.restart.generic.flags = QMF_CENTER_JUSTIFY | QMF_PULSEIFFOCUS; s_ingame.restart.generic.x = 320; s_ingame.restart.generic.y = y; s_ingame.restart.generic.id = ID_RESTART; s_ingame.restart.generic.callback = InGame_Event; s_ingame.restart.string = "RESTART ARENA"; s_ingame.restart.color = color_red; s_ingame.restart.style = UI_CENTER | UI_SMALLFONT; if (!trap_Cvar_VariableValue("sv_running")) { s_ingame.restart.generic.flags |= QMF_GRAYED; } y += INGAME_MENU_VERTICAL_SPACING; s_ingame.resume.generic.type = MTYPE_PTEXT; s_ingame.resume.generic.flags = QMF_CENTER_JUSTIFY | QMF_PULSEIFFOCUS; s_ingame.resume.generic.x = 320; s_ingame.resume.generic.y = y; s_ingame.resume.generic.id = ID_RESUME; s_ingame.resume.generic.callback = InGame_Event; s_ingame.resume.string = "RESUME GAME"; s_ingame.resume.color = color_red; s_ingame.resume.style = UI_CENTER | UI_SMALLFONT; y += INGAME_MENU_VERTICAL_SPACING; s_ingame.leave.generic.type = MTYPE_PTEXT; s_ingame.leave.generic.flags = QMF_CENTER_JUSTIFY | QMF_PULSEIFFOCUS; s_ingame.leave.generic.x = 320; s_ingame.leave.generic.y = y; s_ingame.leave.generic.id = ID_LEAVEARENA; s_ingame.leave.generic.callback = InGame_Event; s_ingame.leave.string = "LEAVE ARENA"; s_ingame.leave.color = color_red; s_ingame.leave.style = UI_CENTER | UI_SMALLFONT; y += INGAME_MENU_VERTICAL_SPACING; s_ingame.quit.generic.type = MTYPE_PTEXT; s_ingame.quit.generic.flags = QMF_CENTER_JUSTIFY | QMF_PULSEIFFOCUS; s_ingame.quit.generic.x = 320; s_ingame.quit.generic.y = y; s_ingame.quit.generic.id = ID_QUIT; s_ingame.quit.generic.callback = InGame_Event; s_ingame.quit.string = "EXIT GAME"; s_ingame.quit.color = color_red; s_ingame.quit.style = UI_CENTER | UI_SMALLFONT; Menu_AddItem(&s_ingame.menu, &s_ingame.frame); Menu_AddItem(&s_ingame.menu, &s_ingame.team); Menu_AddItem(&s_ingame.menu, &s_ingame.addbots); Menu_AddItem(&s_ingame.menu, &s_ingame.removebots); Menu_AddItem(&s_ingame.menu, &s_ingame.setup); Menu_AddItem(&s_ingame.menu, &s_ingame.loadout); Menu_AddItem(&s_ingame.menu, &s_ingame.server); Menu_AddItem(&s_ingame.menu, &s_ingame.restart); Menu_AddItem(&s_ingame.menu, &s_ingame.resume); Menu_AddItem(&s_ingame.menu, &s_ingame.leave); Menu_AddItem(&s_ingame.menu, &s_ingame.quit); }
static void UI_AddBotsMenu_Init( void ) { int n; int y; int gametype; int count; char info[MAX_INFO_STRING]; UI_trap_GetConfigString(CS_SERVERINFO, info, MAX_INFO_STRING); gametype = atoi( Info_ValueForKey( info,"g_gametype" ) ); memset( &addBotsMenuInfo, 0 ,sizeof(addBotsMenuInfo) ); addBotsMenuInfo.menu.draw = UI_AddBotsMenu_Draw; addBotsMenuInfo.menu.fullscreen = qfalse; addBotsMenuInfo.menu.wrapAround = qtrue; addBotsMenuInfo.delay = 1000; UI_AddBots_Cache(); addBotsMenuInfo.numBots = UI_GetNumBots(); count = addBotsMenuInfo.numBots < 7 ? addBotsMenuInfo.numBots : 7; addBotsMenuInfo.arrows.generic.type = MTYPE_BITMAP; addBotsMenuInfo.arrows.generic.name = ART_ARROWS; addBotsMenuInfo.arrows.generic.flags = QMF_INACTIVE; addBotsMenuInfo.arrows.generic.x = 200; addBotsMenuInfo.arrows.generic.y = 128; addBotsMenuInfo.arrows.width = 64; addBotsMenuInfo.arrows.height = 128; addBotsMenuInfo.up.generic.type = MTYPE_BITMAP; addBotsMenuInfo.up.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; addBotsMenuInfo.up.generic.x = 200; addBotsMenuInfo.up.generic.y = 128; addBotsMenuInfo.up.generic.id = ID_UP; addBotsMenuInfo.up.generic.callback = UI_AddBotsMenu_UpEvent; addBotsMenuInfo.up.width = 64; addBotsMenuInfo.up.height = 64; addBotsMenuInfo.up.focuspic = ART_ARROWUP; addBotsMenuInfo.down.generic.type = MTYPE_BITMAP; addBotsMenuInfo.down.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; addBotsMenuInfo.down.generic.x = 200; addBotsMenuInfo.down.generic.y = 128+64; addBotsMenuInfo.down.generic.id = ID_DOWN; addBotsMenuInfo.down.generic.callback = UI_AddBotsMenu_DownEvent; addBotsMenuInfo.down.width = 64; addBotsMenuInfo.down.height = 64; addBotsMenuInfo.down.focuspic = ART_ARROWDOWN; for( n = 0, y = 120; n < count; n++, y += 20 ) { addBotsMenuInfo.bots[n].generic.type = MTYPE_PTEXT; addBotsMenuInfo.bots[n].generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; addBotsMenuInfo.bots[n].generic.id = ID_BOTNAME0 + n; addBotsMenuInfo.bots[n].generic.x = 320 - 56; addBotsMenuInfo.bots[n].generic.y = y; addBotsMenuInfo.bots[n].generic.callback = UI_AddBotsMenu_BotEvent; addBotsMenuInfo.bots[n].string = addBotsMenuInfo.botnames[n]; addBotsMenuInfo.bots[n].color = color_orange; addBotsMenuInfo.bots[n].style = UI_LEFT|UI_SMALLFONT; } y += 12; addBotsMenuInfo.skill.generic.type = MTYPE_SPINCONTROL; addBotsMenuInfo.skill.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; addBotsMenuInfo.skill.generic.x = 320; addBotsMenuInfo.skill.generic.y = y; addBotsMenuInfo.skill.generic.name = "Skill:"; addBotsMenuInfo.skill.generic.id = ID_SKILL; addBotsMenuInfo.skill.itemnames = skillNames; addBotsMenuInfo.skill.curvalue = Com_Clamp( 0, 4, (int)UI_trap_Cvar_VariableValue( "g_spSkill" ) - 1 ); y += SMALLCHAR_HEIGHT; addBotsMenuInfo.team.generic.type = MTYPE_SPINCONTROL; addBotsMenuInfo.team.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; addBotsMenuInfo.team.generic.x = 320; addBotsMenuInfo.team.generic.y = y; addBotsMenuInfo.team.generic.name = "Team: "; addBotsMenuInfo.team.generic.id = ID_TEAM; if( gametype >= GT_TEAM ) { addBotsMenuInfo.team.itemnames = teamNames2; } else { addBotsMenuInfo.team.itemnames = teamNames1; addBotsMenuInfo.team.generic.flags = QMF_GRAYED; } addBotsMenuInfo.go.generic.type = MTYPE_BITMAP; addBotsMenuInfo.go.generic.name = ART_FIGHT0; addBotsMenuInfo.go.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; addBotsMenuInfo.go.generic.id = ID_GO; addBotsMenuInfo.go.generic.callback = UI_AddBotsMenu_FightEvent; addBotsMenuInfo.go.generic.x = 320+128-128; addBotsMenuInfo.go.generic.y = 256+128-64; addBotsMenuInfo.go.width = 128; addBotsMenuInfo.go.height = 64; addBotsMenuInfo.go.focuspic = ART_FIGHT1; addBotsMenuInfo.back.generic.type = MTYPE_BITMAP; addBotsMenuInfo.back.generic.name = ART_BACK0; addBotsMenuInfo.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; addBotsMenuInfo.back.generic.id = ID_BACK; addBotsMenuInfo.back.generic.callback = UI_AddBotsMenu_BackEvent; addBotsMenuInfo.back.generic.x = 320-128; addBotsMenuInfo.back.generic.y = 256+128-64; addBotsMenuInfo.back.width = 128; addBotsMenuInfo.back.height = 64; addBotsMenuInfo.back.focuspic = ART_BACK1; addBotsMenuInfo.baseBotNum = 0; addBotsMenuInfo.selectedBotNum = 0; addBotsMenuInfo.bots[0].color = color_white; UI_AddBotsMenu_GetSortedBotNums(); UI_AddBotsMenu_SetBotNames(); Menu_AddItem( &addBotsMenuInfo.menu, &addBotsMenuInfo.arrows ); Menu_AddItem( &addBotsMenuInfo.menu, &addBotsMenuInfo.up ); Menu_AddItem( &addBotsMenuInfo.menu, &addBotsMenuInfo.down ); for( n = 0; n < count; n++ ) { Menu_AddItem( &addBotsMenuInfo.menu, &addBotsMenuInfo.bots[n] ); } Menu_AddItem( &addBotsMenuInfo.menu, &addBotsMenuInfo.skill ); Menu_AddItem( &addBotsMenuInfo.menu, &addBotsMenuInfo.team ); Menu_AddItem( &addBotsMenuInfo.menu, &addBotsMenuInfo.go ); Menu_AddItem( &addBotsMenuInfo.menu, &addBotsMenuInfo.back ); }
/* ======================== UI_DrawConnectScreen This will also be overlaid on the cgame info screen during loading to prevent it from blinking away too rapidly on local or lan games. ======================== */ void UI_DrawConnectScreen( qboolean overlay ) { char *s; uiClientState_t cstate; char info[MAX_INFO_VALUE]; Menu_Cache(); if ( !overlay ) { // draw the dialog background UI_SetColor( color_white ); UI_DrawHandlePic( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, uis.menuBackShader ); } // see what information we should display trap_GetClientState( &cstate ); info[0] = '\0'; if( trap_GetConfigString( CS_SERVERINFO, info, sizeof(info) ) ) { UI_DrawProportionalString( 320, 16, va( "Loading %s", Info_ValueForKey( info, "mapname" ) ), UI_BIGFONT|UI_CENTER|UI_DROPSHADOW, color_white ); } if (!cstate.demoplaying) { UI_DrawProportionalString( 320, 64, va("Connecting to %s", cstate.servername), UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, menu_text_color ); //UI_DrawProportionalString( 320, 96, "Press Esc to abort", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, menu_text_color ); } else { //FIXME would need wrapping //UI_DrawProportionalString( 320, 64, va("Playing %s", UI_Cvar_VariableString("cl_demoFileBaseName")), UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, menu_text_color ); if (cstate.connState == CA_DOWNLOADINGWORKSHOPS) { //FIXME maybe show current workshop number UI_DrawProportionalString(320, 64, "Downloading Workshops", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, menu_text_color); trap_DrawConsoleLinesOver(10, 160, 10); } else { UI_DrawProportionalString(320, 64, "Playing demo", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, menu_text_color); } } // display global MOTD at bottom UI_DrawProportionalString( SCREEN_WIDTH/2, SCREEN_HEIGHT-32, Info_ValueForKey( cstate.updateInfoString, "motd" ), UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, menu_text_color ); // print any server info (server full, bad version, etc) if ( cstate.connState < CA_CONNECTED ) { UI_DrawProportionalString_AutoWrapped( 320, 192, 630, 20, cstate.messageString, UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, menu_text_color ); } #if 0 // display password field if ( passwordNeeded ) { s_ingame_menu.x = SCREEN_WIDTH * 0.50 - 128; s_ingame_menu.nitems = 0; s_ingame_menu.wrapAround = qtrue; passwordField.generic.type = MTYPE_FIELD; passwordField.generic.name = "Password:"******"password"), sizeof(passwordField.field.buffer) ); Menu_AddItem( &s_ingame_menu, ( void * ) &s_customize_player_action ); MField_Draw( &passwordField ); } #endif if ( lastConnState > cstate.connState ) { lastLoadingText[0] = '\0'; } lastConnState = cstate.connState; switch ( cstate.connState ) { case CA_CONNECTING: s = va("Awaiting challenge...%i", cstate.connectPacketCount); break; case CA_CHALLENGING: s = va("Awaiting connection...%i", cstate.connectPacketCount); break; case CA_CONNECTED: { char downloadName[MAX_INFO_VALUE]; trap_Cvar_VariableStringBuffer( "cl_downloadName", downloadName, sizeof(downloadName) ); //Q_strncpyz(downloadName, "test download", sizeof(downloadName)); if (*downloadName) { UI_DisplayDownloadInfo( downloadName ); return; } } s = "Awaiting gamestate..."; break; case CA_LOADING: //Com_Printf("loading ...\n"); return; case CA_PRIMED: return; default: return; } UI_DrawProportionalString( 320, 128, s, UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, color_white ); // password required / connection rejected information goes here }
/* ================ GraphicsOptions_MenuInit ================ */ void GraphicsOptions_MenuInit( void ) { static const char *s_driver_names[] = { "Default", "Voodoo", NULL }; static const char *tq_names[] = { "Default", "16 bit", "32 bit", NULL }; static const char *s_graphics_options_names[] = { "High Quality", "Normal", "Fast", "Fastest", "Custom", NULL }; static const char *lighting_names[] = { "Lightmap", "Vertex", NULL }; static const char *colordepth_names[] = { "Default", "16 bit", "32 bit", NULL }; static const char *resolutions[] = { "320x240", "400x300", "512x384", "640x480", "800x600", "960x720", "1024x768", "1152x864", "1280x1024", "1600x1200", "2048x1536", "856x480 wide screen", NULL }; static const char *filter_names[] = { "Bilinear", "Trilinear", NULL }; static const char *quality_names[] = { "Low", "Medium", "High", NULL }; static const char *enabled_names[] = { "Off", "On", NULL }; int y; // zero set all our globals memset( &s_graphicsoptions, 0 ,sizeof(graphicsoptions_t) ); GraphicsOptions_Cache(); s_graphicsoptions.menu.wrapAround = qtrue; s_graphicsoptions.menu.fullscreen = qtrue; s_graphicsoptions.menu.draw = GraphicsOptions_MenuDraw; s_graphicsoptions.banner.generic.type = MTYPE_BTEXT; s_graphicsoptions.banner.generic.x = 320; s_graphicsoptions.banner.generic.y = 16; s_graphicsoptions.banner.string = "SYSTEM SETUP"; s_graphicsoptions.banner.color = color_white; s_graphicsoptions.banner.style = UI_CENTER; s_graphicsoptions.framel.generic.type = MTYPE_BITMAP; s_graphicsoptions.framel.generic.name = GRAPHICSOPTIONS_FRAMEL; s_graphicsoptions.framel.generic.flags = QMF_INACTIVE; s_graphicsoptions.framel.generic.x = 0; s_graphicsoptions.framel.generic.y = 78; s_graphicsoptions.framel.width = 256; s_graphicsoptions.framel.height = 329; s_graphicsoptions.framer.generic.type = MTYPE_BITMAP; s_graphicsoptions.framer.generic.name = GRAPHICSOPTIONS_FRAMER; s_graphicsoptions.framer.generic.flags = QMF_INACTIVE; s_graphicsoptions.framer.generic.x = 376; s_graphicsoptions.framer.generic.y = 76; s_graphicsoptions.framer.width = 256; s_graphicsoptions.framer.height = 334; s_graphicsoptions.graphics.generic.type = MTYPE_PTEXT; s_graphicsoptions.graphics.generic.flags = QMF_RIGHT_JUSTIFY; s_graphicsoptions.graphics.generic.id = ID_GRAPHICS; s_graphicsoptions.graphics.generic.callback = GraphicsOptions_Event; s_graphicsoptions.graphics.generic.x = 216; s_graphicsoptions.graphics.generic.y = 240 - 2 * PROP_HEIGHT; s_graphicsoptions.graphics.string = "GRAPHICS"; s_graphicsoptions.graphics.style = UI_RIGHT; s_graphicsoptions.graphics.color = color_red; s_graphicsoptions.display.generic.type = MTYPE_PTEXT; s_graphicsoptions.display.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_graphicsoptions.display.generic.id = ID_DISPLAY; s_graphicsoptions.display.generic.callback = GraphicsOptions_Event; s_graphicsoptions.display.generic.x = 216; s_graphicsoptions.display.generic.y = 240 - PROP_HEIGHT; s_graphicsoptions.display.string = "DISPLAY"; s_graphicsoptions.display.style = UI_RIGHT; s_graphicsoptions.display.color = color_red; s_graphicsoptions.sound.generic.type = MTYPE_PTEXT; s_graphicsoptions.sound.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_graphicsoptions.sound.generic.id = ID_SOUND; s_graphicsoptions.sound.generic.callback = GraphicsOptions_Event; s_graphicsoptions.sound.generic.x = 216; s_graphicsoptions.sound.generic.y = 240; s_graphicsoptions.sound.string = "SOUND"; s_graphicsoptions.sound.style = UI_RIGHT; s_graphicsoptions.sound.color = color_red; y = 240 - 6 * (BIGCHAR_HEIGHT + 2); s_graphicsoptions.list.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.list.generic.name = "Graphics Settings:"; s_graphicsoptions.list.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.list.generic.x = 400; s_graphicsoptions.list.generic.y = y; s_graphicsoptions.list.generic.callback = GraphicsOptions_Event; s_graphicsoptions.list.generic.id = ID_LIST; s_graphicsoptions.list.itemnames = s_graphics_options_names; y += 2 * ( BIGCHAR_HEIGHT + 2 ); s_graphicsoptions.driver.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.driver.generic.name = "GL Driver:"; s_graphicsoptions.driver.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.driver.generic.x = 400; s_graphicsoptions.driver.generic.y = y; s_graphicsoptions.driver.itemnames = s_driver_names; s_graphicsoptions.driver.curvalue = (uis.glconfig.driverType == GLDRV_VOODOO); y += BIGCHAR_HEIGHT+2; // references/modifies "r_allowExtensions" s_graphicsoptions.allow_extensions.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.allow_extensions.generic.name = "GL Extensions:"; s_graphicsoptions.allow_extensions.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.allow_extensions.generic.x = 400; s_graphicsoptions.allow_extensions.generic.y = y; s_graphicsoptions.allow_extensions.itemnames = enabled_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_mode" s_graphicsoptions.mode.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.mode.generic.name = "Video Mode:"; s_graphicsoptions.mode.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.mode.generic.x = 400; s_graphicsoptions.mode.generic.y = y; s_graphicsoptions.mode.itemnames = resolutions; s_graphicsoptions.mode.generic.callback = GraphicsOptions_Event; s_graphicsoptions.mode.generic.id = ID_MODE; y += BIGCHAR_HEIGHT+2; // references "r_colorbits" s_graphicsoptions.colordepth.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.colordepth.generic.name = "Color Depth:"; s_graphicsoptions.colordepth.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.colordepth.generic.x = 400; s_graphicsoptions.colordepth.generic.y = y; s_graphicsoptions.colordepth.itemnames = colordepth_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_fullscreen" s_graphicsoptions.fs.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.fs.generic.name = "Fullscreen:"; s_graphicsoptions.fs.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.fs.generic.x = 400; s_graphicsoptions.fs.generic.y = y; s_graphicsoptions.fs.itemnames = enabled_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_vertexLight" s_graphicsoptions.lighting.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.lighting.generic.name = "Lighting:"; s_graphicsoptions.lighting.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.lighting.generic.x = 400; s_graphicsoptions.lighting.generic.y = y; s_graphicsoptions.lighting.itemnames = lighting_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_lodBias" & "subdivisions" s_graphicsoptions.geometry.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.geometry.generic.name = "Geometric Detail:"; s_graphicsoptions.geometry.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.geometry.generic.x = 400; s_graphicsoptions.geometry.generic.y = y; s_graphicsoptions.geometry.itemnames = quality_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_picmip" s_graphicsoptions.tq.generic.type = MTYPE_SLIDER; s_graphicsoptions.tq.generic.name = "Texture Detail:"; s_graphicsoptions.tq.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.tq.generic.x = 400; s_graphicsoptions.tq.generic.y = y; s_graphicsoptions.tq.minvalue = 0; s_graphicsoptions.tq.maxvalue = 3; s_graphicsoptions.tq.generic.callback = GraphicsOptions_TQEvent; y += BIGCHAR_HEIGHT+2; // references/modifies "r_textureBits" s_graphicsoptions.texturebits.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.texturebits.generic.name = "Texture Quality:"; s_graphicsoptions.texturebits.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.texturebits.generic.x = 400; s_graphicsoptions.texturebits.generic.y = y; s_graphicsoptions.texturebits.itemnames = tq_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_textureMode" s_graphicsoptions.filter.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.filter.generic.name = "Texture Filter:"; s_graphicsoptions.filter.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.filter.generic.x = 400; s_graphicsoptions.filter.generic.y = y; s_graphicsoptions.filter.itemnames = filter_names; y += 2*BIGCHAR_HEIGHT; s_graphicsoptions.driverinfo.generic.type = MTYPE_PTEXT; s_graphicsoptions.driverinfo.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_graphicsoptions.driverinfo.generic.callback = GraphicsOptions_Event; s_graphicsoptions.driverinfo.generic.id = ID_DRIVERINFO; s_graphicsoptions.driverinfo.generic.x = 320; s_graphicsoptions.driverinfo.generic.y = y; s_graphicsoptions.driverinfo.string = "Driver Info"; s_graphicsoptions.driverinfo.style = UI_CENTER|UI_SMALLFONT; s_graphicsoptions.driverinfo.color = color_red; y += BIGCHAR_HEIGHT+2; s_graphicsoptions.back.generic.type = MTYPE_BITMAP; s_graphicsoptions.back.generic.name = GRAPHICSOPTIONS_BACK0; s_graphicsoptions.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_graphicsoptions.back.generic.callback = GraphicsOptions_Event; s_graphicsoptions.back.generic.id = ID_BACK2; s_graphicsoptions.back.generic.x = 0; s_graphicsoptions.back.generic.y = 480-64; s_graphicsoptions.back.width = 128; s_graphicsoptions.back.height = 64; s_graphicsoptions.back.focuspic = GRAPHICSOPTIONS_BACK1; s_graphicsoptions.apply.generic.type = MTYPE_BITMAP; s_graphicsoptions.apply.generic.name = GRAPHICSOPTIONS_ACCEPT0; s_graphicsoptions.apply.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_HIDDEN|QMF_INACTIVE; s_graphicsoptions.apply.generic.callback = GraphicsOptions_ApplyChanges; s_graphicsoptions.apply.generic.x = 640; s_graphicsoptions.apply.generic.y = 480-64; s_graphicsoptions.apply.width = 128; s_graphicsoptions.apply.height = 64; s_graphicsoptions.apply.focuspic = GRAPHICSOPTIONS_ACCEPT1; Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.banner ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.framel ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.framer ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.graphics ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.display ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.sound ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.list ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.driver ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.allow_extensions ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.mode ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.colordepth ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.fs ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.lighting ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.geometry ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.tq ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.texturebits ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.filter ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.driverinfo ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.back ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.apply ); GraphicsOptions_SetMenuItems(); GraphicsOptions_GetInitialVideo(); if ( uis.glconfig.driverType == GLDRV_ICD && uis.glconfig.hardwareType == GLHW_3DFX_2D3D ) { s_graphicsoptions.driver.generic.flags |= QMF_HIDDEN|QMF_INACTIVE; } }
static void M_Msgbox_Init( void ) { int i, j, s; int lineend, len; int n = 0; const char *p; menucommon_t *menuitem = NULL; char menuitem_name[40]; char scnd_btn_name[120] = { '\0' }, scnd_btn_action[120] = { '\0' }; int width = 0, yoffset = 40; s_msgbox_menu.nitems = 0; mbtext[0] = 0; for( i = 1; i < trap_Cmd_Argc(); i++ ) { Q_strncpyz( mbtext, trap_Cmd_Argv(i), sizeof( mbtext ) ); len = strlen( mbtext ); // a secret second button if( !strncmp( mbtext, "\\btn\\", 5 ) ) { p = strstr( mbtext + 6, "\\" ); if( p ) { mbtext[p - mbtext] = '\0'; Q_strncpyz( scnd_btn_name, mbtext + 5, sizeof( scnd_btn_name ) ); Q_strncpyz( scnd_btn_action, p + 1, sizeof( scnd_btn_action ) ); } continue; } // split the text into lines for( s = 0; s <= len; s += j + 1 ) { lineend = min( len - s, M_MSGBOX_LINELEN ); for( j = lineend; j && mbtext[s+j] && mbtext[s+j] != ' '; j-- ); if( !j ) j = lineend; mbtext[s+j] = '\0'; Q_snprintfz( menuitem_name, sizeof( menuitem_name ), "m_msgbox_textline_%i", n ); menuitem = UI_InitMenuItem( menuitem_name, mbtext + s, 0, yoffset, MTYPE_SEPARATOR, ALIGN_CENTER_TOP, uis.fontSystemSmall, NULL ); Menu_AddItem( &s_msgbox_menu, menuitem ); yoffset += trap_SCR_strHeight( menuitem->font ); n++; } } //if we printed something, add one line separation if( menuitem ) yoffset += trap_SCR_strHeight( menuitem->font ); if( scnd_btn_name[0] && scnd_btn_action[0] ) width = UI_StringWidth( "close", uis.fontSystemBig ); else width = 0; menuitem = UI_InitMenuItem( "m_msgbox_close", "close", -width, yoffset, MTYPE_ACTION, ALIGN_CENTER_TOP, uis.fontSystemBig, M_genericBackFunc ); Menu_AddItem( &s_msgbox_menu, menuitem ); if( scnd_btn_name[0] && scnd_btn_action[0] ) { UI_SetupButton( menuitem, qtrue ); menuitem = UI_InitMenuItem( "m_msgbox_connect", scnd_btn_name, width, yoffset, MTYPE_ACTION, ALIGN_CENTER_TOP, uis.fontSystemBig, M_Msgbox_SecondButton ); menuitem->itemlocal = UI_CopyString( scnd_btn_action ); Menu_AddItem( &s_msgbox_menu, menuitem ); } yoffset += UI_SetupButton( menuitem, qtrue ) + UI_BUTTONBOX_VERTICAL_SPACE; Menu_Center( &s_msgbox_menu ); Menu_Init( &s_msgbox_menu, qfalse ); Menu_SetStatusBar( &s_msgbox_menu, NULL ); }
/* ================ GraphicsOptions_MenuInit ================ */ void GraphicsOptions_MenuInit( void ) { static const char *tq_names[] = { "Default", "16 bit", "32 bit", NULL }; static const char *s_graphics_options_names[] = { "Very High Quality", "High Quality", "Normal", "Fast", "Fastest", "Custom", NULL }; static const char *lighting_names[] = { "Lightmap (High)", "Vertex (Low)", NULL }; static const char *filter_names[] = { "Bilinear", "Trilinear", "Anisotropic 2x", "Anisotropic 4x", "Anisotropic 8x", "Anisotropic 16x", NULL }; static const char *quality_names[] = { "Low", "Medium", "High", "Very High", NULL }; static const char *enabled_names[] = { "Off", "On", NULL }; static const char *multisample_names[] = { "Off", "2x MSAA", "4x MSAA", NULL }; static const char *detail_names[] = { "13%", "25%", "50%", "100%", NULL }; int y; // zero set all our globals memset( &s_graphicsoptions, 0 ,sizeof(graphicsoptions_t) ); GraphicsOptions_GetResolutions(); GraphicsOptions_GetAspectRatios(); GraphicsOptions_Cache(); s_graphicsoptions.menu.wrapAround = qtrue; s_graphicsoptions.menu.fullscreen = qtrue; s_graphicsoptions.menu.draw = GraphicsOptions_MenuDraw; s_graphicsoptions.banner.generic.type = MTYPE_BTEXT; s_graphicsoptions.banner.generic.x = 320; s_graphicsoptions.banner.generic.y = 16; s_graphicsoptions.banner.string = "SYSTEM SETUP"; s_graphicsoptions.banner.color = text_banner_color; s_graphicsoptions.banner.style = UI_CENTER; s_graphicsoptions.framel.generic.type = MTYPE_BITMAP; s_graphicsoptions.framel.generic.name = GRAPHICSOPTIONS_FRAMEL; s_graphicsoptions.framel.generic.flags = QMF_INACTIVE; s_graphicsoptions.framel.generic.x = 0; s_graphicsoptions.framel.generic.y = 78; s_graphicsoptions.framel.width = 256; s_graphicsoptions.framel.height = 329; s_graphicsoptions.framer.generic.type = MTYPE_BITMAP; s_graphicsoptions.framer.generic.name = GRAPHICSOPTIONS_FRAMER; s_graphicsoptions.framer.generic.flags = QMF_INACTIVE; s_graphicsoptions.framer.generic.x = 376; s_graphicsoptions.framer.generic.y = 76; s_graphicsoptions.framer.width = 256; s_graphicsoptions.framer.height = 334; s_graphicsoptions.graphics.generic.type = MTYPE_PTEXT; s_graphicsoptions.graphics.generic.flags = QMF_RIGHT_JUSTIFY; s_graphicsoptions.graphics.generic.id = ID_GRAPHICS; s_graphicsoptions.graphics.generic.callback = GraphicsOptions_Event; s_graphicsoptions.graphics.generic.x = 216; s_graphicsoptions.graphics.generic.y = 240 - 2 * PROP_HEIGHT; s_graphicsoptions.graphics.string = "GRAPHICS"; s_graphicsoptions.graphics.style = UI_RIGHT; s_graphicsoptions.graphics.color = text_big_color; s_graphicsoptions.display.generic.type = MTYPE_PTEXT; s_graphicsoptions.display.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_graphicsoptions.display.generic.id = ID_DISPLAY; s_graphicsoptions.display.generic.callback = GraphicsOptions_Event; s_graphicsoptions.display.generic.x = 216; s_graphicsoptions.display.generic.y = 240 - PROP_HEIGHT; s_graphicsoptions.display.string = "DISPLAY"; s_graphicsoptions.display.style = UI_RIGHT; s_graphicsoptions.display.color = text_big_color; s_graphicsoptions.sound.generic.type = MTYPE_PTEXT; s_graphicsoptions.sound.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_graphicsoptions.sound.generic.id = ID_SOUND; s_graphicsoptions.sound.generic.callback = GraphicsOptions_Event; s_graphicsoptions.sound.generic.x = 216; s_graphicsoptions.sound.generic.y = 240; s_graphicsoptions.sound.string = "SOUND"; s_graphicsoptions.sound.style = UI_RIGHT; s_graphicsoptions.sound.color = text_big_color; s_graphicsoptions.network.generic.type = MTYPE_PTEXT; s_graphicsoptions.network.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_graphicsoptions.network.generic.id = ID_NETWORK; s_graphicsoptions.network.generic.callback = GraphicsOptions_Event; s_graphicsoptions.network.generic.x = 216; s_graphicsoptions.network.generic.y = 240 + PROP_HEIGHT; s_graphicsoptions.network.string = "NETWORK"; s_graphicsoptions.network.style = UI_RIGHT; s_graphicsoptions.network.color = text_big_color; y = 240 - 7 * (BIGCHAR_HEIGHT + 2); s_graphicsoptions.list.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.list.generic.name = "Graphics Settings:"; s_graphicsoptions.list.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.list.generic.x = 400; s_graphicsoptions.list.generic.y = y; s_graphicsoptions.list.generic.callback = GraphicsOptions_Event; s_graphicsoptions.list.generic.id = ID_LIST; s_graphicsoptions.list.itemnames = s_graphics_options_names; y += 2 * ( BIGCHAR_HEIGHT + 2 ); s_graphicsoptions.ratio.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.ratio.generic.name = "Aspect Ratio:"; s_graphicsoptions.ratio.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.ratio.generic.x = 400; s_graphicsoptions.ratio.generic.y = y; s_graphicsoptions.ratio.itemnames = ratios; s_graphicsoptions.ratio.generic.callback = GraphicsOptions_Event; s_graphicsoptions.ratio.generic.id = ID_RATIO; y += BIGCHAR_HEIGHT+2; // references/modifies "r_mode" s_graphicsoptions.mode.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.mode.generic.name = "Resolution:"; s_graphicsoptions.mode.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.mode.generic.x = 400; s_graphicsoptions.mode.generic.y = y; s_graphicsoptions.mode.itemnames = resolutions; s_graphicsoptions.mode.generic.callback = GraphicsOptions_Event; s_graphicsoptions.mode.generic.id = ID_MODE; y += BIGCHAR_HEIGHT+2; // references/modifies "r_fullscreen" s_graphicsoptions.fs.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.fs.generic.name = "Fullscreen:"; s_graphicsoptions.fs.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.fs.generic.x = 400; s_graphicsoptions.fs.generic.y = y; s_graphicsoptions.fs.itemnames = enabled_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_ext_multisample" s_graphicsoptions.multisample.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.multisample.generic.name = "Anti-aliasing:"; s_graphicsoptions.multisample.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.multisample.generic.x = 400; s_graphicsoptions.multisample.generic.y = y; s_graphicsoptions.multisample.itemnames = multisample_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_vertexLight" s_graphicsoptions.lighting.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.lighting.generic.name = "Lighting:"; s_graphicsoptions.lighting.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.lighting.generic.x = 400; s_graphicsoptions.lighting.generic.y = y; s_graphicsoptions.lighting.itemnames = lighting_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_flares" s_graphicsoptions.flares.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.flares.generic.name = "Flares:"; s_graphicsoptions.flares.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.flares.generic.x = 400; s_graphicsoptions.flares.generic.y = y; s_graphicsoptions.flares.itemnames = enabled_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_lodBias" & "subdivisions" s_graphicsoptions.geometry.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.geometry.generic.name = "Geometric Detail:"; s_graphicsoptions.geometry.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.geometry.generic.x = 400; s_graphicsoptions.geometry.generic.y = y; s_graphicsoptions.geometry.itemnames = quality_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_picmip" s_graphicsoptions.tq.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.tq.generic.name = "Texture Detail:"; s_graphicsoptions.tq.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.tq.generic.x = 400; s_graphicsoptions.tq.generic.y = y; s_graphicsoptions.tq.itemnames = detail_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_textureBits" s_graphicsoptions.texturebits.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.texturebits.generic.name = "Texture Quality:"; s_graphicsoptions.texturebits.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.texturebits.generic.x = 400; s_graphicsoptions.texturebits.generic.y = y; s_graphicsoptions.texturebits.itemnames = tq_names; y += BIGCHAR_HEIGHT+2; // references/modifies "r_textureMode" s_graphicsoptions.filter.generic.type = MTYPE_SPINCONTROL; s_graphicsoptions.filter.generic.name = "Texture Filter:"; s_graphicsoptions.filter.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_graphicsoptions.filter.generic.x = 400; s_graphicsoptions.filter.generic.y = y; s_graphicsoptions.filter.itemnames = filter_names; y += 2*BIGCHAR_HEIGHT; s_graphicsoptions.driverinfo.generic.type = MTYPE_PTEXT; s_graphicsoptions.driverinfo.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_graphicsoptions.driverinfo.generic.callback = GraphicsOptions_Event; s_graphicsoptions.driverinfo.generic.id = ID_DRIVERINFO; s_graphicsoptions.driverinfo.generic.x = 320; s_graphicsoptions.driverinfo.generic.y = y; s_graphicsoptions.driverinfo.string = "Driver Info"; s_graphicsoptions.driverinfo.style = UI_CENTER|UI_SMALLFONT; s_graphicsoptions.driverinfo.color = text_big_color; s_graphicsoptions.back.generic.type = MTYPE_BITMAP; s_graphicsoptions.back.generic.name = GRAPHICSOPTIONS_BACK0; s_graphicsoptions.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_graphicsoptions.back.generic.callback = GraphicsOptions_Event; s_graphicsoptions.back.generic.id = ID_BACK2; s_graphicsoptions.back.generic.x = 0; s_graphicsoptions.back.generic.y = 480-64; s_graphicsoptions.back.width = 128; s_graphicsoptions.back.height = 64; s_graphicsoptions.back.focuspic = GRAPHICSOPTIONS_BACK1; s_graphicsoptions.apply.generic.type = MTYPE_BITMAP; s_graphicsoptions.apply.generic.name = GRAPHICSOPTIONS_ACCEPT0; s_graphicsoptions.apply.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_HIDDEN|QMF_INACTIVE; s_graphicsoptions.apply.generic.callback = GraphicsOptions_ApplyChanges; s_graphicsoptions.apply.generic.x = 640; s_graphicsoptions.apply.generic.y = 480-64; s_graphicsoptions.apply.width = 128; s_graphicsoptions.apply.height = 64; s_graphicsoptions.apply.focuspic = GRAPHICSOPTIONS_ACCEPT1; Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.banner ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.framel ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.framer ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.graphics ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.display ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.sound ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.network ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.list ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.ratio ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.mode ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.fs ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.multisample ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.lighting ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.flares ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.geometry ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.tq ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.texturebits ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.filter ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.driverinfo ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.back ); Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.apply ); GraphicsOptions_SetMenuItems(); GraphicsOptions_GetInitialVideo(); }
/* =============== Signup_MenuInit =============== */ void Signup_MenuInit( void ) { grank_status_t status; int y; memset( &s_signup, 0, sizeof(s_signup) ); Signup_Cache(); s_signup.menu.wrapAround = qtrue; s_signup.menu.fullscreen = qfalse; s_signup.frame.generic.type = MTYPE_BITMAP; s_signup.frame.generic.flags = QMF_INACTIVE; s_signup.frame.generic.name = SIGNUP_FRAME; s_signup.frame.generic.x = 142; //320-233; s_signup.frame.generic.y = 118; //240-166; s_signup.frame.width = 359; //466; s_signup.frame.height = 256; //332; y = 194; s_signup.name.generic.type = MTYPE_PTEXT; s_signup.name.generic.flags = QMF_RIGHT_JUSTIFY|QMF_INACTIVE; s_signup.name.generic.id = ID_NAME; s_signup.name.generic.x = 310; s_signup.name.generic.y = y; s_signup.name.string = "NAME"; s_signup.name.style = UI_RIGHT|UI_SMALLFONT; s_signup.name.color = s_signup_color_prompt; s_signup.name_box.generic.type = MTYPE_FIELD; s_signup.name_box.generic.ownerdraw = Rankings_DrawName; s_signup.name_box.generic.name = ""; s_signup.name_box.generic.flags = 0; s_signup.name_box.generic.x = 330; s_signup.name_box.generic.y = y; s_signup.name_box.field.widthInChars = 16; s_signup.name_box.field.maxchars = 16; y += 20; s_signup.password.generic.type = MTYPE_PTEXT; s_signup.password.generic.flags = QMF_RIGHT_JUSTIFY|QMF_INACTIVE; s_signup.password.generic.id = ID_PASSWORD; s_signup.password.generic.x = 310; s_signup.password.generic.y = y; s_signup.password.string = "PASSWORD"; s_signup.password.style = UI_RIGHT|UI_SMALLFONT; s_signup.password.color = s_signup_color_prompt; s_signup.password_box.generic.type = MTYPE_FIELD; s_signup.password_box.generic.ownerdraw = Rankings_DrawPassword; s_signup.password_box.generic.name = ""; s_signup.password_box.generic.flags = 0; s_signup.password_box.generic.x = 330; s_signup.password_box.generic.y = y; s_signup.password_box.field.widthInChars = 16; s_signup.password_box.field.maxchars = 16; y += 20; s_signup.again.generic.type = MTYPE_PTEXT; s_signup.again.generic.flags = QMF_RIGHT_JUSTIFY|QMF_INACTIVE; s_signup.again.generic.id = ID_AGAIN; s_signup.again.generic.x = 310; s_signup.again.generic.y = y; s_signup.again.string = "(AGAIN)"; s_signup.again.style = UI_RIGHT|UI_SMALLFONT; s_signup.again.color = s_signup_color_prompt; s_signup.again_box.generic.type = MTYPE_FIELD; s_signup.again_box.generic.ownerdraw = Rankings_DrawPassword; s_signup.again_box.generic.name = ""; s_signup.again_box.generic.flags = 0; s_signup.again_box.generic.x = 330; s_signup.again_box.generic.y = y; s_signup.again_box.field.widthInChars = 16; s_signup.again_box.field.maxchars = 16; y += 20; s_signup.email.generic.type = MTYPE_PTEXT; s_signup.email.generic.flags = QMF_RIGHT_JUSTIFY|QMF_INACTIVE; s_signup.email.generic.id = ID_EMAIL; s_signup.email.generic.x = 310; s_signup.email.generic.y = y; s_signup.email.string = "EMAIL"; s_signup.email.style = UI_RIGHT|UI_SMALLFONT; s_signup.email.color = s_signup_color_prompt; s_signup.email_box.generic.type = MTYPE_FIELD; s_signup.email_box.generic.ownerdraw = Rankings_DrawText; s_signup.email_box.generic.name = ""; s_signup.email_box.generic.flags = 0; s_signup.email_box.generic.x = 330; s_signup.email_box.generic.y = y; s_signup.email_box.field.widthInChars = 16; s_signup.email_box.field.maxchars = MAX_EDIT_LINE; y += 40; s_signup.signup.generic.type = MTYPE_PTEXT; s_signup.signup.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_signup.signup.generic.id = ID_SIGNUP; s_signup.signup.generic.callback = Signup_MenuEvent; s_signup.signup.generic.x = 310; s_signup.signup.generic.y = y; s_signup.signup.string = "SIGN UP"; s_signup.signup.style = UI_RIGHT|UI_SMALLFONT; s_signup.signup.color = colorRed; s_signup.cancel.generic.type = MTYPE_PTEXT; s_signup.cancel.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_signup.cancel.generic.id = ID_CANCEL; s_signup.cancel.generic.callback = Signup_MenuEvent; s_signup.cancel.generic.x = 330; s_signup.cancel.generic.y = y; s_signup.cancel.string = "CANCEL"; s_signup.cancel.style = UI_LEFT|UI_SMALLFONT; s_signup.cancel.color = colorRed; y += 20; status = (grank_status_t)_UI_trap_Cvar_VariableValue("client_status"); if( (status != QGR_STATUS_NEW) && (status != QGR_STATUS_SPECTATOR) ) { s_signup.name_box.generic.flags |= QMF_INACTIVE; s_signup.password_box.generic.flags |= QMF_INACTIVE; s_signup.again_box.generic.flags |= QMF_INACTIVE; s_signup.email_box.generic.flags |= QMF_INACTIVE; s_signup.signup.generic.flags |= QMF_INACTIVE; s_signup.signup.color = colorMdGrey; } Menu_AddItem( &s_signup.menu, (void*) &s_signup.frame ); Menu_AddItem( &s_signup.menu, (void*) &s_signup.name ); Menu_AddItem( &s_signup.menu, (void*) &s_signup.name_box ); Menu_AddItem( &s_signup.menu, (void*) &s_signup.password ); Menu_AddItem( &s_signup.menu, (void*) &s_signup.password_box ); Menu_AddItem( &s_signup.menu, (void*) &s_signup.again ); Menu_AddItem( &s_signup.menu, (void*) &s_signup.again_box ); Menu_AddItem( &s_signup.menu, (void*) &s_signup.email ); Menu_AddItem( &s_signup.menu, (void*) &s_signup.email_box ); Menu_AddItem( &s_signup.menu, (void*) &s_signup.signup ); Menu_AddItem( &s_signup.menu, (void*) &s_signup.cancel ); }
/* =============== UI_Mods_MenuInit =============== */ static void UI_Mods_MenuInit( void ) { UI_ModsMenu_Cache(); memset( &s_mods, 0 ,sizeof(mods_t) ); s_mods.menu.wrapAround = qtrue; s_mods.menu.fullscreen = qtrue; s_mods.banner.generic.type = MTYPE_BTEXT; s_mods.banner.generic.x = 320; s_mods.banner.generic.y = 16; s_mods.banner.string = "MODS"; s_mods.banner.color = color_white; s_mods.banner.style = UI_CENTER; s_mods.framel.generic.type = MTYPE_BITMAP; s_mods.framel.generic.name = ART_FRAMEL; s_mods.framel.generic.flags = QMF_INACTIVE; s_mods.framel.generic.x = 0; s_mods.framel.generic.y = 78; s_mods.framel.width = 256; s_mods.framel.height = 329; s_mods.framer.generic.type = MTYPE_BITMAP; s_mods.framer.generic.name = ART_FRAMER; s_mods.framer.generic.flags = QMF_INACTIVE; s_mods.framer.generic.x = 376; s_mods.framer.generic.y = 76; s_mods.framer.width = 256; s_mods.framer.height = 334; s_mods.back.generic.type = MTYPE_BITMAP; s_mods.back.generic.name = ART_BACK0; s_mods.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_mods.back.generic.id = ID_BACK; s_mods.back.generic.callback = UI_Mods_MenuEvent; s_mods.back.generic.x = 0; s_mods.back.generic.y = 480-64; s_mods.back.width = 128; s_mods.back.height = 64; s_mods.back.focuspic = ART_BACK1; s_mods.go.generic.type = MTYPE_BITMAP; s_mods.go.generic.name = ART_FIGHT0; s_mods.go.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_mods.go.generic.id = ID_GO; s_mods.go.generic.callback = UI_Mods_MenuEvent; s_mods.go.generic.x = 640; s_mods.go.generic.y = 480-64; s_mods.go.width = 128; s_mods.go.height = 64; s_mods.go.focuspic = ART_FIGHT1; // scan for mods s_mods.list.generic.type = MTYPE_SCROLLLIST; s_mods.list.generic.flags = QMF_PULSEIFFOCUS|QMF_CENTER_JUSTIFY; s_mods.list.generic.callback = UI_Mods_MenuEvent; s_mods.list.generic.id = ID_LIST; s_mods.list.generic.x = 320; s_mods.list.generic.y = 130; s_mods.list.width = 48; s_mods.list.height = 14; UI_Mods_LoadMods(); Menu_AddItem( &s_mods.menu, &s_mods.banner ); Menu_AddItem( &s_mods.menu, &s_mods.framel ); Menu_AddItem( &s_mods.menu, &s_mods.framer ); Menu_AddItem( &s_mods.menu, &s_mods.list ); Menu_AddItem( &s_mods.menu, &s_mods.back ); Menu_AddItem( &s_mods.menu, &s_mods.go ); }
/* =============== UI_SetupMenu_Init =============== */ static void UI_SetupMenu_Init( void ) { int y; UI_SetupMenu_Cache(); memset( &setupMenuInfo, 0, sizeof(setupMenuInfo) ); setupMenuInfo.menu.wrapAround = qtrue; setupMenuInfo.menu.fullscreen = qtrue; setupMenuInfo.banner.generic.type = MTYPE_BTEXT; setupMenuInfo.banner.generic.x = 320; setupMenuInfo.banner.generic.y = 16; setupMenuInfo.banner.string = "SETUP"; setupMenuInfo.banner.color = color_blue; setupMenuInfo.banner.style = UI_CENTER; setupMenuInfo.framel.generic.type = MTYPE_BITMAP; setupMenuInfo.framel.generic.name = ART_FRAMEL; setupMenuInfo.framel.generic.flags = QMF_INACTIVE; setupMenuInfo.framel.generic.x = 0; setupMenuInfo.framel.generic.y = 78; setupMenuInfo.framel.width = 256; setupMenuInfo.framel.height = 329; setupMenuInfo.framer.generic.type = MTYPE_BITMAP; setupMenuInfo.framer.generic.name = ART_FRAMER; setupMenuInfo.framer.generic.flags = QMF_INACTIVE; setupMenuInfo.framer.generic.x = 376; setupMenuInfo.framer.generic.y = 76; setupMenuInfo.framer.width = 256; setupMenuInfo.framer.height = 334; y = 134; setupMenuInfo.setupplayer.generic.type = MTYPE_PTEXT; setupMenuInfo.setupplayer.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; setupMenuInfo.setupplayer.generic.x = 320; setupMenuInfo.setupplayer.generic.y = y; setupMenuInfo.setupplayer.generic.id = ID_CUSTOMIZEPLAYER; setupMenuInfo.setupplayer.generic.callback = UI_SetupMenu_Event; setupMenuInfo.setupplayer.string = "PLAYER"; setupMenuInfo.setupplayer.color = color_blue; setupMenuInfo.setupplayer.style = UI_CENTER; y += SETUP_MENU_VERTICAL_SPACING; setupMenuInfo.setupcontrols.generic.type = MTYPE_PTEXT; setupMenuInfo.setupcontrols.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; setupMenuInfo.setupcontrols.generic.x = 320; setupMenuInfo.setupcontrols.generic.y = y; setupMenuInfo.setupcontrols.generic.id = ID_CUSTOMIZECONTROLS; setupMenuInfo.setupcontrols.generic.callback = UI_SetupMenu_Event; setupMenuInfo.setupcontrols.string = "CONTROLS"; setupMenuInfo.setupcontrols.color = color_blue; setupMenuInfo.setupcontrols.style = UI_CENTER; y += SETUP_MENU_VERTICAL_SPACING; setupMenuInfo.setupsystem.generic.type = MTYPE_PTEXT; setupMenuInfo.setupsystem.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; setupMenuInfo.setupsystem.generic.x = 320; setupMenuInfo.setupsystem.generic.y = y; setupMenuInfo.setupsystem.generic.id = ID_SYSTEMCONFIG; setupMenuInfo.setupsystem.generic.callback = UI_SetupMenu_Event; setupMenuInfo.setupsystem.string = "SYSTEM"; setupMenuInfo.setupsystem.color = color_blue; setupMenuInfo.setupsystem.style = UI_CENTER; y += SETUP_MENU_VERTICAL_SPACING; setupMenuInfo.game.generic.type = MTYPE_PTEXT; setupMenuInfo.game.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; setupMenuInfo.game.generic.x = 320; setupMenuInfo.game.generic.y = y; setupMenuInfo.game.generic.id = ID_GAME; setupMenuInfo.game.generic.callback = UI_SetupMenu_Event; setupMenuInfo.game.string = "GAME OPTIONS"; setupMenuInfo.game.color = color_blue; setupMenuInfo.game.style = UI_CENTER; y += SETUP_MENU_VERTICAL_SPACING; setupMenuInfo.cdkey.generic.type = MTYPE_PTEXT; setupMenuInfo.cdkey.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; setupMenuInfo.cdkey.generic.x = 320; setupMenuInfo.cdkey.generic.y = y; setupMenuInfo.cdkey.generic.id = ID_CDKEY; setupMenuInfo.cdkey.generic.callback = UI_SetupMenu_Event; setupMenuInfo.cdkey.string = "CD Key"; setupMenuInfo.cdkey.color = color_blue; setupMenuInfo.cdkey.style = UI_CENTER; if( !trap_Cvar_VariableValue( "cl_paused" ) ) { #if 0 y += SETUP_MENU_VERTICAL_SPACING; setupMenuInfo.load.generic.type = MTYPE_PTEXT; setupMenuInfo.load.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; setupMenuInfo.load.generic.x = 320; setupMenuInfo.load.generic.y = y; setupMenuInfo.load.generic.id = ID_LOAD; setupMenuInfo.load.generic.callback = UI_SetupMenu_Event; setupMenuInfo.load.string = "LOAD"; setupMenuInfo.load.color = color_blue; setupMenuInfo.load.style = UI_CENTER; y += SETUP_MENU_VERTICAL_SPACING; setupMenuInfo.save.generic.type = MTYPE_PTEXT; setupMenuInfo.save.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; setupMenuInfo.save.generic.x = 320; setupMenuInfo.save.generic.y = y; setupMenuInfo.save.generic.id = ID_SAVE; setupMenuInfo.save.generic.callback = UI_SetupMenu_Event; setupMenuInfo.save.string = "SAVE"; setupMenuInfo.save.color = color_blue; setupMenuInfo.save.style = UI_CENTER; #endif y += SETUP_MENU_VERTICAL_SPACING; setupMenuInfo.defaults.generic.type = MTYPE_PTEXT; setupMenuInfo.defaults.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; setupMenuInfo.defaults.generic.x = 320; setupMenuInfo.defaults.generic.y = y; setupMenuInfo.defaults.generic.id = ID_DEFAULTS; setupMenuInfo.defaults.generic.callback = UI_SetupMenu_Event; setupMenuInfo.defaults.string = "DEFAULTS"; setupMenuInfo.defaults.color = color_blue; setupMenuInfo.defaults.style = UI_CENTER; } setupMenuInfo.back.generic.type = MTYPE_BITMAP; setupMenuInfo.back.generic.name = ART_BACK0; setupMenuInfo.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; setupMenuInfo.back.generic.id = ID_BACK; setupMenuInfo.back.generic.callback = UI_SetupMenu_Event; setupMenuInfo.back.generic.x = 0; setupMenuInfo.back.generic.y = 480-64; setupMenuInfo.back.width = 128; setupMenuInfo.back.height = 64; setupMenuInfo.back.focuspic = ART_BACK1; Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.banner ); Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.framel ); Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.framer ); Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.setupplayer ); Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.setupcontrols ); Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.setupsystem ); Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.game ); // Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.cdkey ); // Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.load ); // Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.save ); if( !trap_Cvar_VariableValue( "cl_paused" ) ) { Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.defaults ); } Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.back ); }
/* ================= PlayerSettings_MenuInit ================= */ static void PlayerSettings_MenuInit( void ) { int y; memset(&s_playersettings,0,sizeof(playersettings_t)); PlayerSettings_Cache(); s_playersettings.menu.key = PlayerSettings_MenuKey; s_playersettings.menu.wrapAround = qtrue; s_playersettings.menu.fullscreen = qtrue; s_playersettings.menu.showlogo = LOGO_AFTERWARDS; s_playersettings.banner.generic.type = MTYPE_BTEXT; s_playersettings.banner.generic.x = 320; s_playersettings.banner.generic.y = 16; s_playersettings.banner.string = "PLAYER SETTINGS"; s_playersettings.banner.color = color_white; s_playersettings.banner.style = UI_CENTER; y = 144; s_playersettings.name.generic.type = MTYPE_FIELD; s_playersettings.name.generic.flags = QMF_NODEFAULTINIT; s_playersettings.name.generic.ownerdraw = PlayerSettings_DrawName; s_playersettings.name.field.widthInChars = MAX_NAMELENGTH; s_playersettings.name.field.maxchars = MAX_NAMELENGTH; s_playersettings.name.generic.x = 192; s_playersettings.name.generic.y = y; s_playersettings.name.generic.left = 192 - 8; s_playersettings.name.generic.top = y - 8; s_playersettings.name.generic.right = 192 + 200; s_playersettings.name.generic.bottom = y + 2 * PROP_HEIGHT; y += 3 * PROP_HEIGHT; s_playersettings.handicap.generic.type = MTYPE_SPINCONTROL; s_playersettings.handicap.generic.flags = QMF_NODEFAULTINIT; s_playersettings.handicap.generic.id = ID_HANDICAP; s_playersettings.handicap.generic.ownerdraw = PlayerSettings_DrawHandicap; s_playersettings.handicap.generic.x = 192; s_playersettings.handicap.generic.y = y; s_playersettings.handicap.generic.left = 192 - 8; s_playersettings.handicap.generic.top = y - 8; s_playersettings.handicap.generic.right = 192 + 200; s_playersettings.handicap.generic.bottom = y + 2 * PROP_HEIGHT; s_playersettings.handicap.numitems = 10; y += 3 * PROP_HEIGHT; s_playersettings.effects.generic.type = MTYPE_SPINCONTROL; s_playersettings.effects.generic.flags = QMF_NODEFAULTINIT; s_playersettings.effects.generic.id = ID_EFFECTS; s_playersettings.effects.generic.ownerdraw = PlayerSettings_DrawEffects; s_playersettings.effects.generic.x = 192; s_playersettings.effects.generic.y = y; s_playersettings.effects.generic.left = 192 - 8; s_playersettings.effects.generic.top = y - 8; s_playersettings.effects.generic.right = 192 + 200; s_playersettings.effects.generic.bottom = y + 2* PROP_HEIGHT; s_playersettings.effects.numitems = 7; s_playersettings.model.generic.type = MTYPE_BITMAP; s_playersettings.model.generic.name = ART_MODEL0; s_playersettings.model.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_playersettings.model.generic.id = ID_MODEL; s_playersettings.model.generic.callback = PlayerSettings_MenuEvent; s_playersettings.model.generic.x = 640; s_playersettings.model.generic.y = 480-64; s_playersettings.model.width = 128; s_playersettings.model.height = 64; s_playersettings.model.focuspic = ART_MODEL1; s_playersettings.player.generic.type = MTYPE_BITMAP; s_playersettings.player.generic.flags = QMF_INACTIVE; s_playersettings.player.generic.ownerdraw = PlayerSettings_DrawPlayer; s_playersettings.player.generic.x = 400; s_playersettings.player.generic.y = -40; s_playersettings.player.width = 32*10; s_playersettings.player.height = 56*10; s_playersettings.back.generic.type = MTYPE_BITMAP; s_playersettings.back.generic.name = ART_BACK0; s_playersettings.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_playersettings.back.generic.id = ID_BACK; s_playersettings.back.generic.callback = PlayerSettings_MenuEvent; s_playersettings.back.generic.x = 0; s_playersettings.back.generic.y = 480-64; s_playersettings.back.width = 128; s_playersettings.back.height = 64; s_playersettings.back.focuspic = ART_BACK1; s_playersettings.item_null.generic.type = MTYPE_BITMAP; s_playersettings.item_null.generic.flags = QMF_LEFT_JUSTIFY|QMF_MOUSEONLY|QMF_SILENT; s_playersettings.item_null.generic.x = 0; s_playersettings.item_null.generic.y = 0; s_playersettings.item_null.width = 640; s_playersettings.item_null.height = 480; Menu_AddItem( &s_playersettings.menu, &s_playersettings.banner ); Menu_AddItem( &s_playersettings.menu, &s_playersettings.name ); Menu_AddItem( &s_playersettings.menu, &s_playersettings.handicap ); Menu_AddItem( &s_playersettings.menu, &s_playersettings.effects ); Menu_AddItem( &s_playersettings.menu, &s_playersettings.model ); Menu_AddItem( &s_playersettings.menu, &s_playersettings.back ); Menu_AddItem( &s_playersettings.menu, &s_playersettings.player ); Menu_AddItem( &s_playersettings.menu, &s_playersettings.item_null ); PlayerSettings_SetMenuItems(); }
/* =============== 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 ); }
/* ================= UI_SPLevelMenu_Init ================= */ static void UI_SPLevelMenu_Init( void ) { int skill; int n; int x, y; int count; char buf[MAX_QPATH]; skill = (int)trap_Cvar_VariableValue( "g_spSkill" ); if( skill < 1 || skill > 5 ) { trap_Cvar_Set( "g_spSkill", "2" ); skill = 2; } memset( &levelMenuInfo, 0, sizeof(levelMenuInfo) ); levelMenuInfo.menu.fullscreen = qtrue; levelMenuInfo.menu.wrapAround = qtrue; levelMenuInfo.menu.draw = UI_SPLevelMenu_MenuDraw; UI_SPLevelMenu_Cache(); levelMenuInfo.item_banner.generic.type = MTYPE_BTEXT; levelMenuInfo.item_banner.generic.x = 320; levelMenuInfo.item_banner.generic.y = 16; levelMenuInfo.item_banner.string = "CHOOSE LEVEL"; levelMenuInfo.item_banner.color = color_red; levelMenuInfo.item_banner.style = UI_CENTER; levelMenuInfo.item_leftarrow.generic.type = MTYPE_BITMAP; levelMenuInfo.item_leftarrow.generic.name = ART_ARROW; levelMenuInfo.item_leftarrow.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; levelMenuInfo.item_leftarrow.generic.x = 18; levelMenuInfo.item_leftarrow.generic.y = 64; levelMenuInfo.item_leftarrow.generic.callback = UI_SPLevelMenu_LeftArrowEvent; levelMenuInfo.item_leftarrow.generic.id = ID_LEFTARROW; levelMenuInfo.item_leftarrow.width = 16; levelMenuInfo.item_leftarrow.height = 114; levelMenuInfo.item_leftarrow.focuspic = ART_ARROW_FOCUS; levelMenuInfo.item_maps[0].generic.type = MTYPE_BITMAP; levelMenuInfo.item_maps[0].generic.name = levelMenuInfo.levelPicNames[0]; levelMenuInfo.item_maps[0].generic.flags = QMF_LEFT_JUSTIFY; levelMenuInfo.item_maps[0].generic.x = 46; levelMenuInfo.item_maps[0].generic.y = 64; levelMenuInfo.item_maps[0].generic.id = ID_PICTURE0; levelMenuInfo.item_maps[0].generic.callback = UI_SPLevelMenu_LevelEvent; levelMenuInfo.item_maps[0].width = 128; levelMenuInfo.item_maps[0].height = 96; levelMenuInfo.item_maps[1].generic.type = MTYPE_BITMAP; levelMenuInfo.item_maps[1].generic.name = levelMenuInfo.levelPicNames[1]; levelMenuInfo.item_maps[1].generic.flags = QMF_LEFT_JUSTIFY; levelMenuInfo.item_maps[1].generic.x = 186; levelMenuInfo.item_maps[1].generic.y = 64; levelMenuInfo.item_maps[1].generic.id = ID_PICTURE1; levelMenuInfo.item_maps[1].generic.callback = UI_SPLevelMenu_LevelEvent; levelMenuInfo.item_maps[1].width = 128; levelMenuInfo.item_maps[1].height = 96; levelMenuInfo.item_maps[2].generic.type = MTYPE_BITMAP; levelMenuInfo.item_maps[2].generic.name = levelMenuInfo.levelPicNames[2]; levelMenuInfo.item_maps[2].generic.flags = QMF_LEFT_JUSTIFY; levelMenuInfo.item_maps[2].generic.x = 326; levelMenuInfo.item_maps[2].generic.y = 64; levelMenuInfo.item_maps[2].generic.id = ID_PICTURE2; levelMenuInfo.item_maps[2].generic.callback = UI_SPLevelMenu_LevelEvent; levelMenuInfo.item_maps[2].width = 128; levelMenuInfo.item_maps[2].height = 96; levelMenuInfo.item_maps[3].generic.type = MTYPE_BITMAP; levelMenuInfo.item_maps[3].generic.name = levelMenuInfo.levelPicNames[3]; levelMenuInfo.item_maps[3].generic.flags = QMF_LEFT_JUSTIFY; levelMenuInfo.item_maps[3].generic.x = 466; levelMenuInfo.item_maps[3].generic.y = 64; levelMenuInfo.item_maps[3].generic.id = ID_PICTURE3; levelMenuInfo.item_maps[3].generic.callback = UI_SPLevelMenu_LevelEvent; levelMenuInfo.item_maps[3].width = 128; levelMenuInfo.item_maps[3].height = 96; levelMenuInfo.item_rightarrow.generic.type = MTYPE_BITMAP; levelMenuInfo.item_rightarrow.generic.name = ART_ARROW; levelMenuInfo.item_rightarrow.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; levelMenuInfo.item_rightarrow.generic.x = 606; levelMenuInfo.item_rightarrow.generic.y = 64; levelMenuInfo.item_rightarrow.generic.callback = UI_SPLevelMenu_RightArrowEvent; levelMenuInfo.item_rightarrow.generic.id = ID_RIGHTARROW; levelMenuInfo.item_rightarrow.width = -16; levelMenuInfo.item_rightarrow.height = 114; levelMenuInfo.item_rightarrow.focuspic = ART_ARROW_FOCUS; trap_Cvar_VariableStringBuffer( "model", levelMenuInfo.playerModel, sizeof(levelMenuInfo.playerModel) ); PlayerIcon( levelMenuInfo.playerModel, levelMenuInfo.playerPicName, sizeof(levelMenuInfo.playerPicName) ); levelMenuInfo.item_player.generic.type = MTYPE_BITMAP; levelMenuInfo.item_player.generic.name = levelMenuInfo.playerPicName; levelMenuInfo.item_player.generic.flags = QMF_LEFT_JUSTIFY|QMF_MOUSEONLY; levelMenuInfo.item_player.generic.x = 288; levelMenuInfo.item_player.generic.y = AWARDS_Y; levelMenuInfo.item_player.generic.id = ID_PLAYERPIC; levelMenuInfo.item_player.generic.callback = UI_SPLevelMenu_PlayerEvent; levelMenuInfo.item_player.width = 64; levelMenuInfo.item_player.height = 64; for( n = 0; n < 6; n++ ) { levelMenuInfo.awardLevels[n] = UI_GetAwardLevel( n ); } levelMenuInfo.awardLevels[AWARD_FRAGS] = 100 * (levelMenuInfo.awardLevels[AWARD_FRAGS] / 100); y = AWARDS_Y; count = 0; for( n = 0; n < 6; n++ ) { if( levelMenuInfo.awardLevels[n] ) { if( count & 1 ) { x = 224 - (count - 1 ) / 2 * (48 + 16); } else { x = 368 + count / 2 * (48 + 16); } levelMenuInfo.item_awards[count].generic.type = MTYPE_BITMAP; levelMenuInfo.item_awards[count].generic.name = ui_medalPicNames[n]; levelMenuInfo.item_awards[count].generic.flags = QMF_LEFT_JUSTIFY|QMF_SILENT|QMF_MOUSEONLY; levelMenuInfo.item_awards[count].generic.x = x; levelMenuInfo.item_awards[count].generic.y = y; levelMenuInfo.item_awards[count].generic.id = ID_AWARD1 + n; levelMenuInfo.item_awards[count].generic.callback = UI_SPLevelMenu_AwardEvent; levelMenuInfo.item_awards[count].width = 48; levelMenuInfo.item_awards[count].height = 48; count++; } } levelMenuInfo.item_back.generic.type = MTYPE_BITMAP; levelMenuInfo.item_back.generic.name = ART_BACK0; levelMenuInfo.item_back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; levelMenuInfo.item_back.generic.x = 0; levelMenuInfo.item_back.generic.y = 480-64; levelMenuInfo.item_back.generic.callback = UI_SPLevelMenu_BackEvent; levelMenuInfo.item_back.generic.id = ID_BACK; levelMenuInfo.item_back.width = 128; levelMenuInfo.item_back.height = 64; levelMenuInfo.item_back.focuspic = ART_BACK1; levelMenuInfo.item_reset.generic.type = MTYPE_BITMAP; levelMenuInfo.item_reset.generic.name = ART_RESET0; levelMenuInfo.item_reset.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; levelMenuInfo.item_reset.generic.x = 170; levelMenuInfo.item_reset.generic.y = 480-64; levelMenuInfo.item_reset.generic.callback = UI_SPLevelMenu_ResetEvent; levelMenuInfo.item_reset.generic.id = ID_RESET; levelMenuInfo.item_reset.width = 128; levelMenuInfo.item_reset.height = 64; levelMenuInfo.item_reset.focuspic = ART_RESET1; levelMenuInfo.item_custom.generic.type = MTYPE_BITMAP; levelMenuInfo.item_custom.generic.name = ART_CUSTOM0; levelMenuInfo.item_custom.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; levelMenuInfo.item_custom.generic.x = 342; levelMenuInfo.item_custom.generic.y = 480-64; levelMenuInfo.item_custom.generic.callback = UI_SPLevelMenu_CustomEvent; levelMenuInfo.item_custom.generic.id = ID_CUSTOM; levelMenuInfo.item_custom.width = 128; levelMenuInfo.item_custom.height = 64; levelMenuInfo.item_custom.focuspic = ART_CUSTOM1; levelMenuInfo.item_next.generic.type = MTYPE_BITMAP; levelMenuInfo.item_next.generic.name = ART_FIGHT0; levelMenuInfo.item_next.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; levelMenuInfo.item_next.generic.x = 640; levelMenuInfo.item_next.generic.y = 480-64; levelMenuInfo.item_next.generic.callback = UI_SPLevelMenu_NextEvent; levelMenuInfo.item_next.generic.id = ID_NEXT; levelMenuInfo.item_next.width = 128; levelMenuInfo.item_next.height = 64; levelMenuInfo.item_next.focuspic = ART_FIGHT1; levelMenuInfo.item_null.generic.type = MTYPE_BITMAP; levelMenuInfo.item_null.generic.flags = QMF_LEFT_JUSTIFY|QMF_MOUSEONLY|QMF_SILENT; levelMenuInfo.item_null.generic.x = 0; levelMenuInfo.item_null.generic.y = 0; levelMenuInfo.item_null.width = 640; levelMenuInfo.item_null.height = 480; Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_banner ); Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_leftarrow ); Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_maps[0] ); Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_maps[1] ); Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_maps[2] ); Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_maps[3] ); levelMenuInfo.item_maps[0].generic.bottom += 18; levelMenuInfo.item_maps[1].generic.bottom += 18; levelMenuInfo.item_maps[2].generic.bottom += 18; levelMenuInfo.item_maps[3].generic.bottom += 18; Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_rightarrow ); Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_player ); for( n = 0; n < count; n++ ) { Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_awards[n] ); } Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_back ); Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_reset ); Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_custom ); Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_next ); Menu_AddItem( &levelMenuInfo.menu, &levelMenuInfo.item_null ); trap_Cvar_VariableStringBuffer( "ui_spSelection", buf, sizeof(buf) ); if( *buf ) { n = atoi( buf ); selectedArenaSet = n / ARENAS_PER_TIER; selectedArena = n % ARENAS_PER_TIER; } else { selectedArenaSet = currentSet; selectedArena = currentGame; } UI_SPLevelMenu_SetMenuItems(); }
/* ================= ArenaServers_MenuInit ================= */ static void ArenaServers_MenuInit( void ) { int i; int type; int y; int value; static char statusbuffer[MAX_STATUSLENGTH]; // zero set all our globals memset( &g_arenaservers, 0 ,sizeof(arenaservers_t) ); ArenaServers_Cache(); g_arenaservers.menu.fullscreen = qtrue; g_arenaservers.menu.wrapAround = qtrue; g_arenaservers.menu.draw = ArenaServers_MenuDraw; g_arenaservers.menu.key = ArenaServers_MenuKey; g_arenaservers.banner.generic.type = MTYPE_BTEXT; g_arenaservers.banner.generic.flags = QMF_CENTER_JUSTIFY; g_arenaservers.banner.generic.x = 320; g_arenaservers.banner.generic.y = 16; g_arenaservers.banner.string = "ARENA SERVERS"; g_arenaservers.banner.style = UI_CENTER; g_arenaservers.banner.color = color_white; y = 80; g_arenaservers.master.generic.type = MTYPE_SPINCONTROL; g_arenaservers.master.generic.name = "Servers:"; g_arenaservers.master.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.master.generic.callback = ArenaServers_Event; g_arenaservers.master.generic.id = ID_MASTER; g_arenaservers.master.generic.x = 320; g_arenaservers.master.generic.y = y; g_arenaservers.master.itemnames = master_items; y += SMALLCHAR_HEIGHT; g_arenaservers.gametype.generic.type = MTYPE_SPINCONTROL; g_arenaservers.gametype.generic.name = "Game Type:"; g_arenaservers.gametype.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.gametype.generic.callback = ArenaServers_Event; g_arenaservers.gametype.generic.id = ID_GAMETYPE; g_arenaservers.gametype.generic.x = 320; g_arenaservers.gametype.generic.y = y; g_arenaservers.gametype.itemnames = servertype_items; y += SMALLCHAR_HEIGHT; g_arenaservers.sortkey.generic.type = MTYPE_SPINCONTROL; g_arenaservers.sortkey.generic.name = "Sort By:"; g_arenaservers.sortkey.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.sortkey.generic.callback = ArenaServers_Event; g_arenaservers.sortkey.generic.id = ID_SORTKEY; g_arenaservers.sortkey.generic.x = 320; g_arenaservers.sortkey.generic.y = y; g_arenaservers.sortkey.itemnames = sortkey_items; y += SMALLCHAR_HEIGHT; g_arenaservers.showfull.generic.type = MTYPE_RADIOBUTTON; g_arenaservers.showfull.generic.name = "Show Full:"; g_arenaservers.showfull.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.showfull.generic.callback = ArenaServers_Event; g_arenaservers.showfull.generic.id = ID_SHOW_FULL; g_arenaservers.showfull.generic.x = 320; g_arenaservers.showfull.generic.y = y; y += SMALLCHAR_HEIGHT; g_arenaservers.showempty.generic.type = MTYPE_RADIOBUTTON; g_arenaservers.showempty.generic.name = "Show Empty:"; g_arenaservers.showempty.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.showempty.generic.callback = ArenaServers_Event; g_arenaservers.showempty.generic.id = ID_SHOW_EMPTY; g_arenaservers.showempty.generic.x = 320; g_arenaservers.showempty.generic.y = y; y += 3 * SMALLCHAR_HEIGHT; g_arenaservers.list.generic.type = MTYPE_SCROLLLIST; g_arenaservers.list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; g_arenaservers.list.generic.id = ID_LIST; g_arenaservers.list.generic.callback = ArenaServers_Event; g_arenaservers.list.generic.x = 72; g_arenaservers.list.generic.y = y; g_arenaservers.list.width = MAX_LISTBOXWIDTH; g_arenaservers.list.height = 11; g_arenaservers.list.itemnames = (const char **)g_arenaservers.items; for( i = 0; i < MAX_LISTBOXITEMS; i++ ) { g_arenaservers.items[i] = g_arenaservers.table[i].buff; } g_arenaservers.mappic.generic.type = MTYPE_BITMAP; g_arenaservers.mappic.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; g_arenaservers.mappic.generic.x = 72; g_arenaservers.mappic.generic.y = 80; g_arenaservers.mappic.width = 128; g_arenaservers.mappic.height = 96; g_arenaservers.mappic.errorpic = ART_UNKNOWNMAP; g_arenaservers.arrows.generic.type = MTYPE_BITMAP; g_arenaservers.arrows.generic.name = ART_ARROWS0; g_arenaservers.arrows.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; g_arenaservers.arrows.generic.callback = ArenaServers_Event; g_arenaservers.arrows.generic.x = 512+48; g_arenaservers.arrows.generic.y = 240-64+16; g_arenaservers.arrows.width = 64; g_arenaservers.arrows.height = 128; g_arenaservers.up.generic.type = MTYPE_BITMAP; g_arenaservers.up.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY; g_arenaservers.up.generic.callback = ArenaServers_Event; g_arenaservers.up.generic.id = ID_SCROLL_UP; g_arenaservers.up.generic.x = 512+48; g_arenaservers.up.generic.y = 240-64+16; g_arenaservers.up.width = 64; g_arenaservers.up.height = 64; g_arenaservers.up.focuspic = ART_ARROWS_UP; g_arenaservers.down.generic.type = MTYPE_BITMAP; g_arenaservers.down.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY; g_arenaservers.down.generic.callback = ArenaServers_Event; g_arenaservers.down.generic.id = ID_SCROLL_DOWN; g_arenaservers.down.generic.x = 512+48; g_arenaservers.down.generic.y = 240+16; g_arenaservers.down.width = 64; g_arenaservers.down.height = 64; g_arenaservers.down.focuspic = ART_ARROWS_DOWN; y = 376; g_arenaservers.status.generic.type = MTYPE_TEXT; g_arenaservers.status.generic.x = 320; g_arenaservers.status.generic.y = y; g_arenaservers.status.string = statusbuffer; g_arenaservers.status.style = UI_CENTER|UI_SMALLFONT; g_arenaservers.status.color = menu_text_color; y += SMALLCHAR_HEIGHT; g_arenaservers.statusbar.generic.type = MTYPE_TEXT; g_arenaservers.statusbar.generic.x = 320; g_arenaservers.statusbar.generic.y = y; g_arenaservers.statusbar.string = ""; g_arenaservers.statusbar.style = UI_CENTER|UI_SMALLFONT; g_arenaservers.statusbar.color = text_color_normal; g_arenaservers.remove.generic.type = MTYPE_BITMAP; g_arenaservers.remove.generic.name = ART_REMOVE0; g_arenaservers.remove.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.remove.generic.callback = ArenaServers_Event; g_arenaservers.remove.generic.id = ID_REMOVE; g_arenaservers.remove.generic.x = 450; g_arenaservers.remove.generic.y = 86; g_arenaservers.remove.width = 96; g_arenaservers.remove.height = 48; g_arenaservers.remove.focuspic = ART_REMOVE1; g_arenaservers.back.generic.type = MTYPE_BITMAP; g_arenaservers.back.generic.name = ART_BACK0; g_arenaservers.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.back.generic.callback = ArenaServers_Event; g_arenaservers.back.generic.id = ID_BACK; g_arenaservers.back.generic.x = 0; g_arenaservers.back.generic.y = 480-64; g_arenaservers.back.width = 128; g_arenaservers.back.height = 64; g_arenaservers.back.focuspic = ART_BACK1; g_arenaservers.specify.generic.type = MTYPE_BITMAP; g_arenaservers.specify.generic.name = ART_SPECIFY0; g_arenaservers.specify.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.specify.generic.callback = ArenaServers_Event; g_arenaservers.specify.generic.id = ID_SPECIFY; g_arenaservers.specify.generic.x = 128; g_arenaservers.specify.generic.y = 480-64; g_arenaservers.specify.width = 128; g_arenaservers.specify.height = 64; g_arenaservers.specify.focuspic = ART_SPECIFY1; g_arenaservers.refresh.generic.type = MTYPE_BITMAP; g_arenaservers.refresh.generic.name = ART_REFRESH0; g_arenaservers.refresh.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.refresh.generic.callback = ArenaServers_Event; g_arenaservers.refresh.generic.id = ID_REFRESH; g_arenaservers.refresh.generic.x = 256; g_arenaservers.refresh.generic.y = 480-64; g_arenaservers.refresh.width = 128; g_arenaservers.refresh.height = 64; g_arenaservers.refresh.focuspic = ART_REFRESH1; g_arenaservers.create.generic.type = MTYPE_BITMAP; g_arenaservers.create.generic.name = ART_CREATE0; g_arenaservers.create.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.create.generic.callback = ArenaServers_Event; g_arenaservers.create.generic.id = ID_CREATE; g_arenaservers.create.generic.x = 384; g_arenaservers.create.generic.y = 480-64; g_arenaservers.create.width = 128; g_arenaservers.create.height = 64; g_arenaservers.create.focuspic = ART_CREATE1; g_arenaservers.go.generic.type = MTYPE_BITMAP; g_arenaservers.go.generic.name = ART_CONNECT0; g_arenaservers.go.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.go.generic.callback = ArenaServers_Event; g_arenaservers.go.generic.id = ID_CONNECT; g_arenaservers.go.generic.x = 640; g_arenaservers.go.generic.y = 480-64; g_arenaservers.go.width = 128; g_arenaservers.go.height = 64; g_arenaservers.go.focuspic = ART_CONNECT1; g_arenaservers.punkbuster.generic.type = MTYPE_SPINCONTROL; g_arenaservers.punkbuster.generic.name = "Punkbuster:"; g_arenaservers.punkbuster.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.punkbuster.generic.callback = ArenaServers_Event; g_arenaservers.punkbuster.generic.id = ID_PUNKBUSTER; g_arenaservers.punkbuster.generic.x = 480+32; g_arenaservers.punkbuster.generic.y = 144; g_arenaservers.punkbuster.itemnames = punkbuster_items; g_arenaservers.pblogo.generic.type = MTYPE_BITMAP; g_arenaservers.pblogo.generic.name = ART_PUNKBUSTER; g_arenaservers.pblogo.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; g_arenaservers.pblogo.generic.x = 526; g_arenaservers.pblogo.generic.y = 176; g_arenaservers.pblogo.width = 32; g_arenaservers.pblogo.height = 16; g_arenaservers.pblogo.errorpic = ART_UNKNOWNMAP; Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.banner ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.master ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.gametype ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.sortkey ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.showfull); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.showempty ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.mappic ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.list ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.status ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.statusbar ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.arrows ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.up ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.down ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.remove ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.back ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.specify ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.refresh ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.create ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.go ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.punkbuster ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.pblogo ); ArenaServers_LoadFavorites(); g_servertype = Com_Clamp( 0, 3, ui_browserMaster.integer ); // hack to get rid of MPlayer stuff value = g_servertype; if (value >= 1) value--; g_arenaservers.master.curvalue = value; g_gametype = Com_Clamp( 0, 4, ui_browserGameType.integer ); g_arenaservers.gametype.curvalue = g_gametype; g_sortkey = Com_Clamp( 0, 4, ui_browserSortKey.integer ); g_arenaservers.sortkey.curvalue = g_sortkey; g_fullservers = Com_Clamp( 0, 1, ui_browserShowFull.integer ); g_arenaservers.showfull.curvalue = g_fullservers; g_emptyservers = Com_Clamp( 0, 1, ui_browserShowEmpty.integer ); g_arenaservers.showempty.curvalue = g_emptyservers; g_arenaservers.punkbuster.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "cl_punkbuster" ) ); // force to initial state and refresh type = g_servertype; g_servertype = -1; ArenaServers_SetType( type ); trap_Cvar_Register(NULL, "debug_protocol", "", 0 ); }
/* =============== UI_DisplayOptionsMenu_Init =============== */ static void UI_DisplayOptionsMenu_Init( void ) { int y; memset( &displayOptionsInfo, 0, sizeof(displayOptionsInfo) ); UI_DisplayOptionsMenu_Cache(); displayOptionsInfo.menu.wrapAround = qtrue; displayOptionsInfo.menu.fullscreen = qtrue; displayOptionsInfo.banner.generic.type = MTYPE_BTEXT; displayOptionsInfo.banner.generic.flags = QMF_CENTER_JUSTIFY; displayOptionsInfo.banner.generic.x = 320; displayOptionsInfo.banner.generic.y = 16; displayOptionsInfo.banner.string = "SYSTEM SETUP"; displayOptionsInfo.banner.color = color_white; displayOptionsInfo.banner.style = UI_CENTER; displayOptionsInfo.framel.generic.type = MTYPE_BITMAP; displayOptionsInfo.framel.generic.name = ART_FRAMEL; displayOptionsInfo.framel.generic.flags = QMF_INACTIVE; displayOptionsInfo.framel.generic.x = 0; displayOptionsInfo.framel.generic.y = 78; displayOptionsInfo.framel.width = 256; displayOptionsInfo.framel.height = 329; displayOptionsInfo.framer.generic.type = MTYPE_BITMAP; displayOptionsInfo.framer.generic.name = ART_FRAMER; displayOptionsInfo.framer.generic.flags = QMF_INACTIVE; displayOptionsInfo.framer.generic.x = 376; displayOptionsInfo.framer.generic.y = 76; displayOptionsInfo.framer.width = 256; displayOptionsInfo.framer.height = 334; displayOptionsInfo.graphics.generic.type = MTYPE_PTEXT; displayOptionsInfo.graphics.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; displayOptionsInfo.graphics.generic.id = ID_GRAPHICS; displayOptionsInfo.graphics.generic.callback = UI_DisplayOptionsMenu_Event; displayOptionsInfo.graphics.generic.x = 216; displayOptionsInfo.graphics.generic.y = 240 - 2 * PROP_HEIGHT; displayOptionsInfo.graphics.string = "GRAPHICS"; displayOptionsInfo.graphics.style = UI_RIGHT; displayOptionsInfo.graphics.color = color_red; displayOptionsInfo.display.generic.type = MTYPE_PTEXT; displayOptionsInfo.display.generic.flags = QMF_RIGHT_JUSTIFY; displayOptionsInfo.display.generic.id = ID_DISPLAY; displayOptionsInfo.display.generic.callback = UI_DisplayOptionsMenu_Event; displayOptionsInfo.display.generic.x = 216; displayOptionsInfo.display.generic.y = 240 - PROP_HEIGHT; displayOptionsInfo.display.string = "DISPLAY"; displayOptionsInfo.display.style = UI_RIGHT; displayOptionsInfo.display.color = color_red; displayOptionsInfo.sound.generic.type = MTYPE_PTEXT; displayOptionsInfo.sound.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; displayOptionsInfo.sound.generic.id = ID_SOUND; displayOptionsInfo.sound.generic.callback = UI_DisplayOptionsMenu_Event; displayOptionsInfo.sound.generic.x = 216; displayOptionsInfo.sound.generic.y = 240; displayOptionsInfo.sound.string = "SOUND"; displayOptionsInfo.sound.style = UI_RIGHT; displayOptionsInfo.sound.color = color_red; displayOptionsInfo.network.generic.type = MTYPE_PTEXT; displayOptionsInfo.network.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; displayOptionsInfo.network.generic.id = ID_NETWORK; displayOptionsInfo.network.generic.callback = UI_DisplayOptionsMenu_Event; displayOptionsInfo.network.generic.x = 216; displayOptionsInfo.network.generic.y = 240 + PROP_HEIGHT; displayOptionsInfo.network.string = "NETWORK"; displayOptionsInfo.network.style = UI_RIGHT; displayOptionsInfo.network.color = color_red; y = 240 - 1 * (BIGCHAR_HEIGHT+2); displayOptionsInfo.brightness.generic.type = MTYPE_SLIDER; displayOptionsInfo.brightness.generic.name = "Brightness:"; displayOptionsInfo.brightness.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; displayOptionsInfo.brightness.generic.callback = UI_DisplayOptionsMenu_Event; displayOptionsInfo.brightness.generic.id = ID_BRIGHTNESS; displayOptionsInfo.brightness.generic.x = 400; displayOptionsInfo.brightness.generic.y = y; displayOptionsInfo.brightness.minvalue = 5; displayOptionsInfo.brightness.maxvalue = 20; if( !uis.glconfig.deviceSupportsGamma ) { displayOptionsInfo.brightness.generic.flags |= QMF_GRAYED; } y += BIGCHAR_HEIGHT+2; displayOptionsInfo.screensize.generic.type = MTYPE_SLIDER; displayOptionsInfo.screensize.generic.name = "Screen Size:"; displayOptionsInfo.screensize.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; displayOptionsInfo.screensize.generic.callback = UI_DisplayOptionsMenu_Event; displayOptionsInfo.screensize.generic.id = ID_SCREENSIZE; displayOptionsInfo.screensize.generic.x = 400; displayOptionsInfo.screensize.generic.y = y; displayOptionsInfo.screensize.minvalue = 3; displayOptionsInfo.screensize.maxvalue = 10; displayOptionsInfo.back.generic.type = MTYPE_BITMAP; displayOptionsInfo.back.generic.name = ART_BACK0; displayOptionsInfo.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; displayOptionsInfo.back.generic.callback = UI_DisplayOptionsMenu_Event; displayOptionsInfo.back.generic.id = ID_BACK; displayOptionsInfo.back.generic.x = 0; displayOptionsInfo.back.generic.y = 480-64; displayOptionsInfo.back.width = 128; displayOptionsInfo.back.height = 64; displayOptionsInfo.back.focuspic = ART_BACK1; Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.banner ); Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.framel ); Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.framer ); Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.graphics ); Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.display ); Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.sound ); Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.network ); Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.brightness ); Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.screensize ); Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.back ); displayOptionsInfo.brightness.curvalue = trap_Cvar_VariableValue("r_gamma") * 10; displayOptionsInfo.screensize.curvalue = trap_Cvar_VariableValue( "cg_viewsize")/10; }
/* ================= UI_DriverInfo_Menu ================= */ static void UI_DriverInfo_Menu( void ) { char* eptr; int i; int len; // zero set all our globals memset( &s_driverinfo, 0 ,sizeof(driverinfo_t) ); DriverInfo_Cache(); s_driverinfo.menu.fullscreen = qtrue; s_driverinfo.menu.draw = DriverInfo_MenuDraw; s_driverinfo.banner.generic.type = MTYPE_BTEXT; s_driverinfo.banner.generic.x = 320; s_driverinfo.banner.generic.y = 16; s_driverinfo.banner.string = "DRIVER INFO"; s_driverinfo.banner.color = color_white; s_driverinfo.banner.style = UI_CENTER; s_driverinfo.framel.generic.type = MTYPE_BITMAP; s_driverinfo.framel.generic.name = DRIVERINFO_FRAMEL; s_driverinfo.framel.generic.flags = QMF_INACTIVE; s_driverinfo.framel.generic.x = 0; s_driverinfo.framel.generic.y = 78; s_driverinfo.framel.width = 256; s_driverinfo.framel.height = 329; s_driverinfo.framer.generic.type = MTYPE_BITMAP; s_driverinfo.framer.generic.name = DRIVERINFO_FRAMER; s_driverinfo.framer.generic.flags = QMF_INACTIVE; s_driverinfo.framer.generic.x = 376; s_driverinfo.framer.generic.y = 76; s_driverinfo.framer.width = 256; s_driverinfo.framer.height = 334; s_driverinfo.back.generic.type = MTYPE_BITMAP; s_driverinfo.back.generic.name = DRIVERINFO_BACK0; s_driverinfo.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_driverinfo.back.generic.callback = DriverInfo_Event; s_driverinfo.back.generic.id = ID_DRIVERINFOBACK; s_driverinfo.back.generic.x = 0; s_driverinfo.back.generic.y = 480-64; s_driverinfo.back.width = 128; s_driverinfo.back.height = 64; s_driverinfo.back.focuspic = DRIVERINFO_BACK1; // TTimo: overflow with particularly long GL extensions (such as the gf3) // https://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=399 // NOTE: could have pushed the size of stringbuff, but the list is already out of the screen // (no matter what your resolution) Q_strncpyz(s_driverinfo.stringbuff, uis.glconfig.extensions_string, 1024); // build null terminated extension strings eptr = s_driverinfo.stringbuff; while ( s_driverinfo.numstrings<40 && *eptr ) { while ( *eptr && *eptr == ' ' ) *eptr++ = '\0'; // track start of valid string if (*eptr && *eptr != ' ') s_driverinfo.strings[s_driverinfo.numstrings++] = eptr; while ( *eptr && *eptr != ' ' ) eptr++; } // safety length strings for display for (i=0; i<s_driverinfo.numstrings; i++) { len = strlen(s_driverinfo.strings[i]); if (len > 32) { s_driverinfo.strings[i][len-1] = '>'; s_driverinfo.strings[i][len] = '\0'; } } Menu_AddItem( &s_driverinfo.menu, &s_driverinfo.banner ); Menu_AddItem( &s_driverinfo.menu, &s_driverinfo.framel ); Menu_AddItem( &s_driverinfo.menu, &s_driverinfo.framer ); Menu_AddItem( &s_driverinfo.menu, &s_driverinfo.back ); UI_PushMenu( &s_driverinfo.menu ); }
/* ================ Menu_Video_Advanced_Init ================ */ void Menu_Video_Advanced_Init (void) { static const char *yesno_names[] = { "no", "yes", 0 }; static const char *lighting_names[] = { "no", "vertex", "lightmap (if available)", 0 }; static const char *shading_names[] = { "off", "low", "medium", "high", 0 }; static const char *shadow_names[] = { "no", "static planar", "dynamic planar", "projection", 0 }; static const char *ifsupported_names[] = { "no", "if supported", 0 }; static const char *caustics_names[] = { "no", "standard", "hardware warp (if supported)", 0 }; static const char *shell_names[] = { "solid", "flowing", "envmap", 0 }; static const char *screenshotformat_names[] = { "JPEG", "PNG", "TGA", 0 }; int y = 0; r_intensity = Cvar_Get ("r_intensity", "1", 0); s_video_advanced_menu.x = SCREEN_WIDTH*0.5; s_video_advanced_menu.y = SCREEN_HEIGHT*0.5 - 100; s_video_advanced_menu.nitems = 0; s_options_advanced_header.generic.type = MTYPE_SEPARATOR; s_options_advanced_header.generic.name = "Advanced Options"; s_options_advanced_header.generic.x = MENU_FONT_SIZE/2 * strlen(s_options_advanced_header.generic.name); s_options_advanced_header.generic.y = y; s_lightmapscale_slider.generic.type = MTYPE_SLIDER; s_lightmapscale_slider.generic.x = 0; s_lightmapscale_slider.generic.y = y += 2*MENU_LINE_SIZE; s_lightmapscale_slider.generic.name = "lightmap scale"; s_lightmapscale_slider.generic.callback = LightMapScaleCallback; s_lightmapscale_slider.minvalue = 0; s_lightmapscale_slider.maxvalue = 10; s_lightmapscale_slider.generic.statusbar = "leave at minimum, washes out textures"; s_textureintensity_slider.generic.type = MTYPE_SLIDER; s_textureintensity_slider.generic.x = 0; s_textureintensity_slider.generic.y = y += MENU_LINE_SIZE; s_textureintensity_slider.generic.name = "texture intensity"; s_textureintensity_slider.generic.callback = TextureIntensCallback; s_textureintensity_slider.minvalue = 0; s_textureintensity_slider.maxvalue = 10; s_textureintensity_slider.generic.statusbar = "leave at minimum, washes out textures"; s_rgbscale_box.generic.type = MTYPE_SPINCONTROL; s_rgbscale_box.generic.x = 0; s_rgbscale_box.generic.y = y += MENU_LINE_SIZE; s_rgbscale_box.generic.name = "RGB enhance"; s_rgbscale_box.generic.callback = RGBSCaleCallback; s_rgbscale_box.itemnames = yesno_names; s_rgbscale_box.generic.statusbar = "brightens textures without washing them out"; s_trans_lighting_box.generic.type = MTYPE_SPINCONTROL; s_trans_lighting_box.generic.x = 0; s_trans_lighting_box.generic.y = y += MENU_LINE_SIZE; s_trans_lighting_box.generic.name = "translucent lighting"; s_trans_lighting_box.generic.callback = TransLightingCallback; s_trans_lighting_box.itemnames = lighting_names; s_trans_lighting_box.generic.statusbar = "lighting on translucent surfaces"; s_warp_lighting_box.generic.type = MTYPE_SPINCONTROL; s_warp_lighting_box.generic.x = 0; s_warp_lighting_box.generic.y = y += MENU_LINE_SIZE; s_warp_lighting_box.generic.name = "warp surface lighting"; s_warp_lighting_box.generic.callback = WarpLightingCallback; s_warp_lighting_box.itemnames = yesno_names; s_warp_lighting_box.generic.statusbar = "vertex lighting on water and other warping surfaces"; s_lightcutoff_slider.generic.type = MTYPE_SLIDER; s_lightcutoff_slider.generic.x = 0; s_lightcutoff_slider.generic.y = y += MENU_LINE_SIZE; s_lightcutoff_slider.generic.name = "dynamic light cutoff"; s_lightcutoff_slider.generic.callback = LightCutoffCallback; s_lightcutoff_slider.minvalue = 0; s_lightcutoff_slider.maxvalue = 8; s_lightcutoff_slider.generic.statusbar = "lower = smoother blend, higher = faster"; s_glass_envmap_box.generic.type = MTYPE_SPINCONTROL; s_glass_envmap_box.generic.x = 0; s_glass_envmap_box.generic.y = y += MENU_LINE_SIZE; s_glass_envmap_box.generic.name = "glass envmaps"; s_glass_envmap_box.generic.callback = GlassEnvmapCallback; s_glass_envmap_box.itemnames = yesno_names; s_glass_envmap_box.generic.statusbar = "enable environment mapping on transparent surfaces"; s_solidalpha_box.generic.type = MTYPE_SPINCONTROL; s_solidalpha_box.generic.x = 0; s_solidalpha_box.generic.y = y += MENU_LINE_SIZE; s_solidalpha_box.generic.name = "solid alphas"; s_solidalpha_box.generic.callback = SolidAlphaCallback; s_solidalpha_box.itemnames = yesno_names; s_solidalpha_box.generic.statusbar = "enable solid drawing of trans33 + trans66 surfaces"; s_texshader_warp_box.generic.type = MTYPE_SPINCONTROL; s_texshader_warp_box.generic.x = 0; s_texshader_warp_box.generic.y = y += MENU_LINE_SIZE; s_texshader_warp_box.generic.name = "texture shader warp"; s_texshader_warp_box.generic.callback = TexShaderWarpCallback; s_texshader_warp_box.itemnames = ifsupported_names; s_texshader_warp_box.generic.statusbar = "enables hardware water warping effect"; s_waterwave_slider.generic.type = MTYPE_SLIDER; s_waterwave_slider.generic.x = 0; s_waterwave_slider.generic.y = y += MENU_LINE_SIZE; s_waterwave_slider.generic.name = "water wave size"; s_waterwave_slider.generic.callback = WaterWaveCallback; s_waterwave_slider.minvalue = 0; s_waterwave_slider.maxvalue = 24; s_waterwave_slider.generic.statusbar = "size of waves on flat water surfaces"; s_caustics_box.generic.type = MTYPE_SPINCONTROL; s_caustics_box.generic.x = 0; s_caustics_box.generic.y = y += MENU_LINE_SIZE; s_caustics_box.generic.name = "underwater caustics"; s_caustics_box.generic.callback = CausticsCallback; s_caustics_box.itemnames = caustics_names; s_caustics_box.generic.statusbar = "caustic effect on underwater surfaces"; s_particle_overdraw_box.generic.type = MTYPE_SPINCONTROL; s_particle_overdraw_box.generic.x = 0; s_particle_overdraw_box.generic.y = y += 2*MENU_LINE_SIZE; s_particle_overdraw_box.generic.name = "particle overdraw"; s_particle_overdraw_box.generic.callback = ParticleOverdrawCallback; s_particle_overdraw_box.itemnames = yesno_names; s_particle_overdraw_box.generic.statusbar = "redraw particles over trans surfaces"; s_lightbloom_box.generic.type = MTYPE_SPINCONTROL; s_lightbloom_box.generic.x = 0; s_lightbloom_box.generic.y = y += MENU_LINE_SIZE; s_lightbloom_box.generic.name = "light blooms"; s_lightbloom_box.generic.callback = LightBloomCallback; s_lightbloom_box.itemnames = yesno_names; s_lightbloom_box.generic.statusbar = "enables blooming of bright lights"; s_modelshading_box.generic.type = MTYPE_SPINCONTROL; s_modelshading_box.generic.x = 0; s_modelshading_box.generic.y = y += MENU_LINE_SIZE; s_modelshading_box.generic.name = "model shading"; s_modelshading_box.generic.callback = ModelShadingCallback; s_modelshading_box.itemnames = shading_names; s_modelshading_box.generic.statusbar = "level of shading to use on models"; s_shadows_box.generic.type = MTYPE_SPINCONTROL; s_shadows_box.generic.x = 0; s_shadows_box.generic.y = y += MENU_LINE_SIZE; s_shadows_box.generic.name = "entity shadows"; s_shadows_box.generic.callback = ShadowsCallback; s_shadows_box.itemnames = shadow_names; s_shadows_box.generic.statusbar = "type of model shadows to draw"; s_two_side_stencil_box.generic.type = MTYPE_SPINCONTROL; s_two_side_stencil_box.generic.x = 0; s_two_side_stencil_box.generic.y = y += MENU_LINE_SIZE; s_two_side_stencil_box.generic.name = "two-sided stenciling"; s_two_side_stencil_box.generic.callback = TwoSideStencilCallback; s_two_side_stencil_box.itemnames = ifsupported_names; s_two_side_stencil_box.generic.statusbar = "use single-pass shadow stenciling"; s_ent_shell_box.generic.type = MTYPE_SPINCONTROL; s_ent_shell_box.generic.x = 0; s_ent_shell_box.generic.y = y += MENU_LINE_SIZE; s_ent_shell_box.generic.name = "entity shell type"; s_ent_shell_box.generic.callback = EntShellCallback; s_ent_shell_box.itemnames = shell_names; s_ent_shell_box.generic.statusbar = "envmap effect may cause instability on ATI cards"; /* s_screenshotjpeg_box.generic.type = MTYPE_SPINCONTROL; s_screenshotjpeg_box.generic.x = 0; s_screenshotjpeg_box.generic.y = y += 2*MENU_LINE_SIZE; s_screenshotjpeg_box.generic.name = "JPEG screenshots"; s_screenshotjpeg_box.generic.callback = JPEGScreenshotCallback; s_screenshotjpeg_box.itemnames = yesno_names; s_screenshotjpeg_box.generic.statusbar = "whether to take JPG screenshots instead of TGA"; */ s_screenshotformat_box.generic.type = MTYPE_SPINCONTROL; s_screenshotformat_box.generic.x = 0; s_screenshotformat_box.generic.y = y += 2*MENU_LINE_SIZE; s_screenshotformat_box.generic.name = "screenshot format"; s_screenshotformat_box.generic.callback = ScreenshotFormatCallback; s_screenshotformat_box.itemnames = screenshotformat_names; s_screenshotformat_box.generic.statusbar = "image format for screenshots"; s_screenshotjpegquality_slider.generic.type = MTYPE_SLIDER; s_screenshotjpegquality_slider.generic.x = 0; s_screenshotjpegquality_slider.generic.y = y += MENU_LINE_SIZE; s_screenshotjpegquality_slider.generic.name = "JPEG screenshot quality"; s_screenshotjpegquality_slider.generic.callback = JPEGScreenshotQualityCallback; s_screenshotjpegquality_slider.minvalue = 0; s_screenshotjpegquality_slider.maxvalue = 10; s_screenshotjpegquality_slider.generic.statusbar = "quality of JPG screenshots, 50-100%"; s_saveshotsize_box.generic.type = MTYPE_SPINCONTROL; s_saveshotsize_box.generic.x = 0; s_saveshotsize_box.generic.y = y += MENU_LINE_SIZE; s_saveshotsize_box.generic.name = "hi-res saveshots"; s_saveshotsize_box.generic.callback = SaveshotSizeCallback; s_saveshotsize_box.itemnames = yesno_names; s_saveshotsize_box.generic.statusbar = "hi-res saveshots when running at 800x600 or higher"; s_advanced_apply_action.generic.type = MTYPE_ACTION; s_advanced_apply_action.generic.name = "apply changes"; s_advanced_apply_action.generic.x = 0; s_advanced_apply_action.generic.y = y += 2*MENU_LINE_SIZE; s_advanced_apply_action.generic.callback = AdvancedMenuApplyChanges; s_back_action.generic.type = MTYPE_ACTION; s_back_action.generic.name = "back"; s_back_action.generic.x = 0; s_back_action.generic.y = y += 2*MENU_LINE_SIZE; s_back_action.generic.callback = UI_BackMenu; Video_Advanced_MenuSetValues(); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_options_advanced_header ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_lightmapscale_slider ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_textureintensity_slider ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_rgbscale_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_trans_lighting_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_warp_lighting_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_lightcutoff_slider ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_glass_envmap_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_solidalpha_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_texshader_warp_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_waterwave_slider ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_caustics_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_particle_overdraw_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_lightbloom_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_modelshading_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_shadows_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_two_side_stencil_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_ent_shell_box ); // Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_screenshotjpeg_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_screenshotformat_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_screenshotjpegquality_slider ); Menu_AddItem( &s_video_advanced_menu, ( void * ) & s_saveshotsize_box ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_advanced_apply_action ); Menu_AddItem( &s_video_advanced_menu, ( void * ) &s_back_action ); // Menu_Center( &s_video_advanced_menu ); // s_video_advanced_menu.x -= MENU_FONT_SIZE; }
/* =============== Rankings_MenuInit =============== */ void Rankings_MenuInit( void ) { grank_status_t status; int y; memset( &s_rankings, 0, sizeof(s_rankings) ); Rankings_Cache(); s_rankings.menu.wrapAround = qtrue; s_rankings.menu.fullscreen = qfalse; s_rankings.frame.generic.type = MTYPE_BITMAP; s_rankings.frame.generic.flags = QMF_INACTIVE; s_rankings.frame.generic.name = RANKINGS_FRAME; s_rankings.frame.generic.x = 142; s_rankings.frame.generic.y = 118; s_rankings.frame.width = 359; s_rankings.frame.height = 256; y = 194; s_rankings.login.generic.type = MTYPE_PTEXT; s_rankings.login.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_rankings.login.generic.id = ID_LOGIN; s_rankings.login.generic.callback = Rankings_MenuEvent; s_rankings.login.generic.x = 320; s_rankings.login.generic.y = y; s_rankings.login.string = "LOGIN"; s_rankings.login.style = UI_CENTER|UI_SMALLFONT; s_rankings.login.color = colorRed; y += 20; s_rankings.logout.generic.type = MTYPE_PTEXT; s_rankings.logout.generic.flags = QMF_HIDDEN|QMF_INACTIVE|QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_rankings.logout.generic.id = ID_LOGOUT; s_rankings.logout.generic.callback = Rankings_MenuEvent; s_rankings.logout.generic.x = 320; s_rankings.logout.generic.y = y; s_rankings.logout.string = "LOGOUT"; s_rankings.logout.style = UI_CENTER|UI_SMALLFONT; s_rankings.logout.color = colorRed; s_rankings.create.generic.type = MTYPE_PTEXT; s_rankings.create.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_rankings.create.generic.id = ID_CREATE; s_rankings.create.generic.callback = Rankings_MenuEvent; s_rankings.create.generic.x = 320; s_rankings.create.generic.y = y; s_rankings.create.string = "SIGN UP"; s_rankings.create.style = UI_CENTER|UI_SMALLFONT; s_rankings.create.color = colorRed; y += 20; s_rankings.spectate.generic.type = MTYPE_PTEXT; s_rankings.spectate.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_rankings.spectate.generic.id = ID_SPECTATE; s_rankings.spectate.generic.callback = Rankings_MenuEvent; s_rankings.spectate.generic.x = 320; s_rankings.spectate.generic.y = y; s_rankings.spectate.string = "SPECTATE"; s_rankings.spectate.style = UI_CENTER|UI_SMALLFONT; s_rankings.spectate.color = colorRed; y += 20; s_rankings.setup.generic.type = MTYPE_PTEXT; s_rankings.setup.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_rankings.setup.generic.id = ID_SETUP; s_rankings.setup.generic.callback = Rankings_MenuEvent; s_rankings.setup.generic.x = 320; s_rankings.setup.generic.y = y; s_rankings.setup.string = "SETUP"; s_rankings.setup.style = UI_CENTER|UI_SMALLFONT; s_rankings.setup.color = colorRed; y += 20; s_rankings.leave.generic.type = MTYPE_PTEXT; s_rankings.leave.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_rankings.leave.generic.id = ID_LEAVE; s_rankings.leave.generic.callback = Rankings_MenuEvent; s_rankings.leave.generic.x = 320; s_rankings.leave.generic.y = y; s_rankings.leave.string = "LEAVE ARENA"; s_rankings.leave.style = UI_CENTER|UI_SMALLFONT; s_rankings.leave.color = colorRed; y += 20; status = (grank_status_t)Cvar_VariableValue("client_status"); if( (status != QGR_STATUS_NEW) && (status != QGR_STATUS_SPECTATOR) ) { s_rankings.login.generic.flags |= QMF_HIDDEN | QMF_INACTIVE; s_rankings.create.generic.flags |= QMF_HIDDEN | QMF_INACTIVE; s_rankings.spectate.generic.flags |= QMF_HIDDEN | QMF_INACTIVE; s_rankings.logout.generic.flags &= ~(QMF_HIDDEN | QMF_INACTIVE); } if ( (status == QGR_STATUS_VALIDATING) || (status == QGR_STATUS_PENDING) || (status == QGR_STATUS_LEAVING) ) { s_rankings.login.generic.flags |= QMF_GRAYED; s_rankings.create.generic.flags |= QMF_GRAYED; s_rankings.logout.generic.flags |= QMF_GRAYED; } //GRank FIXME -- don't need setup option any more s_rankings.setup.generic.flags |= QMF_HIDDEN | QMF_INACTIVE; Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.frame ); Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.login ); Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.logout ); Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.create ); Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.spectate ); Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.setup ); Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.leave ); }
/* =============== UI_MainMenu The main menu only comes up when not in a game, so make sure that the attract loop server is down and that local cinematics are killed =============== */ void UI_MainMenu( void ) { int y; int style = UI_CENTER | UI_DROPSHADOW; trap_Cvar_Set( "sv_killserver", "1" ); /* blud, commenting out the cdkey check since iourt doesn't need one if( !uis.demoversion && !ui_cdkeychecked.integer ) { char key[17]; trap_GetCDKey( key, sizeof(key) ); if( trap_VerifyCDKey( key, NULL ) == qfalse ) { UI_CDKeyMenu(); return; } } */ memset( &s_main, 0 ,sizeof(mainmenu_t) ); memset( &s_errorMessage, 0 ,sizeof(errorMessage_t) ); // com_errorMessage would need that too MainMenu_Cache(); trap_Cvar_VariableStringBuffer( "com_errorMessage", s_errorMessage.errorMessage, sizeof(s_errorMessage.errorMessage) ); if (strlen(s_errorMessage.errorMessage)) { s_errorMessage.menu.draw = Main_MenuDraw; s_errorMessage.menu.key = ErrorMessage_Key; s_errorMessage.menu.fullscreen = qtrue; s_errorMessage.menu.wrapAround = qtrue; s_errorMessage.menu.showlogo = qtrue; trap_Key_SetCatcher( KEYCATCH_UI ); uis.menusp = 0; UI_PushMenu ( &s_errorMessage.menu ); return; } s_main.menu.draw = Main_MenuDraw; s_main.menu.fullscreen = qtrue; s_main.menu.wrapAround = qtrue; s_main.menu.showlogo = qtrue; y = 134; s_main.singleplayer.generic.type = MTYPE_PTEXT; s_main.singleplayer.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_main.singleplayer.generic.x = 320; s_main.singleplayer.generic.y = y; s_main.singleplayer.generic.id = ID_SINGLEPLAYER; s_main.singleplayer.generic.callback = Main_MenuEvent; s_main.singleplayer.string = "SINGLE PLAYER"; s_main.singleplayer.color = color_white; s_main.singleplayer.style = style; y += MAIN_MENU_VERTICAL_SPACING; s_main.multiplayer.generic.type = MTYPE_PTEXT; s_main.multiplayer.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_main.multiplayer.generic.x = 320; s_main.multiplayer.generic.y = y; s_main.multiplayer.generic.id = ID_MULTIPLAYER; s_main.multiplayer.generic.callback = Main_MenuEvent; s_main.multiplayer.string = "MULTIPLAYER"; s_main.multiplayer.color = color_white; s_main.multiplayer.style = style; y += MAIN_MENU_VERTICAL_SPACING; s_main.setup.generic.type = MTYPE_PTEXT; s_main.setup.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_main.setup.generic.x = 320; s_main.setup.generic.y = y; s_main.setup.generic.id = ID_SETUP; s_main.setup.generic.callback = Main_MenuEvent; s_main.setup.string = "SETUP"; s_main.setup.color = color_white; s_main.setup.style = style; // blud commenting out these menu items below! /*blud y += MAIN_MENU_VERTICAL_SPACING; s_main.demos.generic.type = MTYPE_PTEXT; s_main.demos.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_main.demos.generic.x = 320; s_main.demos.generic.y = y; s_main.demos.generic.id = ID_DEMOS; s_main.demos.generic.callback = Main_MenuEvent; s_main.demos.string = "DEMOS"; s_main.demos.color = color_red; s_main.demos.style = style; y += MAIN_MENU_VERTICAL_SPACING; s_main.cinematics.generic.type = MTYPE_PTEXT; s_main.cinematics.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_main.cinematics.generic.x = 320; s_main.cinematics.generic.y = y; s_main.cinematics.generic.id = ID_CINEMATICS; s_main.cinematics.generic.callback = Main_MenuEvent; s_main.cinematics.string = "CINEMATICS"; s_main.cinematics.color = color_red; s_main.cinematics.style = style; if (UI_TeamArenaExists()) { teamArena = qtrue; y += MAIN_MENU_VERTICAL_SPACING; s_main.teamArena.generic.type = MTYPE_PTEXT; s_main.teamArena.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_main.teamArena.generic.x = 320; s_main.teamArena.generic.y = y; s_main.teamArena.generic.id = ID_TEAMARENA; s_main.teamArena.generic.callback = Main_MenuEvent; s_main.teamArena.string = "TEAM ARENA"; s_main.teamArena.color = color_red; s_main.teamArena.style = style; } y += MAIN_MENU_VERTICAL_SPACING; s_main.mods.generic.type = MTYPE_PTEXT; s_main.mods.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_main.mods.generic.x = 320; s_main.mods.generic.y = y; s_main.mods.generic.id = ID_MODS; s_main.mods.generic.callback = Main_MenuEvent; s_main.mods.string = "MODS"; s_main.mods.color = color_red; s_main.mods.style = style; // blud commenting out these menu items above! */ y += MAIN_MENU_VERTICAL_SPACING; s_main.exit.generic.type = MTYPE_PTEXT; s_main.exit.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_main.exit.generic.x = 320; s_main.exit.generic.y = y; s_main.exit.generic.id = ID_EXIT; s_main.exit.generic.callback = Main_MenuEvent; s_main.exit.string = "EXIT"; s_main.exit.color = color_white; s_main.exit.style = style; Menu_AddItem( &s_main.menu, &s_main.singleplayer ); Menu_AddItem( &s_main.menu, &s_main.multiplayer ); Menu_AddItem( &s_main.menu, &s_main.setup ); /* also commented out by blud Menu_AddItem( &s_main.menu, &s_main.demos ); Menu_AddItem( &s_main.menu, &s_main.cinematics ); if (teamArena) { Menu_AddItem( &s_main.menu, &s_main.teamArena ); } Menu_AddItem( &s_main.menu, &s_main.mods ); */ Menu_AddItem( &s_main.menu, &s_main.exit ); trap_Key_SetCatcher( KEYCATCH_UI ); uis.menusp = 0; UI_PushMenu ( &s_main.menu ); }
/* =============== LoadConfig_MenuInit =============== */ static void LoadConfig_MenuInit( void ) { int i; int len; char *configname; UI_LoadConfig_Cache(); memset( &s_configs, 0 ,sizeof(configs_t) ); s_configs.menu.wrapAround = qtrue; s_configs.menu.fullscreen = qtrue; s_configs.banner.generic.type = MTYPE_BTEXT; s_configs.banner.generic.x = 320; s_configs.banner.generic.y = 16; s_configs.banner.string = "LOAD CONFIG"; s_configs.banner.color = text_banner_color; s_configs.banner.style = UI_CENTER; s_configs.framel.generic.type = MTYPE_BITMAP; s_configs.framel.generic.name = ART_FRAMEL; s_configs.framel.generic.flags = QMF_INACTIVE; s_configs.framel.generic.x = 0; s_configs.framel.generic.y = 78; s_configs.framel.width = 256; s_configs.framel.height = 329; s_configs.framer.generic.type = MTYPE_BITMAP; s_configs.framer.generic.name = ART_FRAMER; s_configs.framer.generic.flags = QMF_INACTIVE; s_configs.framer.generic.x = 376; s_configs.framer.generic.y = 76; s_configs.framer.width = 256; s_configs.framer.height = 334; s_configs.arrows.generic.type = MTYPE_BITMAP; s_configs.arrows.generic.name = ART_ARROWS; s_configs.arrows.generic.flags = QMF_INACTIVE; s_configs.arrows.generic.x = 320-ARROWS_WIDTH/2; s_configs.arrows.generic.y = 400; s_configs.arrows.width = ARROWS_WIDTH; s_configs.arrows.height = ARROWS_HEIGHT; s_configs.left.generic.type = MTYPE_BITMAP; s_configs.left.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY; s_configs.left.generic.x = 320-ARROWS_WIDTH/2; s_configs.left.generic.y = 400; s_configs.left.generic.id = ID_LEFT; s_configs.left.generic.callback = LoadConfig_MenuEvent; s_configs.left.width = ARROWS_WIDTH/2; s_configs.left.height = ARROWS_HEIGHT; s_configs.left.focuspic = ART_ARROWLEFT; s_configs.right.generic.type = MTYPE_BITMAP; s_configs.right.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY; s_configs.right.generic.x = 320; s_configs.right.generic.y = 400; s_configs.right.generic.id = ID_RIGHT; s_configs.right.generic.callback = LoadConfig_MenuEvent; s_configs.right.width = ARROWS_WIDTH/2; s_configs.right.height = ARROWS_HEIGHT; s_configs.right.focuspic = ART_ARROWRIGHT; s_configs.back.generic.type = MTYPE_BITMAP; s_configs.back.generic.name = ART_BACK0; s_configs.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_configs.back.generic.id = ID_BACK; s_configs.back.generic.callback = LoadConfig_MenuEvent; s_configs.back.generic.x = 0; s_configs.back.generic.y = 480-64; s_configs.back.width = 128; s_configs.back.height = 64; s_configs.back.focuspic = ART_BACK1; s_configs.go.generic.type = MTYPE_BITMAP; s_configs.go.generic.name = ART_FIGHT0; s_configs.go.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_configs.go.generic.id = ID_GO; s_configs.go.generic.callback = LoadConfig_MenuEvent; s_configs.go.generic.x = 640; s_configs.go.generic.y = 480-64; s_configs.go.width = 128; s_configs.go.height = 64; s_configs.go.focuspic = ART_FIGHT1; // scan for configs s_configs.list.generic.type = MTYPE_SCROLLLIST; s_configs.list.generic.flags = QMF_PULSEIFFOCUS; s_configs.list.generic.callback = LoadConfig_MenuEvent; s_configs.list.generic.id = ID_LIST; s_configs.list.generic.x = 118; s_configs.list.generic.y = 130; s_configs.list.width = 16; s_configs.list.height = 14; s_configs.list.numitems = trap_FS_GetFileList( "", "cfg", s_configs.names, NAMEBUFSIZE ); s_configs.list.itemnames = (const char **)s_configs.configlist; s_configs.list.columns = 3; if (!s_configs.list.numitems) { strcpy(s_configs.names,"No Files Found."); s_configs.list.numitems = 1; //degenerate case, not selectable s_configs.go.generic.flags |= (QMF_INACTIVE|QMF_HIDDEN); } else if (s_configs.list.numitems > MAX_CONFIGS) s_configs.list.numitems = MAX_CONFIGS; configname = s_configs.names; for ( i = 0; i < s_configs.list.numitems; i++ ) { s_configs.list.itemnames[i] = configname; // strip extension len = strlen( configname ); if (!Q_stricmp(configname + len - 4,".cfg")) configname[len-4] = '\0'; configname += len + 1; } Menu_AddItem( &s_configs.menu, &s_configs.banner ); Menu_AddItem( &s_configs.menu, &s_configs.framel ); Menu_AddItem( &s_configs.menu, &s_configs.framer ); Menu_AddItem( &s_configs.menu, &s_configs.list ); Menu_AddItem( &s_configs.menu, &s_configs.arrows ); Menu_AddItem( &s_configs.menu, &s_configs.left ); Menu_AddItem( &s_configs.menu, &s_configs.right ); Menu_AddItem( &s_configs.menu, &s_configs.back ); Menu_AddItem( &s_configs.menu, &s_configs.go ); }
void VID_MenuInit(void) { static const char *resolutions[] = { "[320 240 ]", "[400 300 ]", "[512 384 ]", "[640 400 ]", "[640 480 ]", "[800 500 ]", "[800 600 ]", "[960 720 ]", "[1024 480 ]", "[1024 640 ]", "[1024 768 ]", "[1152 768 ]", "[1152 864 ]", "[1280 800 ]", "[1280 854 ]", "[1280 960 ]", "[1280 1024]", "[1440 900 ]", "[1600 1200]", "[1680 1050]", "[1920 1080]", "[1920 1200]", "[2048 1536]", "[Custom ]", 0 }; static const char *yesno_names[] = { "no", "yes", 0 }; static const char *aspect_names[] = { "Auto", "4:3", "5:4", "16:10", "16:9", "Custom", 0 }; if (!gl_driver) { gl_driver = Cvar_Get("gl_driver", LIBGL, 0); } if (!gl_picmip) { gl_picmip = Cvar_Get("gl_picmip", "0", 0); } if (!gl_mode) { gl_mode = Cvar_Get("gl_mode", "4", 0); } if (!gl_ext_palettedtexture) { gl_ext_palettedtexture = Cvar_Get("gl_ext_palettedtexture", "0", CVAR_ARCHIVE); } if (!windowed_mouse) { windowed_mouse = Cvar_Get("windowed_mouse", "1", CVAR_USERINFO | CVAR_ARCHIVE); } if (!horplus) { horplus = Cvar_Get("horplus", "1", CVAR_ARCHIVE); } if (!fov) { fov = Cvar_Get("fov", "90", CVAR_USERINFO | CVAR_ARCHIVE); } if (horplus->value == 1) { s_aspect_list.curvalue = 0; } else if (fov->value == 90) { s_aspect_list.curvalue = 1; } else if (fov->value == 86) { s_aspect_list.curvalue = 2; } else if (fov->value == 100) { s_aspect_list.curvalue = 3; } else if (fov->value == 106) { s_aspect_list.curvalue = 4; } else { s_aspect_list.curvalue = 5; } /* custom mode */ if (gl_mode->value >= 0) { s_mode_list.curvalue = gl_mode->value; } else { s_mode_list.curvalue = CUSTOM_MODE; } if (!scr_viewsize) { scr_viewsize = Cvar_Get("viewsize", "100", CVAR_ARCHIVE); } if (!vid_gamma) { vid_gamma = Cvar_Get("vid_gamma", "1.0", CVAR_ARCHIVE); } s_opengl_menu.x = viddef.width * 0.50; s_opengl_menu.nitems = 0; s_mode_list.generic.type = MTYPE_SPINCONTROL; s_mode_list.generic.name = "video mode"; s_mode_list.generic.x = 0; s_mode_list.generic.y = 0; s_mode_list.itemnames = resolutions; s_aspect_list.generic.type = MTYPE_SPINCONTROL; s_aspect_list.generic.name = "aspect ratio"; s_aspect_list.generic.x = 0; s_aspect_list.generic.y = 10; s_aspect_list.itemnames = aspect_names; s_screensize_slider.generic.type = MTYPE_SLIDER; s_screensize_slider.generic.x = 0; s_screensize_slider.generic.y = 20; s_screensize_slider.generic.name = "screen size"; s_screensize_slider.minvalue = 3; s_screensize_slider.maxvalue = 12; s_screensize_slider.generic.callback = ScreenSizeCallback; s_screensize_slider.curvalue = scr_viewsize->value / 10; s_brightness_slider.generic.type = MTYPE_SLIDER; s_brightness_slider.generic.x = 0; s_brightness_slider.generic.y = 40; s_brightness_slider.generic.name = "brightness"; s_brightness_slider.generic.callback = BrightnessCallback; s_brightness_slider.minvalue = 1; s_brightness_slider.maxvalue = 20; s_brightness_slider.curvalue = vid_gamma->value * 10; s_fs_box.generic.type = MTYPE_SPINCONTROL; s_fs_box.generic.x = 0; s_fs_box.generic.y = 50; s_fs_box.generic.name = "fullscreen"; s_fs_box.itemnames = yesno_names; s_fs_box.curvalue = vid_fullscreen->value; s_tq_slider.generic.type = MTYPE_SLIDER; s_tq_slider.generic.x = 0; s_tq_slider.generic.y = 70; s_tq_slider.generic.name = "texture quality"; s_tq_slider.minvalue = 0; s_tq_slider.maxvalue = 3; s_tq_slider.curvalue = 3 - gl_picmip->value; s_paletted_texture_box.generic.type = MTYPE_SPINCONTROL; s_paletted_texture_box.generic.x = 0; s_paletted_texture_box.generic.y = 80; s_paletted_texture_box.generic.name = "8-bit textures"; s_paletted_texture_box.itemnames = yesno_names; s_paletted_texture_box.curvalue = gl_ext_palettedtexture->value; s_defaults_action.generic.type = MTYPE_ACTION; s_defaults_action.generic.name = "reset to default"; s_defaults_action.generic.x = 0; s_defaults_action.generic.y = 100; s_defaults_action.generic.callback = ResetDefaults; s_apply_action.generic.type = MTYPE_ACTION; s_apply_action.generic.name = "apply"; s_apply_action.generic.x = 0; s_apply_action.generic.y = 110; s_apply_action.generic.callback = ApplyChanges; Menu_AddItem(&s_opengl_menu, (void *)&s_mode_list); Menu_AddItem(&s_opengl_menu, (void *)&s_aspect_list); Menu_AddItem(&s_opengl_menu, (void *)&s_screensize_slider); Menu_AddItem(&s_opengl_menu, (void *)&s_brightness_slider); Menu_AddItem(&s_opengl_menu, (void *)&s_fs_box); Menu_AddItem(&s_opengl_menu, (void *)&s_tq_slider); Menu_AddItem(&s_opengl_menu, (void *)&s_paletted_texture_box); Menu_AddItem(&s_opengl_menu, (void *)&s_defaults_action); Menu_AddItem(&s_opengl_menu, (void *)&s_apply_action); Menu_Center(&s_opengl_menu); s_opengl_menu.x -= 8; }
/* ================= UI_SPPostgameMenu_Init ================= Sets up the exact look of the menu buttons at the bottom */ static void UI_SPPostgameMenu_Init( void ) { postgameMenuInfo.menu.wrapAround = qtrue; postgameMenuInfo.menu.key = UI_SPPostgameMenu_MenuKey; // postgameMenuInfo.menu.draw = UI_SPPostgameMenu_MenuDraw; postgameMenuInfo.ignoreKeysTime = uis.realtime + 1500; UI_SPPostgameMenu_Cache(); postgameMenuInfo.item_menu.generic.type = MTYPE_BITMAP; postgameMenuInfo.item_menu.generic.name = BUTTON_GRAPHIC_LONGRIGHT; postgameMenuInfo.item_menu.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; postgameMenuInfo.item_menu.generic.x = 33; postgameMenuInfo.item_menu.generic.y = 446; postgameMenuInfo.item_menu.generic.callback = UI_SPPostgameMenu_MenuEvent; postgameMenuInfo.item_menu.generic.id = ID_MENU; postgameMenuInfo.item_menu.width = MENU_BUTTON_MED_WIDTH; postgameMenuInfo.item_menu.height = MENU_BUTTON_MED_HEIGHT; postgameMenuInfo.item_menu.color = CT_DKPURPLE1; postgameMenuInfo.item_menu.color2 = CT_LTPURPLE1; postgameMenuInfo.item_menu.textX = 5; postgameMenuInfo.item_menu.textY = 1; postgameMenuInfo.item_menu.textEnum = MBT_RETURNMENU; postgameMenuInfo.item_menu.textcolor = CT_BLACK; postgameMenuInfo.item_menu.textcolor2 = CT_WHITE; postgameMenuInfo.item_again.generic.type = MTYPE_BITMAP; postgameMenuInfo.item_again.generic.name = BUTTON_GRAPHIC_LONGRIGHT; postgameMenuInfo.item_again.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; postgameMenuInfo.item_again.generic.x = 256; postgameMenuInfo.item_again.generic.y = 446; postgameMenuInfo.item_again.generic.callback = UI_SPPostgameMenu_AgainEvent; postgameMenuInfo.item_again.generic.id = ID_AGAIN; postgameMenuInfo.item_again.width = MENU_BUTTON_MED_WIDTH; postgameMenuInfo.item_again.height = MENU_BUTTON_MED_HEIGHT; postgameMenuInfo.item_again.color = CT_DKPURPLE1; postgameMenuInfo.item_again.color2 = CT_LTPURPLE1; postgameMenuInfo.item_again.textX = 5; postgameMenuInfo.item_again.textY = 1; postgameMenuInfo.item_again.textEnum = MBT_REPLAY; postgameMenuInfo.item_again.textcolor = CT_BLACK; postgameMenuInfo.item_again.textcolor2 = CT_WHITE; postgameMenuInfo.item_next.generic.type = MTYPE_BITMAP; postgameMenuInfo.item_next.generic.name = BUTTON_GRAPHIC_LONGRIGHT; postgameMenuInfo.item_next.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; postgameMenuInfo.item_next.generic.x = 477; postgameMenuInfo.item_next.generic.y = 446; postgameMenuInfo.item_next.generic.callback = UI_SPPostgameMenu_NextEvent; postgameMenuInfo.item_next.generic.id = ID_NEXT; postgameMenuInfo.item_next.width = MENU_BUTTON_MED_WIDTH; postgameMenuInfo.item_next.height = MENU_BUTTON_MED_HEIGHT; postgameMenuInfo.item_next.color = CT_DKPURPLE1; postgameMenuInfo.item_next.color2 = CT_LTPURPLE1; postgameMenuInfo.item_next.textX = 5; postgameMenuInfo.item_next.textY = 1; postgameMenuInfo.item_next.textEnum = MBT_NEXTMATCH; postgameMenuInfo.item_next.textcolor = CT_BLACK; postgameMenuInfo.item_next.textcolor2 = CT_WHITE; Menu_AddItem( &postgameMenuInfo.menu, ( void * )&postgameMenuInfo.item_menu ); Menu_AddItem( &postgameMenuInfo.menu, ( void * )&postgameMenuInfo.item_next ); Menu_AddItem( &postgameMenuInfo.menu, ( void * )&postgameMenuInfo.item_again ); }
/* =============== UI_MainMenu The main menu only comes up when not in a game, so make sure that the attract loop server is down and that local cinematics are killed =============== */ void UI_MainMenu( void ) { int y; qboolean teamArena = qfalse; int style = UI_LEFT | UI_CURSORSHADOW; trap_Cvar_Set( "sv_killserver", "1" ); if( !uis.demoversion && !ui_cdkeychecked.integer ) { char key[17]; trap_GetCDKey( key, sizeof(key) ); if( trap_VerifyCDKey( key, NULL ) == qfalse ) { UI_CDKeyMenu(); return; } } memset( &s_main, 0 ,sizeof(mainmenu_t) ); MainMenu_Cache(); s_main.menu.draw = Main_MenuDraw; s_main.menu.fullscreen = qtrue; s_main.menu.wrapAround = qtrue; s_main.backleft.generic.type = MTYPE_BITMAP; s_main.backleft.generic.name = MAIN_BACKGROUND_LEFT; s_main.backleft.generic.flags = QMF_INACTIVE; s_main.backleft.generic.x = 0; s_main.backleft.generic.y = 120; s_main.backleft.width = 320; s_main.backleft.height = 360; s_main.backright.generic.type = MTYPE_BITMAP; s_main.backright.generic.name = MAIN_BACKGROUND_RIGHT; s_main.backright.generic.flags = QMF_INACTIVE; s_main.backright.generic.x = 320; s_main.backright.generic.y = 120; s_main.backright.width = 320; s_main.backright.height = 360; y = 160; s_main.joingame.generic.type = MTYPE_PTEXT; s_main.joingame.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_main.joingame.generic.x = 20; s_main.joingame.generic.y = y; s_main.joingame.generic.id = ID_JOINGAME; s_main.joingame.generic.callback = Main_MenuEvent; s_main.joingame.string = "JOIN GAME"; s_main.joingame.color = color_orange; s_main.joingame.style = style; y += MAIN_MENU_VERTICAL_SPACING; s_main.startserver.generic.type = MTYPE_PTEXT; s_main.startserver.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_main.startserver.generic.x = 20; s_main.startserver.generic.y = y; s_main.startserver.generic.id = ID_STARTSERVER; s_main.startserver.generic.callback = Main_MenuEvent; s_main.startserver.string = "START SERVER"; s_main.startserver.color = color_orange; s_main.startserver.style = style; y += MAIN_MENU_VERTICAL_SPACING; s_main.setup.generic.type = MTYPE_PTEXT; s_main.setup.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_main.setup.generic.x = 20; s_main.setup.generic.y = y; s_main.setup.generic.id = ID_SETUP; s_main.setup.generic.callback = Main_MenuEvent; s_main.setup.string = "SETUP"; s_main.setup.color = color_orange; s_main.setup.style = style; y += MAIN_MENU_VERTICAL_SPACING; s_main.demos.generic.type = MTYPE_PTEXT; s_main.demos.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_main.demos.generic.x = 20; s_main.demos.generic.y = y; s_main.demos.generic.id = ID_DEMOS; s_main.demos.generic.callback = Main_MenuEvent; s_main.demos.string = "DEMOS"; s_main.demos.color = color_orange; s_main.demos.style = style; y += MAIN_MENU_VERTICAL_SPACING; s_main.mods.generic.type = MTYPE_PTEXT; s_main.mods.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_main.mods.generic.x = 20; s_main.mods.generic.y = y; s_main.mods.generic.id = ID_MODS; s_main.mods.generic.callback = Main_MenuEvent; s_main.mods.string = "MODS"; s_main.mods.color = color_orange; s_main.mods.style = style; y += MAIN_MENU_VERTICAL_SPACING; s_main.exit.generic.type = MTYPE_PTEXT; s_main.exit.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_main.exit.generic.x = 20; s_main.exit.generic.y = y; s_main.exit.generic.id = ID_EXIT; s_main.exit.generic.callback = Main_MenuEvent; s_main.exit.string = "EXIT"; s_main.exit.color = color_orange; s_main.exit.style = style; Menu_AddItem( &s_main.menu, &s_main.backleft ); Menu_AddItem( &s_main.menu, &s_main.backright ); Menu_AddItem( &s_main.menu, &s_main.joingame ); Menu_AddItem( &s_main.menu, &s_main.startserver ); Menu_AddItem( &s_main.menu, &s_main.setup ); Menu_AddItem( &s_main.menu, &s_main.demos ); Menu_AddItem( &s_main.menu, &s_main.mods ); Menu_AddItem( &s_main.menu, &s_main.exit ); uis.addToFavorites = qfalse; trap_Key_SetCatcher( KEYCATCH_UI ); uis.menusp = 0; UI_PushMenu ( &s_main.menu ); }
/* ================= InGame_MenuInit ================= */ void InGame_MenuInit( void ) { int y; uiClientState_t cs; char info[MAX_INFO_STRING]; int team; memset( &s_ingame, 0 ,sizeof(ingamemenu_t) ); InGame_Cache(); s_ingame.menu.wrapAround = qtrue; s_ingame.menu.fullscreen = qfalse; s_ingame.frame.generic.type = MTYPE_BITMAP; s_ingame.frame.generic.flags = QMF_INACTIVE; s_ingame.frame.generic.name = INGAME_FRAME; s_ingame.frame.generic.x = 320-233;//142; s_ingame.frame.generic.y = 240-166;//118; s_ingame.frame.width = 466;//359; s_ingame.frame.height = 332;//256; if (UI_MaxSplitView() > 1) { y = 88; } else { y = 96; } s_ingame.team.generic.type = MTYPE_PTEXT; s_ingame.team.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_ingame.team.generic.x = 320; s_ingame.team.generic.y = y; s_ingame.team.generic.id = ID_TEAM; s_ingame.team.generic.callback = InGame_Event; s_ingame.team.string = "START"; s_ingame.team.color = color_red; s_ingame.team.style = UI_CENTER|UI_SMALLFONT; y += INGAME_MENU_VERTICAL_SPACING; s_ingame.addbots.generic.type = MTYPE_PTEXT; s_ingame.addbots.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_ingame.addbots.generic.x = 320; s_ingame.addbots.generic.y = y; s_ingame.addbots.generic.id = ID_ADDBOTS; s_ingame.addbots.generic.callback = InGame_Event; s_ingame.addbots.string = "ADD BOTS"; s_ingame.addbots.color = color_red; s_ingame.addbots.style = UI_CENTER|UI_SMALLFONT; if( !trap_Cvar_VariableValue( "sv_running" ) || !trap_Cvar_VariableValue( "bot_enable" ) || (trap_Cvar_VariableValue( "g_gametype" ) == GT_SINGLE_PLAYER)) { s_ingame.addbots.generic.flags |= QMF_GRAYED; } y += INGAME_MENU_VERTICAL_SPACING; s_ingame.removebots.generic.type = MTYPE_PTEXT; s_ingame.removebots.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_ingame.removebots.generic.x = 320; s_ingame.removebots.generic.y = y; s_ingame.removebots.generic.id = ID_REMOVEBOTS; s_ingame.removebots.generic.callback = InGame_Event; s_ingame.removebots.string = "REMOVE BOTS"; s_ingame.removebots.color = color_red; s_ingame.removebots.style = UI_CENTER|UI_SMALLFONT; if( !trap_Cvar_VariableValue( "sv_running" ) || !trap_Cvar_VariableValue( "bot_enable" ) || (trap_Cvar_VariableValue( "g_gametype" ) == GT_SINGLE_PLAYER)) { s_ingame.removebots.generic.flags |= QMF_GRAYED; } y += INGAME_MENU_VERTICAL_SPACING; s_ingame.teamorders.generic.type = MTYPE_PTEXT; s_ingame.teamorders.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_ingame.teamorders.generic.x = 320; s_ingame.teamorders.generic.y = y; s_ingame.teamorders.generic.id = ID_TEAMORDERS; s_ingame.teamorders.generic.callback = InGame_Event; s_ingame.teamorders.string = "TEAM ORDERS"; s_ingame.teamorders.color = color_red; s_ingame.teamorders.style = UI_CENTER|UI_SMALLFONT; if( !(trap_Cvar_VariableValue( "g_gametype" ) >= GT_TEAM) ) { s_ingame.teamorders.generic.flags |= QMF_GRAYED; } else { trap_GetClientState( &cs ); trap_GetConfigString( CS_PLAYERS + cs.clientNums[0], info, MAX_INFO_STRING ); team = atoi( Info_ValueForKey( info, "t" ) ); if( team == TEAM_SPECTATOR ) { s_ingame.teamorders.generic.flags |= QMF_GRAYED; } } if (UI_MaxSplitView() > 1) { y += INGAME_MENU_VERTICAL_SPACING; s_ingame.localPlayers.generic.type = MTYPE_PTEXT; s_ingame.localPlayers.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_ingame.localPlayers.generic.x = 320; s_ingame.localPlayers.generic.y = y; s_ingame.localPlayers.generic.id = ID_LOCALPLAYERS; s_ingame.localPlayers.generic.callback = InGame_Event; s_ingame.localPlayers.string = "LOCAL PLAYERS"; s_ingame.localPlayers.color = color_red; s_ingame.localPlayers.style = UI_CENTER|UI_SMALLFONT; if (trap_Cvar_VariableValue( "g_gametype" ) == GT_SINGLE_PLAYER) { s_ingame.localPlayers.generic.flags |= QMF_GRAYED; } } y += INGAME_MENU_VERTICAL_SPACING; s_ingame.setup.generic.type = MTYPE_PTEXT; s_ingame.setup.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_ingame.setup.generic.x = 320; s_ingame.setup.generic.y = y; s_ingame.setup.generic.id = ID_SETUP; s_ingame.setup.generic.callback = InGame_Event; s_ingame.setup.string = "SETUP"; s_ingame.setup.color = color_red; s_ingame.setup.style = UI_CENTER|UI_SMALLFONT; y += INGAME_MENU_VERTICAL_SPACING; s_ingame.server.generic.type = MTYPE_PTEXT; s_ingame.server.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_ingame.server.generic.x = 320; s_ingame.server.generic.y = y; s_ingame.server.generic.id = ID_SERVERINFO; s_ingame.server.generic.callback = InGame_Event; s_ingame.server.string = "SERVER INFO"; s_ingame.server.color = color_red; s_ingame.server.style = UI_CENTER|UI_SMALLFONT; y += INGAME_MENU_VERTICAL_SPACING; s_ingame.restart.generic.type = MTYPE_PTEXT; s_ingame.restart.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_ingame.restart.generic.x = 320; s_ingame.restart.generic.y = y; s_ingame.restart.generic.id = ID_RESTART; s_ingame.restart.generic.callback = InGame_Event; s_ingame.restart.string = "RESTART ARENA"; s_ingame.restart.color = color_red; s_ingame.restart.style = UI_CENTER|UI_SMALLFONT; if( !trap_Cvar_VariableValue( "sv_running" ) ) { s_ingame.restart.generic.flags |= QMF_GRAYED; } y += INGAME_MENU_VERTICAL_SPACING; s_ingame.resume.generic.type = MTYPE_PTEXT; s_ingame.resume.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_ingame.resume.generic.x = 320; s_ingame.resume.generic.y = y; s_ingame.resume.generic.id = ID_RESUME; s_ingame.resume.generic.callback = InGame_Event; s_ingame.resume.string = "RESUME GAME"; s_ingame.resume.color = color_red; s_ingame.resume.style = UI_CENTER|UI_SMALLFONT; y += INGAME_MENU_VERTICAL_SPACING; s_ingame.leave.generic.type = MTYPE_PTEXT; s_ingame.leave.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_ingame.leave.generic.x = 320; s_ingame.leave.generic.y = y; s_ingame.leave.generic.id = ID_LEAVEARENA; s_ingame.leave.generic.callback = InGame_Event; s_ingame.leave.string = "LEAVE ARENA"; s_ingame.leave.color = color_red; s_ingame.leave.style = UI_CENTER|UI_SMALLFONT; y += INGAME_MENU_VERTICAL_SPACING; s_ingame.quit.generic.type = MTYPE_PTEXT; s_ingame.quit.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_ingame.quit.generic.x = 320; s_ingame.quit.generic.y = y; s_ingame.quit.generic.id = ID_QUIT; s_ingame.quit.generic.callback = InGame_Event; s_ingame.quit.string = "EXIT GAME"; s_ingame.quit.color = color_red; s_ingame.quit.style = UI_CENTER|UI_SMALLFONT; Menu_AddItem( &s_ingame.menu, &s_ingame.frame ); Menu_AddItem( &s_ingame.menu, &s_ingame.team ); Menu_AddItem( &s_ingame.menu, &s_ingame.addbots ); Menu_AddItem( &s_ingame.menu, &s_ingame.removebots ); Menu_AddItem( &s_ingame.menu, &s_ingame.teamorders ); if (UI_MaxSplitView() > 1) { Menu_AddItem( &s_ingame.menu, &s_ingame.localPlayers); } Menu_AddItem( &s_ingame.menu, &s_ingame.setup ); Menu_AddItem( &s_ingame.menu, &s_ingame.server ); Menu_AddItem( &s_ingame.menu, &s_ingame.restart ); Menu_AddItem( &s_ingame.menu, &s_ingame.resume ); Menu_AddItem( &s_ingame.menu, &s_ingame.leave ); Menu_AddItem( &s_ingame.menu, &s_ingame.quit ); }
void DMOptions_MenuInit( void ) { static const char *yes_no_names[] = { "no", "yes", 0 }; static const char *teamplay_names[] = { "disabled", "by skin", "by model", 0 }; int dmflags = Cvar_VariableIntValue( "dmflags" ); int y = 0; memset(&s_dmoptions_menu, 0, sizeof(s_dmoptions_menu)); s_dmoptions_menu.x = viddef.width * 0.50; s_dmoptions_menu.nitems = 0; s_falls_box.generic.type = MTYPE_SPINCONTROL; s_falls_box.generic.x = 0; s_falls_box.generic.y = y; s_falls_box.generic.name = "falling damage"; s_falls_box.generic.callback = DMFlagCallback; s_falls_box.itemnames = yes_no_names; s_falls_box.curvalue = ( dmflags & DF_NO_FALLING ) == 0; s_weapons_stay_box.generic.type = MTYPE_SPINCONTROL; s_weapons_stay_box.generic.x = 0; s_weapons_stay_box.generic.y = y += 10; s_weapons_stay_box.generic.name = "weapons stay"; s_weapons_stay_box.generic.callback = DMFlagCallback; s_weapons_stay_box.itemnames = yes_no_names; s_weapons_stay_box.curvalue = ( dmflags & DF_WEAPONS_STAY ) != 0; s_instant_powerups_box.generic.type = MTYPE_SPINCONTROL; s_instant_powerups_box.generic.x = 0; s_instant_powerups_box.generic.y = y += 10; s_instant_powerups_box.generic.name = "instant powerups"; s_instant_powerups_box.generic.callback = DMFlagCallback; s_instant_powerups_box.itemnames = yes_no_names; s_instant_powerups_box.curvalue = ( dmflags & DF_INSTANT_ITEMS ) != 0; s_powerups_box.generic.type = MTYPE_SPINCONTROL; s_powerups_box.generic.x = 0; s_powerups_box.generic.y = y += 10; s_powerups_box.generic.name = "allow powerups"; s_powerups_box.generic.callback = DMFlagCallback; s_powerups_box.itemnames = yes_no_names; s_powerups_box.curvalue = ( dmflags & DF_NO_ITEMS ) == 0; s_health_box.generic.type = MTYPE_SPINCONTROL; s_health_box.generic.x = 0; s_health_box.generic.y = y += 10; s_health_box.generic.callback = DMFlagCallback; s_health_box.generic.name = "allow health"; s_health_box.itemnames = yes_no_names; s_health_box.curvalue = ( dmflags & DF_NO_HEALTH ) == 0; s_armor_box.generic.type = MTYPE_SPINCONTROL; s_armor_box.generic.x = 0; s_armor_box.generic.y = y += 10; s_armor_box.generic.name = "allow armor"; s_armor_box.generic.callback = DMFlagCallback; s_armor_box.itemnames = yes_no_names; s_armor_box.curvalue = ( dmflags & DF_NO_ARMOR ) == 0; s_spawn_farthest_box.generic.type = MTYPE_SPINCONTROL; s_spawn_farthest_box.generic.x = 0; s_spawn_farthest_box.generic.y = y += 10; s_spawn_farthest_box.generic.name = "spawn farthest"; s_spawn_farthest_box.generic.callback = DMFlagCallback; s_spawn_farthest_box.itemnames = yes_no_names; s_spawn_farthest_box.curvalue = ( dmflags & DF_SPAWN_FARTHEST ) != 0; s_samelevel_box.generic.type = MTYPE_SPINCONTROL; s_samelevel_box.generic.x = 0; s_samelevel_box.generic.y = y += 10; s_samelevel_box.generic.name = "same map"; s_samelevel_box.generic.callback = DMFlagCallback; s_samelevel_box.itemnames = yes_no_names; s_samelevel_box.curvalue = ( dmflags & DF_SAME_LEVEL ) != 0; s_force_respawn_box.generic.type = MTYPE_SPINCONTROL; s_force_respawn_box.generic.x = 0; s_force_respawn_box.generic.y = y += 10; s_force_respawn_box.generic.name = "force respawn"; s_force_respawn_box.generic.callback = DMFlagCallback; s_force_respawn_box.itemnames = yes_no_names; s_force_respawn_box.curvalue = ( dmflags & DF_FORCE_RESPAWN ) != 0; s_teamplay_box.generic.type = MTYPE_SPINCONTROL; s_teamplay_box.generic.x = 0; s_teamplay_box.generic.y = y += 10; s_teamplay_box.generic.name = "teamplay"; s_teamplay_box.generic.callback = DMFlagCallback; s_teamplay_box.itemnames = teamplay_names; s_allow_exit_box.generic.type = MTYPE_SPINCONTROL; s_allow_exit_box.generic.x = 0; s_allow_exit_box.generic.y = y += 10; s_allow_exit_box.generic.name = "allow exit"; s_allow_exit_box.generic.callback = DMFlagCallback; s_allow_exit_box.itemnames = yes_no_names; s_allow_exit_box.curvalue = ( dmflags & DF_ALLOW_EXIT ) != 0; s_infinite_ammo_box.generic.type = MTYPE_SPINCONTROL; s_infinite_ammo_box.generic.x = 0; s_infinite_ammo_box.generic.y = y += 10; s_infinite_ammo_box.generic.name = "infinite ammo"; s_infinite_ammo_box.generic.callback = DMFlagCallback; s_infinite_ammo_box.itemnames = yes_no_names; s_infinite_ammo_box.curvalue = ( dmflags & DF_INFINITE_AMMO ) != 0; s_fixed_fov_box.generic.type = MTYPE_SPINCONTROL; s_fixed_fov_box.generic.x = 0; s_fixed_fov_box.generic.y = y += 10; s_fixed_fov_box.generic.name = "fixed FOV"; s_fixed_fov_box.generic.callback = DMFlagCallback; s_fixed_fov_box.itemnames = yes_no_names; s_fixed_fov_box.curvalue = ( dmflags & DF_FIXED_FOV ) != 0; s_quad_drop_box.generic.type = MTYPE_SPINCONTROL; s_quad_drop_box.generic.x = 0; s_quad_drop_box.generic.y = y += 10; s_quad_drop_box.generic.name = "quad drop"; s_quad_drop_box.generic.callback = DMFlagCallback; s_quad_drop_box.itemnames = yes_no_names; s_quad_drop_box.curvalue = ( dmflags & DF_QUAD_DROP ) != 0; s_friendlyfire_box.generic.type = MTYPE_SPINCONTROL; s_friendlyfire_box.generic.x = 0; s_friendlyfire_box.generic.y = y += 10; s_friendlyfire_box.generic.name = "friendly fire"; s_friendlyfire_box.generic.callback = DMFlagCallback; s_friendlyfire_box.itemnames = yes_no_names; s_friendlyfire_box.curvalue = ( dmflags & DF_NO_FRIENDLY_FIRE ) == 0; //============ //ROGUE if(Developer_searchpath() == 2) { s_no_mines_box.generic.type = MTYPE_SPINCONTROL; s_no_mines_box.generic.x = 0; s_no_mines_box.generic.y = y += 10; s_no_mines_box.generic.name = "remove mines"; s_no_mines_box.generic.callback = DMFlagCallback; s_no_mines_box.itemnames = yes_no_names; s_no_mines_box.curvalue = ( dmflags & DF_NO_MINES ) != 0; s_no_nukes_box.generic.type = MTYPE_SPINCONTROL; s_no_nukes_box.generic.x = 0; s_no_nukes_box.generic.y = y += 10; s_no_nukes_box.generic.name = "remove nukes"; s_no_nukes_box.generic.callback = DMFlagCallback; s_no_nukes_box.itemnames = yes_no_names; s_no_nukes_box.curvalue = ( dmflags & DF_NO_NUKES ) != 0; s_stack_double_box.generic.type = MTYPE_SPINCONTROL; s_stack_double_box.generic.x = 0; s_stack_double_box.generic.y = y += 10; s_stack_double_box.generic.name = "2x/4x stacking off"; s_stack_double_box.generic.callback = DMFlagCallback; s_stack_double_box.itemnames = yes_no_names; s_stack_double_box.curvalue = ( dmflags & DF_NO_STACK_DOUBLE ) != 0; s_no_spheres_box.generic.type = MTYPE_SPINCONTROL; s_no_spheres_box.generic.x = 0; s_no_spheres_box.generic.y = y += 10; s_no_spheres_box.generic.name = "remove spheres"; s_no_spheres_box.generic.callback = DMFlagCallback; s_no_spheres_box.itemnames = yes_no_names; s_no_spheres_box.curvalue = ( dmflags & DF_NO_SPHERES ) != 0; } //ROGUE //============ s_dmoptions_menu.draw = NULL; s_dmoptions_menu.key = NULL; Menu_AddItem( &s_dmoptions_menu, &s_falls_box ); Menu_AddItem( &s_dmoptions_menu, &s_weapons_stay_box ); Menu_AddItem( &s_dmoptions_menu, &s_instant_powerups_box ); Menu_AddItem( &s_dmoptions_menu, &s_powerups_box ); Menu_AddItem( &s_dmoptions_menu, &s_health_box ); Menu_AddItem( &s_dmoptions_menu, &s_armor_box ); Menu_AddItem( &s_dmoptions_menu, &s_spawn_farthest_box ); Menu_AddItem( &s_dmoptions_menu, &s_samelevel_box ); Menu_AddItem( &s_dmoptions_menu, &s_force_respawn_box ); Menu_AddItem( &s_dmoptions_menu, &s_teamplay_box ); Menu_AddItem( &s_dmoptions_menu, &s_allow_exit_box ); Menu_AddItem( &s_dmoptions_menu, &s_infinite_ammo_box ); Menu_AddItem( &s_dmoptions_menu, &s_fixed_fov_box ); Menu_AddItem( &s_dmoptions_menu, &s_quad_drop_box ); Menu_AddItem( &s_dmoptions_menu, &s_friendlyfire_box ); //======= //ROGUE if(Developer_searchpath() == 2) { Menu_AddItem( &s_dmoptions_menu, &s_no_mines_box ); Menu_AddItem( &s_dmoptions_menu, &s_no_nukes_box ); Menu_AddItem( &s_dmoptions_menu, &s_stack_double_box ); Menu_AddItem( &s_dmoptions_menu, &s_no_spheres_box ); } //ROGUE //======= Menu_Center( &s_dmoptions_menu ); // set the original dmflags statusbar DMFlagCallback( 0 ); Menu_SetStatusBar( &s_dmoptions_menu, dmoptions_statusbar ); }
/* ================= SpecifyServer_MenuInit ================= */ void SpecifyServer_MenuInit( void ) { // zero set all our globals memset( &s_specifyserver, 0 ,sizeof(specifyserver_t) ); SpecifyServer_Cache(); s_specifyserver.menu.wrapAround = qtrue; s_specifyserver.menu.fullscreen = qtrue; s_specifyserver.banner.generic.type = MTYPE_BTEXT; s_specifyserver.banner.generic.x = 320; s_specifyserver.banner.generic.y = 16; s_specifyserver.banner.string = "SPECIFY SERVER"; s_specifyserver.banner.color = color_white; s_specifyserver.banner.style = UI_CENTER; s_specifyserver.framel.generic.type = MTYPE_BITMAP; s_specifyserver.framel.generic.name = SPECIFYSERVER_FRAMEL; s_specifyserver.framel.generic.flags = QMF_INACTIVE; s_specifyserver.framel.generic.x = 0; s_specifyserver.framel.generic.y = 78; s_specifyserver.framel.width = 256; s_specifyserver.framel.height = 329; s_specifyserver.framer.generic.type = MTYPE_BITMAP; s_specifyserver.framer.generic.name = SPECIFYSERVER_FRAMER; s_specifyserver.framer.generic.flags = QMF_INACTIVE; s_specifyserver.framer.generic.x = 376; s_specifyserver.framer.generic.y = 76; s_specifyserver.framer.width = 256; s_specifyserver.framer.height = 334; s_specifyserver.domain.generic.type = MTYPE_FIELD; s_specifyserver.domain.generic.name = "Address:"; s_specifyserver.domain.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; s_specifyserver.domain.generic.x = 206; s_specifyserver.domain.generic.y = 220; s_specifyserver.domain.field.widthInChars = 38; s_specifyserver.domain.field.maxchars = 80; s_specifyserver.port.generic.type = MTYPE_FIELD; s_specifyserver.port.generic.name = "Port:"; s_specifyserver.port.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT|QMF_NUMBERSONLY; s_specifyserver.port.generic.x = 206; s_specifyserver.port.generic.y = 250; s_specifyserver.port.field.widthInChars = 6; s_specifyserver.port.field.maxchars = 5; s_specifyserver.go.generic.type = MTYPE_BITMAP; s_specifyserver.go.generic.name = SPECIFYSERVER_FIGHT0; s_specifyserver.go.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_specifyserver.go.generic.callback = SpecifyServer_Event; s_specifyserver.go.generic.id = ID_SPECIFYSERVERGO; s_specifyserver.go.generic.x = 640; s_specifyserver.go.generic.y = 480-64; s_specifyserver.go.width = 128; s_specifyserver.go.height = 64; s_specifyserver.go.focuspic = SPECIFYSERVER_FIGHT1; s_specifyserver.back.generic.type = MTYPE_BITMAP; s_specifyserver.back.generic.name = SPECIFYSERVER_BACK0; s_specifyserver.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_specifyserver.back.generic.callback = SpecifyServer_Event; s_specifyserver.back.generic.id = ID_SPECIFYSERVERBACK; s_specifyserver.back.generic.x = 0; s_specifyserver.back.generic.y = 480-64; s_specifyserver.back.width = 128; s_specifyserver.back.height = 64; s_specifyserver.back.focuspic = SPECIFYSERVER_BACK1; Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.banner ); Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.framel ); Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.framer ); Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.domain ); Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.port ); Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.go ); Menu_AddItem( &s_specifyserver.menu, &s_specifyserver.back ); Com_sprintf( s_specifyserver.port.field.buffer, 6, "%i", 27960 ); }
/* =============== UI_LoadoutMenu_Init =============== */ static void UI_LoadoutMenu_Init(void) { int y; UI_LoadoutMenu_Cache(); memset(&loadoutMenuInfo, 0, sizeof (loadoutMenuInfo)); loadoutMenuInfo.menu.wrapAround = qtrue; loadoutMenuInfo.menu.fullscreen = qfalse; loadoutMenuInfo.banner.generic.type = MTYPE_BTEXT; loadoutMenuInfo.banner.generic.x = 320; loadoutMenuInfo.banner.generic.y = 16; loadoutMenuInfo.banner.string = "WEAPONS"; loadoutMenuInfo.banner.color = color_white; loadoutMenuInfo.banner.style = UI_CENTER; loadoutMenuInfo.frame.generic.type = MTYPE_BITMAP; loadoutMenuInfo.frame.generic.name = ART_FRAME; loadoutMenuInfo.frame.generic.flags = QMF_INACTIVE; loadoutMenuInfo.frame.generic.x = 32; loadoutMenuInfo.frame.generic.y = 24; loadoutMenuInfo.frame.width = 576; loadoutMenuInfo.frame.height = 432; y = 64; loadoutMenuInfo.barrett.generic.type = MTYPE_PTEXT; loadoutMenuInfo.barrett.generic.flags = QMF_LEFT_JUSTIFY | QMF_PULSEIFFOCUS; loadoutMenuInfo.barrett.generic.callback = UI_LoadoutMenu_Event; loadoutMenuInfo.barrett.generic.id = ID_BARRETT; loadoutMenuInfo.barrett.generic.x = 32; loadoutMenuInfo.barrett.generic.y = y; loadoutMenuInfo.barrett.string = "Barrett M82A1"; loadoutMenuInfo.barrett.color = color_white; loadoutMenuInfo.barrett.style = UI_LEFT | UI_SMALLFONT; y += WEAPON_SPACING; loadoutMenuInfo.intervention.generic.type = MTYPE_PTEXT; loadoutMenuInfo.intervention.generic.flags = QMF_LEFT_JUSTIFY | QMF_PULSEIFFOCUS; loadoutMenuInfo.intervention.generic.callback = UI_LoadoutMenu_Event; loadoutMenuInfo.intervention.generic.id = ID_INTERVENTION; loadoutMenuInfo.intervention.generic.x = 32; loadoutMenuInfo.intervention.generic.y = y; loadoutMenuInfo.intervention.string = "Cheytac M200 Intervention"; loadoutMenuInfo.intervention.color = color_white; loadoutMenuInfo.intervention.style = UI_LEFT | UI_SMALLFONT; y += WEAPON_SPACING; loadoutMenuInfo.crossbow.generic.type = MTYPE_PTEXT; loadoutMenuInfo.crossbow.generic.flags = QMF_LEFT_JUSTIFY | QMF_PULSEIFFOCUS; loadoutMenuInfo.crossbow.generic.callback = UI_LoadoutMenu_Event; loadoutMenuInfo.crossbow.generic.id = ID_CROSSBOW; loadoutMenuInfo.crossbow.generic.x = 32; loadoutMenuInfo.crossbow.generic.y = y; loadoutMenuInfo.crossbow.string = "Crossbow"; loadoutMenuInfo.crossbow.color = color_white; loadoutMenuInfo.crossbow.style = UI_LEFT | UI_SMALLFONT; y += WEAPON_SPACING; loadoutMenuInfo.acr.generic.type = MTYPE_PTEXT; loadoutMenuInfo.acr.generic.flags = QMF_LEFT_JUSTIFY | QMF_PULSEIFFOCUS; loadoutMenuInfo.acr.generic.callback = UI_LoadoutMenu_Event; loadoutMenuInfo.acr.generic.id = ID_ACR; loadoutMenuInfo.acr.generic.x = 32; loadoutMenuInfo.acr.generic.y = y; loadoutMenuInfo.acr.string = "Remington ACR"; loadoutMenuInfo.acr.color = color_white; loadoutMenuInfo.acr.style = UI_LEFT | UI_SMALLFONT; y += WEAPON_SPACING * 2; loadoutMenuInfo.walther.generic.type = MTYPE_PTEXT; loadoutMenuInfo.walther.generic.flags = QMF_LEFT_JUSTIFY | QMF_PULSEIFFOCUS; loadoutMenuInfo.walther.generic.callback = UI_LoadoutMenu_Event; loadoutMenuInfo.walther.generic.id = ID_WALTHER; loadoutMenuInfo.walther.generic.x = 32; loadoutMenuInfo.walther.generic.y = y; loadoutMenuInfo.walther.string = "Walther P22"; loadoutMenuInfo.walther.color = color_white; loadoutMenuInfo.walther.style = UI_LEFT | UI_SMALLFONT; y += WEAPON_SPACING * 2; loadoutMenuInfo.he.generic.type = MTYPE_PTEXT; loadoutMenuInfo.he.generic.flags = QMF_LEFT_JUSTIFY | QMF_PULSEIFFOCUS; loadoutMenuInfo.he.generic.callback = UI_LoadoutMenu_Event; loadoutMenuInfo.he.generic.id = ID_HE; loadoutMenuInfo.he.generic.x = 32; loadoutMenuInfo.he.generic.y = y; loadoutMenuInfo.he.string = "High-Explosive Grenade"; loadoutMenuInfo.he.color = color_white; loadoutMenuInfo.he.style = UI_LEFT | UI_SMALLFONT; y += WEAPON_SPACING * 2; loadoutMenuInfo.bomb.generic.type = MTYPE_PTEXT; loadoutMenuInfo.bomb.generic.flags = QMF_LEFT_JUSTIFY | QMF_PULSEIFFOCUS; loadoutMenuInfo.bomb.generic.callback = UI_LoadoutMenu_Event; loadoutMenuInfo.bomb.generic.id = ID_BOMB; loadoutMenuInfo.bomb.generic.x = 32; loadoutMenuInfo.bomb.generic.y = y; loadoutMenuInfo.bomb.string = "C4 Device"; loadoutMenuInfo.bomb.color = color_white; loadoutMenuInfo.bomb.style = UI_LEFT | UI_SMALLFONT; y += WEAPON_SPACING; loadoutMenuInfo.injector.generic.type = MTYPE_PTEXT; loadoutMenuInfo.injector.generic.flags = QMF_LEFT_JUSTIFY | QMF_PULSEIFFOCUS; loadoutMenuInfo.injector.generic.callback = UI_LoadoutMenu_Event; loadoutMenuInfo.injector.generic.id = ID_INJECTOR; loadoutMenuInfo.injector.generic.x = 32; loadoutMenuInfo.injector.generic.y = y; loadoutMenuInfo.injector.string = "Adrenaline Injector"; loadoutMenuInfo.injector.color = color_white; loadoutMenuInfo.injector.style = UI_LEFT | UI_SMALLFONT; y += WEAPON_SPACING * 2; loadoutMenuInfo.clear.generic.type = MTYPE_PTEXT; loadoutMenuInfo.clear.generic.flags = QMF_LEFT_JUSTIFY | QMF_PULSEIFFOCUS; loadoutMenuInfo.clear.generic.callback = UI_LoadoutMenu_Event; loadoutMenuInfo.clear.generic.id = ID_CLEAR; loadoutMenuInfo.clear.generic.x = 32; loadoutMenuInfo.clear.generic.y = y; loadoutMenuInfo.clear.string = "Clear Loadout"; loadoutMenuInfo.clear.color = color_yellow; loadoutMenuInfo.clear.style = UI_LEFT | UI_SMALLFONT; loadoutMenuInfo.accept.generic.type = MTYPE_BITMAP; loadoutMenuInfo.accept.generic.name = ART_ACCEPT0; loadoutMenuInfo.accept.generic.flags = QMF_RIGHT_JUSTIFY | QMF_PULSEIFFOCUS; loadoutMenuInfo.accept.generic.id = ID_ACCEPT; loadoutMenuInfo.accept.generic.callback = UI_LoadoutMenu_Event; loadoutMenuInfo.accept.generic.x = 640; loadoutMenuInfo.accept.generic.y = 480 - 64; loadoutMenuInfo.accept.width = 128; loadoutMenuInfo.accept.height = 64; loadoutMenuInfo.accept.focuspic = ART_ACCEPT1; loadoutMenuInfo.back.generic.type = MTYPE_BITMAP; loadoutMenuInfo.back.generic.name = ART_BACK0; loadoutMenuInfo.back.generic.flags = QMF_LEFT_JUSTIFY | QMF_PULSEIFFOCUS; loadoutMenuInfo.back.generic.id = ID_BACK; loadoutMenuInfo.back.generic.callback = UI_LoadoutMenu_Event; loadoutMenuInfo.back.generic.x = 0; loadoutMenuInfo.back.generic.y = 480 - 64; loadoutMenuInfo.back.width = 128; loadoutMenuInfo.back.height = 64; loadoutMenuInfo.back.focuspic = ART_BACK1; loadoutMenuInfo.frame.generic.ownerdraw = UI_LoadoutMenu_DrawWeapons; Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.banner); Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.frame); Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.barrett); Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.intervention); Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.crossbow); Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.acr); Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.walther); Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.he); Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.bomb); Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.injector); Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.clear); Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.accept); Menu_AddItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.back); UI_PushMenu(&loadoutMenuInfo.menu); Menu_SetCursorToItem(&loadoutMenuInfo.menu, &loadoutMenuInfo.barrett); }
void Options_MenuInit2( void ) { static const char *menu_items[] = { "[ console >", "< crosshair >", "< misc. ]", 0 }; static const char *yesno_names[] = { "no", "yes", 0 }; static const char *drawthings_names[] = { "no", "color 1", "color 2", 0 }; static const char *crosshair_names[] = { "none", "one", "two", "three", "four", "five", "six", "seven", "eight", 0 }; static const char *timestamp_names[] = { "off", "chat text only", "all messages", 0 }; int y, i; memset(&s_options_menu2, 0, sizeof(&s_options_menu2)); /* ** configure controls menu and menu items */ for (i=0 ; i<OPTS_TOTAL ; i++) { s_options_menu2[i].x = viddef.width / 2; s_options_menu2[i].y = viddef.height / 2 - 58; s_options_menu2[i].nitems = 0; } s_options_list.generic.type = MTYPE_SPINCONTROL; s_options_list.generic.x = 0; s_options_list.generic.y = 0; s_options_list.generic.name = ""; s_options_list.generic.callback = UpdateMenuFunc; s_options_list.itemnames = menu_items; s_options_list.generic.statusbar = "Select Your Menu"; /* ------------------------------------ */ /* CONSOLE */ /* ------------------------------------ */ s_console_notfade_box.generic.type = MTYPE_SPINCONTROL; s_console_notfade_box.generic.x = 0; s_console_notfade_box.generic.y = y = 20; s_console_notfade_box.generic.name = "notify fading"; s_console_notfade_box.generic.callback = ConsoleNotFadeFunc; s_console_notfade_box.itemnames = yesno_names; s_console_notfade_box.generic.statusbar = "Notifyline Fading"; s_console_notlines_slider.generic.type = MTYPE_SLIDER; s_console_notlines_slider.generic.x = 0; s_console_notlines_slider.generic.y = y += 10; s_console_notlines_slider.generic.name = "notify lines"; s_console_notlines_slider.generic.callback = ConsoleNotLinesFunc; s_console_notlines_slider.minvalue = 1; s_console_notlines_slider.maxvalue = 8; s_console_notlines_slider.generic.statusbar = "Maximum Notifylines"; s_console_alpha_slider.generic.type = MTYPE_SLIDER; s_console_alpha_slider.generic.x = 0; s_console_alpha_slider.generic.y = y += 20; s_console_alpha_slider.generic.name = "alpha"; s_console_alpha_slider.generic.callback = ConsoleAlphaFunc; s_console_alpha_slider.minvalue = 0; s_console_alpha_slider.maxvalue = 10; s_console_alpha_slider.generic.statusbar = "Console Alpha"; s_console_drop_slider.generic.type = MTYPE_SLIDER; s_console_drop_slider.generic.x = 0; s_console_drop_slider.generic.y = y += 10; s_console_drop_slider.generic.name = "drop height"; s_console_drop_slider.generic.callback = ConsoleDropFunc; s_console_drop_slider.minvalue = 1; s_console_drop_slider.maxvalue = 10; s_console_drop_slider.generic.statusbar = "Console Drop Height"; s_console_scroll_slider.generic.type = MTYPE_SLIDER; s_console_scroll_slider.generic.x = 0; s_console_scroll_slider.generic.y = y += 10; s_console_scroll_slider.generic.name = "scroll lines"; s_console_scroll_slider.generic.callback = ConsoleScrollFunc; s_console_scroll_slider.minvalue = 1; s_console_scroll_slider.maxvalue = 10; s_console_scroll_slider.generic.statusbar = "Scrolling Lines with PGUP/DN or MWHEELUP/DN"; s_console_defaults_action.generic.type = MTYPE_ACTION; s_console_defaults_action.generic.x = 0; s_console_defaults_action.generic.y = y = 150; s_console_defaults_action.generic.name = "reset defaults"; s_console_defaults_action.generic.callback = ResetConsoleDefaultsFunc; s_console_defaults_action.generic.statusbar= "Reset Console Changes"; /* ------------------------------------ */ /* CROSSHAIR */ /* ------------------------------------ */ s_crosshair_number_box.generic.type = MTYPE_SPINCONTROL; s_crosshair_number_box.generic.x = 0; s_crosshair_number_box.generic.y = y = 20; s_crosshair_number_box.generic.name = "crosshair"; s_crosshair_number_box.generic.callback = CrosshairFunc2; s_crosshair_number_box.itemnames = crosshair_names; s_crosshair_number_box.generic.statusbar = "Crosshair Number"; s_crosshair_alpha_slider.generic.type = MTYPE_SLIDER; s_crosshair_alpha_slider.generic.x = 0; s_crosshair_alpha_slider.generic.y = y += 20; s_crosshair_alpha_slider.generic.name = "alpha"; s_crosshair_alpha_slider.generic.callback = CrosshairAlphaFunc; s_crosshair_alpha_slider.minvalue = 0; s_crosshair_alpha_slider.maxvalue = 10; s_crosshair_alpha_slider.generic.statusbar = "Crosshair Alpha"; s_crosshair_pulse_slider.generic.type = MTYPE_SLIDER; s_crosshair_pulse_slider.generic.x = 0; s_crosshair_pulse_slider.generic.y = y += 10; s_crosshair_pulse_slider.generic.name = "pulse"; s_crosshair_pulse_slider.generic.callback = CrosshairPulseFunc; s_crosshair_pulse_slider.minvalue = 0; s_crosshair_pulse_slider.maxvalue = 40; s_crosshair_pulse_slider.generic.statusbar = "Crosshair Alpha Pulsing"; s_crosshair_scale_slider.generic.type = MTYPE_SLIDER; s_crosshair_scale_slider.generic.x = 0; s_crosshair_scale_slider.generic.y = y += 10; s_crosshair_scale_slider.generic.name = "scale"; s_crosshair_scale_slider.generic.callback = CrosshairScaleFunc; s_crosshair_scale_slider.minvalue = 10; s_crosshair_scale_slider.maxvalue = 80; s_crosshair_scale_slider.generic.statusbar = "Crosshair Scale"; s_crosshair_red_slider.generic.type = MTYPE_SLIDER; s_crosshair_red_slider.generic.x = 0; s_crosshair_red_slider.generic.y = y += 20; s_crosshair_red_slider.generic.name = "red"; s_crosshair_red_slider.generic.callback = CrosshairRedFunc; s_crosshair_red_slider.minvalue = 0; s_crosshair_red_slider.maxvalue = 10; s_crosshair_red_slider.generic.statusbar = "Crosshair Red Amount"; s_crosshair_green_slider.generic.type = MTYPE_SLIDER; s_crosshair_green_slider.generic.x = 0; s_crosshair_green_slider.generic.y = y += 10; s_crosshair_green_slider.generic.name = "green"; s_crosshair_green_slider.generic.callback = CrosshairGreenFunc; s_crosshair_green_slider.minvalue = 0; s_crosshair_green_slider.maxvalue = 10; s_crosshair_green_slider.generic.statusbar = "Crosshair Green Amount"; s_crosshair_blue_slider.generic.type = MTYPE_SLIDER; s_crosshair_blue_slider.generic.x = 0; s_crosshair_blue_slider.generic.y = y += 10; s_crosshair_blue_slider.generic.name = "blue"; s_crosshair_blue_slider.generic.callback = CrosshairBlueFunc; s_crosshair_blue_slider.minvalue = 0; s_crosshair_blue_slider.maxvalue = 10; s_crosshair_blue_slider.generic.statusbar = "Crosshair Blue Amount"; s_crosshair_defaults_action.generic.type = MTYPE_ACTION; s_crosshair_defaults_action.generic.x = 0; s_crosshair_defaults_action.generic.y = y = 150; s_crosshair_defaults_action.generic.name = "reset defaults"; s_crosshair_defaults_action.generic.callback= ResetCrosshairDefaultsFunc; s_crosshair_defaults_action.generic.statusbar= "Reset Crosshair Changes"; /* ------------------------------------ */ /* MISC */ /* ------------------------------------ */ s_misc_showclock_box.generic.type = MTYPE_SPINCONTROL; s_misc_showclock_box.generic.x = 0; s_misc_showclock_box.generic.y = y = 20; s_misc_showclock_box.generic.name = "clock"; s_misc_showclock_box.generic.callback = ShowCLOCKFunc; s_misc_showclock_box.itemnames = drawthings_names; s_misc_showclock_box.generic.statusbar = "Clock"; s_misc_showfps_box.generic.type = MTYPE_SPINCONTROL; s_misc_showfps_box.generic.x = 0; s_misc_showfps_box.generic.y = y += 10; s_misc_showfps_box.generic.name = "fps display"; s_misc_showfps_box.generic.callback = ShowFPSFunc; s_misc_showfps_box.itemnames = drawthings_names; s_misc_showfps_box.generic.statusbar = "Framerate Display"; s_misc_showchat_box.generic.type = MTYPE_SPINCONTROL; s_misc_showchat_box.generic.x = 0; s_misc_showchat_box.generic.y = y += 10; s_misc_showchat_box.generic.name = "chat hud"; s_misc_showchat_box.generic.callback = ShowCHATFunc; s_misc_showchat_box.itemnames = drawthings_names; s_misc_showchat_box.generic.statusbar = "Chat HUD"; s_misc_showtime_box.generic.type = MTYPE_SPINCONTROL; s_misc_showtime_box.generic.x = 0; s_misc_showtime_box.generic.y = y += 10; s_misc_showtime_box.generic.name = "map timer"; s_misc_showtime_box.generic.callback = ShowTIMEFunc; s_misc_showtime_box.itemnames = drawthings_names; s_misc_showtime_box.generic.statusbar = "Map Timer"; s_misc_timestamp_box.generic.type = MTYPE_SPINCONTROL; s_misc_timestamp_box.generic.x = 0; s_misc_timestamp_box.generic.y = y += 10; s_misc_timestamp_box.generic.name = "timestamp"; s_misc_timestamp_box.generic.callback = TimeStampFunc; s_misc_timestamp_box.itemnames = timestamp_names; s_misc_timestamp_box.generic.statusbar = "Message Timestamping"; s_misc_hudalpha_slider.generic.type = MTYPE_SLIDER; s_misc_hudalpha_slider.generic.x = 0; s_misc_hudalpha_slider.generic.y = y += 10; s_misc_hudalpha_slider.generic.name = "hud alpha"; s_misc_hudalpha_slider.generic.callback = HudAlphaFunc; s_misc_hudalpha_slider.minvalue = 0; s_misc_hudalpha_slider.maxvalue = 10; s_misc_hudalpha_slider.generic.statusbar= "Hud Alpha"; s_misc_defaults_action.generic.type = MTYPE_ACTION; s_misc_defaults_action.generic.x = 0; s_misc_defaults_action.generic.y = y = 150; s_misc_defaults_action.generic.name = "reset defaults"; s_misc_defaults_action.generic.callback = ResetMiscDefaultsFunc; s_misc_defaults_action.generic.statusbar= "Reset Misc Changes"; /* ------------------------------------ */ /* ADD ITEMS */ /* ------------------------------------ */ SetMenuItemValues(); for (i=0 ; i<OPTS_TOTAL ; i++) { s_options_menu2[i].draw = NewOptions_MenuDraw; s_options_menu2[i].key = NULL; Menu_AddItem( &s_options_menu2[i], (void *) &s_options_list ); } Menu_AddItem( &s_options_menu2[OPTS_CROSSHAIR], (void *) &s_crosshair_number_box ); Menu_AddItem( &s_options_menu2[OPTS_CROSSHAIR], (void *) &s_crosshair_alpha_slider ); Menu_AddItem( &s_options_menu2[OPTS_CROSSHAIR], (void *) &s_crosshair_pulse_slider ); Menu_AddItem( &s_options_menu2[OPTS_CROSSHAIR], (void *) &s_crosshair_scale_slider ); Menu_AddItem( &s_options_menu2[OPTS_CROSSHAIR], (void *) &s_crosshair_red_slider ); Menu_AddItem( &s_options_menu2[OPTS_CROSSHAIR], (void *) &s_crosshair_green_slider ); Menu_AddItem( &s_options_menu2[OPTS_CROSSHAIR], (void *) &s_crosshair_blue_slider ); Menu_AddItem( &s_options_menu2[OPTS_CROSSHAIR], (void *) &s_crosshair_defaults_action ); Menu_AddItem( &s_options_menu2[OPTS_CONSOLE], (void *) &s_console_notfade_box); Menu_AddItem( &s_options_menu2[OPTS_CONSOLE], (void *) &s_console_notlines_slider); Menu_AddItem( &s_options_menu2[OPTS_CONSOLE], (void *) &s_console_alpha_slider); Menu_AddItem( &s_options_menu2[OPTS_CONSOLE], (void *) &s_console_drop_slider); Menu_AddItem( &s_options_menu2[OPTS_CONSOLE], (void *) &s_console_scroll_slider); Menu_AddItem( &s_options_menu2[OPTS_CONSOLE], (void *) &s_console_defaults_action); Menu_AddItem( &s_options_menu2[OPTS_MISC], (void *) &s_misc_showclock_box ); Menu_AddItem( &s_options_menu2[OPTS_MISC], (void *) &s_misc_showfps_box ); Menu_AddItem( &s_options_menu2[OPTS_MISC], (void *) &s_misc_showchat_box ); Menu_AddItem( &s_options_menu2[OPTS_MISC], (void *) &s_misc_showtime_box ); Menu_AddItem( &s_options_menu2[OPTS_MISC], (void *) &s_misc_timestamp_box ); Menu_AddItem( &s_options_menu2[OPTS_MISC], (void *) &s_misc_hudalpha_slider ); Menu_AddItem( &s_options_menu2[OPTS_MISC], (void *) &s_misc_defaults_action ); }
/* ================= InServer_MenuInit ================= */ void InServer_MenuInit( void ) { int y; memset( &s_inserver, 0 ,sizeof(inservermenu_t) ); InServer_Cache(); s_inserver.menu.draw = UI_InServerMenu_Draw; s_inserver.menu.wrapAround = qtrue; s_inserver.menu.fullscreen = qfalse; s_inserver.frame.generic.type = MTYPE_BITMAP; s_inserver.frame.generic.flags = QMF_INACTIVE; s_inserver.frame.generic.name = INGAME_FRAME; s_inserver.frame.generic.x = 320-233;//142; s_inserver.frame.generic.y = 240-166;//118; s_inserver.frame.width = 466;//359; s_inserver.frame.height = 332;//256; y = 96; //y = 88; y += INGAME_MENU_VERTICAL_SPACING*2; s_inserver.map.generic.type = MTYPE_PTEXT; s_inserver.map.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_inserver.map.generic.x = 320; s_inserver.map.generic.y = y; s_inserver.map.generic.id = ID_CHANGEMAP; s_inserver.map.generic.callback = InServer_Event; s_inserver.map.string = "Change Map"; s_inserver.map.color = text_big_color; s_inserver.map.style = UI_CENTER|UI_SMALLFONT; if( !trap_Cvar_VariableValue( "sv_running" ) ) { s_inserver.map.generic.flags |= QMF_GRAYED; } y += INGAME_MENU_VERTICAL_SPACING; s_inserver.addbots.generic.type = MTYPE_PTEXT; s_inserver.addbots.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_inserver.addbots.generic.x = 320; s_inserver.addbots.generic.y = y; s_inserver.addbots.generic.id = ID_ADDBOTS; s_inserver.addbots.generic.callback = InServer_Event; s_inserver.addbots.string = "Add Bots"; s_inserver.addbots.color = text_big_color; s_inserver.addbots.style = UI_CENTER|UI_SMALLFONT; if( !trap_Cvar_VariableValue( "bot_enable" ) #ifdef TA_SP || ui_singlePlayerActive.integer #else || (trap_Cvar_VariableValue( "g_gametype" ) == GT_SINGLE_PLAYER) #endif ) { s_inserver.addbots.generic.flags |= QMF_GRAYED; } y += INGAME_MENU_VERTICAL_SPACING; s_inserver.removebots.generic.type = MTYPE_PTEXT; s_inserver.removebots.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_inserver.removebots.generic.x = 320; s_inserver.removebots.generic.y = y; s_inserver.removebots.generic.id = ID_REMOVEBOTS; s_inserver.removebots.generic.callback = InServer_Event; s_inserver.removebots.string = "Remove Bots"; s_inserver.removebots.color = text_big_color; s_inserver.removebots.style = UI_CENTER|UI_SMALLFONT; if( !trap_Cvar_VariableValue( "bot_enable" ) #ifdef TA_SP || ui_singlePlayerActive.integer #else || (trap_Cvar_VariableValue( "g_gametype" ) == GT_SINGLE_PLAYER) #endif ) { s_inserver.removebots.generic.flags |= QMF_GRAYED; } y += INGAME_MENU_VERTICAL_SPACING; s_inserver.restart.generic.type = MTYPE_PTEXT; s_inserver.restart.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_inserver.restart.generic.x = 320; s_inserver.restart.generic.y = y; s_inserver.restart.generic.id = ID_RESTART; s_inserver.restart.generic.callback = InServer_Event; s_inserver.restart.string = "Restart Level"; s_inserver.restart.color = text_big_color; s_inserver.restart.style = UI_CENTER|UI_SMALLFONT; y += INGAME_MENU_VERTICAL_SPACING*2; s_inserver.back.generic.type = MTYPE_PTEXT; s_inserver.back.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_inserver.back.generic.x = 320; s_inserver.back.generic.y = y; s_inserver.back.generic.id = ID_BACK; s_inserver.back.generic.callback = InServer_Event; s_inserver.back.string = "Back"; s_inserver.back.color = text_big_color; s_inserver.back.style = UI_CENTER|UI_SMALLFONT; Menu_AddItem( &s_inserver.menu, &s_inserver.frame ); Menu_AddItem( &s_inserver.menu, &s_inserver.map ); Menu_AddItem( &s_inserver.menu, &s_inserver.addbots ); Menu_AddItem( &s_inserver.menu, &s_inserver.removebots ); Menu_AddItem( &s_inserver.menu, &s_inserver.restart ); Menu_AddItem( &s_inserver.menu, &s_inserver.back ); }