示例#1
0
/*
===============
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 );
}
示例#2
0
/*
===============
UI_CDKeyMenu_Init
===============
 */
static void UI_CDKeyMenu_Init(void) {
    trap_Cvar_Set("ui_cdkeychecked", "1");

    UI_CDKeyMenu_Cache();

    memset(&cdkeyMenuInfo, 0, sizeof (cdkeyMenuInfo));
    cdkeyMenuInfo.menu.wrapAround = qtrue;
    cdkeyMenuInfo.menu.fullscreen = qtrue;

    cdkeyMenuInfo.banner.generic.type = MTYPE_BTEXT;
    cdkeyMenuInfo.banner.generic.x = 320;
    cdkeyMenuInfo.banner.generic.y = 16;
    cdkeyMenuInfo.banner.string = "CD KEY";
    cdkeyMenuInfo.banner.color = color_white;
    cdkeyMenuInfo.banner.style = UI_CENTER;

    cdkeyMenuInfo.frame.generic.type = MTYPE_BITMAP;
    cdkeyMenuInfo.frame.generic.name = ART_FRAME;
    cdkeyMenuInfo.frame.generic.flags = QMF_INACTIVE;
    cdkeyMenuInfo.frame.generic.x = 142;
    cdkeyMenuInfo.frame.generic.y = 118;
    cdkeyMenuInfo.frame.width = 359;
    cdkeyMenuInfo.frame.height = 256;

    cdkeyMenuInfo.cdkey.generic.type = MTYPE_FIELD;
    cdkeyMenuInfo.cdkey.generic.name = "CD Key:";
    cdkeyMenuInfo.cdkey.generic.flags = QMF_LOWERCASE;
    cdkeyMenuInfo.cdkey.generic.x = 320 - BIGCHAR_WIDTH * 2.5;
    cdkeyMenuInfo.cdkey.generic.y = 240 - BIGCHAR_HEIGHT / 2;
    cdkeyMenuInfo.cdkey.field.widthInChars = 16;
    cdkeyMenuInfo.cdkey.field.maxchars = 16;
    cdkeyMenuInfo.cdkey.generic.ownerdraw = UI_CDKeyMenu_DrawKey;

    cdkeyMenuInfo.accept.generic.type = MTYPE_BITMAP;
    cdkeyMenuInfo.accept.generic.name = ART_ACCEPT0;
    cdkeyMenuInfo.accept.generic.flags = QMF_RIGHT_JUSTIFY | QMF_PULSEIFFOCUS;
    cdkeyMenuInfo.accept.generic.id = ID_ACCEPT;
    cdkeyMenuInfo.accept.generic.callback = UI_CDKeyMenu_Event;
    cdkeyMenuInfo.accept.generic.x = 640;
    cdkeyMenuInfo.accept.generic.y = 480 - 64;
    cdkeyMenuInfo.accept.width = 128;
    cdkeyMenuInfo.accept.height = 64;
    cdkeyMenuInfo.accept.focuspic = ART_ACCEPT1;

    cdkeyMenuInfo.back.generic.type = MTYPE_BITMAP;
    cdkeyMenuInfo.back.generic.name = ART_BACK0;
    cdkeyMenuInfo.back.generic.flags = QMF_LEFT_JUSTIFY | QMF_PULSEIFFOCUS;
    cdkeyMenuInfo.back.generic.id = ID_BACK;
    cdkeyMenuInfo.back.generic.callback = UI_CDKeyMenu_Event;
    cdkeyMenuInfo.back.generic.x = 0;
    cdkeyMenuInfo.back.generic.y = 480 - 64;
    cdkeyMenuInfo.back.width = 128;
    cdkeyMenuInfo.back.height = 64;
    cdkeyMenuInfo.back.focuspic = ART_BACK1;

    Menu_AddItem(&cdkeyMenuInfo.menu, &cdkeyMenuInfo.banner);
    Menu_AddItem(&cdkeyMenuInfo.menu, &cdkeyMenuInfo.frame);
    Menu_AddItem(&cdkeyMenuInfo.menu, &cdkeyMenuInfo.cdkey);
    Menu_AddItem(&cdkeyMenuInfo.menu, &cdkeyMenuInfo.accept);
    if (uis.menusp) {
        Menu_AddItem(&cdkeyMenuInfo.menu, &cdkeyMenuInfo.back);
    }

    trap_GetCDKey(cdkeyMenuInfo.cdkey.field.buffer, cdkeyMenuInfo.cdkey.field.maxchars + 1);
    if (trap_VerifyCDKey(cdkeyMenuInfo.cdkey.field.buffer, NULL) == qfalse) {
        cdkeyMenuInfo.cdkey.field.buffer[0] = 0;
    }
}
示例#3
0
/*
===============
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 );
}