#include "ui/menudef.h"
#include "ui_mp/newframe.inc"

#define CHOICE_X_START					-258
#define CHOICE_Y_START					35
#define BUTTON_BG_WIDTH					180

#define CHOICE_SEP_OFFSET_X				20
#define CHOICE_SEP_OFFSET_Y				-2
#define CHOICE_SEP_1					1
#define CHOICE_SEP_2					4
#define CHOICE_GROUP					"xboxlive_basictraining"

#define FLYOUT_NONE				0
#define FLYOUT_TRAINING			3

#include "ui_mp/menustyle.inc"
#include "ui/choices_setup_common.menu"
#include "ui_mp/stats_info.inc"
#include "ui_mp/friendslist.inc"

#define MENU_FONT_SIZE					TEXTSIZE_DEFAULT
#define HIGHLIGHT_SIZE					142 22
#define MENU_FONT_COLOR					1 1 1 0.5
#define MENU_FONT_COLOR2				1 1 1 0.5
#define MENU_LOCKED_COLOR				0.25 0.25 0.25 1

#undef  CHOICE_SIZE_X
#define CHOICE_SIZE_X					BUTTON_BG_WIDTH
#undef	CHOICE_TEXTSTYLE
#define	CHOICE_TEXTSTYLE				ITEM_TEXTSTYLE_NORMAL

#undef CHOICE_HORIZONTAL_ALIGN
#define CHOICE_HORIZONTAL_ALIGN			HORIZONTAL_ALIGN_CENTER
#undef	CHOICE_Y_SPACING
#define CHOICE_Y_SPACING				CHOICE_SIZE_Y

#define FLYOUT_BG_COLOR					0 0 0 0.3 

#define SELECTION_IMAGE_BIG( materialArg )	( "menu_" + materialArg + "_map_select_big" )

#define BOT_DVAR_CHECK																			\
		execNow if ( dvarInt( bot_friends ) > 11 ) set bot_friends 11; exec "updategamerprofile";	\
		execNow if ( dvarInt( bot_enemies ) > 11 ) set bot_enemies 11; exec "updategamerprofile";	
#include "ui_mp/common_macro.inc"

#undef ON_ESC
#define ON_ESC							\
	setdvar xblive_basictraining "0";	\
	setDvar xblive_privatematch "0"		\
	setDvar leaveImmediately "0";		\
	close self;							\
	open main_text;

