This commit is contained in:
Your Name
2020-07-25 00:22:01 -06:00
commit 7368dad717
84 changed files with 61971 additions and 0 deletions

View File

@ -0,0 +1 @@
Extends functionality of Combat Training.

File diff suppressed because it is too large Load Diff

5
mods/mp_bots/mod.csv Normal file
View File

@ -0,0 +1,5 @@
menufile,ui_mp/cac_main.menu
menufile,ui_mp/playercards.menu
stringtable,mp/gametypesTable.csv
menufile,ui_mp/custom_game_create.menu
menufile,ui_mp/pc_basictraining.menu
1 menufile ui_mp/cac_main.menu
2 menufile ui_mp/playercards.menu
3 stringtable mp/gametypesTable.csv
4 menufile ui_mp/custom_game_create.menu
5 menufile ui_mp/pc_basictraining.menu

View File

@ -0,0 +1,63 @@
#Gametypes Table,,,,,,
a0,b1,c2,d3,e4,f5,g6
maxnum_gametype,12,,,,,
total_filesharegametype,12,,,,,
#gametype reference,#gametype names,#gametype description,#image,#index,#splitscreen,#gametime names lowercase
tdm,MPUI_TEAM_DEATHMATCH_CAPS,MENU_KILL_PLAYERS_ON_THE_OPPOSING,playlist_tdm,0,YES,MPUI_TEAM_DEATHMATCH
dm,MPUI_DEATHMATCH_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,1,YES,MPUI_DEATHMATCH
sd,MPUI_SEARCH_AND_DESTROY_CAPS,MENU_TEAMS_TAKE_TURNS_DEFENDING_NO_SPAWN,playlist_search_destroy,2,YES,MPUI_SEARCH_AND_DESTROY_CLASSIC
dom,MPUI_DOMINATION_CAPS,MENU_CAPTURE_AND_HOLD_THE,playlist_domination,3,YES,MPUI_DOMINATION
koth,MPUI_HEADQUARTERS_CAPS,MENU_CAPTURE_THE_HEADQUARTERS,playlist_headquarters,4,YES,MPUI_HEADQUARTERS
dem,MPUI_DEMOLITION_CAPS,MENU_TEAMS_TAKE_TURNS_DEFENDING,playlist_demolition,5,YES,MPUI_DEMOLITION
ctf,MPUI_CAPTURE_THE_FLAG_CAPS,MENU_CTF_DESC,playlist_ctf,6,YES,MPUI_CAPTURE_THE_FLAG
sab,MPUI_SABOTAGE_CAPS,MENU_1_BOMB_IN_THE_CENTER,playlist_sabotage,7,YES,MPUI_SABOTAGE
hlnd,MPUI_HLND_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,8,YES,MPUI_HLND
oic,MPUI_OIC_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,9,YES,MPUI_OIC
gun,MPUI_GUN_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_gungame,10,YES,MPUI_GUN
shrp,MPUI_SHRP_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_sharpshooter,11,YES,MPUI_SHRP
,,,,,,
maxnum_basictraining_gametype,14,,,,,
#gametype reference,#gametype names,#gametype description,#image,#index,#splitscreen,#gametime names lowercase
tdm,MPUI_TEAM_DEATHMATCH_CAPS,MENU_KILL_PLAYERS_ON_THE_OPPOSING,playlist_tdm,bt0,YES,MPUI_TEAM_DEATHMATCH
hc_tdm,MPUI_TDM_HARDCORE_CAPS,MENU_HC_KILL_PLAYERS_ON_THE_OPPOSING,playlist_tdm,bt1,YES,MPUI_TEAM_DEATHMATCH
dm,MPUI_DEATHMATCH_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,bt2,YES,MPUI_DEATHMATCH
hc_dm,MPUI_DM_HARDCORE_CAPS,MENU_HC_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,bt3,YES,MPUI_DEATHMATCH
sd,MPUI_SEARCH_AND_DESTROY_CAPS,MENU_TEAMS_TAKE_TURNS_DEFENDING_NO_SPAWN,playlist_search_destroy,bt4,YES,MPUI_SEARCH_AND_DESTROY_CLASSIC
dom,MPUI_DOMINATION_CAPS,MENU_CAPTURE_AND_HOLD_THE,playlist_domination,bt5,YES,MPUI_DOMINATION
koth,MPUI_HEADQUARTERS_CAPS,MENU_CAPTURE_THE_HEADQUARTERS,playlist_headquarters,bt6,YES,MPUI_HEADQUARTERS
dem,MPUI_DEMOLITION_CAPS,MENU_TEAMS_TAKE_TURNS_DEFENDING,playlist_demolition,bt7,YES,MPUI_DEMOLITION
ctf,MPUI_CAPTURE_THE_FLAG_CAPS,MENU_CTF_DESC,playlist_ctf,bt8,YES,MPUI_CAPTURE_THE_FLAG
sab,MPUI_SABOTAGE_CAPS,MENU_1_BOMB_IN_THE_CENTER,playlist_sabotage,bt9,YES,MPUI_SABOTAGE
hlnd,MPUI_HLND_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,bt10,YES,MPUI_HLND
oic,MPUI_OIC_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,bt11,YES,MPUI_OIC
gun,MPUI_GUN_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_gungame,bt12,YES,MPUI_GUN
shrp,MPUI_SHRP_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_sharpshooter,bt13,YES,MPUI_SHRP
,,,,,,
maxnum_lbtype,11,,,,,
#Leaderboard string names,,,,,,
#num,#lb_type ref,#lb gametype names,#gametype names,,#lb index,
0,tdm,MPUI_LB_TEAM_DEATHMATCH_CAPS,MPUI_TEAM_DEATHMATCH_CAPS,,0,
1,dm,MPUI_LB_FFA_CAPS,MPUI_DEATHMATCH_CAPS,,1,
2,sd,MPUI_LB_SEARCH_AND_DESTROY_CAPS,MPUI_SEARCH_AND_DESTROY_CAPS,,5,
3,dom,MPUI_LB_DOMINATION_CAPS,MPUI_DOMINATION_CAPS,,3,
4,koth,MPUI_LB_HEADQUARTERS_CAPS,MPUI_HEADQUARTERS_CAPS,,6,
5,dem,MPUI_LB_DEMOLITION_CAPS,MPUI_DEMOLITION_CAPS,,7,
6,ctf,MPUI_LB_CAPTURE_THE_FLAG_CAPS,MPUI_CAPTURE_THE_FLAG_CAPS,,2,
7,sab,MPUI_LB_SABOTAGE_CAPS,MPUI_SABOTAGE_CAPS,,4,
8,hctdm,MPUI_LB_TEAM_DEATHMATCH_HC_CAPS,MPUI_HCTDM_CAPS,,8,
9,hcdm,MPUI_LB_FFA_HC_CAPS,MPUI_HCDM_CAPS,,9,
10,hcsd,MPUI_LB_SEARCH_AND_DESTROY_HC_CAPS,MPUI_HCSD_CAPS,,13,
,,,,,,
,,,,,,
#Leaderboard reset period names,,,,,,
#lb_typeByResetPeriod ref,#resetperiod names,#index,,,,
all_time,MPUI_LB_ALL_TIME_CAPS,0,,,,
monthly,MPUI_LB_MONTHLY_CAPS,1,,,,
weekly,MPUI_LB_WEEKLY_CAPS,2,,,,
,,,,,,
,,,,,,
#Leaderboard filter names,,,,,,
#lb_filter ref,#filter names,#index,,,,
none,MPUI_LB_EVERYONE_CAPS,0,,,,
friends,MPUI_LB_FRIENDS_ONLY_CAPS,1,,,,
lobbymembers,MPUI_LB_PLAYERS_IN_LOBBY_CAPS,2,,,,
1 #Gametypes Table
2 a0 b1 c2 d3 e4 f5 g6
3 maxnum_gametype 12
4 total_filesharegametype 12
5 #gametype reference #gametype names #gametype description #image #index #splitscreen #gametime names lowercase
6 tdm MPUI_TEAM_DEATHMATCH_CAPS MENU_KILL_PLAYERS_ON_THE_OPPOSING playlist_tdm 0 YES MPUI_TEAM_DEATHMATCH
7 dm MPUI_DEATHMATCH_CAPS MENU_KILL_EVERYONE_FIRST_PLAYER playlist_ffa 1 YES MPUI_DEATHMATCH
8 sd MPUI_SEARCH_AND_DESTROY_CAPS MENU_TEAMS_TAKE_TURNS_DEFENDING_NO_SPAWN playlist_search_destroy 2 YES MPUI_SEARCH_AND_DESTROY_CLASSIC
9 dom MPUI_DOMINATION_CAPS MENU_CAPTURE_AND_HOLD_THE playlist_domination 3 YES MPUI_DOMINATION
10 koth MPUI_HEADQUARTERS_CAPS MENU_CAPTURE_THE_HEADQUARTERS playlist_headquarters 4 YES MPUI_HEADQUARTERS
11 dem MPUI_DEMOLITION_CAPS MENU_TEAMS_TAKE_TURNS_DEFENDING playlist_demolition 5 YES MPUI_DEMOLITION
12 ctf MPUI_CAPTURE_THE_FLAG_CAPS MENU_CTF_DESC playlist_ctf 6 YES MPUI_CAPTURE_THE_FLAG
13 sab MPUI_SABOTAGE_CAPS MENU_1_BOMB_IN_THE_CENTER playlist_sabotage 7 YES MPUI_SABOTAGE
14 hlnd MPUI_HLND_CAPS MENU_KILL_EVERYONE_FIRST_PLAYER playlist_ffa 8 YES MPUI_HLND
15 oic MPUI_OIC_CAPS MENU_KILL_EVERYONE_FIRST_PLAYER playlist_ffa 9 YES MPUI_OIC
16 gun MPUI_GUN_CAPS MENU_KILL_EVERYONE_FIRST_PLAYER playlist_gungame 10 YES MPUI_GUN
17 shrp MPUI_SHRP_CAPS MENU_KILL_EVERYONE_FIRST_PLAYER playlist_sharpshooter 11 YES MPUI_SHRP
18
19 maxnum_basictraining_gametype 14
20 #gametype reference #gametype names #gametype description #image #index #splitscreen #gametime names lowercase
21 tdm MPUI_TEAM_DEATHMATCH_CAPS MENU_KILL_PLAYERS_ON_THE_OPPOSING playlist_tdm bt0 YES MPUI_TEAM_DEATHMATCH
22 hc_tdm MPUI_TDM_HARDCORE_CAPS MENU_HC_KILL_PLAYERS_ON_THE_OPPOSING playlist_tdm bt1 YES MPUI_TEAM_DEATHMATCH
23 dm MPUI_DEATHMATCH_CAPS MENU_KILL_EVERYONE_FIRST_PLAYER playlist_ffa bt2 YES MPUI_DEATHMATCH
24 hc_dm MPUI_DM_HARDCORE_CAPS MENU_HC_KILL_EVERYONE_FIRST_PLAYER playlist_ffa bt3 YES MPUI_DEATHMATCH
25 sd MPUI_SEARCH_AND_DESTROY_CAPS MENU_TEAMS_TAKE_TURNS_DEFENDING_NO_SPAWN playlist_search_destroy bt4 YES MPUI_SEARCH_AND_DESTROY_CLASSIC
26 dom MPUI_DOMINATION_CAPS MENU_CAPTURE_AND_HOLD_THE playlist_domination bt5 YES MPUI_DOMINATION
27 koth MPUI_HEADQUARTERS_CAPS MENU_CAPTURE_THE_HEADQUARTERS playlist_headquarters bt6 YES MPUI_HEADQUARTERS
28 dem MPUI_DEMOLITION_CAPS MENU_TEAMS_TAKE_TURNS_DEFENDING playlist_demolition bt7 YES MPUI_DEMOLITION
29 ctf MPUI_CAPTURE_THE_FLAG_CAPS MENU_CTF_DESC playlist_ctf bt8 YES MPUI_CAPTURE_THE_FLAG
30 sab MPUI_SABOTAGE_CAPS MENU_1_BOMB_IN_THE_CENTER playlist_sabotage bt9 YES MPUI_SABOTAGE
31 hlnd MPUI_HLND_CAPS MENU_KILL_EVERYONE_FIRST_PLAYER playlist_ffa bt10 YES MPUI_HLND
32 oic MPUI_OIC_CAPS MENU_KILL_EVERYONE_FIRST_PLAYER playlist_ffa bt11 YES MPUI_OIC
33 gun MPUI_GUN_CAPS MENU_KILL_EVERYONE_FIRST_PLAYER playlist_gungame bt12 YES MPUI_GUN
34 shrp MPUI_SHRP_CAPS MENU_KILL_EVERYONE_FIRST_PLAYER playlist_sharpshooter bt13 YES MPUI_SHRP
35
36 maxnum_lbtype 11
37 #Leaderboard string names
38 #num #lb_type ref #lb gametype names #gametype names #lb index
39 0 tdm MPUI_LB_TEAM_DEATHMATCH_CAPS MPUI_TEAM_DEATHMATCH_CAPS 0
40 1 dm MPUI_LB_FFA_CAPS MPUI_DEATHMATCH_CAPS 1
41 2 sd MPUI_LB_SEARCH_AND_DESTROY_CAPS MPUI_SEARCH_AND_DESTROY_CAPS 5
42 3 dom MPUI_LB_DOMINATION_CAPS MPUI_DOMINATION_CAPS 3
43 4 koth MPUI_LB_HEADQUARTERS_CAPS MPUI_HEADQUARTERS_CAPS 6
44 5 dem MPUI_LB_DEMOLITION_CAPS MPUI_DEMOLITION_CAPS 7
45 6 ctf MPUI_LB_CAPTURE_THE_FLAG_CAPS MPUI_CAPTURE_THE_FLAG_CAPS 2
46 7 sab MPUI_LB_SABOTAGE_CAPS MPUI_SABOTAGE_CAPS 4
47 8 hctdm MPUI_LB_TEAM_DEATHMATCH_HC_CAPS MPUI_HCTDM_CAPS 8
48 9 hcdm MPUI_LB_FFA_HC_CAPS MPUI_HCDM_CAPS 9
49 10 hcsd MPUI_LB_SEARCH_AND_DESTROY_HC_CAPS MPUI_HCSD_CAPS 13
50
51
52 #Leaderboard reset period names
53 #lb_typeByResetPeriod ref #resetperiod names #index
54 all_time MPUI_LB_ALL_TIME_CAPS 0
55 monthly MPUI_LB_MONTHLY_CAPS 1
56 weekly MPUI_LB_WEEKLY_CAPS 2
57
58
59 #Leaderboard filter names
60 #lb_filter ref #filter names #index
61 none MPUI_LB_EVERYONE_CAPS 0
62 friends MPUI_LB_FRIENDS_ONLY_CAPS 1
63 lobbymembers MPUI_LB_PLAYERS_IN_LOBBY_CAPS 2

