/* =============== UI_SetupMenu_Event =============== */ static void UI_SetupMenu_Event( void *ptr, int event ) { if( event != QM_ACTIVATED ) { return; } switch( ((menucommon_s*)ptr)->id ) { case ID_CUSTOMIZEPLAYER: UI_PlayerSettingsMenu(); break; case ID_CUSTOMIZECONTROLS: UI_ControlsMenu(); break; case ID_SYSTEMCONFIG: UI_GraphicsOptionsMenu(); break; case ID_GAME: UI_PreferencesMenu(); break; case ID_CDKEY: UI_CDKeyMenu(); break; // case ID_LOAD: // UI_LoadConfigMenu(); // break; // case ID_SAVE: // UI_SaveConfigMenu(); // break; case ID_DEFAULTS: UI_ConfirmMenu( "SET TO DEFAULTS?", Setup_ResetDefaults_Draw, Setup_ResetDefaults_Action ); break; case ID_BACK: UI_PopMenu(); break; } }
/* ================= GameOptions_MenuEvent ================= */ static void GameOptions_MenuEvent( void* ptr, int notification ) { menuframework_s* m; if (notification != QM_ACTIVATED) return; m = ((menucommon_s*)ptr)->parent; switch (((menucommon_s*)ptr)->id) { case ID_SOUND: UI_PopMenu(); // Get rid of whatever is ontop UI_SoundMenu(); // Move to the Sound Menu break; case ID_CONTROLS: UI_PopMenu(); // Get rid of whatever is ontop UI_SetupWeaponsMenu(); // Move to the Controls Menu break; case ID_VIDEO: UI_PopMenu(); // Get rid of whatever is ontop UI_VideoDataMenu(); // Move to the Video Menu break; case ID_GAMEOPTIONS: break; case ID_CDKEY: UI_PopMenu(); // Get rid of whatever is ontop UI_CDKeyMenu(); // Move to the CD Key Menu break; case ID_MAINMENU: UI_PopMenu(); } }
/* =============== UI_CDKeyMenu_f =============== */ void UI_CDKeyMenu_f(void) { UI_CDKeyMenu(); }
/* =============== 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_CENTER | UI_DROPSHADOW | UI_SMALLFONT; int type; trap_Cvar_Set( "sv_killserver", "1" ); #if 0 if (0) { //( !uis.demoversion && !ui_cdkeychecked.integer ) { char key[17]; trap_GetCDKey( key, sizeof(key) ); if( trap_VerifyCDKey( key, NULL ) == qfalse ) { UI_CDKeyMenu(); return; } } #endif 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 = qfalse; //qtrue; type = MTYPE_PTEXT; //MTYPE_TEXT; // MTYPE_PTEXT y = 134; s_main.singleplayer.generic.type = type; 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_red; s_main.singleplayer.style = style; //y += MAIN_MENU_VERTICAL_SPACING; s_main.multiplayer.generic.type = type; 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_red; s_main.multiplayer.style = style; y += MAIN_MENU_VERTICAL_SPACING; s_main.demos.generic.type = type; 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 = "WOLFCAM-DEMOS"; s_main.demos.color = color_red; s_main.demos.style = style; #if 1 y += MAIN_MENU_VERTICAL_SPACING; s_main.qldemos.generic.type = type; s_main.qldemos.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_main.qldemos.generic.x = 320; s_main.qldemos.generic.y = y; s_main.qldemos.generic.id = ID_QLDEMOS; s_main.qldemos.generic.callback = Main_MenuEvent; s_main.qldemos.string = "QUAKELIVE-DEMOS"; s_main.qldemos.color = color_red; s_main.qldemos.style = style; #endif #if 0 y += MAIN_MENU_VERTICAL_SPACING; s_main.cinematics.generic.type = type; 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; #endif y += MAIN_MENU_VERTICAL_SPACING; s_main.setup.generic.type = type; 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_red; s_main.setup.style = style; if ( !uis.demoversion && UI_TeamArenaExists() ) { teamArena = qtrue; //y += MAIN_MENU_VERTICAL_SPACING; s_main.teamArena.generic.type = type; 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; } if ( !uis.demoversion ) { //y += MAIN_MENU_VERTICAL_SPACING; s_main.mods.generic.type = type; 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; } y += MAIN_MENU_VERTICAL_SPACING; s_main.openQuakeLiveDirectory.generic.type = type; s_main.openQuakeLiveDirectory.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_main.openQuakeLiveDirectory.generic.x = 320; s_main.openQuakeLiveDirectory.generic.y = y; s_main.openQuakeLiveDirectory.generic.id = ID_OPEN_QUAKE_LIVE_DIRECTORY; s_main.openQuakeLiveDirectory.generic.callback = Main_MenuEvent; s_main.openQuakeLiveDirectory.string = "OPEN QUAKE LIVE DIRECTORY"; s_main.openQuakeLiveDirectory.color = color_red; s_main.openQuakeLiveDirectory.style = style; y += MAIN_MENU_VERTICAL_SPACING; s_main.openWolfcamDirectory.generic.type = type; s_main.openWolfcamDirectory.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS; s_main.openWolfcamDirectory.generic.x = 320; s_main.openWolfcamDirectory.generic.y = y; s_main.openWolfcamDirectory.generic.id = ID_OPEN_WOLFCAM_DIRECTORY; s_main.openWolfcamDirectory.generic.callback = Main_MenuEvent; s_main.openWolfcamDirectory.string = "OPEN WOLFCAM DIRECTORY"; s_main.openWolfcamDirectory.color = color_red; s_main.openWolfcamDirectory.style = style; y += MAIN_MENU_VERTICAL_SPACING; s_main.exit.generic.type = type; 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_red; s_main.exit.style = style; //Menu_AddItem( &s_main.menu, &s_main.singleplayer ); //Menu_AddItem( &s_main.menu, &s_main.multiplayer ); if (!uis.showErrorMenu) { Menu_AddItem( &s_main.menu, &s_main.demos ); Menu_AddItem(&s_main.menu, &s_main.qldemos); //Menu_AddItem( &s_main.menu, &s_main.cinematics ); if (teamArena) { //Menu_AddItem( &s_main.menu, &s_main.teamArena ); } if ( !uis.demoversion ) { //Menu_AddItem( &s_main.menu, &s_main.mods ); } Menu_AddItem( &s_main.menu, &s_main.setup ); } Menu_AddItem(&s_main.menu, &s_main.openQuakeLiveDirectory); Menu_AddItem(&s_main.menu, &s_main.openWolfcamDirectory); Menu_AddItem( &s_main.menu, &s_main.exit ); trap_Key_SetCatcher( KEYCATCH_UI ); uis.menusp = 0; UI_PushMenu ( &s_main.menu ); }
/* =============== 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 ); }