{
	menuDef
	{
		name			menu_xboxlive_basictraining
		fullscreen		1
		rect			0 0 640 480
		focuscolor		COLOR_FOCUSED
		style			WINDOW_STYLE_FILLED
		border			0
		soundloop 		MENU_MUSIC
		control			MENU_CONTROL_USED
		allowSignIn

		onOpen
		{
			execnow "validatePrivateMatchGametype";
			exec "exec dvar_defaults.cfg";
			setDvar onlinegame "1";
			setdvar xblive_rankedmatch "0";
			setdvar xblive_basictraining "1";
			setdvar ui_inviteonly "0";
			setdvar invite_visible "1";
			setdvar ui_selectlobby "0";
			setdvar popup_open "0";
			
			execNow set	scr_hc_tdm_scorelimit ( dvarString( scr_tdm_scorelimit ) );		
			execNow set	scr_hc_dm_scorelimit ( dvarString( scr_dm_scorelimit ) );
			execNow set	scr_hc_tdm_timelimit ( dvarString( scr_tdm_timelimit ) );
			execNow set	scr_hc_dm_timelimit ( dvarString( scr_dm_timelimit ) );

			execNow if ( !dvarbool( "xblive_basictraining_popup" ) ) openmenu "basictraining_msg";
			
			exec set ui_bg_image SELECTION_IMAGE_BIG( dvarString( ui_mapname ) );

			exec set show_list_player_info 0;
			CLEARUIHINT
			if ( dvarInt( scr_hardcore ) == 1 )
			{
				if ( dvarString( ui_gametype ) == "dm" )
				{
					execNow set ui_gametype( "hc_dm" );
				}
				
				if ( dvarString( ui_gametype ) == "tdm" )
				{
					execNow set ui_gametype( "hc_tdm" );
				}
			}
		}
		onFocus
		{
			if ( dvarString( ui_gametype ) != dm && dvarString( ui_gametype ) != hc_dm )
			{
				//BOT_DVAR_CHECK;
			}
		
			setDvar ui_flyoutHasFocus FLYOUT_NONE;
			exec set ui_bg_image SELECTION_IMAGE_BIG( dvarString( ui_mapname ) );
		}
		onClose	
		{ 
			play "uin_navigation_backout";
			setdvar popup_open "1";
			setfocus popup_hide;
			hide selection_right;	
			setdvar ui_bg_image "";
		}
		onEsc
		{
			ON_ESC
		}

		// ------------------ statics ------------------------
		#include "ui_mp/blurredbg.inc"
		
		// ----------------- Scroller --------------------------		
		#include "ui/scroller.inc"

		// ----------------- title --------------------------	
		CHOICE_MENU_TITLE_CENTER_ALIGN_VIS( "@MPUI_BASICTRAINING_LOBBY_CAPS", ITEM_ALIGN_TOP_RIGHT, 1 )

		// ---------------------------- map ------------------------------------
		#define GAMEINFO_ORIENTATION	1
		#define GAMEINFO_X				CHOICE_X_START
		#define GAMEINFO_Y				235
		#define GAMEINFO_ORIGIN			GAMEINFO_X GAMEINFO_Y
		#define GAMEINFO_WIDTH			BUTTON_BG_WIDTH
		#define GAMEINFO_WIDTH2			GAMEINFO_WIDTH
		#define GAMEINFO_HEIGHT			80
		
		#include "ui_mp/game_info.inc"
		#define MAPIMAGE				SELECTION_IMAGE_FINAL( dvarString( ui_mapname ) )
		#define MAPNAME					locString( tableLookup( "mp/mapstable.csv", 0, dvarString( ui_mapname ), 3 ) )
		#define GAMETYPENAME			locString( tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_gametype ), 1 ) )

		#define VOTE_BG_SIZE			20

		#define SELECTION_IMAGE_FINAL( materialArg )	\
				( "menu_" + materialArg + "_map_select_final" )

		#define MAP_SELECTION_INFO( xPos, yPos, widthArg, heightArg, mapName, gametypeName, visArg )															\
				PREPROC_TEXT_DRAW_ALL(	(xPos+widthArg-96-8) (yPos+heightArg-VOTE_BG_SIZE+1-18) 96 24 CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_BOTTOM,			\
										0 0, toUpper( mapName ), TEXTSIZE_LARGE, 0, 0, ITEM_ALIGN_TOP_RIGHT, 1 1 1 1, UI_FONT_EXTRABIG, ITEM_TEXTSTYLE_NORMAL,	\
										visArg, ; )																												\
				PREPROC_TEXT_DRAW_VIS(	(xPos+widthArg-96-8) (yPos+heightArg-VOTE_BG_SIZE+1) 96 20 CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_BOTTOM,				\
										0 0, gametypeName, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_RIGHT, 1 1 1 1,													\
										visArg )

		#define MAP_X_START				(-MAP_WIDTH-112)
		#define MAP_Y_START				(-MAP_HEIGHT-25)
		#define MAP_WIDTH				183
		#define MAP_ASPECT_RATIO		(203/275)
		#define MAP_HEIGHT				(MAP_WIDTH*MAP_ASPECT_RATIO)
					
		PREPROC_SHADER_DRAW_VIS_EX(	MAP_X_START MAP_Y_START MAP_WIDTH MAP_HEIGHT CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_BOTTOM,
									MAPIMAGE, 1 1 1 1, 
									1, ; )

		MAP_SELECTION_INFO( MAP_X_START, MAP_Y_START, MAP_WIDTH, MAP_HEIGHT, MAPNAME, GAMETYPENAME, 1 )

		// ---------------------- locked hint -------------------------
		#define	HINT_X_START	( CHOICE_X_START - 13 )
		HINT_TEXT_ALL( 9, HINT_X_START, 7, CHOICE_SIZE_X, dvarString( ui_hint_text ), 1 1 1 1, dvarBool( ui_show_arrow ), ; )
		
			
		// ---------------------- party status description -------------------------
		#define STATUS_START_X			145
		#define STATUS_START_Y			-48
		#define STATUS_RECT				STATUS_START_X STATUS_START_Y 150 25 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM

		PREPROC_TEXT_DRAW_VIS(	STATUS_RECT, 0 0, "@MENU_STATUS_OPEN_DESC_CAPS",			TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_RIGHT, MEDIUM_GRAY, when( dvarint( "party_privacyStatus" ) == 0 && !dvarbool( "xblive_basictraining" ) ) )
		PREPROC_TEXT_DRAW_VIS(	STATUS_RECT, 0 0, "@MENU_STATUS_OPEN_FRIENDS_DESC_CAPS",	TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_RIGHT, MEDIUM_GRAY, when( dvarint( "party_privacyStatus" ) == 1 && !dvarbool( "xblive_basictraining" ) ) )
		PREPROC_TEXT_DRAW_VIS(	STATUS_RECT, 0 0, "@MENU_STATUS_INVITE_ONLY_DESC_CAPS",		TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_RIGHT, MEDIUM_GRAY, when( dvarint( "party_privacyStatus" ) == 2 && !dvarbool( "xblive_basictraining" ) ) )
		PREPROC_TEXT_DRAW_VIS(	STATUS_RECT, 0 0, "@MENU_STATUS_CLOSE_DESC_CAPS",			TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_RIGHT, MEDIUM_GRAY, when( dvarint( "party_privacyStatus" ) == 3 && !dvarbool( "xblive_basictraining" ) ) )


		//=========================================================
		//================= MENU SELECTION ACTIONS ================
		//=========================================================
		#define SETUP_GAME_MODE \
				resetdvar scr_hardcore;	\
				resetdvar scr_team_fftype; \
				resetdvar scr_player_healthregentime; \
				resetdvar scr_player_maxhealth; \
				resetdvar scr_tdm_waverespawndelay; \
				resetdvar scr_game_allowkillcam; \
				resetdvar scr_allowbattlechatter; \
				resetdvar scr_team_kickteamkillers; \
				resetdvar scr_game_suicidepointloss; \
				resetdvar scr_team_teamkillpointloss; \
				resetdvar scr_dog_health; \
				resetdvar scr_dm_playerrespawndelay; \
				resetdvar scr_disable_tacinsert; \
				if ( dvarString( ui_gametype ) == "hc_tdm" )\
				{ \
					execNow set	scr_tdm_scorelimit ( dvarFloat( scr_hc_tdm_scorelimit ) ); \		
					execNow set	scr_tdm_timelimit ( dvarFloat( scr_hc_tdm_timelimit ) ); \
					execNow set g_gametype "tdm";	\
					execNow set ui_gametype "tdm";	\
					execNow set scr_hardcore 1; \
					execNow set scr_team_fftype 1; \
					execNow set scr_player_healthregentime 0; \
					execNow set scr_player_maxhealth 30; \
					execNow set scr_tdm_waverespawndelay 15; \
					execNow set scr_game_allowkillcam 0; \
					execNow set scr_allowbattlechatter	0; \
					execNow set scr_team_kickteamkillers 1; \
					execNow set scr_game_suicidepointloss -100; \
					execNow set scr_team_teamkillpointloss -100; \
					execNow set scr_dog_health 30; \
				} \
				if ( dvarString( ui_gametype ) == "hc_dm" )\
				{ \
					execNow set	scr_dm_scorelimit ( dvarFloat( scr_hc_dm_scorelimit ) ); \		
					execNow set	scr_dm_timelimit ( dvarFloat( scr_hc_dm_timelimit ) ); \
					execNow set g_gametype "dm";	\
					execNow set ui_gametype "dm";	\
					execNow set scr_hardcore 1; \
					execNow set scr_player_healthregentime 0; \
					execNow set scr_player_maxhealth 30; \
					execNow set scr_game_allowkillcam 0; \
					execNow set scr_allowbattlechatter	0; \
					execNow set scr_dm_playerrespawndelay 7; \
					execNow set scr_game_suicidepointloss -50; \
					execNow set scr_dog_health 30; \
					execNow set scr_disable_tacinsert 1; \
				} \
				if ( dvarString( ui_gametype ) == "shrp" || dvarString( ui_gametype ) == "gun" || dvarString( ui_gametype ) == "oic" || dvarString( ui_gametype ) == "hlnd" ) \
				{ \
					execNow set bot_wager "1";	\
				} \
				else \
				{ \
					execNow set bot_wager "0";	\
				} \
				execNow set scr_hlnd_timelimit "";	\
				execNow set scr_hlnd_scorelimit "";	\
				execNow set scr_oic_timelimit "";	\
				execNow set scr_oic_scorelimit "";	\
				execNow set scr_gun_timelimit "";	\
				execNow set scr_gun_scorelimit "";	\
				execNow set scr_shrp_timelimit "";	\
				execNow set scr_shrp_scorelimit "";	
		

		#define SETUP_ACTION_STARTMATCH	\
				SETUP_GAME_MODE			\
				exec "selectStringTableEntryInDvar mp/didyouknow.csv 0 didyouknow";	\
				uiscript StartListenServer;

		#define SETUP_ACTION_GAMESETUP \
				open basictraining_settings;

		#define SETUP_ACTION_CREATEACLASS		\				
				execnow "set ui_cac_ingame 0";	\
				setdvar invite_visible "0";		\
				/*exec "uploadstats";*/			\
				open cac_main;

		#define SETUP_ACTION_CONTRACTS			\				
				exec "endsplitscreensignin";	\
				open menu_xboxlive_contracts;
				
		#define SETUP_ACTION_KILLSTREAKS		\				
				exec "endsplitscreensignin";	\
				open menu_xboxlive_killstreaks;


		//=========================================================
		//===================== MENU SELECTION ====================
		//=========================================================
		#define ANY_NEW_TRAINING_PLAYERCARD_FEATURE	\
						( ANY_NEW_CHALLENGES || IS_ITEM_NEW( FEATURE_COMBAT_RECORD ) )

		#define IS_LOBBY_HOST		1
		#define IS_NOT_LOBBY_HOST	0
		
		// HOST BUTTONS
		TEMP_CHOICE_BUTTON_FOCUS_VIS(	1, "@MPUI_START_MATCH_CAPS", 
										SETUP_ACTION_STARTMATCH,
										SET_HINT_TEXT( "@MPUI_START_MATCH_DESC" ),
										CLEARUIHINT,
										dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
		PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 1 ), 0 0, "@MPUI_START_MATCH_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )


		TEMP_CHOICE_BUTTON_FOCUS_VIS(	2, "@MPUI_CHANGE_MAP_CAPS", 
										open select_map, 
										SET_HINT_TEXT( "@MPUI_CHANGE_MAP_DESC" ),
										CLEARUIHINT,
										dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
		PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 2 ), 0 0, "@MPUI_CHANGE_MAP_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )

		
		TEMP_CHOICE_BUTTON_FOCUS_VIS(	3, "@MPUI_CHANGE_GAME_MODE_CAPS", 
										open select_game_mode, 
										SET_HINT_TEXT( "@MPUI_CHANGE_GAME_MODE_DESC" ),
										CLEARUIHINT,
										dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
		PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 3 ), 0 0, "@MPUI_CHANGE_GAME_MODE_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )

		TEMP_CHOICE_BUTTON_FOCUS_VIS(	4, "@MPUI_EDIT_GAME_OPTIONS_CAPS", 
										SETUP_ACTION_GAMESETUP,
										SET_HINT_TEXT( "@MPUI_EDIT_GAME_OPTIONS_DESC" ),
										CLEARUIHINT,
										dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
		PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 4 ), 0 0, "@MPUI_EDIT_GAME_OPTIONS_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
	
		TEMP_CHOICE_BUTTON_FOCUS_VIS(	5, "@MPUI_CREATE_A_CLASS_CAPS", 
										SETUP_ACTION_CREATEACLASS, 
										SET_HINT_TEXT( "@MPUI_CAC_DESC" ) CLEAR_ITEM_NEW( FEATURE_CREATE_A_CLASS ),
										CLEARUIHINT,
										!IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
		TEMP_CHOICE_DBUTTON_FOCUS_VIS_EX(	5, "@MPUI_CREATE_A_CLASS_CAPS", 
											SET_HINT_TEXT( GET_UNLOCK_LEVEL_STRING( FEATURE_CREATE_A_CLASS ) ), 
											CLEARUIHINT, 
											IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE, ; ) 
		PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 5 ), 0 0, "@MPUI_CREATE_A_CLASS_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
		CHOICE_NEWICON_VIS(		5, "menu_mp_lobby_new",		when( ANY_NEW_CAC	&& dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE ) )
		CHOICE_LOCKEDICON_VIS(	5, "menu_mp_lobby_locked",	when( IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE ) ) 		
				

		TEMP_CHOICE_BUTTON_FOCUS_VIS(	6, "@MENU_KILLSTREAKS_CAPS", 
										SETUP_ACTION_KILLSTREAKS, 
										SET_HINT_TEXT( "@MPUI_KILLSTREAKS_DESC" ) CLEAR_ITEM_NEW( FEATURE_KILLSTREAKS ),
										CLEARUIHINT,
										!IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
		TEMP_CHOICE_DBUTTON_FOCUS_VIS_EX(	6, "@MENU_KILLSTREAKS_CAPS", 
											SET_HINT_TEXT( GET_UNLOCK_LEVEL_STRING( FEATURE_KILLSTREAKS ) ), 
											CLEARUIHINT, 
											IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE, ; ) 
		PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 6 ), 0 0, "@MENU_KILLSTREAKS_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
		CHOICE_NEWICON_VIS( 6, "menu_mp_lobby_new",			when( IS_ITEM_NEW( FEATURE_KILLSTREAKS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE ) )
		CHOICE_LOCKEDICON_VIS(	6, "menu_mp_lobby_locked",	when( IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE ) ) 		

		
		TEMP_CHOICE_BUTTON_FOCUS_VIS(	8, "@MENU_PLAYERCARD_CAPS", 
										SETUP_ACTION_PLAYERCARD, 
										SET_HINT_TEXT( "@MPUI_PLAYERCARD_DESC" ),
										CLEARUIHINT,
										dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
		PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 8 ), 0 0, "@MENU_PLAYERCARD_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
		CHOICE_NEWICON_VIS(		8, "menu_mp_lobby_new",		when( ANY_NEW_TRAINING_PLAYERCARD_FEATURE && IS_LOBBY_HOST && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE ) )
		
		#undef CHOICE_TEXTSIZE
		#define CHOICE_TEXTSIZE			TEXTSIZE_DEFAULT
		
		#undef CHOICE_TEXTFONT
		#define CHOICE_TEXTFONT			UI_FONT_NORMAL
	
		// Friends button
		FRIENDS_BUTTON

		// back button
		NEW_FRAME_BACK_BUTTON_ACTION_PC( ON_ESC )

		#include "ui/safearea.menu"
	}


	#include "ui/framestyle.inc"
	#include "ui/frame.inc"

	#undef CHOICE_GROUP
	#define CHOICE_GROUP					"basictraining_difficulty"

	#undef	CHOICE_X_START
	#define CHOICE_X_START				(-FRAME_DEFAULT_WIDTH/2+15)

	#undef	CHOICE_Y_START
	#define CHOICE_Y_START				( -FRAME_DEFAULT_HEIGHT / 2 + 15 + NEW_FRAME_BG_Y_OFFSET( FRAME_DEFAULT_HEIGHT ) )
	
	#define DIFFICULTY_NAME_X			0
	#define DIFFICULTY_NAME_Y			CHOICE_Y_START

	#define ITEM_IMAGE_X				DIFFICULTY_NAME_X
	#define ITEM_IMAGE_Y				(CHOICE_Y_START-5)
	#define ITEM_IMAGE_ASPECT_RATIO		1
	#define ITEM_IMAGE_WIDTH			(ITEM_IMAGE_HEIGHT * ITEM_IMAGE_ASPECT_RATIO)
	#define ITEM_IMAGE_HEIGHT			240
	#define ITEM_IMAGE_SIZE				ITEM_IMAGE_WIDTH ITEM_IMAGE_HEIGHT

	#define DIFFICULTY_NAME_SIZE		ITEM_IMAGE_WIDTH 30

	#define DIFFICULTY_DESC_X			(ITEM_IMAGE_X + 20)
	#define DIFFICULTY_DESC_Y			(ITEM_IMAGE_Y + ITEM_IMAGE_HEIGHT - 20)
	#define DIFFICULTY_DESC_SIZE		200 75

	#define DIFFICULTY_INFO																														\
	/* Name */																																	\
	PREPROC_TEXT_DRAW(	DIFFICULTY_NAME_X DIFFICULTY_NAME_Y DIFFICULTY_NAME_SIZE CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0,			\
						localVarString( ui_info_name ),																							\
						TEXTSIZE_LARGE, 0, 0, ITEM_ALIGN_TOP_CENTER, 1 1 1 1 )																	\
	/* Image */																																	\
	PREPROC_SHADER_DRAW(	ITEM_IMAGE_X ITEM_IMAGE_Y ITEM_IMAGE_SIZE CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN,							\
							localVarString( ui_diff_pic ), 1 1 1 0.9 )																			\
	/* Description */																															\
	PREPROC_TEXT_DRAW_VIS_EX(	DIFFICULTY_DESC_X DIFFICULTY_DESC_Y DIFFICULTY_DESC_SIZE CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0,	\
								localVarString( ui_info ),																						\
								TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_CENTER, FRAME_LT_GREY_RGB 1,												\
								1, autowrapped )
	
	#define DIFFICULTY_ONFOCUS( descArg, nameArg, imageArg )\
			setLocalVarString ui_info descArg;				\
			setLocalVarString ui_info_name nameArg;			\
			setLocalVarString ui_diff_pic imageArg

	#define SET_DIFFICULTY( difficulty )			\
			exec set bot_difficulty difficulty;	\
			close self;

#undef CHOICE_SEP_SPACING
#define CHOICE_SEP_SPACING 0

	menuDef
	{
		name					basictraining_difficulty
		rect					0 0 640 480
		focuscolor				COLOR_FOCUSED
		style					WINDOW_STYLE_FILLED
		soundloop 				MENU_MUSIC
		openSlideSpeed			DEFAULT_SLIDE_IN_SPEED
		closeSlideSpeed			DEFAULT_SLIDE_OUT_SPEED
		openSlideDirection		MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
		closeSlideDirection		MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM

		onOpen	
		{
			activateBlur;
			focusFirst;
			play uin_navigation_menu_lg_open;
		}
		onFocus { }
		onClose	
		{
			deactivateBlur;
			execNow "updategamerprofile";
		}
		onESC 
		{
			close self;
		}
		execKeyInt BUTTON_B { }

		FRAME_DEFAULT
		FRAME_TITLE_DEFAULT( "@MENU_SELECT_DIFFICULTY_CAPS", 1 )

		//FRAME_SUBTITLE_DEFAULT( "@MENU_SELECT_DIFF_DESC", 1 ) This was commented out in the main basictraining/difficulty menus on all platforms in cl#702108, so there doesn't seem to be a good reason to have it here any longer

		FRAME_CHOICE_BUTTON_FOCUS_VIS_EX(	1, "@MENU_RECRUIT_CAPS",
											SET_DIFFICULTY( "easy" ), 
											DIFFICULTY_ONFOCUS( "@MENU_DIFF_RECRUIT_DESC", "@MENU_RECRUIT_CAPS", "playlist_sp_recr" ),
											;, 1, ; )

		FRAME_CHOICE_BUTTON_FOCUS_VIS_EX(	2, "@MENU_REGULAR_CAPS",
											SET_DIFFICULTY( "normal" ), 
											DIFFICULTY_ONFOCUS( "@MENU_DIFF_REGULAR_DESC", "@MENU_REGULAR_CAPS", "playlist_sp_reg" ),
											;, 1, ; )

		FRAME_CHOICE_BUTTON_FOCUS_VIS_EX(	3, "@MENU_HARDENED_CAPS",
											SET_DIFFICULTY( "hard" ), 
											DIFFICULTY_ONFOCUS( "@MENU_DIFF_HARDENED_DESC", "@MENU_HARDENED_CAPS", "playlist_sp_hard" ),
											;, 1, ; )

		FRAME_CHOICE_BUTTON_FOCUS_VIS_EX(	4, "@MENU_VETERAN_CAPS",
											SET_DIFFICULTY( "fu" ), 
											DIFFICULTY_ONFOCUS( "@MENU_DIFF_VETERAN_DESC", "@MENU_VETERAN_CAPS", "playlist_sp_vet" ),
											;, 1, ; )

		DIFFICULTY_INFO
	}


	#undef	CHOICE_FOCUS_SOUND
	#define CHOICE_FOCUS_SOUND		"uin_navigation_over"
	
	#undef	CHOICE_Y_SPACING
	#define CHOICE_Y_SPACING		(CHOICE_SIZE_Y + 2)
	
	#include "ui_mp/popupstyle.inc"
	#include "ui/choices_setup_popmenu.menu"

	#undef	POPUP_WIDTH
	#define	POPUP_WIDTH								MEDIUM_POPUP_WIDTH		
	#undef	POPUP_HEIGHT
	#define	POPUP_HEIGHT							MEDIUM_POPUP_HEIGHT
	#undef	MEDIUM_POPUP_TITLE_X_START
	#define MEDIUM_POPUP_TITLE_X_START				POPUP_SIDE_PAD
	#undef	MEDIUM_POPUP_TITLE_Y_START
	#define MEDIUM_POPUP_TITLE_Y_START				POPUP_SIDE_PAD
	#undef	CHOICE_SIZE_X			
	#define CHOICE_SIZE_X							( (MEDIUM_POPUP_WIDTH - (POPUP_SIDE_PAD * 2) ) / 2 )

	#undef	POPUP_BUTTON_COUNT
	#define	POPUP_BUTTON_COUNT		1
	#undef	CHOICE_Y_START
	#define CHOICE_Y_START			POPUP_Y_START_BOTTOM
	menuDef
	{
		MEDIUM_POPUP_SETUP_VIS( basictraining_msg, ;, close self;, POPUP_GLOW_WHITE, 0, 1 )		
		onClose
		{
			setDvar xblive_basictraining_popup "1";
			open basictraining_difficulty;
		}
		execkeyint BUTTON_START {}
		execKeyInt APAD_UP {}
		execKeyInt DPAD_UP {}
		execKeyInt APAD_DOWN {}
		execKeyInt DPAD_DOWN {}
		execKeyInt APAD_LEFT {}
		execKeyInt DPAD_LEFT {}
		execKeyInt APAD_RIGHT {}
		execKeyInt DPAD_RIGHT {}

		PREPROC_TEXT_DRAW_VIS_EX(	MEDIUM_POPUP_TITLE_X_START MEDIUM_POPUP_TITLE_Y_START (MEDIUM_POPUP_WIDTH-30) MEDIUM_POPUP_TITLE_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, 
									"@MPUI_BASICTRAINING_LOBBY_CAPS", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, 1, autowrapped )

		PREPROC_TEXT_DRAW_VIS_EX(	MEDIUM_POPUP_TITLE_X_START (MEDIUM_POPUP_TITLE_Y_START+MEDIUM_POPUP_TITLE_HEIGHT+10) (MEDIUM_POPUP_WIDTH-30) 100 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, 
									"@MPUI_BASICTRAINING_POPUP_DESC", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, 1, autowrapped )

		FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_CONTINUE", close self;, 1, ; ) 
	}
}