View File

@ -0,0 +1,97 @@
|\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/|
///////////////Bot Warfare////////////////
Feel free to use code, however give credit where credit is due!
-INeedGames/INeedBot(s) @ ineedbots@pbot.org
|________________________________________|
Contents:
1: Features
2: Installation/Requirements
3: FAQs/Notes
4: Changelog
5: Credits
|\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/|
///////////////1: Features////////////////
This mod extends the functionality and features of Combat Training in Black Ops multiplayer.
Menu changes (combat training menu):
You can select any game mode.
You can change prestige classes if available.
You can change your clan tag, emblem and calling card.
You can prestige.
Increased limits of bot numbers.
Bot changes:
Bots play all game modes (capture flags, plant and defuse, etc.).
Bots take out spyplanes and counter spyplanes.
Bots react to the uav, jammer, decoys, motion sensor and camera spike.
Bots can destroy tactical insertions.
Bots can call in chopper gunner and gun ship but do not use it.
Bots can hack claymores if they are not facing it.
Fixed bots never reviving a player if they move.
Fixed bots trying to capture a hacked care package when they can't because its on their team.
Silencers will not cause other bots to look in the firer's direction.
Bots class, rank, and cod points all persist across rounds.
Bots will spend cod points on everything they choose now (not just gun and perk like before).
Bots can choose two attachments if they have the perk.
Bots can skip killcams.
Bots have a slight delay after spawning, scales inversely with difficulty.
Bots can reroll carepackages.
Bots can use the valkyrie rocket carepackage streak.
|________________________________________|
|\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/|
///////2: Installation/Requirements///////
If you want to install it as a mod:
1. Locate the root folder which your game is installed in.
2. Locate the 'mods' folder, if there isn't one, make it.
3. Move the 'mp_bots' folder found in the 'Move to mods folder' into the 'mods' folder.
4. The file/folder structure should be '.BORoot\mods\mp_bots\mp_bots.iwd'.
5. Simply run the game, go to the 'Mods' menu and select 'mp_bots'.
6. Thats it, go play!
If you want to rank up with the mod:
WARNING: Make sure to backup your patch_mp.ff and patch_ui_mp.ff files! You will not be able to play on servers with different FFs!
1. Locate the root folder which your game is installed in.
2. Go into the folder 'zone' and then into the folder 'Common'.
3. Move the two files 'patch_mp.ff' and 'patch_ui_mp.ff' from the 'Others' folder into the 'Common' folder, replacing the files.
4. Now run the game and the mod will be running by default. (No need to select the mod from the in-game menu)
|________________________________________|
|\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/|
///////////////3: FAQs/Notes//////////////
Q: DLC maps have no images (with rank up option)!
A: It appears Treyarch has put the materials for these maps in the original patch_mp.ff file. It is currently not known how to insert materials into a FF as they are streamed.
Q: I'm getting menu asset limit errors when I switch to a mod (with rank up option)!
A: The modified FFs have menu files in them. Restoring back to your original FF files will fix this.
TODO:
Make bots use remote helicopters, possible?
Make bots use alt weapon types (tube, master key, flamethrower) possible?
|________________________________________|
|\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/|
///////////////4: Changelog///////////////
v1.02(05/06/2018):
Fixed a few small bugs. A possible infinite loop when bots are too poor for a grenade and reasonable setups are on, and bots never spawning after death with forcerespawn off.
Added an option to allow for UNLIMITED score.
v1.01(03/02/2018):
Fixed bot's rank not updating after a multiround.
Can now set bot numbers for friends and enemies from 0 - 30 within menu. (15v15) (1v29)
v1.0(02/08/2018):
Initial release.
|________________________________________|
|\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/|
////////////////5: Credits////////////////
INeedGames(me) - creator: http://www.moddb.com/mods/bot-warfare
apdonato - ideas and/of implementation of code from their 'BO patch': http://rsebots.blogspot.ca/
|________________________________________|
Feel free to use code, host on other sites, host on servers, mod it and merge mods with it, just give credit where credit is due!
-INeedGames/INeedBot(s) @ ineedbots@pbot.org

View File

@ -0,0 +1,437 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#include "ui_mp/item_animate.inc"
#include "ui_mp/menustyle.inc"
#include "ui/framestyle.inc"
#include "ui_mp/newframe.inc"
#include "ui_mp/cac_player_model.inc"
#undef CHOICE_X_START
#define CHOICE_X_START NEW_FRAME_CHOICE_X_START
#undef CHOICE_Y_START
#define CHOICE_Y_START NEW_FRAME_CHOICE_Y_START
#define RECT_ALIGN ;
#undef CHOICE_SEP_1
#define CHOICE_SEP_1 5
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X NEW_FRAME_BUTTON_WIDTH
#include "ui/choices_setup_common.menu"
#include "ui_mp/cac_viewer.inc"
#define LOCKED_BORDER_COLOR 1 1 1 0.5
#define LOCAL_UNLOCK_COLOR 0.31 0.31 0.33 0.55
#define ORIGIN_DESCRIPTION (CHOICE_X_START + 15) 320
#define LOCKED_IMAGE_X 100
#define LOCKED_IMAGE_Y 0
#define LOCKED_TITLE_X 20
#define LOCKED_TITLE_Y (LOCKED_IMAGE_Y + 100)
#define LOCKED_DESC_X (LOCKED_TITLE_X)
#define LOCKED_DESC_Y (LOCKED_TITLE_Y + 20)
#define LOCKED_WIDTH 270
#define LOCKED_ALIGN HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP
#define ORIGIN_LOCKED ((-(LOCKED_WIDTH - RIGHTITEM_OFFSET))-80) 38
#include "ui_mp/stats_info.inc"
#include "ui_mp/popup_player_info.inc"
#include "ui_mp/armor.inc"
#include "ui_mp/cac_stats.inc"
#include "ui_mp/cac_loadout.inc"
#undef CHOICE_TEXTSTYLE
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
#undef CHOICE_VERTICAL_ALIGN
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
#undef CHOICE_HORIZONTAL_ALIGN
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
#define IS_ONLINE_GAME ( dvarInt( splitscreen ) == 0 && dvarInt( systemlink ) == 0 )
#define IS_BASICTRAINING_GAME ( dvarInt( xblive_basictraining ) > 0 )
#undef ON_ESC
#ifdef PC
#define ON_ESC \
execnow "uploadstats"; \
setdvar invite_visible "1"; \
play uin_navigation_menu_lg_close; \
closeimmediate self; \
setLocalVarBool ui_hideBack 0;
#else //#ifdef PC
#define ON_ESC \
execnow "uploadstats"; \
setdvar invite_visible "1"; \
play uin_navigation_menu_lg_close; \
closeimmediate self;
#endif //#ifdef PC
#define SET_CLASS_HIGHLIGHT_INDEX( classIndex ) \
setdvar ui_custom_class_highlighted classIndex;
#define SETUP_ONFOCUS_CAC( classIndex, custom_name ) \
show item_info; \
SET_CLASS_HIGHLIGHT_INDEX( classIndex ) \
setdvar ui_custom_name custom_name; \
VIEWER_SET_PLAYER( custom_name ); \
VIEWER_SET_EQUIP_WEAPON( primary ); \
VIEWER_SET_PLAYER_CAMERA( player );
{
// CREATE A CLASS MAIN
menuDef
{
name cac_main
rect 0 0 640 470 RECT_ALIGN
focuscolor COLOR_FOCUSED
#ifdef PC_INGAME
style WINDOW_STYLE_EMPTY
#else
style WINDOW_STYLE_FILLED
blurWorld 7.0
#endif
control MENU_CONTROL_OPENER
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
popup
onOpen
{
execnow "uiViewer_SetControllerIndex";
activateBlur;
setdvar invite_visible "0";
setdvar cac_back_menu_name "cac_main";
setdvar ui_useCustomClassInfo 0;
if ( dvarString( ui_faction ) == "" ) { setdvar ui_faction FIRST_FACTION; }
#ifdef PC
if ( dvarString( ui_custom_name ) == "" )
{
SETUP_ONFOCUS_CAC( 0, customclass1 );
}
setLocalVarBool ui_hide_cac_item_info_highlights 1;
setLocalVarBool ui_hideBack 1;
#endif
SHOW_VIEWER;
SET_VIEWER_MODE_PLAYER;
play uin_navigation_menu_lg_open;
focusFirst;
}
onEsc
{
ON_ESC
}
onClose
{
if( !IS_ONLINE_GAME )
{
execNow "updategamerprofile";
}
deactivateBlur;
HIDE_VIEWER;
#ifdef PC
execNow "updategamerprofile";
setLocalVarBool ui_hide_cac_item_info_highlights 0;
#endif //#ifdef PC
}
onFocus
{
activateBlur;
execnow changemenuopenslidedirection cac_main MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM;
execnow changemenucloseslidedirection cac_main MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM;
}
#define CAC_HEIGHT NEW_FRAME_DEFAULT_HEIGHT
#define CAC_WIDTH ( CAC_HEIGHT * FRAME_ASPECT_RATIO )
#define IS_CUSTOM_CLASS_MODE dvarInt( ui_useCustomClassInfo ) == 1
NEW_FRAME( CAC_WIDTH, CAC_HEIGHT )
// ------------------ statics ------------------------
NEW_FRAME_TITLE( CAC_WIDTH, CAC_HEIGHT, "@MPUI_CREATE_A_CLASS_CAPS", when( !IS_CUSTOM_CLASS_MODE ) )
NEW_FRAME_TITLE( CAC_WIDTH, CAC_HEIGHT, "@CUSTOM_EDIT_CLASS_LOADOUT_CAPS", when( IS_CUSTOM_CLASS_MODE ) )
PLAYER_INFO_VIS( CAC_WIDTH, CAC_HEIGHT, 1 )
#define DIRT_IMAGE_WIDTH 400
#define DIRT_IMAGE_HEIGHT 128
#define DIRT_IMAGE_X (-DIRT_IMAGE_WIDTH/2)
#define DIRT_IMAGE_Y 60
#ifndef PC_INGAME
/* dirt image */
PREPROC_SHADER_DRAW( DIRT_IMAGE_X DIRT_IMAGE_Y DIRT_IMAGE_WIDTH DIRT_IMAGE_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "menu_mp_lobby_cac_dirt", 1 1 1 0.2 )
CAC_FACTION_MODEL
#ifdef PC
CAC_ROTATE_ARROWS
#endif // #ifdef PC
#endif
//=========================================================
//===================== MENU SELECTION ====================
//=========================================================
#define SETUP_ACTION_CAC \
execnow changemenucloseslidedirection ( dvarString( "cac_back_menu_name" ) ) MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT; \
execnow changemenuopenslidedirection menu_cac_custom MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT; \
closeimmediate self; \
openimmediate menu_cac_custom;
#define SETUP_HL_CAC( classIndex ) \
( dvarInt( "ui_custom_class_highlighted" ) == classIndex )
#define PRESTIGE_FOCUS( pname, class_name_dvar ) \
hide item_info; \
setdvar ui_show_arrow 1; \
setdvar ui_custom_name dvarString( class_name_dvar ); \
execnow set ui_prestige_unlock_desc GET_UNLOCK_PLEVEL_STRING( pname );
#define PRESTIGE_LEAVE_FOCUS \
setdvar ui_show_arrow 0; \
setdvar ui_prestige_unlock_desc "@NULL_EMPTY";
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 1, dvarString( customclass1 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 0, customclass1 ),
;,
IS_ONLINE_GAME && !IS_BASICTRAINING_GAME, ;,
SETUP_HL_CAC( 0 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 1, dvarString( offline_customclass1 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 0, customclass1 ); setdvar offline_custom_name offline_customclass1,
;,
!IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 0 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 1, dvarString( offline_customclass1 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 0, customclass1 ); setdvar offline_custom_name offline_customclass1,
;,
IS_BASICTRAINING_GAME, ;,
SETUP_HL_CAC( 0 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 2, dvarString( customclass2 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 1, customclass2 ),
;,
IS_ONLINE_GAME && !IS_BASICTRAINING_GAME, ;,
SETUP_HL_CAC( 1 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 2, dvarString( offline_customclass2 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 1, customclass2 ); setdvar offline_custom_name offline_customclass2,
;,
IS_BASICTRAINING_GAME, ;,
SETUP_HL_CAC( 1 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 2, dvarString( offline_customclass2 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 1, customclass2 ); setdvar offline_custom_name offline_customclass2,
;,
!IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 1 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 3, dvarString( customclass3 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 2, customclass3 ),
;,
IS_ONLINE_GAME && !IS_BASICTRAINING_GAME, ;,
SETUP_HL_CAC( 2 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 3, dvarString( offline_customclass3 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 2, customclass3 ); setdvar offline_custom_name offline_customclass3,
;,
IS_BASICTRAINING_GAME, ;,
SETUP_HL_CAC( 2 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 3, dvarString( offline_customclass3 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 2, customclass3 ); setdvar offline_custom_name offline_customclass3,
;,
!IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 2 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 4, dvarString( customclass4 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 3, customclass4 ),
;,
IS_ONLINE_GAME && !IS_BASICTRAINING_GAME, ;,
SETUP_HL_CAC( 3 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 4, dvarString( offline_customclass4 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 3, customclass4 ); setdvar offline_custom_name offline_customclass4,
;,
IS_BASICTRAINING_GAME, ;,
SETUP_HL_CAC( 3 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 4, dvarString( offline_customclass4 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 3, customclass4 ); setdvar offline_custom_name offline_customclass4,
;,
!IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 3 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 5, dvarString( customclass5 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 4, customclass5 ),
;,
IS_ONLINE_GAME && !IS_BASICTRAINING_GAME, ;,
SETUP_HL_CAC( 4 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 5, dvarString( offline_customclass5 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 4, customclass5 ); setdvar offline_custom_name offline_customclass5,
;,
IS_BASICTRAINING_GAME, ;,
SETUP_HL_CAC( 4 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 5, dvarString( offline_customclass5 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 4, customclass5 ); setdvar offline_custom_name offline_customclass5,
;,
!IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 4 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 6, dvarString( prestigeclass1 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 5, prestigeclass1 ) CLEAR_ITEM_NEW( FEATURE_PRESTIGE_CLASS_1 ),
;,
!IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_1 ) && IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 5 ) )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX_CUSTOMHL( 6, dvarString( prestigeclass1 ),
SET_CLASS_HIGHLIGHT_INDEX( 5 ) PRESTIGE_FOCUS( "FEATURE_PRESTIGE_CLASS_1", prestigeclass1 );,
PRESTIGE_LEAVE_FOCUS;,
IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_1 ) && IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 5 ) )
CHOICE_NEWICON_VIS( 6, "menu_mp_lobby_new", when( IS_ITEM_NEW( FEATURE_PRESTIGE_CLASS_1 ) && IS_ONLINE_GAME ) )
CHOICE_LOCKEDICON_VIS( 6, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_1 ) && IS_ONLINE_GAME ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 7, dvarString( prestigeclass2 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 6, prestigeclass2 ) CLEAR_ITEM_NEW( FEATURE_PRESTIGE_CLASS_2 ),
;,
!IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_2 ) && IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 6 ) )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX_CUSTOMHL( 7, dvarString( prestigeclass2 ),
SET_CLASS_HIGHLIGHT_INDEX( 6 ) PRESTIGE_FOCUS( "FEATURE_PRESTIGE_CLASS_2", prestigeclass2 );,
PRESTIGE_LEAVE_FOCUS;,
IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_2 ) && IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 6 ) )
CHOICE_NEWICON_VIS( 7, "menu_mp_lobby_new", when( IS_ITEM_NEW( FEATURE_PRESTIGE_CLASS_2 ) && IS_ONLINE_GAME ) )
CHOICE_LOCKEDICON_VIS( 7, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_2 ) && IS_ONLINE_GAME ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 8, dvarString( prestigeclass3 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 7, prestigeclass3 ) CLEAR_ITEM_NEW( FEATURE_PRESTIGE_CLASS_3 ),
;,
!IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_3 ) && IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 7 ) )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX_CUSTOMHL( 8, dvarString( prestigeclass3 ),
SET_CLASS_HIGHLIGHT_INDEX( 7 ) PRESTIGE_FOCUS( "FEATURE_PRESTIGE_CLASS_3", prestigeclass3 );,
PRESTIGE_LEAVE_FOCUS;,
IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_3 ) && IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 7 ) )
CHOICE_NEWICON_VIS( 8, "menu_mp_lobby_new", when( IS_ITEM_NEW( FEATURE_PRESTIGE_CLASS_3 ) && IS_ONLINE_GAME ) )
CHOICE_LOCKEDICON_VIS( 8, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_3 ) && IS_ONLINE_GAME ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 9, dvarString( prestigeclass4 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 8, prestigeclass4 ) CLEAR_ITEM_NEW( FEATURE_PRESTIGE_CLASS_4 ),
;,
!IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_4 ) && IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 8 ) )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX_CUSTOMHL( 9, dvarString( prestigeclass4 ),
SET_CLASS_HIGHLIGHT_INDEX( 8 ) PRESTIGE_FOCUS( "FEATURE_PRESTIGE_CLASS_4", prestigeclass4 );,
PRESTIGE_LEAVE_FOCUS;,
IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_4 ) && IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 8 ) )
CHOICE_NEWICON_VIS( 9, "menu_mp_lobby_new", when( IS_ITEM_NEW( FEATURE_PRESTIGE_CLASS_4 ) && IS_ONLINE_GAME ) )
CHOICE_LOCKEDICON_VIS( 9, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_4 ) && IS_ONLINE_GAME ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX_CUSTOMHL( 10, dvarString( prestigeclass5 ),
SETUP_ACTION_CAC,
SETUP_ONFOCUS_CAC( 9, prestigeclass5 ) CLEAR_ITEM_NEW( FEATURE_PRESTIGE_CLASS_5 ),
;,
!IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_5 ) && IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 9 ) )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX_CUSTOMHL( 10, dvarString( prestigeclass5 ),
SET_CLASS_HIGHLIGHT_INDEX( 9 ) PRESTIGE_FOCUS( "FEATURE_PRESTIGE_CLASS_5", prestigeclass5 );,
PRESTIGE_LEAVE_FOCUS;,
IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_5 ) && IS_ONLINE_GAME, ;,
SETUP_HL_CAC( 9 ) )
CHOICE_NEWICON_VIS( 10, "menu_mp_lobby_new", when( IS_ITEM_NEW( FEATURE_PRESTIGE_CLASS_5 ) && IS_ONLINE_GAME ) )
CHOICE_LOCKEDICON_VIS( 10, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_5 ) && IS_ONLINE_GAME ) )
HINT_TEXT( 12, CHOICE_X_START, dvarString( ui_prestige_unlock_desc ), ( dvarBool( ui_show_arrow ) && ( dvarString( ui_prestige_unlock_desc ) != "" ) ) )
#include "ui_mp/cac_item_info.inc"
#ifndef PC
// RENAME BUTTON =============================================================
itemDef
{
type ITEM_TYPE_BUTTON
rect -165 ( CAC_HEIGHT / 2 ) 50 17 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
text "@PLATFORM_RENAME"
textfont CHOICE_TEXTFONT
textscale TEXTSIZE_DEFAULT
textalign ITEM_ALIGN_BOTTOM_LEFT
execkeyint BUTTON_X {CAC_SETUP_ACTION_RENAME}
visible when( IS_ONLINE_GAME && !IS_BASICTRAINING_GAME )
decoration
}
// ROTATE =============================================================
PREPROC_TEXT_DRAW( 95 (CAC_HEIGHT/2) 50 17 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
"@PLATFORM_ROTATE",
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1 )
itemDef
{
type ITEM_TYPE_BUTTON
rect 190 ( CAC_HEIGHT / 2 ) 50 17 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
text "@PLATFORM_COPY_CLASS"
textfont CHOICE_TEXTFONT
textscale TEXTSIZE_DEFAULT
textalign ITEM_ALIGN_BOTTOM_LEFT
execkeyint BUTTON_Y { open copyClassPopup; }
visible when( IS_ONLINE_GAME && !IS_BASICTRAINING_GAME )
decoration
}
NEW_FRAME_BACK_BUTTON( CAC_WIDTH, CAC_HEIGHT )
#else // #ifndef PC
#undef CHOICE_TEXTSIZE
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
#undef CHOICE_TEXTFONT
#define CHOICE_TEXTFONT UI_FONT_NORMAL
// back button
NEW_FRAME_BACK_BUTTON_ACTION( CAC_WIDTH, CAC_HEIGHT, ON_ESC )
// moved copy class into menu_cac_custom
#endif // #ifndef PC
#include "ui/safearea.menu"
}
}

View File

@ -0,0 +1,903 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#include "ui_mp/custom_mode.inc"
#define CHOICE_SEP_1 2
#define CHOICE_SEP_2 4
#define CHOICE_SEP_3 13
#include "ui/framestyle.inc"
#include "ui_mp/newframe.inc"
#include "ui_mp/common_game_options.inc"
#include "ui/choices_setup_common.menu"
#include "ui/choices_setup_popmenu.menu"
#include "ui_mp/custom_mode_layout.inc"
#undef NEW_FRAME_BUTTON_NAME
#define NEW_FRAME_BUTTON_NAME "custom_game_create_"
#undef CHOICE_BUTTON_NAME
#define CHOICE_BUTTON_NAME NEW_FRAME_BUTTON_NAME
#undef MENUDEF_NAME
#define MENUDEF_NAME custom_game_create
#undef CHOICE_GROUP
#define CHOICE_GROUP "custom_game"
#ifdef PC
#undef CHOICE_TEXTSIZE
#define CHOICE_TEXTSIZE TEXTSIZE_SMALL
#endif //PC
#define CHOICE1_TEXT "@MPUI_RULES_TIME_LIMIT_CAPS"
#define CHOICE1_DESC "@CUSTOM_GAME_TIME_LIMIT_DESC"
#define CHOICE1_DVAR "custom_timelimit"
#define CHOICE1_DVARTEXT CHOICE1_DVAR"_text"
#define CHOICE1_SHOW 1
#define CHOICE1_STR1 "@MPUI_RULES_UNLIMITED_CAPS"
#define CHOICE1_STR2 "@MPUI_RULES_2_5MINUTES_CAPS"
#define CHOICE1_STR3 "@MPUI_RULES_3MINUTES_CAPS"
#define CHOICE1_STR4 "@MPUI_RULES_5MINUTES_CAPS"
#define CHOICE1_STR5 "@MPUI_RULES_8MINUTES_CAPS"
#define CHOICE1_STR6 "@MPUI_RULES_10MINUTES_CAPS"
#define CHOICE1_STR7 "@MPUI_RULES_15MINUTES_CAPS"
#define CHOICE1_STR8 "@MPUI_RULES_20MINUTES_CAPS"
#define CHOICE1_STR9 "@MPUI_RULES_30MINUTES_CAPS"
#define CHOICE1_STR10 ""
#define CHOICE1_STR11 ""
#define CHOICE1_STR12 ""
#define CHOICE1_VAL1 0
#define CHOICE1_VAL2 2.5
#define CHOICE1_VAL3 3
#define CHOICE1_VAL4 5
#define CHOICE1_VAL5 8
#define CHOICE1_VAL6 10
#define CHOICE1_VAL7 15
#define CHOICE1_VAL8 20
#define CHOICE1_VAL9 30
#define CHOICE1_VAL10 0
#define CHOICE1_VAL11 0
#define CHOICE1_VAL12 0
#define CHOICE1_EXEC ;
#define CHOICE1_STRLIST { CHOICE1_STR1 CHOICE1_VAL1 CHOICE1_STR2 CHOICE1_VAL2 CHOICE1_STR3 CHOICE1_VAL3 CHOICE1_STR4 CHOICE1_VAL4 CHOICE1_STR5 CHOICE1_VAL5 CHOICE1_STR6 CHOICE1_VAL6 CHOICE1_STR7 CHOICE1_VAL7 CHOICE1_STR8 CHOICE1_VAL8 CHOICE1_STR9 CHOICE1_VAL9 CHOICE1_STR10 CHOICE1_VAL10 CHOICE1_STR11 CHOICE1_VAL11 CHOICE1_STR12 CHOICE1_VAL12 }
#define CHOICE1_NUMVALS 9
#define CHOICE1_POPUP 1
#define CHOICE2_TEXT "@MPUI_RULES_SCORE_LIMIT_CAPS"
#define CHOICE2_DESC "@CUSTOM_GAME_SCORE_LIMIT_DESC"
#define CHOICE2_DVAR "custom_scorelimit"
#define CHOICE2_DVARTEXT CHOICE2_DVAR"_text"
#define CHOICE2_STR1 "@MPUI_RULES_UNLIMITED_CAPS"
#define CHOICE2_STR2 "@MPUI_RULES_30POINTS_CAPS"
#define CHOICE2_STR3 "@MPUI_RULES_50POINTS_CAPS"
#define CHOICE2_STR4 "@MPUI_RULES_70POINTS_CAPS"
#define CHOICE2_STR5 "@MPUI_RULES_100POINTS_CAPS"
#define CHOICE2_STR6 "@MPUI_RULES_200POINTS_CAPS"
#define CHOICE2_STR7 "@MPUI_RULES_250POINTS_CAPS"
#define CHOICE2_STR8 "@MPUI_RULES_300POINTS_CAPS"
#define CHOICE2_STR9 "@MPUI_RULES_500POINTS_CAPS"
#define CHOICE2_STR10 "@MPUI_RULES_700POINTS_CAPS"
#define CHOICE2_STR11 "@MPUI_RULES_750POINTS_CAPS"
#define CHOICE2_STR12 "@MPUI_RULES_1000POINTS_CAPS"
#define CHOICE2_VAL1 0
#define CHOICE2_VAL2 30
#define CHOICE2_VAL3 50
#define CHOICE2_VAL4 70
#define CHOICE2_VAL5 100
#define CHOICE2_VAL6 200
#define CHOICE2_VAL7 250
#define CHOICE2_VAL8 300
#define CHOICE2_VAL9 500
#define CHOICE2_VAL10 700
#define CHOICE2_VAL11 750
#define CHOICE2_VAL12 1000
#define CHOICE2_EXEC ;
#define CHOICE2_STRLIST { CHOICE2_STR1 CHOICE2_VAL1 CHOICE2_STR2 CHOICE2_VAL2 CHOICE2_STR3 CHOICE2_VAL3 CHOICE2_STR4 CHOICE2_VAL4 CHOICE2_STR5 CHOICE2_VAL5 CHOICE2_STR6 CHOICE2_VAL6 CHOICE2_STR7 CHOICE2_VAL7 CHOICE2_STR8 CHOICE2_VAL8 CHOICE2_STR9 CHOICE2_VAL9 CHOICE2_STR10 CHOICE2_VAL10 CHOICE2_STR11 CHOICE2_VAL11 CHOICE2_STR12 CHOICE2_VAL12 }
#define CHOICE2_NUMVALS 12
#define CHOICE2_POPUP 1
#define CHOICE2_VIS ( dvarString( ui_gametype ) == "dom" || dvarString( ui_gametype ) == "koth" )
#define CHOICE2_ALT_TEXT "@MPUI_RULES_SCORE_LIMIT_CAPS"
#define CHOICE2_ALT_DVAR "custom_scorelimit"
#define CHOICE2_ALT_DVARTEXT CHOICE2_ALT_DVAR"_text"
#define CHOICE2_ALT_STR1 "@MPUI_RULES_UNLIMITED_CAPS"
#define CHOICE2_ALT_STR2 "@MPUI_RULES_750POINTS_CAPS"
#define CHOICE2_ALT_STR3 "@MPUI_RULES_1000POINTS_CAPS"
#define CHOICE2_ALT_STR4 "@MPUI_RULES_1500POINTS_CAPS"
#define CHOICE2_ALT_STR5 "@MPUI_RULES_2500POINTS_CAPS"
#define CHOICE2_ALT_STR6 "@MPUI_RULES_3000POINTS_CAPS"
#define CHOICE2_ALT_STR7 "@MPUI_RULES_5000POINTS_CAPS"
#define CHOICE2_ALT_STR8 "@MPUI_RULES_7000POINTS_CAPS"
#define CHOICE2_ALT_STR9 "@MPUI_RULES_7500POINTS_CAPS"
#define CHOICE2_ALT_STR10 "@MPUI_RULES_10000POINTS_CAPS"
#define CHOICE2_ALT_STR11 "@MPUI_RULES_15000POINTS_CAPS"
#define CHOICE2_ALT_STR12 "@MPUI_RULES_30000POINTS_CAPS"
#define CHOICE2_ALT_VAL1 0
#define CHOICE2_ALT_VAL2 750
#define CHOICE2_ALT_VAL3 1000
#define CHOICE2_ALT_VAL4 1500
#define CHOICE2_ALT_VAL5 2500
#define CHOICE2_ALT_VAL6 3000
#define CHOICE2_ALT_VAL7 5000
#define CHOICE2_ALT_VAL8 7000
#define CHOICE2_ALT_VAL9 7500
#define CHOICE2_ALT_VAL10 10000
#define CHOICE2_ALT_VAL11 15000
#define CHOICE2_ALT_VAL12 30000
#define CHOICE2_ALT_EXEC ;
#define CHOICE2_ALT_STRLIST { CHOICE2_ALT_STR1 CHOICE2_ALT_VAL1 CHOICE2_ALT_STR2 CHOICE2_ALT_VAL2 CHOICE2_ALT_STR3 CHOICE2_ALT_VAL3 CHOICE2_ALT_STR4 CHOICE2_ALT_VAL4 CHOICE2_ALT_STR5 CHOICE2_ALT_VAL5 CHOICE2_ALT_STR6 CHOICE2_ALT_VAL6 CHOICE2_ALT_STR7 CHOICE2_ALT_VAL7 CHOICE2_ALT_STR8 CHOICE2_ALT_VAL8 CHOICE2_ALT_STR9 CHOICE2_ALT_VAL9 CHOICE2_ALT_STR10 CHOICE2_ALT_VAL10 CHOICE2_ALT_STR11 CHOICE2_ALT_VAL11 CHOICE2_ALT_STR12 CHOICE2_ALT_VAL12 }
#define CHOICE2_ALT_NUMVALS 12
#define CHOICE2_ALT_POPUP 1
#define CHOICE2_ALT_VIS ( dvarString( ui_gametype ) == "dm" || dvarString( ui_gametype ) == "tdm" )
#define IS_CHOICE2_VIS ( CHOICE2_VIS || CHOICE2_ALT_VIS )
#undef ON_ESC
#define ON_ESC \
execNow checkIfCustomGametypeChanged; \
close self;
{
menuDef
{
name custom_game_create
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
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
visible when( MenuHasFocus() || dvarBool( ui_custom_save_to_file_share ) )
onOpen
{
execnow ui_animate custom_game_create * highlightOff 0;
activateBlur;
focusFirst;
execNow beginCustomGametypeChanges;
if( IS_CHOICE2_VIS )
{
setLocalVarInt custom_shift_options_up 0;
}
else
{
setLocalVarInt custom_shift_options_up 1;
}
}
onFocus
{
execNow checkIfCustomGametypeChanged;
}
onEsc
{
ON_ESC
}
onClose
{
deactivateBlur;
execNow endCustomGametypeChanges;
if( dvarBool( "ui_custom_haschanged" ) )
{
setdvar customGameMode 1;
execNow "xupdatepartystate";
}
setLocalVarBool ui_choice_hideaccept 0;
}
NEW_FRAME( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT )
NEW_FRAME_TITLE( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT, "@CUSTOM_GAME_CREATE_CAPS", 1 )
NEW_FRAME_SUBTITLE( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT, CUSTOM_GAMETYPE_NAME, 1 )
CUSTOM_MODE_BACKGROUND_WATERMARK
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 1, CHOICE1_TEXT, CHOICE1_DVAR, CHOICE1_STRLIST, exec checkIfCustomGametypeChanged; CHOICE1_EXEC, SET_CHOICE_DESC( "", CHOICE1_DESC, "" ) setLocalVarBool ui_choice_hideaccept 1;, CLEAR_CHOICE_DESC setLocalVarBool ui_choice_hideaccept 0;, 1 )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 2, CHOICE2_TEXT, CHOICE2_DVAR, CHOICE2_STRLIST, exec checkIfCustomGametypeChanged; CHOICE2_EXEC, SET_CHOICE_DESC( "", CHOICE2_DESC, "" ) setLocalVarBool ui_choice_hideaccept 1;, CLEAR_CHOICE_DESC setLocalVarBool ui_choice_hideaccept 0;, CHOICE2_VIS )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 2, CHOICE2_ALT_TEXT, CHOICE2_ALT_DVAR, CHOICE2_ALT_STRLIST, exec checkIfCustomGametypeChanged; CHOICE2_ALT_EXEC, SET_CHOICE_DESC( "", CHOICE2_DESC, "" ) setLocalVarBool ui_choice_hideaccept 1;, CLEAR_CHOICE_DESC setLocalVarBool ui_choice_hideaccept 0;, CHOICE2_ALT_VIS )
#define SHOULD_SHIFT_CHOICES_UP ( localVarInt( custom_shift_options_up ) > 0 )
#define GAME_MODE_RULES_ACTION \
exec openMenu ( "custom_settings_" + dvarString( "ui_gametype" ) );
#define BUTTON_3( itemIndex, visArg ) \
CUSTOM_BUTTON( itemIndex, "@CUSTOM_GAME_MODE_OPTIONS_CAPS", GAME_MODE_RULES_ACTION, "@CUSTOM_GAME_MODE_OPTIONS_DESC", "", visArg )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#define CHOICE_SEP_1 1
#define CHOICE_SEP_2 3
#include "ui/choices_sep_spacing.inc"
BUTTON_3( 2, SHOULD_SHIFT_CHOICES_UP )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#define CHOICE_SEP_1 2
#define CHOICE_SEP_2 4
#include "ui/choices_sep_spacing.inc"
BUTTON_3( 3, !SHOULD_SHIFT_CHOICES_UP )
#define BUTTON_4( itemIndex, visArg ) \
CUSTOM_BUTTON( itemIndex, "@CUSTOM_GENERAL_OPTIONS_CAPS", open "custom_settings_general", "@CUSTOM_GENERAL_OPTIONS_DESC", "", visArg )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#define CHOICE_SEP_1 1
#define CHOICE_SEP_2 3
#include "ui/choices_sep_spacing.inc"
BUTTON_4( 3, SHOULD_SHIFT_CHOICES_UP )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#define CHOICE_SEP_1 2
#define CHOICE_SEP_2 4
#include "ui/choices_sep_spacing.inc"
BUTTON_4( 4, !SHOULD_SHIFT_CHOICES_UP )
#define CUSTOM_OPTION_HIDEACCEPT( dvarName, dvarValue ) \
if( dvarInt( dvarName ) == dvarValue ) \
{ \
setLocalVarBool ui_choice_hideaccept 0; \
} \
else \
{ \
setLocalVarBool ui_choice_hideaccept 1; \
}
#define CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( dvarName, enabledValue, disabledString, enabledString ) \
if( dvarInt( dvarName ) != enabledValue ) \
{ \
execnow set ui_choice_desc ( disabledString ); \
} \
else \
{ \
execnow set ui_choice_desc ( enabledString ); \
}
#define CUSTOM_OPTION_LEAVE_FOCUS \
CLEAR_CHOICE_DESC \
setLocalVarBool ui_choice_hideaccept 0;
#define CUSTOM_OPTION_EXTRA( dvarName, dvarValue, menuName ) \
execKeyInt BUTTON_A \
{ \
if( dvarInt( dvarName ) == dvarValue ) \
{ \
open menuName; \
} \
}
#define CUSTOM_CLASS_ON_FOCUS \
SET_CHOICE_DESC( "", "@CUSTOM_CLASS_EDITOR_DESC", "" ) \
CUSTOM_OPTION_HIDEACCEPT( custom_class_mode, 1 ) \
CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( custom_class_mode, 1, "@CUSTOM_CLASS_EDITOR_DISABLED_DESC", "@CUSTOM_CLASS_EDITOR_DESC" )
#define CUSTOM_CLASS_ACTION \
CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( custom_class_mode, 1, "@CUSTOM_CLASS_EDITOR_DISABLED_DESC", "@CUSTOM_CLASS_EDITOR_DESC" ) \
CUSTOM_OPTION_HIDEACCEPT( custom_class_mode, 1 ) \
if( dvarInt( custom_class_mode ) == 1 ) \
{ \
execNow reset scr_player_healthregentime; \
} \
exec checkIfCustomGametypeChanged;
#define BUTTON_5( itemIndex, visArg ) \
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS_EX(itemIndex, "@CUSTOM_CLASS_EDITOR_CAPS", custom_class_mode, \
{ "@CUSTOM_ALLOW_PLAYER_CLASSES_CAPS" 0 "@CUSTOM_CUSTOM_CLASSES_CAPS" 1 }, \
CUSTOM_CLASS_ACTION, \
CUSTOM_CLASS_ON_FOCUS, CUSTOM_OPTION_LEAVE_FOCUS, visArg, ;, \
CUSTOM_OPTION_EXTRA( custom_class_mode, 1, "custom_classes" ); )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#define CHOICE_SEP_1 1
#define CHOICE_SEP_2 3
#include "ui/choices_sep_spacing.inc"
BUTTON_5( 4, SHOULD_SHIFT_CHOICES_UP )
#ifdef PC
SIMPLE_CHOICE_RECT_OFFSET_BUTTON_SOUND( 4, 6, "@PLATFORM_EDIT", ITEM_ALIGN_MIDDLE_CENTER, open "custom_classes", when(dvarInt(custom_class_mode) == 1 && SHOULD_SHIFT_CHOICES_UP ), 20, CHOICE_SIZE_Y )
#endif //PC
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#define CHOICE_SEP_1 2
#define CHOICE_SEP_2 4
#include "ui/choices_sep_spacing.inc"
BUTTON_5( 5, !SHOULD_SHIFT_CHOICES_UP )
#ifdef PC
SIMPLE_CHOICE_RECT_OFFSET_BUTTON_SOUND( 5, 6, "@PLATFORM_EDIT", ITEM_ALIGN_MIDDLE_CENTER, open "custom_classes", when(dvarInt(custom_class_mode) == 1 && !SHOULD_SHIFT_CHOICES_UP ), 20, CHOICE_SIZE_Y )
#endif //PC
#define CUSTOM_KILLSTREAK_ON_FOCUS \
SET_CHOICE_DESC( "", "@CUSTOM_KILLSTREAK_EDITOR_DESC", "" ) \
CUSTOM_OPTION_HIDEACCEPT( custom_killstreak_mode, 2 ) \
CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( custom_killstreak_mode, 2, "@CUSTOM_KILLSTREAK_EDITOR_DISABLED_DESC", "@CUSTOM_KILLSTREAK_EDITOR_DESC" )
#define CUSTOM_KILLSTREAK_ACTION \
CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( custom_killstreak_mode, 2, "@CUSTOM_KILLSTREAK_EDITOR_DISABLED_DESC", "@CUSTOM_KILLSTREAK_EDITOR_DESC" ) \
CUSTOM_OPTION_HIDEACCEPT( custom_killstreak_mode, 2 ) \
exec checkIfCustomGametypeChanged;
#define BUTTON_6( itemIndex, visArg ) \
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS_EX(itemIndex, "@CUSTOM_KILLSTREAK_EDITOR", custom_killstreak_mode, \
{ "@MPUI_ALLOW_PLAYER_KILLSTREAKS_CAPS" 0 "@MPUI_NO_KILLSTREAKS_CAPS" 1 "@MPUI_CUSTOM_KILLSTREAKS_CAPS" 2 }, \
CUSTOM_KILLSTREAK_ACTION, \
CUSTOM_KILLSTREAK_ON_FOCUS, CUSTOM_OPTION_LEAVE_FOCUS, visArg, ;, \
CUSTOM_OPTION_EXTRA( custom_killstreak_mode, 2, "custom_killstreaks" ); )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#define CHOICE_SEP_1 1
#define CHOICE_SEP_2 3
#include "ui/choices_sep_spacing.inc"
BUTTON_6( 5, SHOULD_SHIFT_CHOICES_UP )
#ifdef PC
SIMPLE_CHOICE_RECT_OFFSET_BUTTON_SOUND( 5, 6, "@PLATFORM_EDIT", ITEM_ALIGN_MIDDLE_CENTER, open "custom_killstreaks", when(dvarInt(custom_killstreak_mode) == 2 && SHOULD_SHIFT_CHOICES_UP ), 20, CHOICE_SIZE_Y )
#endif //PC
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#define CHOICE_SEP_1 2
#define CHOICE_SEP_2 4
#include "ui/choices_sep_spacing.inc"
BUTTON_6( 6, !SHOULD_SHIFT_CHOICES_UP )
#ifdef PC
SIMPLE_CHOICE_RECT_OFFSET_BUTTON_SOUND( 6, 6, "@PLATFORM_EDIT", ITEM_ALIGN_MIDDLE_CENTER, open "custom_killstreaks", when(dvarInt(custom_killstreak_mode) == 2 && !SHOULD_SHIFT_CHOICES_UP ), 20, CHOICE_SIZE_Y )
#endif //PC
#define CUSTOM_PERK_ON_FOCUS \
SET_CHOICE_DESC( "", "@CUSTOM_PERK_EDITOR_DESC", "" ) \
CUSTOM_OPTION_HIDEACCEPT( scr_game_perks, 1 ) \
CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( scr_game_perks, 1, "@CUSTOM_PERK_EDITOR_DISABLED_DESC", "@CUSTOM_PERK_EDITOR_DESC" )
#define CUSTOM_PERK_ACTION \
CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( scr_game_perks, 1, "@CUSTOM_PERK_EDITOR_DISABLED_DESC", "@CUSTOM_PERK_EDITOR_DESC" ) \
CUSTOM_OPTION_HIDEACCEPT( scr_game_perks, 1 ) \
exec checkIfCustomGametypeChanged;
#define BUTTON_7( itemIndex, visArg ) \
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS_EX(itemIndex, "@CUSTOM_PERK_EDITOR_CAPS", scr_game_perks, \
{ "@CUSTOM_DISABLE_PERKS_CAPS" 0 "@CUSTOM_ENABLE_PERKS_CAPS" 1 }, \
CUSTOM_PERK_ACTION, \
CUSTOM_PERK_ON_FOCUS, CUSTOM_OPTION_LEAVE_FOCUS, visArg, ;, \
CUSTOM_OPTION_EXTRA( scr_game_perks, 1, "custom_specialty_editor" ); )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#define CHOICE_SEP_1 1
#define CHOICE_SEP_2 3
#include "ui/choices_sep_spacing.inc"
BUTTON_7( 6, SHOULD_SHIFT_CHOICES_UP )
#ifdef PC
SIMPLE_CHOICE_RECT_OFFSET_BUTTON_SOUND( 6, 6, "@PLATFORM_EDIT", ITEM_ALIGN_MIDDLE_CENTER, open "custom_specialty_editor", when(dvarInt(scr_game_perks) == 1 && SHOULD_SHIFT_CHOICES_UP ), 20, CHOICE_SIZE_Y )
#endif //PC
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#define CHOICE_SEP_1 2
#define CHOICE_SEP_2 4
#include "ui/choices_sep_spacing.inc"
BUTTON_7( 7, !SHOULD_SHIFT_CHOICES_UP )
#ifdef PC
SIMPLE_CHOICE_RECT_OFFSET_BUTTON_SOUND( 7, 6, "@PLATFORM_EDIT", ITEM_ALIGN_MIDDLE_CENTER, open "custom_specialty_editor", when(dvarInt(scr_game_perks) == 1 && !SHOULD_SHIFT_CHOICES_UP ), 20, CHOICE_SIZE_Y )
#endif //PC
// Game Recording Option (on/off)
#define BUTTON_8( itemIndex, visArg ) \
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( itemIndex, "@CUSTOM_GAME_RECORDING_CAPS", demo_recordPrivateMatch, \
{ "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1 }, \
play CHOICE_FOCUS_SOUND;, \
SET_CHOICE_DESC( "", "@CUSTOM_GAME_RECORDING_DESC", "" ), \
CLEAR_CHOICE_DESC, \
visArg && ( dvarInt( xblive_privatematch ) ) )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#undef CHOICE_SEP_3
#define CHOICE_SEP_1 1
#define CHOICE_SEP_2 3
#define CHOICE_SEP_3 6
#include "ui/choices_sep_spacing.inc"
BUTTON_8( 7, SHOULD_SHIFT_CHOICES_UP )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#undef CHOICE_SEP_3
#define CHOICE_SEP_1 2
#define CHOICE_SEP_2 4
#define CHOICE_SEP_3 7
#include "ui/choices_sep_spacing.inc"
BUTTON_8( 8, !SHOULD_SHIFT_CHOICES_UP )
PREPROC_TEXT_DRAW_VIS_EX( NEW_FRAME_CHOICE_X_START (NEW_FRAME_CHOICE_Y_START + 230) CHOICE_SIZE_X 60 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0,
"@CUSTOM_WARN_DEMO_SIZE",
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_ORANGE_RGB 1,
when( dvarInt( xblive_privatematch ) && dvarBool( demo_recordPrivateMatch ) ), autowrapped );
#ifdef PC
// Pregame Enabled (yes/no)
#define BUTTON_9( itemIndex, visArg ) \
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( itemIndex, "@PATCH_PREGAME_ENABLED_CAPS", g_pregame_enabled, \
play CHOICE_FOCUS_SOUND;, \
SET_CHOICE_DESC( "", "@PLATFORM_PREGAME_ENABLED_DESC", "" );, \
CLEAR_CHOICE_DESC, \
visArg, ; )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#undef CHOICE_SEP_3
#undef CHOICE_SEP_4
#define CHOICE_SEP_1 1
#define CHOICE_SEP_2 3
#define CHOICE_SEP_3 6
#define CHOICE_SEP_4 7
#include "ui/choices_sep_spacing.inc"
BUTTON_9( 8, SHOULD_SHIFT_CHOICES_UP )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#undef CHOICE_SEP_3
#undef CHOICE_SEP_4
#define CHOICE_SEP_1 2
#define CHOICE_SEP_2 4
#define CHOICE_SEP_3 7
#define CHOICE_SEP_4 8
#include "ui/choices_sep_spacing.inc"
BUTTON_9( 9, !SHOULD_SHIFT_CHOICES_UP )
// Pregame Minplayers (edit)
#define BUTTON_10( itemIndex, visArg ) \
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( itemIndex, "@PATCH_PREGAME_MINPLAYERS_CAPS", party_minplayers, 3, \
;, \
SET_CHOICE_DESC( "", "@PLATFORM_PREGAME_MINPLAYERS_DESC", "" );, \
CLEAR_CHOICE_DESC, \
visArg, ; )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#undef CHOICE_SEP_3
#undef CHOICE_SEP_4
#define CHOICE_SEP_1 1
#define CHOICE_SEP_2 3
#define CHOICE_SEP_3 6
#define CHOICE_SEP_4 7
#include "ui/choices_sep_spacing.inc"
BUTTON_10( 9, SHOULD_SHIFT_CHOICES_UP )
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#undef CHOICE_SEP_3
#undef CHOICE_SEP_4
#define CHOICE_SEP_1 2
#define CHOICE_SEP_2 4
#define CHOICE_SEP_3 7
#define CHOICE_SEP_4 8
#include "ui/choices_sep_spacing.inc"
BUTTON_10( 10, !SHOULD_SHIFT_CHOICES_UP )
CUSTOM_BUTTON( 14, "@CUSTOM_REVERT_CHANGES_CAPS", open popup_custom_confirm_revert;, "@CUSTOM_REVERT_CHANGES_DESC", "", 1 )
#endif //#ifdef PC
CUSTOM_FRAME_HINT( ui_choice_desc )
#ifdef PC
NEW_FRAME_BACK_BUTTON_ACTION( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT, ON_ESC )
SAVE_TO_FILESHARE_BUTTON_NEW_FRAME_ACTION( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT )
#else //#ifdef PC
NEW_FRAME_BACK_BUTTON( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT )
SAVE_TO_FILESHARE_BUTTON_NEW_FRAME( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT )
#endif //#ifdef PC
#ifndef PC
itemDef
{
type ITEM_TYPE_BUTTON
rect ( 180 ) ( CUSTOM_MODE_FRAME_HEIGHT / 2 + 18 ) 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
origin 0 0
text "@CUSTOM_BUTTON_REVERT_CHANGES"
textfont CHOICE_TEXTFONT
textscale TEXTSIZE_DEFAULT
textalign ITEM_ALIGN_BOTTOM_LEFT
execkeyint BUTTON_Y
{
open popup_custom_confirm_revert;
}
visible 1
decoration
}
CUSTOM_MODE_RESET_TO_DEFAULT_BUTTON( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT, -76, open popup_custom_confirm_revert;, dvarBool( ui_custom_haschanged ) || dvarBool( customGameMode ) )
execKeyInt BUTTON_X
{
close self;
UPLOAD_TO_FILESHARE
}
#endif
}
#ifdef PC
#define SAVE_ORIGINAL_SETTINGS_PC \
exec set orig_host_name ( dvarString( sv_hostname ) ); \
exec set orig_min_ping ( dvarInt( sv_minping ) ); \
exec set orig_max_ping ( dvarInt( sv_maxping ) ); \
exec set orig_password ( dvarString( g_password ) ); \
exec set orig_voice ( dvarInt( sv_voice ) ); \
exec set orig_allow_vote ( dvarInt( g_allowVote ) ); \
exec set orig_sv_vac ( dvarInt( sv_vac ) );
#else
#define SAVE_ORIGINAL_SETTINGS_PC
#endif
#define SAVE_ORIGINAL_SETTINGS \
exec set orig_time ( dvarFloat( ( "scr_" + dvarString( ui_gametype ) + "_timelimit" ) ) ); \
exec set orig_score ( dvarInt( ( "scr_" + dvarString( ui_gametype ) + "_scorelimit" ) ) ); \
exec set temp_time ( dvarFloat( ( "scr_" + dvarString( ui_gametype ) + "_timelimit" ) ) ); \
exec set temp_score ( dvarInt( ( "scr_" + dvarString( ui_gametype ) + "_scorelimit" ) ) ); \
exec set orig_num_bots_friendly ( dvarInt( bot_friends ) ); \
exec set orig_num_bots_enemy ( dvarInt( bot_enemies ) ); \
exec set orig_bot_difficulty ( dvarString( bot_difficulty ) ); \
exec set orig_bot_show_tips ( dvarInt( bot_tips ) ); \
exec set orig_botUseFriendNames ( dvarInt( sv_botUseFriendNames ) ); \
SAVE_ORIGINAL_SETTINGS_PC
#define SAVE_TIME_AND_SCORE \
exec set ( "scr_" + dvarString( ui_gametype ) + "_timelimit" ) ( dvarFloat( temp_time ) ); \
exec set ( "scr_" + dvarString( ui_gametype ) + "_scorelimit" ) ( dvarInt( temp_score ) );
#ifdef PC
#define RESET_TO_ORIGINAL_SETTINGS_PC \
exec set sv_hostname ( dvarString( orig_host_name ) ); \
exec set sv_minping ( dvarInt( orig_min_ping ) ); \
exec set sv_maxping ( dvarInt( orig_max_ping ) ); \
exec set g_password ( dvarString( orig_password ) ); \
exec set sv_voice ( dvarInt( orig_voice ) ); \
exec set g_allowVote ( dvarInt( orig_allow_vote ) ); \
exec set sv_vac ( dvarInt( orig_sv_vac ) );
#else
#define RESET_TO_ORIGINAL_SETTINGS_PC
#endif
#define RESET_TO_ORIGINAL_SETTINGS \
exec set ( "scr_" + dvarString( ui_gametype ) + "_scorelimit" ) ( dvarInt( orig_score ) ); \
exec set ( "scr_" + dvarString( ui_gametype ) + "_timelimit" ) ( dvarFloat( orig_time ) ); \
exec set ( "scr_" + dvarString( ui_gametype ) + "_scorelimit" ) ( dvarInt( orig_score ) ); \
exec set temp_time ( dvarFloat( orig_time ) ); \
exec set temp_score ( dvarInt( orig_score ) ); \
exec set bot_friends ( dvarInt( orig_num_bots_friendly ) ); \
exec set bot_enemies ( dvarInt( orig_num_bots_enemy ) ); \
exec set bot_difficulty ( dvarString( orig_bot_difficulty ) ); \
exec set bot_tips ( dvarInt( orig_bot_show_tips ) ); \
exec set sv_botUseFriendNames ( dvarInt( orig_botUseFriendNames ) ); \
RESET_TO_ORIGINAL_SETTINGS_PC
#undef CHOICE_SEP_1
#undef CHOICE_SEP_2
#include "ui/choices_sep_spacing.inc"
#ifdef PC
#define BUTTON_SPACING 20
#define REVERT_CHANGES_OFFSET ( getTextWidth( locString( "@PLATFORM_BACK" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) + 8 + BUTTON_SPACING )
#define BASIC_TRAINING_REVERT_CHANGES_BUTTON( FRAME_WIDTH, FRAME_HEIGHT, xArg, actionArg, visArg ) \
NEW_FRAME_BUTTON_PC_LEFT_OFFSET( FRAME_WIDTH, FRAME_HEIGHT, REVERT_CHANGES_OFFSET, "@PLATFORM_REVERT_CHANGES", actionArg, visArg )
#else // #ifdef PC
#define BASIC_TRAINING_REVERT_CHANGES_BUTTON( FRAME_WIDTH, FRAME_HEIGHT, xArg, actionArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_BUTTON \
rect ( xArg ) ( FRAME_HEIGHT / 2 + 18 ) 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
origin 0 0 \
text "@PLATFORM_REVERT_CHANGES" \
textfont CHOICE_TEXTFONT \
textscale TEXTSIZE_DEFAULT \
textalign ITEM_ALIGN_BOTTOM_LEFT \
execkeyint BUTTON_BACK \
{ \
actionArg \
} \
visible when( visArg ) \
decoration \
}
#endif // #else // #ifdef PC
#undef NEW_FRAME_BUTTON_NAME
#define NEW_FRAME_BUTTON_NAME "basictraining_settings_"
#undef CHOICE_BUTTON_NAME
#define CHOICE_BUTTON_NAME "basictraining_settings_"
#ifdef PC
#undef CHOICE_TEXTSIZE
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
#endif //PC
#undef MENUDEF_NAME
#define MENUDEF_NAME basictraining_settings
menuDef
{
name basictraining_settings
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
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
{
execnow ui_animate basictraining_settings * highlightOff 0;
activateBlur;
focusFirst;
execnow "Updatedvarsfromprofile";
SAVE_ORIGINAL_SETTINGS
exec "set com_maxclients 30";
exec "set sv_maxclients 30";
exec "set party_maxplayers 30";
exec "set sv_minping 0";
exec "set sv_vac 0";
exec "set bot_tips 0";
}
onEsc
{
close self;
}
onClose
{
SAVE_TIME_AND_SCORE
exec "updategamerprofile";
deactivateBlur;
}
NEW_FRAME( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT )
NEW_FRAME_TITLE( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT, "@MPUI_BASICTRAINING_SETTINGS_CAPS", 1 )
#undef A_BUTTON_OFFSET_X
#define A_BUTTON_OFFSET_X 100000
#define IS_WAGER_GAME \
( dvarString( "ui_gametype" ) == "hlnd" || dvarString( "ui_gametype" ) == "oic" || dvarString( "ui_gametype" ) == "gun" || dvarString( "ui_gametype" ) == "shrp" )
#define IS_TEAM_GAME \
( dvarString( "ui_gametype" ) == "tdm" || dvarString( "ui_gametype" ) == "hc_tdm" || dvarString( "ui_gametype" ) == "sd" || dvarString( "ui_gametype" ) == "dom" || dvarString( "ui_gametype" ) == "koth" || dvarString( "ui_gametype" ) == "dem" || dvarString( "ui_gametype" ) == "ctf" || dvarString( "ui_gametype" ) == "sab" )
#define IS_FFA_GAME \
( dvarString( "ui_gametype" ) == "dm" || dvarString( "ui_gametype" ) == "hc_dm" )
#define BALANCE_TEAMS_FRIENDLY \
if( dvarInt( bot_friends ) + dvarInt( bot_enemies ) > dvarInt( party_maxplayers ) ) \
{ \
exec set bot_enemies ( dvarInt( party_maxplayers ) - dvarInt( bot_friends ) ); \
} \
#define BALANCE_TEAMS_ENEMY \
if( dvarInt( bot_enemies ) + dvarInt( bot_friends ) > dvarInt( party_maxplayers ) ) \
{ \
exec set bot_friends ( dvarInt( party_maxplayers ) - dvarInt( bot_enemies ) ); \
} \
// tdm & hardcore tdm
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 1, CHOICE1_TEXT, temp_time, CHOICE1_STRLIST, ;, SET_CHOICE_DESC( "", CHOICE1_DESC, "" ), CLEAR_CHOICE_DESC, IS_TEAM_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 2, CHOICE2_TEXT, temp_score, CHOICE2_STRLIST, exec checkIfCustomGametypeChanged; CHOICE2_EXEC, SET_CHOICE_DESC( "", CHOICE2_DESC, "" ) setLocalVarBool ui_choice_hideaccept 1;, CLEAR_CHOICE_DESC setLocalVarBool ui_choice_hideaccept 0;, CHOICE2_VIS && IS_TEAM_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 2, CHOICE2_ALT_TEXT, temp_score, CHOICE2_ALT_STRLIST, exec checkIfCustomGametypeChanged; CHOICE2_ALT_EXEC, SET_CHOICE_DESC( "", CHOICE2_DESC, "" ) setLocalVarBool ui_choice_hideaccept 1;, CLEAR_CHOICE_DESC setLocalVarBool ui_choice_hideaccept 0;, CHOICE2_ALT_VIS && IS_TEAM_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 3, "@MPUI_FRIENDLY_PRACTICE_DUMMIES_CAPS",
bot_friends,
{ "@MPUI_1_BOTS" 1 "@MPUI_2_BOTS" 2 "@MPUI_3_BOTS" 3 "@MPUI_4_BOTS" 4 "@MPUI_5_BOTS" 5 "@MPUI_6_BOTS" 6 "@MPUI_7_BOTS" 7 "@MPUI_8_BOTS" 8 "@MPUI_9_BOTS" 9 "@MPUI_10_BOTS" 10 "@MPUI_11_BOTS" 11 },
BALANCE_TEAMS_FRIENDLY;,
SET_CHOICE_DESC( "", "@MPUI_FRIENDLY_PRACTICE_DUMMIES_DESC", "" ),
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 4, "@MPUI_FRIENDLY_PRACTICE_DUMMIES_CAPS",
bot_friends_extra,
{ "0" 0 "1" 1 "2" 2 "3" 3 "4" 4 "5" 5 "6" 6 "7" 7 "8" 8 "9" 9 "10" 10 "11" 11 "12" 12 "13" 13 "14" 14 "15" 15 "16" 16 "17" 17 "18" 18 "19" 19 },
;,
SET_CHOICE_DESC( "", "@MPUI_FRIENDLY_PRACTICE_DUMMIES_DESC", "" ),
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 5, "@MPUI_ENEMY_PRACTICE_DUMMIES_CAPS",
bot_enemies,
{ "@MPUI_1_BOTS" 1 "@MPUI_2_BOTS" 2 "@MPUI_3_BOTS" 3 "@MPUI_4_BOTS" 4 "@MPUI_5_BOTS" 5 "@MPUI_6_BOTS" 6 "@MPUI_7_BOTS" 7 "@MPUI_8_BOTS" 8 "@MPUI_9_BOTS" 9 "@MPUI_10_BOTS" 10 "@MPUI_11_BOTS" 11 },
BALANCE_TEAMS_ENEMY;,
SET_CHOICE_DESC( "", "@MPUI_ENEMY_PRACTICE_DUMMIES_DESC", "" ),
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 6, "@MPUI_ENEMY_PRACTICE_DUMMIES_CAPS",
bot_enemies_extra,
{ "-1" -1 "0" 0 "1" 1 "2" 2 "3" 3 "4" 4 "5" 5 "6" 6 "7" 7 "8" 8 "9" 9 "10" 10 "11" 11 "12" 12 "13" 13 "14" 14 "15" 15 "16" 16 "17" 17 "18" 18 },
;,
SET_CHOICE_DESC( "", "@MPUI_ENEMY_PRACTICE_DUMMIES_DESC", "" ),
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
FRAME_CHOICE_DVARSTRINGLIST_FOCUS_VIS( 7, "@MENU_BASICTRAINING_DIFFICULTY_CAPS",
bot_difficulty,
{ "@MENU_BASICTRAINING_EASY_CAPS" easy "@MENU_BASICTRAINING_NORMAL_CAPS" normal "@MENU_BASICTRAINING_HARD_CAPS" hard "@MENU_BASICTRAINING_FU_CAPS" fu },
;,
SET_CHOICE_DESC( "", "@MPUI_BASICTRAINING_DIFFICULTY_DESC", "" ),
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 8, "@PLATFORM_BASICTRAINING_FRIEND_NAMES_CAPS",
sv_botUseFriendNames,
{ "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1 },
;,
SET_CHOICE_DESC( "", "@MPUI_BASICTRAINING_FRIEND_NAMES_DESC", "" ),
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 9, "REASONABLE SETUPS",
bot_reasonable,
{ "DISABLED" 0 "ENABLED" 1 },
;,
SET_CHOICE_DESC( "", "Bots will only use weapons, perks and killstreaks that are 'good' and/or 'overpowered' for themselves.", "" ),
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
// ffa & hardcore ffa
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 1, CHOICE1_TEXT, temp_time, CHOICE1_STRLIST, ;, SET_CHOICE_DESC( "", CHOICE1_DESC, "" ), CLEAR_CHOICE_DESC, IS_FFA_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 2, CHOICE2_ALT_TEXT, temp_score, CHOICE2_ALT_STRLIST, ;, SET_CHOICE_DESC( "", CHOICE2_DESC, "" ), CLEAR_CHOICE_DESC, IS_FFA_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 3, "@MPUI_ENEMY_PRACTICE_DUMMIES_CAPS",
bot_enemies,
{ "@MPUI_1_BOTS" 1 "@MPUI_2_BOTS" 2 "@MPUI_3_BOTS" 3 "@MPUI_4_BOTS" 4 "@MPUI_5_BOTS" 5 "@MPUI_6_BOTS" 6 "@MPUI_7_BOTS" 7 "@MPUI_8_BOTS" 8 "@MPUI_9_BOTS" 9 "@MPUI_10_BOTS" 10 "@MPUI_11_BOTS" 11 },
BALANCE_TEAMS_ENEMY;,
SET_CHOICE_DESC( "", "@MPUI_ENEMY_PRACTICE_DUMMIES_DESC", "" ),
CLEAR_CHOICE_DESC, IS_FFA_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 4, "@MPUI_ENEMY_PRACTICE_DUMMIES_CAPS",
bot_enemies_extra,
{ "-1" -1 "0" 0 "1" 1 "2" 2 "3" 3 "4" 4 "5" 5 "6" 6 "7" 7 "8" 8 "9" 9 "10" 10 "11" 11 "12" 12 "13" 13 "14" 14 "15" 15 "16" 16 "17" 17 "18" 18 },
;,
SET_CHOICE_DESC( "", "@MPUI_ENEMY_PRACTICE_DUMMIES_DESC", "" ),
CLEAR_CHOICE_DESC, IS_FFA_GAME )
FRAME_CHOICE_DVARSTRINGLIST_FOCUS_VIS( 5, "@MENU_BASICTRAINING_DIFFICULTY_CAPS",
bot_difficulty,
{ "@MENU_BASICTRAINING_EASY_CAPS" easy "@MENU_BASICTRAINING_NORMAL_CAPS" normal "@MENU_BASICTRAINING_HARD_CAPS" hard "@MENU_BASICTRAINING_FU_CAPS" fu },
;,
SET_CHOICE_DESC( "", "@MPUI_BASICTRAINING_DIFFICULTY_DESC", "" ),
CLEAR_CHOICE_DESC, IS_FFA_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 6, "@PLATFORM_BASICTRAINING_FRIEND_NAMES_CAPS",
sv_botUseFriendNames,
{ "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1 },
;,
SET_CHOICE_DESC( "", "@MPUI_BASICTRAINING_FRIEND_NAMES_DESC", "" ),
CLEAR_CHOICE_DESC, IS_FFA_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 7, "REASONABLE SETUPS",
bot_reasonable,
{ "DISABLED" 0 "ENABLED" 1 },
;,
SET_CHOICE_DESC( "", "Bots will only use weapons, perks and killstreaks that are 'good' and/or 'overpowered' for themselves.", "" ),
CLEAR_CHOICE_DESC, IS_FFA_GAME )
// wager matches
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 1, "@MPUI_ENEMY_PRACTICE_DUMMIES_CAPS",
bot_enemies,
{ "@MPUI_1_BOTS" 1 "@MPUI_2_BOTS" 2 "@MPUI_3_BOTS" 3 "@MPUI_4_BOTS" 4 "@MPUI_5_BOTS" 5 "@MPUI_6_BOTS" 6 "@MPUI_7_BOTS" 7 "@MPUI_8_BOTS" 8 "@MPUI_9_BOTS" 9 "@MPUI_10_BOTS" 10 "@MPUI_11_BOTS" 11 },
BALANCE_TEAMS_ENEMY;,
SET_CHOICE_DESC( "", "@MPUI_ENEMY_PRACTICE_DUMMIES_DESC", "" ),
CLEAR_CHOICE_DESC, IS_WAGER_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 2, "@MPUI_ENEMY_PRACTICE_DUMMIES_CAPS",
bot_enemies_extra,
{ "-1" -1 "0" 0 "1" 1 "2" 2 "3" 3 "4" 4 "5" 5 "6" 6 "7" 7 "8" 8 "9" 9 "10" 10 "11" 11 "12" 12 "13" 13 "14" 14 "15" 15 "16" 16 "17" 17 "18" 18 },
;,
SET_CHOICE_DESC( "", "@MPUI_ENEMY_PRACTICE_DUMMIES_DESC", "" ),
CLEAR_CHOICE_DESC, IS_WAGER_GAME )
FRAME_CHOICE_DVARSTRINGLIST_FOCUS_VIS( 3, "@MENU_BASICTRAINING_DIFFICULTY_CAPS",
bot_difficulty,
{ "@MENU_BASICTRAINING_EASY_CAPS" easy "@MENU_BASICTRAINING_NORMAL_CAPS" normal "@MENU_BASICTRAINING_HARD_CAPS" hard "@MENU_BASICTRAINING_FU_CAPS" fu },
;,
SET_CHOICE_DESC( "", "@MPUI_BASICTRAINING_DIFFICULTY_DESC", "" ),
CLEAR_CHOICE_DESC, IS_WAGER_GAME )
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 4, "@PLATFORM_BASICTRAINING_FRIEND_NAMES_CAPS",
sv_botUseFriendNames,
{ "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1 },
;,
SET_CHOICE_DESC( "", "@MPUI_BASICTRAINING_FRIEND_NAMES_DESC", "" ),
CLEAR_CHOICE_DESC, IS_WAGER_GAME )
#undef CHOICE_DVAR_WIDTH_OFFSET
#define CHOICE_DVAR_WIDTH_OFFSET 60
FRAME_CHOICE_DVAREDIT_FOCUS_VIS_EX( 10, "@PLATFORM_SERVER_NAME_CAPS",
"sv_hostname", 20, 20,
;,
SET_CHOICE_DESC( "", "@PATCH_SERVER_NAME_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( 11, "@PLATFORM_MAXIMUM_PING_CAPS",
"sv_maxping", 4,
;,
SET_CHOICE_DESC( "", "@PATCH_MAXIMUM_PING_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
FRAME_CHOICE_DVAREDIT_FOCUS_VIS_EX( 12, "@PLATFORM_PASSWORD1_CAPS",
"g_password", 12, 12,
;,
SET_CHOICE_DESC( "", "@PATCH_PASSWORD_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 13, "@PLATFORM_VOICECHAT_CAPS",
"sv_voice",
;,
SET_CHOICE_DESC( "", "@PATCH_VOICECHAT_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
#undef CHOICE_TEXT_COLOR
#define CHOICE_TEXT_COLOR 1 1 1 1
#undef A_BUTTON_OFFSET_X
#define A_BUTTON_OFFSET_X 0
CUSTOM_FRAME_HINT( ui_choice_desc )
BASIC_TRAINING_REVERT_CHANGES_BUTTON( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT, -76, open popup_basictraining_confirm_revert;, 1 )
#ifdef PC
NEW_FRAME_BACK_BUTTON_ACTION( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT, close self; )
#else //#ifdef PC
NEW_FRAME_BACK_BUTTON( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT )
#endif //#ifdef PC
}
#include "ui_mp/popupstyle.inc"
// mekberg: No idea why the above include is not setting this. I've wasted a half hour trying to figure why. Instead I'm just going to hack this here.
#ifdef PC
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X (POPUP_WIDTH-(POPUP_SIDE_PAD*2))
#endif // PC
menuDef
{
#define CUSTOM_ERROR_ONESC \
uiScript clearError; \
close self;
SYSTEM_POPUP_SETUP_VIS( popup_custom_game_error, ;, CUSTOM_ERROR_ONESC, 1 )
SYSTEM_POPUP_TITLE_VIS( dvarString( "com_errorTitle" ), 1 )
SYSTEM_POPUP_SUBTITLE_VIS( dvarString( "com_errorMessage" ), 1 )
#define CUSTOM_ERROR_ACTION \
play CHOICE_FOCUS_SOUND; \
uiScript clearError; \
close self;
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 1, "@MENU_EXIT", CUSTOM_ERROR_ACTION, play CHOICE_FOCUS_SOUND, ;, 1, ; )
#ifndef PC
SYSTEM_POPUP_BACK_BUTTON
#endif //#ifndef PC
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( "popup_custom_confirm_revert", setfocus popup_custom_confirm_revert_2, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@CUSTOM_REVERT_CHANGES_CONFIRM_TITLE", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_YES_CAPS", execNow "revertCustomGametypeChanges"; exec "xupdatepartystate"; close self, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_NO_CAPS", close self, 1, name popup_custom_confirm_revert_2 )
#ifndef PC
SYSTEM_POPUP_BACK_BUTTON
#endif //#ifndef PC
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( "popup_basictraining_confirm_revert", setfocus popup_basictraining_confirm_revert_2, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MPUI_REVERT_BASICTRAINING_CONFIRM_TITLE", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_YES", RESET_TO_ORIGINAL_SETTINGS close self, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_NO", close self, 1, name popup_basictraining_confirm_revert_2 )
#ifndef PC
SYSTEM_POPUP_BACK_BUTTON
#endif //#ifndef PC
}
}

View File

@ -0,0 +1,538 @@
#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, ; )
}
}

File diff suppressed because it is too large Load Diff