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

21
.gitignore vendored Normal file
View File

@ -0,0 +1,21 @@
# Ignore everything in repository root
/*
# Files to not ignore
!/.gitignore
!/z_devserver.bat
!/z_dev.bat
!/z_serverdev.bat
# Folder to not ignore
!/mods/
/mods/*
!/mods/mp_bots/
!/mods/mp_patch/
*.log
missingasset.csv
*.ff
*.files
/mods/mp_bots/out/*
!/mods/mp_bots/out/readme.txt

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

View File

@ -0,0 +1,30 @@
#include clientscripts\mp\_utility;
#include clientscripts\mp\_rewindobjects;
init( localClientNum )
{
level._effect["fx_claymore_laser"] = loadfx( "weapon/claymore/fx_claymore_laser" );
}
spawned( localClientNum )
{
self endon( "entityshutdown" );
self waittill_dobj(localClientNum);
while( true )
{
if( IsDefined( self.stunned ) && self.stunned )
{
wait( 0.1 );
continue;
}
self.claymoreLaserFXId = PlayFXOnTag( localClientNum, level._effect["fx_claymore_laser"], self, "tag_fx" );
self waittill( "stunned" );
stopfx(localClientNum, self.claymoreLaserFXId);
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,958 @@
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
/*
Sabotage
// ...etc...
*/
/*QUAKED mp_sab_spawn_axis (0.75 0.0 0.5) (-16 -16 0) (16 16 72)
Axis players spawn away from enemies and near their team at one of these positions.*/
/*QUAKED mp_sab_spawn_allies (0.0 0.75 0.5) (-16 -16 0) (16 16 72)
Allied players spawn away from enemies and near their team at one of these positions.*/
/*QUAKED mp_sab_spawn_axis_start (1.0 0.0 0.5) (-16 -16 0) (16 16 72)
Axis players spawn away from enemies and near their team at one of these positions at the start of a round.*/
/*QUAKED mp_sab_spawn_allies_start (0.0 1.0 0.5) (-16 -16 0) (16 16 72)
Allied players spawn away from enemies and near their team at one of these positions at the start of a round.*/
main()
{
if ( GetDvar( #"mapname") == "mp_background" )
return;
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks();
level.teamBased = true;
level.overrideTeamScore = true;
maps\mp\gametypes\_globallogic_utils::registerRoundSwitchDvar( level.gameType, 0, 0, 9 );
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 10, 0, 1440 );
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 0, 0, 500 );
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 1, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 0, 0, 10 );
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 0, 0, 10 );
maps\mp\gametypes\_weapons::registerGrenadeLauncherDudDvar( level.gameType, 10, 0, 1440 );
maps\mp\gametypes\_weapons::registerThrownGrenadeDudDvar( level.gameType, 0, 0, 1440 );
maps\mp\gametypes\_weapons::registerKillstreakDelay( level.gameType, 0, 0, 1440 );
maps\mp\gametypes\_globallogic::registerFriendlyFireDelay( level.gameType, 15, 0, 1440 );
level.onStartGameType = ::onStartGameType;
level.onSpawnPlayer = ::onSpawnPlayer;
level.onSpawnPlayerUnified = ::onSpawnPlayerUnified;
level.gamemodeSpawnDvars = ::sab_gamemodeSpawnDvars;
level.onRoundEndGame = ::onRoundEndGame;
if ( !game["tiebreaker"] )
{
level.onPrecacheGameType = ::onPrecacheGameType;
level.onTimeLimit = ::onTimeLimit;
level.onDeadEvent = ::onDeadEvent;
level.onRoundSwitch = ::onRoundSwitch;
level.onPlayerKilled = ::onPlayerKilled;
level.endGameOnScoreLimit = false;
game["dialog"]["gametype"] = "sab_start";
game["dialog"]["gametype_hardcore"] = "hcsab_start";
game["dialog"]["offense_obj"] = "destroy_start";
game["dialog"]["defense_obj"] = "destroy_start";
game["dialog"]["sudden_death"] = "suddendeath";
game["dialog"]["sudden_death_boost"] = "generic_boost";
}
else
{
level.onEndGame = ::onEndGame;
level.endGameOnScoreLimit = false;
game["dialog"]["gametype"] = "sab_start";
game["dialog"]["gametype_hardcore"] = "hcsab_start";
game["dialog"]["offense_obj"] = "generic_boost";
game["dialog"]["defense_obj"] = "generic_boost";
game["dialog"]["sudden_death"] = "suddendeath";
game["dialog"]["sudden_death_boost"] = "generic_boost";
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( "tb", 1, 1, 1 );
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( "tb", 0, 0, 0 );
}
badtrig = getent( "sab_bomb_defuse_allies", "targetname" );
if ( isdefined( badtrig ) )
badtrig delete();
badtrig = getent( "sab_bomb_defuse_axis", "targetname" );
if ( isdefined( badtrig ) )
badtrig delete();
level.lastDialogTime = 0;
// Sets the scoreboard columns and determines with data is sent across the network
setscoreboardcolumns( "kills", "deaths", "plants", "defuses" );
}
onPrecacheGameType()
{
game["bomb_dropped_sound"] = "mp_war_objective_lost";
game["bomb_recovered_sound"] = "mp_war_objective_taken";
precacheShader("waypoint_bomb");
precacheShader("waypoint_kill");
precacheShader("waypoint_bomb_enemy");
precacheShader("waypoint_defend");
precacheShader("waypoint_defuse");
precacheShader("waypoint_target");
precacheShader("compass_waypoint_bomb");
precacheShader("compass_waypoint_defend");
precacheShader("compass_waypoint_defuse");
precacheShader("compass_waypoint_target");
precacheShader("hud_suitcase_bomb");
precacheString(&"MP_EXPLOSIVES_RECOVERED_BY");
precacheString(&"MP_EXPLOSIVES_RECOVERED_BY");
precacheString(&"MP_EXPLOSIVES_DROPPED_BY");
precacheString(&"MP_EXPLOSIVES_PLANTED_BY");
precacheString(&"MP_EXPLOSIVES_DEFUSED_BY");
precacheString(&"MP_YOU_HAVE_RECOVERED_THE_BOMB");
precacheString(&"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES");
precacheString(&"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES");
precacheString(&"MP_PLANTING_EXPLOSIVE");
precacheString(&"MP_DEFUSING_EXPLOSIVE");
precacheString(&"MP_TARGET_DESTROYED");
precacheString(&"MP_NO_RESPAWN");
precacheString(&"MP_TIE_BREAKER");
precacheString(&"MP_NO_RESPAWN");
precacheString(&"MP_SUDDEN_DEATH");
}
onRoundSwitch()
{
if ( !isdefined( game["switchedsides"] ) )
game["switchedsides"] = false;
if ( game["teamScores"]["allies"] == level.scorelimit - 1 && game["teamScores"]["axis"] == level.scorelimit - 1 )
{
level.halftimeType = "overtime";
level.halftimeSubCaption = &"MP_TIE_BREAKER";
game["tiebreaker"] = true;
}
else
{
level.halftimeType = "halftime";
game["switchedsides"] = !game["switchedsides"];
}
}
onStartGameType()
{
if ( !isdefined( game["switchedsides"] ) )
game["switchedsides"] = false;
setClientNameMode("auto_change");
game["strings"]["target_destroyed"] = &"MP_TARGET_DESTROYED";
if ( !game["tiebreaker"] )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_SAB" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_SAB" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_SAB" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_SAB" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_SAB_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_SAB_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_SAB_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_SAB_HINT" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_TDM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_TDM" );
if ( level.splitscreen )
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_TDM" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_TDM" );
}
else
{
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_TDM_SCORE" );
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_TDM_SCORE" );
}
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_TDM_HINT" );
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_TDM_HINT" );
}
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sab_spawn_allies_start" );
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sab_spawn_axis_start" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_sab_spawn_allies" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_sab_spawn_axis" );
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setMapCenter( level.mapCenter );
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
level.spawn_axis = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_sab_spawn_axis" );
level.spawn_allies = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_sab_spawn_allies" );
level.spawn_axis_start = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_sab_spawn_axis_start" );
level.spawn_allies_start = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_sab_spawn_allies_start" );
maps\mp\gametypes\_rank::registerScoreInfo( "plant", 500 );
maps\mp\gametypes\_rank::registerScoreInfo( "defuse", 500 );
allowed[0] = "sab";
maps\mp\gametypes\_gameobjects::main(allowed);
// now that the game objects have been deleted place the influencers
maps\mp\gametypes\_spawning::create_map_placed_influencers();
thread updateGametypeDvars();
thread sabotage();
}
onTimeLimit()
{
if ( level.inOvertime )
return;
thread onOvertime();
}
onOvertime()
{
level endon ( "game_ended" );
level.timeLimitOverride = true;
level.inOvertime = true;
maps\mp\gametypes\_globallogic_audio::leaderDialog( "sudden_death" );
maps\mp\gametypes\_globallogic_audio::leaderDialog( "sudden_death_boost" );
for ( index = 0; index < level.players.size; index++ )
{
level.players[index] notify("force_spawn");
level.players[index] thread maps\mp\gametypes\_hud_message::oldNotifyMessage( &"MP_SUDDEN_DEATH", &"MP_NO_RESPAWN", undefined, (1, 0, 0), "mp_last_stand" );
level.players[index] setClientUIVisibilityFlag( "g_compassShowEnemies", 1 );
}
SetMatchTalkFlag( "DeadChatWithDead", 1 );
SetMatchTalkFlag( "DeadChatWithTeam", 0 );
SetMatchTalkFlag( "DeadHearTeamLiving", 0 );
SetMatchTalkFlag( "DeadHearAllLiving", 0 );
SetMatchTalkFlag( "EveryoneHearsEveryone", 0 );
waitTime = 0;
while ( waitTime < 90 )
{
if ( !level.bombPlanted )
{
waitTime += 1;
setGameEndTime( getTime() + ((90-waitTime)*1000) );
}
wait ( 1.0 );
}
thread maps\mp\gametypes\_globallogic::endGame( "tie", game["strings"]["tie"] );
}
onDeadEvent( team )
{
if ( level.bombExploded )
return;
if ( team == "all" )
{
if ( level.bombPlanted )
{
[[level._setTeamScore]]( level.bombPlantedBy, [[level._getTeamScore]]( level.bombPlantedBy ) + 1 );
thread maps\mp\gametypes\_globallogic::endGame( level.bombPlantedBy, game["strings"][level.bombPlantedBy+"_mission_accomplished"] );
}
else
{
thread maps\mp\gametypes\_globallogic::endGame( "tie", game["strings"]["tie"] );
}
}
else if ( level.bombPlanted )
{
if ( team == level.bombPlantedBy )
{
level.plantingTeamDead = true;
return;
}
[[level._setTeamScore]]( level.bombPlantedBy, [[level._getTeamScore]]( level.bombPlantedBy ) + 1 );
thread maps\mp\gametypes\_globallogic::endGame( level.bombPlantedBy, game["strings"][level.otherTeam[level.bombPlantedBy]+"_eliminated"] );
}
else
{
[[level._setTeamScore]]( level.otherTeam[team], [[level._getTeamScore]]( level.otherTeam[team] ) + 1 );
thread maps\mp\gametypes\_globallogic::endGame( level.otherTeam[team], game["strings"][team+"_eliminated"] );
}
}
onSpawnPlayerUnified()
{
self.isPlanting = false;
self.isDefusing = false;
self.isBombCarrier = false;
if ( game["tiebreaker"] )
{
self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( &"MP_TIE_BREAKER", &"MP_NO_RESPAWN", undefined, (1, 0, 0), "mp_last_stand" );
hintMessage = maps\mp\gametypes\_globallogic_ui::getObjectiveHintText( self.pers["team"] );
if ( isDefined( hintMessage ) )
self DisplayGameModeMessage( hintMessage, "uin_alert_slideout" );
self setClientUIVisibilityFlag( "g_compassShowEnemies", 1 );
// this is being redundantly set everytime a player spawns
// need to move this to a once only for eveyone when tiebreaker round
// starts
SetMatchTalkFlag( "DeadChatWithDead", 1 );
SetMatchTalkFlag( "DeadChatWithTeam", 0 );
SetMatchTalkFlag( "DeadHearTeamLiving", 0 );
SetMatchTalkFlag( "DeadHearAllLiving", 0 );
SetMatchTalkFlag( "EveryoneHearsEveryone", 0 );
}
maps\mp\gametypes\_spawning::onSpawnPlayer_Unified();
}
onSpawnPlayer()
{
self.isPlanting = false;
self.isDefusing = false;
self.isBombCarrier = false;
spawnteam = self.pers["team"];
if ( game["switchedsides"] )
spawnteam = getOtherTeam( spawnteam );
if ( level.useStartSpawns )
{
if (spawnteam == "axis")
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(level.spawn_axis_start);
else
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(level.spawn_allies_start);
}
else
{
if (spawnteam == "axis")
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam(level.spawn_axis);
else
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam(level.spawn_allies);
}
if ( game["tiebreaker"] )
{
self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( &"MP_TIE_BREAKER", &"MP_NO_RESPAWN", undefined, (1, 0, 0), "mp_last_stand" );
hintMessage = maps\mp\gametypes\_globallogic_ui::getObjectiveHintText( self.pers["team"] );
if ( isDefined( hintMessage ) )
self DisplayGameModeMessage( hintMessage, "uin_alert_slideout" );
self setClientUIVisibilityFlag( "g_compassShowEnemies", 1 );
// this is being redundantly set everytime a player spawns
// need to move this to a once only for eveyone when tiebreaker round
// starts
SetMatchTalkFlag( "DeadChatWithDead", 1 );
SetMatchTalkFlag( "DeadChatWithTeam", 0 );
SetMatchTalkFlag( "DeadHearTeamLiving", 0 );
SetMatchTalkFlag( "DeadHearAllLiving", 0 );
SetMatchTalkFlag( "EveryoneHearsEveryone", 0 );
}
assert( isDefined(spawnpoint) );
self spawn( spawnpoint.origin, spawnpoint.angles, "sab" );
}
updateGametypeDvars()
{
level.plantTime = dvarFloatValue( "planttime", 5, 0, 20 );
level.defuseTime = dvarFloatValue( "defusetime", 5, 0, 20 );
level.bombTimer = dvarFloatValue( "bombtimer", 45, 1, 300 );
level.hotPotato = dvarIntValue( "hotpotato", 1, 0, 1 );
}
sabotage()
{
level.bombPlanted = false;
level.bombExploded = false;
level._effect["bombexplosion"] = loadfx("maps/mp_maps/fx_mp_exp_bomb");
trigger = getEnt( "sab_bomb_pickup_trig", "targetname" );
if ( !isDefined( trigger ) )
{
error( "No sab_bomb_pickup_trig trigger found in map." );
return;
}
visuals[0] = getEnt( "sab_bomb", "targetname" );
if ( !isDefined( visuals[0] ) )
{
error( "No sab_bomb script_model found in map." );
return;
}
//precacheModel( "t5_weapon_briefcase_world" );
//visuals[0] setModel( "t5_weapon_briefcase_world" );
level.sabBomb = maps\mp\gametypes\_gameobjects::createCarryObject( "neutral", trigger, visuals, (0,0,32) );
level.sabBomb maps\mp\gametypes\_gameobjects::allowCarry( "any" );
level.sabBomb maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_bomb" );
level.sabBomb maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_bomb" );
level.sabBomb maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_bomb" );
level.sabBomb maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" );
level.sabBomb maps\mp\gametypes\_gameobjects::setCarryIcon( "hud_suitcase_bomb" );
level.sabBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
level.sabBomb.objIDPingEnemy = true;
level.sabBomb.onPickup = ::onPickup;
level.sabBomb.onDrop = ::onDrop;
level.sabBomb.allowWeapons = true;
level.sabBomb.objPoints["allies"].archived = true;
level.sabBomb.objPoints["axis"].archived = true;
level.sabBomb.autoResetTime = 60.0;
if ( !isDefined( getEnt( "sab_bomb_axis", "targetname" ) ) )
{
error("No sab_bomb_axis trigger found in map.");
return;
}
if ( !isDefined( getEnt( "sab_bomb_allies", "targetname" ) ) )
{
error("No sab_bomb_allies trigger found in map.");
return;
}
if ( game["switchedsides"] )
{
level.bombZones["allies"] = createBombZone( "allies", getEnt( "sab_bomb_axis", "targetname" ) );
level.bombZones["axis"] = createBombZone( "axis", getEnt( "sab_bomb_allies", "targetname" ) );
}
else
{
level.bombZones["allies"] = createBombZone( "allies", getEnt( "sab_bomb_allies", "targetname" ) );
level.bombZones["axis"] = createBombZone( "axis", getEnt( "sab_bomb_axis", "targetname" ) );
}
}
createBombZone( team, trigger )
{
visuals = getEntArray( trigger.target, "targetname" );
bombZone = maps\mp\gametypes\_gameobjects::createUseObject( team, trigger, visuals, (0,0,64) );
bombZone resetBombsite();
bombZone.onUse = ::onUse;
bombZone.onBeginUse = ::onBeginUse;
bombZone.onEndUse = ::onEndUse;
bombZone.onCantUse = ::onCantUse;
bombZone.useWeapon = "briefcase_bomb_mp";
bombZone.visuals[0].killCamEnt = spawn( "script_model", bombZone.visuals[0].origin + (0,0,128) );
for ( i = 0; i < visuals.size; i++ )
{
if ( isDefined( visuals[i].script_exploder ) )
{
bombZone.exploderIndex = visuals[i].script_exploder;
break;
}
}
return bombZone;
}
onBeginUse( player )
{
// planted the bomb
if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
{
player.isPlanting = true;
player thread maps\mp\gametypes\_battlechatter_mp::gametypeSpecificBattleChatter( "sd_friendlyplant", player.pers["team"] );
}
else
{
player.isDefusing = true;
player thread maps\mp\gametypes\_battlechatter_mp::gametypeSpecificBattleChatter( "sd_enemyplant", player.pers["team"] );
}
player playSound( "fly_bomb_raise_plr" );
}
onEndUse( team, player, result )
{
if ( !isAlive( player ) )
return;
player.isPlanting = false;
player.isDefusing = false;
player notify( "event_ended" );
}
onPickup( player )
{
level notify ( "bomb_picked_up" );
self.autoResetTime = 60.0;
level.useStartSpawns = false;
team = player.pers["team"];
if ( team == "allies" )
otherTeam = "axis";
else
otherTeam = "allies";
//player iPrintLnBold( &"MP_YOU_HAVE_RECOVERED_THE_BOMB" );
player playLocalSound( "mp_suitcase_pickup" );
player logString( "bomb taken" );
excludeList[0] = player;
if( getTime() - level.lastDialogTime > 10000 )
{
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_acquired", team );
player maps\mp\gametypes\_globallogic_audio::leaderDialogOnPlayer( "obj_destroy", "bomb" );
if ( !level.splitscreen )
{
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_taken", otherTeam );
maps\mp\gametypes\_globallogic_audio::leaderDialog( "obj_defend", otherTeam );
}
level.lastDialogTime = getTime();
}
player.isBombCarrier = true;
player maps\mp\gametypes\_persistence::statAddWithGameType( "PICKUPS", 1 );
// recovered the bomb before abandonment timer elapsed
if ( team == self maps\mp\gametypes\_gameobjects::getOwnerTeam() )
{
printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", team, player );
playSoundOnPlayers( game["bomb_recovered_sound"], team );
}
else
{
printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", team, player );
// printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", otherTeam, &"MP_THE_ENEMY" );
playSoundOnPlayers( game["bomb_recovered_sound"] );
}
self maps\mp\gametypes\_gameobjects::setOwnerTeam( team );
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_target" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_kill" );
self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );
level.bombZones[team] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
level.bombZones[otherTeam] maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
level.bombZones[otherTeam].trigger SetInvisibleToAll();
level.bombZones[otherTeam].trigger SetVisibleToPlayer( player );
}
onDrop( player )
{
if ( level.bombPlanted )
{
}
else
{
if ( isDefined( player ) )
printOnTeamArg( &"MP_EXPLOSIVES_DROPPED_BY", self maps\mp\gametypes\_gameobjects::getOwnerTeam(), player );
// else
// printOnTeamArg( &"MP_EXPLOSIVES_DROPPED_BY", self maps\mp\gametypes\_gameobjects::getOwnerTeam(), &"MP_YOUR_TEAM" );
playSoundOnPlayers( game["bomb_dropped_sound"], self maps\mp\gametypes\_gameobjects::getOwnerTeam() );
if ( isDefined( player ) )
player logString( "bomb dropped" );
else
logString( "bomb dropped" );
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_lost", self maps\mp\gametypes\_gameobjects::getOwnerTeam() );
player notify( "event_ended" );
level.bombZones["axis"].trigger SetInvisibleToAll();
level.bombZones["allies"].trigger SetInvisibleToAll();
thread abandonmentThink( 0.0 );
}
}
abandonmentThink( delay )
{
level endon ( "bomb_picked_up" );
wait ( delay );
if ( isDefined( self.carrier ) )
return;
if ( self maps\mp\gametypes\_gameobjects::getOwnerTeam() == "allies" )
otherTeam = "axis";
else
otherTeam = "allies";
// printOnTeamArg( &"MP_EXPLOSIVES_DROPPED_BY", otherTeam, &"MP_THE_ENEMY" );
playSoundOnPlayers( game["bomb_dropped_sound"], otherTeam );
self maps\mp\gametypes\_gameobjects::setOwnerTeam( "neutral" );
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_bomb" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_bomb" );
self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_bomb" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" );
level.bombZones["allies"] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
level.bombZones["axis"] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
}
onUse( player )
{
team = player.pers["team"];
otherTeam = level.otherTeam[team];
// planted the bomb
if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
{
player notify ( "bomb_planted" );
// removed old playsound entry CDC 2/18/10
// player playSound( "mpl_sab_bomb_plant" );
player logString( "bomb planted" );
if( isdefined(player.pers["plants"]) )
{
player.pers["plants"]++;
player.plants = player.pers["plants"];
}
player maps\mp\_medals::saboteur();
player maps\mp\gametypes\_persistence::statAddWithGameType( "PLANTS", 1 );
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_PLANTED_BY", player );
//thread playSoundOnPlayers( "mus_sab_planted"+"_"+level.teamPostfix[team] );
// Play Action music
//maps\mp\_music::setmusicstate( "ACTION" );
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_planted", team );
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_planted", otherTeam );
maps\mp\gametypes\_globallogic_score::givePlayerScore( "plant", player );
//player thread [[level.onXPEvent]]( "plant" );
level thread bombPlanted( self, player.pers["team"] );
level.bombOwner = player;
player.isBombCarrier = false;
// self.keyObject maps\mp\gametypes\_gameobjects::disableObject();
level.sabBomb.autoResetTime = undefined;
level.sabBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" );
level.sabBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
level.sabBomb maps\mp\gametypes\_gameobjects::setDropped();
self.useWeapon = "briefcase_bomb_defuse_mp";
self setUpForDefusing();
}
else // defused the bomb
{
player notify ( "bomb_defused" );
player logString( "bomb defused" );
if( isdefined(player.pers["defuses"]) )
{
player.pers["defuses"]++;
player.defuses = player.pers["defuses"];
}
player maps\mp\_medals::hero();
player maps\mp\gametypes\_persistence::statAddWithGameType( "DEFUSES", 1 );
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_DEFUSED_BY", player );
//thread playSoundOnPlayers( "mus_sab_defused"+"_"+level.teamPostfix[team] );
maps\mp\gametypes\_globallogic_audio::set_music_on_team( "UNDERSCORE", "both", true );
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_defused" );
maps\mp\gametypes\_globallogic_score::givePlayerScore( "defuse", player );
//player thread [[level.onXPEvent]]( "defuse" );
level thread bombDefused( self );
if ( level.inOverTime && isDefined( level.plantingTeamDead ) )
{
thread maps\mp\gametypes\_globallogic::endGame( player.pers["team"], game["strings"][level.bombPlantedBy+"_eliminated"] );
return;
}
self resetBombsite();
level.sabBomb maps\mp\gametypes\_gameobjects::allowCarry( "any" );
level.sabBomb maps\mp\gametypes\_gameobjects::setPickedUp( player );
}
}
onCantUse( player )
{
player iPrintLnBold( &"MP_CANT_PLANT_WITHOUT_BOMB" );
}
bombPlanted( destroyedObj, team )
{
game["challenge"][team]["plantedBomb"] = true;
maps\mp\gametypes\_globallogic_utils::pauseTimer();
level.bombPlanted = true;
level.bombPlantedBy = team;
level.timeLimitOverride = true;
setMatchFlag( "bomb_timer", 1 );
// communicate timer information to menus
setGameEndTime( int( getTime() + (level.bombTimer * 1000) ) );
destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic_utils::playTickingSound( "mpl_sab_ui_suitcasebomb_timer" );
starttime = gettime();
bombTimerWait();
setMatchFlag( "bomb_timer", 0 );
destroyedObj.visuals[0] maps\mp\gametypes\_globallogic_utils::stopTickingSound();
if ( !level.bombPlanted )
{
if ( level.hotPotato )
{
timePassed = (gettime() - starttime) / 1000;
level.bombTimer -= timePassed;
}
return;
}
/*
for ( index = 0; index < level.players.size; index++ )
{
player = level.players[index];
if ( player.pers["team"] == team )
player thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "Your team scored!", undefined, undefined, (0, 1, 0) );
else if ( player.pers["team"] == level.otherTeam[team] )
player thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "Enemy team scored!", undefined, undefined, (1, 0, 0) );
}
*/
explosionOrigin = level.sabBomb.visuals[0].origin+(0,0,12);
level.bombExploded = true;
if ( isdefined( level.bombowner ) )
{
destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, level.bombowner, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_BLOWUP_BY", level.bombowner );
level.bombowner maps\mp\_medals::bomber();
level.bombowner maps\mp\gametypes\_persistence::statAddWithGameType( "DESTRUCTIONS", 1 );
}
else
destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, undefined, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
rot = randomfloat(360);
explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) );
triggerFx( explosionEffect );
thread playSoundinSpace( "mpl_sab_exp_suitcase_bomb_main", explosionOrigin );
if ( isDefined( destroyedObj.exploderIndex ) )
exploder( destroyedObj.exploderIndex );
[[level._setTeamScore]]( team, [[level._getTeamScore]]( team ) + 1 );
setGameEndTime( 0 );
level.bombZones["allies"] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
level.bombZones["axis"] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
wait 3;
// end the round without resetting the timer
thread maps\mp\gametypes\_globallogic::endGame( team, game["strings"]["target_destroyed"] );
}
bombTimerWait()
{
level endon("bomb_defused");
maps\mp\gametypes\_hostmigration::waitLongDurationWithGameEndTimeUpdate( level.bombTimer );
}
resetBombsite()
{
self maps\mp\gametypes\_gameobjects::allowUse( "enemy" );
self maps\mp\gametypes\_gameobjects::setUseTime( level.plantTime );
self maps\mp\gametypes\_gameobjects::setUseText( &"MP_PLANTING_EXPLOSIVE" );
self maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" );
self maps\mp\gametypes\_gameobjects::setKeyObject( level.sabBomb );
self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );
self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_target" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_target" );
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
self.trigger SetInvisibleToAll();
self.useWeapon = "briefcase_bomb_mp";
}
setUpForDefusing()
{
self maps\mp\gametypes\_gameobjects::allowUse( "friendly" );
self maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime );
self maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" );
self maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" );
self maps\mp\gametypes\_gameobjects::setKeyObject( undefined );
self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defuse" );
self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" );
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_defend" );
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
self.trigger SetVisibleToAll();
}
bombDefused( object )
{
setMatchFlag( "bomb_timer", 0 );
maps\mp\gametypes\_globallogic_utils::resumeTimer();
level.bombPlanted = false;
if ( !level.inOvertime )
level.timeLimitOverride = false;
level notify("bomb_defused");
}
onPlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration)
{
inBombZone = false;
inBombZoneTeam = "none";
if ( isdefined( sWeapon ) && maps\mp\gametypes\_hardpoints::isKillstreakWeapon( sWeapon ) )
return;
if ( isdefined( level.bombZones["allies"] ) )
{
dist = Distance2d(self.origin, level.bombZones["allies"].curorigin);
if ( dist < level.defaultOffenseRadius )
{
inBombZoneTeam = "allies";
inBombZone = true;
}
}
if ( isdefined( level.bombZones["axis"] ) )
{
dist = Distance2d(self.origin, level.bombZones["axis"].curorigin);
if ( dist < level.defaultOffenseRadius )
{
inBombZoneTeam = "axis";
inBombZone = true;
}
}
if ( inBombZone && isPlayer( attacker ) && attacker.pers["team"] != self.pers["team"] )
{
if ( inBombZoneTeam == self.pers["team"] )
{
attacker maps\mp\_medals::offense( sWeapon );
attacker maps\mp\gametypes\_persistence::statAddWithGameType( "OFFENDS", 1 );
}
else
{
if( isdefined(attacker.pers["defends"]) )
{
attacker.pers["defends"]++;
attacker.defends = attacker.pers["defends"];
}
attacker maps\mp\_medals::defense( sWeapon );
attacker maps\mp\gametypes\_persistence::statAddWithGameType( "DEFENDS", 1 );
}
}
if ( isPlayer( attacker ) && attacker.pers["team"] != self.pers["team"] && isdefined( self.isBombCarrier ) && self.isBombCarrier == true )
attacker maps\mp\_challenges::killedBombCarrier();
}
onEndGame( winningTeam )
{
if ( isdefined( winningTeam ) && (winningTeam == "allies" || winningTeam == "axis") )
[[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 );
}
onRoundEndGame( roundWinner )
{
if ( game["roundswon"]["allies"] == game["roundswon"]["axis"] )
winner = "tie";
else if ( game["roundswon"]["axis"] > game["roundswon"]["allies"] )
winner = "axis";
else
winner = "allies";
return winner;
}
sab_gamemodeSpawnDvars(reset_dvars)
{
ss = level.spawnsystem;
// sabotage: influencer around friendly base
ss.sab_friendly_base_influencer_score = set_dvar_float_if_unset("scr_spawn_sab_friendly_base_influencer_score", "100", reset_dvars);
ss.sab_friendly_base_influencer_score_curve = set_dvar_if_unset("scr_spawn_sab_friendly_base_influencer_score_curve", "constant", reset_dvars);
ss.sab_friendly_base_influencer_radius = set_dvar_float_if_unset("scr_spawn_sab_friendly_base_influencer_radius", "" + 15.0*get_player_height(), reset_dvars);
// sabotage: influencer around enemy base
ss.sab_enemy_base_influencer_score = set_dvar_float_if_unset("scr_spawn_sab_enemy_base_influencer_score", "-500", reset_dvars);
ss.sab_enemy_base_influencer_score_curve = set_dvar_if_unset("scr_spawn_sab_enemy_base_influencer_score_curve", "constant", reset_dvars);
ss.sab_enemy_base_influencer_radius = set_dvar_float_if_unset("scr_spawn_sab_enemy_base_influencer_radius", "" + 15.0*get_player_height(), reset_dvars);
// sabotage: negative influencer around carrier
ss.sab_carrier_influencer_score = set_dvar_float_if_unset("scr_spawn_sab_carrier_influencer_score", "-75", reset_dvars);
ss.sab_carrier_influencer_score_curve = set_dvar_if_unset("scr_spawn_sab_carrier_influencer_score_curve", "linear", reset_dvars);
ss.sab_carrier_influencer_radius = set_dvar_float_if_unset("scr_spawn_sab_carrier_influencer_radius", "" + 8.0*get_player_height(), reset_dvars);
}

View File

@ -0,0 +1,152 @@
#include maps\mp\_utility;
#include common_scripts\utility;
main()
{
//needs to be first for create fx
maps\mp\mp_array_fx::main();
precachemodel("collision_geo_10x10x512");
precachemodel("collision_geo_64x64x64");
precachemodel("collision_wall_64x64x10");
precachemodel("collision_wall_512x512x10");
precachemodel("collision_geo_64x64x256");
precachemodel("p_glo_concrete_barrier_damaged");
maps\mp\_load::main();
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
maps\mp\_compass::setupMiniMap("compass_map_mp_array_wager");
}
else
{
maps\mp\_compass::setupMiniMap("compass_map_mp_array");
}
maps\mp\mp_array_amb::main();
// If the team nationalites change in this file,
// you must update the team nationality in the level's csc file as well!
maps\mp\gametypes\_teamset_winterspecops::level_init();
// Set up the default range of the compass
setdvar("compassmaxrange","2100");
// Set up some generic War Flag Names.
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
// collision keeping players from poking their heads into the tree near B3.
spawncollision("collision_geo_10x10x512","collider",(1397, 1095, 346), (0, 0, 0));
spawncollision("collision_geo_10x10x512","collider",(1387, 1095, 346), (0, 0, 0));
// collision to prevent players from jumping behind electrical cabinets and getting stuck
spawncollision("collision_geo_64x64x64","collider",(-399, 1615, 614), (0, 15, 0));
spawncollision("collision_wall_64x64x10","collider",(-445, 1593, 642), (0, 150, 0));
// collision that will keep player from jumping out of the map and landing in the rocks.
spawncollision("collision_wall_512x512x10","collider",(-1682, 1046, 496), (0, 30, 0));
// collision to stop players from getting stuck behind the steel girders.
spawncollision("collision_geo_64x64x64","collider",(-387, 307, 346), (0, 360, 0));
// spawn collision underneathe the corner of the center building. This is to keep players from calling the RCXD and pushing themselves outside of the map.
spawncollision("collision_geo_64x64x256","collider",(-852, 852, 496), (0,15,90));
spawncollision("collision_geo_64x64x256","collider",(-788, 652, 492), (0,15,90));
// spawn a trigger to keep players from planting turrets into the large tanks.
addNoTurretTrigger( (-692, 3292, 500), 180, 800 );
addNoTurretTrigger( (-1236, 3292, 500), 180, 800 );
// spawn a couple of K Rails to make sense of the collision spawned under the center building.
kRail1 = Spawn("script_model", (-824, 672, 480) );
if ( IsDefined(kRail1) )
{
kRail1.angles = (0, 105, 0);
kRail1 SetModel("p_glo_concrete_barrier_damaged");
}
kRail2 = Spawn("script_model", (-804, 600, 468) );
if ( IsDefined(kRail2) )
{
kRail2.angles = (15, 285, 0);
kRail2 SetModel("p_glo_concrete_barrier_damaged");
}
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
radar_move_init();
}
radar_move_init()
{
level endon ("game_ended");
dish_top = GetEnt( "dish_top", "targetname" );
dish_base = GetEnt( "dish_base", "targetname" );
dish_inside = GetEnt( "dish_inside", "targetname" );
dish_gears = GetEntArray( "dish_gear", "targetname");
total_time_for_rotation_outside = 240;
total_time_for_rotation_inside = 60;
dish_top LinkTo(dish_base);
dish_base thread rotate_dish_top(total_time_for_rotation_outside);
dish_inside thread rotate_dish_top(total_time_for_rotation_inside);
if(dish_gears.size > 0)
{
array_thread(dish_gears, ::rotate_dish_gears, total_time_for_rotation_inside);
}
}
rotate_dish_top( time )
{
self endon ("game_ended");
while(1)
{
self RotateYaw( 360, time );
self waittill( "rotatedone" );
}
}
rotate_dish_gears( time )
{
self endon ("game_ended");
gear_ratio = 5.0 / 60.0;
inverse_gear_ratio = 1.0 / gear_ratio;
while(1)
{
self RotateYaw( 360 * inverse_gear_ratio, time );
self waittill( "rotatedone" );
}
}
addNoTurretTrigger( position, radius, height )
{
while( !IsDefined( level.noTurretPlacementTriggers ) )
wait( 0.1 );
trigger = Spawn( "trigger_radius", position, 0, radius, height );
level.noTurretPlacementTriggers[level.noTurretPlacementTriggers.size] = trigger;
}

View File

@ -0,0 +1,40 @@
#include maps\mp\_utility;
main()
{
//needs to be first for create fx
maps\mp\mp_cairo_fx::main();
precachemodel("collision_geo_10x10x512");
precachemodel("collision_wall_128x128x10");
maps\mp\_load::main();
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
maps\mp\_compass::setupMiniMap("compass_map_mp_cairo_wager");
}
else
{
maps\mp\_compass::setupMiniMap("compass_map_mp_cairo");
}
maps\mp\mp_cairo_amb::main();
// If the team nationalites change in this file,
// you must update the team nationality in the level's csc file as well!
maps\mp\gametypes\_teamset_cubans::level_init();
//setdvar("compassmaxrange","2100");
// spawn collision to prevent players from standing inside telephone poles
spawncollision("collision_geo_10x10x512","collider",(2264, -240, -61), (0, 0, 0));
spawncollision("collision_geo_10x10x512","collider",(-1437, -529, -61), (0, 0, 0));
// spawn collision to prevent players from standing on top of a doorway behind the cigar building
spawncollision("collision_wall_128x128x10","collider",(716, 1181, 219), (0, 270, 0));
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
}

View File

@ -0,0 +1,716 @@
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\_events;
main()
{
precachemodel("tag_origin");
level.onSpawnIntermission = ::cosmodrome_intermission;
/#
level thread devgui_cosmodrome();
execdevgui( "devgui_mp_cosmodrome" );
#/
//needs to be first for create fx
maps\mp\mp_cosmodrome_fx::main();
precachemodel("collision_wall_128x128x10");
precachemodel("collision_geo_128x128x128");
precachemodel("collision_wall_512x512x10");
precachemodel("collision_geo_mc_8x560x190");
precachemodel("collision_geo_mc_4x52x190");
precachemodel("collision_geo_mc_4x156x190");
maps\mp\_load::main();
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
maps\mp\_compass::setupMiniMap("compass_map_mp_cosmodrome_wager");
}
else
{
maps\mp\_compass::setupMiniMap("compass_map_mp_cosmodrome");
}
maps\mp\mp_cosmodrome_amb::main();
// If the team nationalites change in this file,
// you must update the team nationality in the level's csc file as well!
maps\mp\gametypes\_teamset_urbanspecops::level_init();
level thread rocket_arm_think();
level thread rocket_think();
level thread radar_dish_think();
level thread distant_rockets_think();
// spawn collision to prevent players from sneaking under a small area by the rocket
spawncollision("collision_wall_128x128x10","collider",(1558, -179, -362), (0, 225, 0));
// spawn collision to prevent players from sneaking inside 2 vents
spawncollision("collision_wall_128x128x10","collider",(-699, 1457, -60), (0, 270, 0));
spawncollision("collision_wall_128x128x10","collider",(-699, 1329, -60), (0, 270, 0));
// spawn collision to prevent players from strafe jumping onto pipes.
spawncollision("collision_geo_128x128x128","collider",(1408.5, 863, -126.5), (0, 0, 0));
spawncollision("collision_geo_128x128x128","collider",(1536.5, 863, -126.5), (0, 0, 0));
// spawn collision to prevent players from jumping up onto walls by the rocket
spawncollision("collision_wall_512x512x10","collider",(1224, -160, 240), (0, 0, 0));
spawncollision("collision_wall_512x512x10","collider",(1348, -160, 240), (0, 0, 0));
// Spawn collision to keep players from walking onto a small ledge of collision on the green girders.
spawncollision("collision_wall_128x128x10","collider",(1911, 1018, -82), (0, 270, 0));
// not sure if this is the best way to determine that the map has been trimmed down
if ( isSmallMapVersion() )
{
//spawning missile clip collision to catch grenades, rockets and crossbow bolts on the wager match boundary
spawncollision("collision_geo_mc_8x560x190","collider",(-393, 396.5, -72), (0, 270, 0));
spawncollision("collision_geo_mc_4x52x190","collider",(-358, 676.5, -74), (0, 0, 0));
spawncollision("collision_geo_mc_4x156x190","collider",(-328.5, 758, -74), (0, 270, 0));
}
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
SetDvar( "scr_spawn_enemy_influencer_radius", 1700 );
SetDvar( "scr_spawn_dead_friend_influencer_radius", 1300 );
SetDvar( "scr_spawn_dead_friend_influencer_timeout_seconds", 10 );
SetDvar( "scr_spawn_dead_friend_influencer_count", 7 );
}
isSmallMapVersion()
{
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
return true;
}
gametype = getDvar( #"g_gametype" );
if ( gametype == "oic" )
return true;
if ( gametype == "hlnd" )
return true;
if ( gametype == "shrp" )
return true;
if ( gametype == "gun" )
return true;
return false;
}
cosmodrome_intermission()
{
maps\mp\gametypes\_globallogic_defaults::default_onSpawnIntermission();
rocket_base = GetEnt( "cosmodrome_rocket_base", "script_noteworthy" );
if ( !IsDefined( rocket_base ) )
{
return;
}
if ( IsDefined( level.rocket_camera ) && level.rocket_camera == true )
{
lookat = Spawn( "script_model", rocket_base.origin + ( 0, 0, 1024 ) );
lookat SetModel( "tag_origin" );
lookat LinkTo( rocket_base );
self CameraSetPosition( self.origin );
self CameraSetLookAt( lookat );
self CameraActivate( true );
}
}
rocket_arm_think()
{
start_pitch = set_dvar_int_if_unset( "scr_rocket_arm_pitch", "90" );
rotate_time = set_dvar_int_if_unset( "scr_rocket_arm_rotate_secs", "30" );
wait_time = set_dvar_int_if_unset( "scr_rocket_arm_wait_secs", "5" );
arm_base = GetEnt( "cosmodrome_rocket_arm_base", "targetname" );
AssertEx( IsDefined( arm_base ), "Unable to find entity with targetname: 'cosmodrome_rocket_arm_base'" );
arm = GetEntArray( "cosmodrome_rocket_arm", "targetname" );
AssertEx( IsDefined( arm ), "Unable to find entity with targetname: 'cosmodrome_rocket_arm'" );
for ( i = 0; i < arm.size; i++ )
{
arm[i] LinkTo( arm_base );
}
if ( !IsDefined( arm_base.angles_target ) )
{
arm_base.angles_target = arm_base.angles;
}
arm_base.angles = ( start_pitch, arm_base.angles[1], arm_base.angles[2] );
//IPrintLnBold ("rocket is MOVING?");
wait ( wait_time );
//IPrintLnBold ("start arm sound");
arm_base playloopsound("evt_rocket_lp",.2);
arm_base PlaySound ("evt_rocket_start");
arm_base RotateTo( arm_base.angles_target, rotate_time );
wait(rotate_time);
arm_base stoploopsound(.3);
arm_base PlaySound ("evt_rocket_end");
// IPrintLnBold (rotate_time);
// stop loppsound with fade
// play oneshot attach
// stop loop sound
}
rocket_prelaunch( rocket_base )
{
//this will play vo for countdown and delay the launch by 10 seconds
snd_countdown ();
// move the claw arms away from the rocket
claw_r = GetEntArray("claw_r", "targetname");
claw_l = GetEntArray("claw_l", "targetname");
claw_arm_r = GetEntArray("claw_arm_r", "targetname");
claw_arm_l = GetEntArray("claw_arm_l", "targetname");
mover_r = GetEnt("claw_r_mover", "targetname");
mover_l = GetEnt("claw_l_mover", "targetname");
move_here_r = GetEnt("claw_r_move_here", "targetname");
move_here_l = GetEnt("claw_l_move_here", "targetname");
for(i = 0 ; i < claw_r.size; i++)
{
claw_r[i] LinkTo(mover_r);
}
for(i = 0 ; i < claw_l.size; i++)
{
claw_l[i] LinkTo(mover_l);
}
mover_r MoveTo(move_here_r.origin, 3.0);
mover_l MoveTo(move_here_l.origin, 3.0);
// play sound on the arms
thread snd_rocket_gantry ( mover_r, mover_l);
wait(4.0);
for(i = 0; i < claw_r.size; i++)
{
claw_r[i] Unlink();
claw_r[i] LinkTo(move_here_r);
}
for(i = 0; i < claw_l.size; i++)
{
claw_l[i] Unlink();
claw_l[i] LinkTo(move_here_l);
}
for(i = 0; i < claw_arm_r.size; i++)
{
claw_arm_r[i] LinkTo(move_here_r);
}
for(i = 0; i < claw_arm_l.size; i++)
{
claw_arm_l[i] LinkTo(move_here_l);
}
move_here_r RotateYaw(75, 3.0);
move_here_l RotateYaw(-75, 3.0);
// wait to launch
rocket_base playsound ("evt_cosmo_launch");
playsoundatposition("evt_cosmo_air_distf",(0,0,0));
playsoundatposition("evt_cosmo_air_distr",(0,0,0));
wait(5);
}
Rocket_Think()
{
level.const_fx_exploder_rocket_coolant = 2;
level.rocket_camera = false;
flag_init( "rocket_launch_grenade_detonate" );
rocket = GetEntArray( "cosmodrome_rocket", "targetname" );
AssertEx( IsDefined( rocket ), "Unable to find entity with targetname: 'cosmodrome_rocket'" );
array_thread( rocket, ::rocket_sticky_grenade_think );
rocket_base = GetEnt( "cosmodrome_rocket_base", "script_noteworthy" );
AssertEx( IsDefined( rocket_base ), "Unable to find entity with script_noteworthy: 'cosmodrome_rocket_base'" );
level.rocket_base = rocket_base;
rocket_damage_triggers = GetEntArray( "cosmodrome_rocket_damage_trigger", "targetname" );
rocket_collision = GetEntArray( "rocket_collision", "targetname" );
killCamEnt = spawn( "script_model", rocket_base.origin );
rocket_base.killCamEnt = killCamEnt;
killCamEnt.startTime = gettime();
killCamEnt linkTo( rocket_base, "tag_origin", (50,0,-1000), ( 0,0,0 ) );
rocket_timer_init();
wait( 3 );
exploder( level.const_fx_exploder_rocket_coolant );
event = level waittill_any_return( "rocket_launch", "rocket_launch_skip_prelaunch" );
if ( event == "rocket_launch" )
{
rocket_prelaunch( rocket_base );
}
level.rocket_camera = true;
// pre-launch fx
earthquake_origin = rocket_base GetTagOrigin( "tag_engine" );
earthquake( .25, 4, earthquake_origin, 4096 );
//play 3d launch aounds on rocket_base, and 2 st 2d sounds
wait( 3.5 );
flag_set( "rocket_launch_grenade_detonate" );
// launch fx
earthquake( .35, 15, earthquake_origin, 4096 );
array_thread( rocket_damage_triggers, ::rocket_damage_think );
array_thread( rocket_damage_triggers, ::destroy_greandes_in_trigger );
rocket_base SetClientFlag( level.const_flag_rocket_fx );
exploder_stop( level.const_fx_exploder_rocket_coolant );
// move pieces
array_thread( rocket, ::rocket_move );
// stop damage
wait( 6 );
level notify( "rocket_damage_stop" );
wait( 2 );
level.rocket_camera = false;
for ( i = 0; i < rocket_damage_triggers.size; i++ )
{
rocket_damage_triggers[i] delete();
}
for ( i = 0; i < rocket_collision.size; i++ )
{
rocket_collision[i] delete();
}
}
snd_rocket_gantry ( orignr, originl)
{
orignr playsound ("evt_gantry_disengage");
orignr playsound ("evt_rocket_start");
// originl playsound ("evt_rocket_start");
}
snd_countdown()
{
//wait 2;
countdownl = spawn("script_origin", (480, -1256, 224));
countdownr = spawn("script_origin", (152, 1488, 224));
clientnotify ( "snd_rocket_launch" );
if( IsDefined(countdownl)&& IsDefined(countdownr) )
{
countdownl playsound( "vox_mp_com_1a_rua1" );
wait .112;
countdownr playsound( "vox_mp_com_1a_rua1" );
wait 16.5;
thread snd_launch ();
}
}
snd_launch ()
{
countdownl = spawn("script_origin", (480, -1256, 224));
countdownr = spawn("script_origin", (152, 1488, 224));
wait 2;
countdownl playsound( "vox_mp_com_2a_rua1" );
wait .112;
countdownr playsound( "vox_mp_com_2a_rua1" );
}
rocket_sticky_grenade_think()
{
self endon( "death" );
for ( ;; )
{
self waittill( "grenade_stuck", grenade_ent );
grenade_ent thread sticky_grenade_think();
}
}
sticky_grenade_think()
{
self endon( "death" );
level endon( "rocket_damage_stop" );
flag_wait( "rocket_launch_grenade_detonate" );
wait( 0.05 );
self Detonate();
}
//Self is the trigger. This loops to make sure any grenade or claymore that's touching the damage trigger explodes.
destroy_greandes_in_trigger()
{
self endon( "death" );
level endon( "rocket_damage_stop" );
flag_wait( "rocket_launch_grenade_detonate" );
for( ;; )
{
grenades = GetEntArray( "grenade", "classname" );
for ( i = 0; i < grenades.size; i++ )
{
if( grenades[i] IsTouching( self ))
{
grenades[i] Detonate();
}
}
wait 1;
}
}
rocket_timer_init()
{
level waittill( "prematch_over" );
event = set_dvar_if_unset( "scr_rocket_event", "end" );
trigger1 = set_dvar_int_if_unset( "scr_rocket_event_trigger1", "0" );
trigger2 = set_dvar_int_if_unset( "scr_rocket_event_trigger2", "0" );
if ( rocket_launch_abort() )
{
return;
}
switch ( event )
{
case "end":
add_timed_event( 0, "rocket_launch" );
add_score_event( level.scorelimit, "rocket_launch" );
// AE 11-2-09: putting in the distant rocket timing
add_score_event( int(level.scorelimit * 0.5), "distant_rocket_launch" );
break;
case "time":
assert( trigger1 >= 0 );
add_timed_event( trigger1, "rocket_launch" );
// AE 11-2-09: putting in the distant rocket timing
add_timed_event( int(trigger1 * 0.5), "distant_rocket_launch" );
break;
case "percent":
assert( trigger1 >= 0 );
assert( trigger1 <= 100 );
minutes = ( trigger1 * 0.01 ) * level.timelimit;
add_timed_event( minutes * 60, "rocket_launch" );
// AE 11-2-09: putting in the distant rocket timing
add_timed_event( int(minutes * 60 * 0.5), "distant_rocket_launch" );
score = ( trigger1 * 0.01 ) * level.scorelimit;
add_score_event( score, "rocket_launch" );
// AE 11-2-09: putting in the distant rocket timing
add_score_event( int(score * 0.5), "distant_rocket_launch" );
break;
case "random_time":
assert( trigger1 >= 0 );
assert( trigger2 >= 0 );
assert( trigger1 < trigger2 );
time = RandomIntRange( trigger1, trigger2 + 1 );
add_timed_event( trigger1, "rocket_launch" );
// AE 11-2-09: putting in the distant rocket timing
add_timed_event( int(trigger1 * 0.5), "distant_rocket_launch" );
break;
case "random_percent":
assert( trigger1 >= 0 );
assert( trigger1 <= 100 );
assert( trigger2 >= 0 );
assert( trigger2 <= 100 );
assert( trigger1 < trigger2 );
percent = RandomIntRange( trigger1, trigger2 + 1 );
minutes = ( percent * 0.01 ) * level.timelimit;
add_timed_event( minutes * 60, "rocket_launch" );
// AE 11-2-09: putting in the distant rocket timing
add_timed_event( int(minutes * 60 * 0.5), "distant_rocket_launch" );
percent = RandomIntRange( trigger1, trigger2 + 1 );
score = ( percent * 0.01 ) * level.scorelimit;
add_score_event( score, "rocket_launch" );
// AE 11-2-09: putting in the distant rocket timing
add_score_event( int(score * 0.5), "distant_rocket_launch" );
break;
default:
error( "Unknown event type: '" + event + "' used in dvar 'scr_rocket_event'" );
break;
}
}
rocket_launch_abort()
{
launch_abort = set_dvar_int_if_unset( "scr_rocket_event_off", "0" );
assert( launch_abort >= 0 );
assert( launch_abort <= 100 );
if ( RandomInt( 101 ) < launch_abort )
{
return true;
}
return false;
}
rocket_move()
{
self MoveTo( self.origin + ( 0, 0, 50000 ), 50, 45 );
self waittill( "movedone" );
self delete();
}
rocket_damage_think()
{
level endon( "rocket_damage_stop" );
damage_interval_secs = 1;
assert( self.classname == "trigger_radius" );
/#
if ( set_dvar_int_if_unset( "scr_rocket_debug", "0" ) != 0 )
{
drawcylinder( self.origin, self.radius, self.height, undefined, "rocket_damage_stop" );
}
#/
for( ;; )
{
self waittill( "trigger", ent );
if(IsPlayer(ent))
{
player = ent;
if ( player.sessionstate != "playing" )
{
continue;
}
if ( !IsDefined( player.rocket_damage_time ) )
{
player.rocket_damage_time = GetTime();
}
if ( player.rocket_damage_time > GetTime() )
{
continue;
}
player shellshock( "tabun_gas_mp", damage_interval_secs );
player.rocket_damage_time = GetTime() + ( damage_interval_secs * 1000 );
player DoDamage( RandomIntRange( 40, 60 ), self.origin, self, level.rocket_base, 0, "MOD_SUICIDE" );
}
//This kill dogs in the radius trigger
else if ( IsAI( ent ))
{
ent DoDamage( ent.health * 2, ent.origin);
}
//This kills RC bombs in the radius trigger
else if(IsDefined( ent.targetname ) && ent.targetname == "rcbomb" )
{
//Destroy RC bomb
ent maps\mp\_rcbomb::rcbomb_force_explode();
}
}
}
radar_dish_think()
{
radar_dish = GetEnt( "cosmodrome_radar_dish", "targetname" );
AssertEx( IsDefined( radar_dish ), "Unable to find entity with targetname: 'cosmodrome_radar_dish'" );
for ( ;; )
{
rotate_time = set_dvar_int_if_unset( "scr_radar_dish_rotate_secs", "30" );
if ( rotate_time <= 0 )
{
return;
}
radar_dish RotateYaw( 360, rotate_time );
radar_dish waittill( "rotatedone" );
}
}
devgui_cosmodrome( cmd )
{
for ( ;; )
{
wait( 0.5 );
devgui_string = GetDvar( #"devgui_notify" );
switch( devgui_string )
{
case "":
break;
case "rocket_arm":
SetDvar( "scr_rocket_arm_wait_secs", "0" );
level thread rocket_arm_think();
break;
default:
level notify( devgui_string );
break;
}
SetDvar( "devgui_notify", "" );
}
}
distant_rockets_think()
{
// have the rockets in the distance going off
distant_rocket = GetEntArray( "distant_rocket", "targetname" );
AssertEx( IsDefined( distant_rocket ), "Unable to find entity with targetname: 'distant_rocket'" );
distant_rocket_gantry1 = GetEntArray("distant_rocket_gantry1", "targetname");
AssertEx( IsDefined( distant_rocket_gantry1 ), "Unable to find entity with targetname: 'distant_rocket_gantry1'" );
distant_rocket_gantry2 = GetEntArray("distant_rocket_gantry2", "targetname");
AssertEx( IsDefined( distant_rocket_gantry2 ), "Unable to find entity with targetname: 'distant_rocket_gantry2'" );
distant_rocket_arm1 = GetEntArray( "distant_rocket_arm1", "targetname" );
AssertEx( IsDefined( distant_rocket_arm1 ), "Unable to find entity with targetname: 'distant_rocket_arm1'" );
distant_rocket_arm2 = GetEntArray( "distant_rocket_arm2", "targetname" );
AssertEx( IsDefined( distant_rocket_arm2 ), "Unable to find entity with targetname: 'distant_rocket_arm2'" );
distant_rocket_arm3 = GetEntArray( "distant_rocket_arm3", "targetname" );
AssertEx( IsDefined( distant_rocket_arm3 ), "Unable to find entity with targetname: 'distant_rocket_arm3'" );
distant_rocket_arm4 = GetEntArray( "distant_rocket_arm4", "targetname" );
AssertEx( IsDefined( distant_rocket_arm4 ), "Unable to find entity with targetname: 'distant_rocket_arm4'" );
distant_rocket_engine = GetEnt( "distant_rocket_engine", "script_noteworthy" );
AssertEx( IsDefined( distant_rocket_engine ), "Unable to find entity with script_noteworthy: 'distant_rocket_engine'" );
distant_rocket_engine SetModel("tag_origin");
distant_rocket_engine.angles = (-90, 0, 0);
wait( 3 );
level waittill( "distant_rocket_launch" );
// splay sound on the gantry
thread snd_distant_gantry (distant_rocket_engine, distant_rocket_engine);
// play sound for arms
thread snd_distant_rocket_arm (distant_rocket_engine);
// move the gantry away from the rocket
array_thread( distant_rocket_gantry1, ::distant_rocket_gantry1_move );
array_thread( distant_rocket_gantry2, ::distant_rocket_gantry2_move );
wait(10);
// move the arms away from the rocket
array_thread( distant_rocket_arm1, ::distant_rocket_arm1_move );
array_thread( distant_rocket_arm2, ::distant_rocket_arm2_move );
array_thread( distant_rocket_arm3, ::distant_rocket_arm3_move );
array_thread( distant_rocket_arm4, ::distant_rocket_arm4_move );
// wait to launch
wait(8);
// pre-launch fx
// TODO: small earthquakes??
//earthquake_origin = rocket_base GetTagOrigin( "tag_engine" );
//earthquake( .25, 4, earthquake_origin, 4096 );
// play 3d launch aounds on distant_rocket_engine, and 2 st 2d sounds
distant_rocket_engine playsound ("evt_dist_cosmo_launch");
//playsoundatposition("evt_dist_cosmo_air_distf",(0,0,0));
distant_rocket_engine playsound ("evt_dist_cosmo_air_distf");
wait( 3.5 );
// launch fx
//earthquake( .35, 15, earthquake_origin, 4096 );
playfxontag( level._effect["rocket_blast_trail"], distant_rocket_engine, "tag_origin" );
// move pieces
array_thread( distant_rocket, ::rocket_move );
}
distant_rocket_gantry1_move() // self == distant_rocket_gantry
{
self RotatePitch(-45, 10.0);
self waittill("rotatedone");
}
distant_rocket_gantry2_move() // self == distant_rocket_gantry
{
self RotatePitch(45, 10.0);
self waittill("rotatedone");
}
distant_rocket_arm1_move() // self == distant_rocket_arm
{
self RotatePitch(-45, 6.0);
self waittill("rotatedone");
}
distant_rocket_arm2_move() // self == distant_rocket_arm
{
self RotateRoll(-45, 6.0);
self waittill("rotatedone");
}
distant_rocket_arm3_move() // self == distant_rocket_arm
{
self RotatePitch(45, 6.0);
self waittill("rotatedone");
}
distant_rocket_arm4_move() // self == distant_rocket_arm
{
self RotateRoll(45, 6.0);
self waittill("rotatedone");
}
snd_distant_rocket_arm ( distant_rocket_engine )
{
//IPrintLnBold ("this is in the distant rocket arm section - snd_distant_rocket_arm");
distant_rocket_engine playloopsound ("evt_dist_rocket_lp", .5);
distant_rocket_engine PlaySound ("evt_dist_rocket_start");
//self waittill("rotatedone");
wait (16);
distant_rocket_engine stoploopsound(.3);
distant_rocket_engine PlaySound ("evt_dist_rocket_end");
}
snd_distant_gantry ( orignr, originl)
{
//IPrintLnBold ("this is playing dist rocket start");
orignr playsound ("evt_dist_gantry_disengage");
orignr playsound ("evt_dist_rocket_start");
}

View File

@ -0,0 +1,35 @@
#include maps\mp\_utility;
main()
{
//needs to be first for create fx
maps\mp\mp_crisis_fx::main();
precachemodel("collision_geo_128x128x10");
maps\mp\_load::main();
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
maps\mp\_compass::setupMiniMap("compass_map_mp_crisis_wager");
}
else
{
maps\mp\_compass::setupMiniMap("compass_map_mp_crisis");
}
//maps\mp\mp_crisis_amb::main();
// If the team nationalites change in this file,
// you must update the team nationality in the level's csc file as well!
maps\mp\gametypes\_teamset_cubans::level_init();
//setdvar("compassmaxrange","2100");
// spawn collision to prevent players from seeing through the LVT
spawncollision("collision_geo_128x128x10","collider",(2891, 1282.5, 72.5), (3.6, 36.48, -1.65));
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
}

View File

@ -0,0 +1,178 @@
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\_events;
main()
{
///#
//execdevgui( "devgui_mp_duga" );
//#/
//needs to be first for create fx
maps\mp\mp_duga_fx::main();
maps\mp\_load::main();
maps\mp\mp_duga_amb::main();
// If the team nationalites change in this file,
// you must update the team nationality in the level's csc file as well!
maps\mp\gametypes\_teamset_winterspecops::level_init();
precachemodel("collision_geo_mc_8x560x190");
precachemodel("collision_geo_mc_4x52x190");
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
maps\mp\_compass::setupMiniMap("compass_map_mp_duga_wager");
}
else
{
maps\mp\_compass::setupMiniMap("compass_map_mp_duga");
}
//Increase sample size so as to resolve lighting issue
SetDvar("sm_sunSampleSizeNear", ".5" );
//Sets it up so my events go off at times based on the game time and score limit
//level thread transformer_timer_init();
///#
//level thread devgui_duga();
//#/
glasses = GetStructArray( "glass_shatter_on_spawn", "targetname" );
for ( i = 0; i < glasses.size; i++ )
{
RadiusDamage( glasses[i].origin, 64, 101, 100 );
}
// weapon collision to keep grenades from falling out of the map through a gap between the terrain and the wall.
spawncollision("collision_geo_mc_8x560x190","collider",(462, -3840, -165), (0, 0, 0));
spawncollision("collision_geo_mc_4x52x190","collider",(184, -3870, -164), (0, 270, 0));
spawncollision("collision_geo_mc_4x52x190","collider",(184, -3922, -164), (0, 270, 0));
spawncollision("collision_geo_mc_4x52x190","collider",(188, -3922, -169), (0, 270, 0));
}
//Sets it up so events can happen based on match time and score changes
transformer_timer_init()
{
first_transformer_structs = getstructarray("transformer_struct","targetname");
level._transformer_array = [];
for( i=0; i < first_transformer_structs.size; i++)
{
current_struct = first_transformer_structs[i];
level._transformer_array = add_to_array(level._transformer_array, current_struct);
while(IsDefined(current_struct.target))
{
current_struct = getstruct(current_struct.target, "targetname");
level._transformer_array = add_to_array(level._transformer_array, current_struct);
}
}
level waittill( "prematch_over" );
if( (IsDefined(level.timelimit)) && (level.timelimit > 0))
{
//Electric transformers explode in pairs. The number of pairs is critical to determine how many 'events' we need.
transformer_pairs = level._transformer_array.size / 2;
total_seconds = level.timelimit * 60;
//We want to space out the transformer pair explosion evenly thourought the match
interval = total_seconds / transformer_pairs;
//This creates events based on how many we need. The event sends a notify to duga.csc to set off explosions.
for( i = total_seconds; i >= interval; i -= interval )
{
println( "Seconds: " + i );
add_timed_event( int( i ), undefined, "go" );
}
//This event sets off with a tenth of a second left in the game. The duga.csc waits for the notify.
add_timed_event( .1, undefined, "fin" );
}
//add_score_event( Int(level.scorelimit * .99), undefined, "final_boom" );
//add_score_event( Int(level.scorelimit * 0.1),undefined, "next_boom" );
//add_score_event( Int(level.scorelimit * 0.2),undefined, "next_boom" );
}
devgui_duga( cmd )
{
for ( ;; )
{
wait( 0.5 );
devgui_string = GetDvar( #"devgui_notify" );
switch( devgui_string )
{
case "":
break;
case "transformer_explode1":
level ClientNotify ("transformer_explode");
break;
case "transformer_explode2":
level ClientNotify ("transformer_explode");
break;
case "transformer_explode3":
level ClientNotify ("transformer_explode");
break;
case "transformer_explode4":
level ClientNotify ("transformer_explode");
break;
case "transformer_explode5":
level ClientNotify ("transformer_explode");
break;
case "transformer_explode6":
level ClientNotify ("transformer_explode");
break;
case "transformer_explode7":
level ClientNotify ("transformer_explode");
break;
case "transformer_explode8":
level ClientNotify ("transformer_explode");
break;
case "transformer_explode9":
level ClientNotify ("transformer_explode");
break;
case "transformer_explode10":
level ClientNotify ("transformer_explode");
break;
case "transformer_explode11":
level ClientNotify ("transformer_explode");
break;
case "transformer_explode12":
level ClientNotify ("transformer_explode");
break;
//case "final_explode":
//transformer_array[5] notify ("final_explode");
//break;
default:
level notify( devgui_string );
break;
}
SetDvar( "devgui_notify", "" );
}
}

View File

@ -0,0 +1,411 @@
#include maps\mp\_utility;
main()
{
//needs to be first for create fx
maps\mp\mp_firingrange_fx::main();
precachemodel("collision_geo_10x10x512");
maps\mp\_load::main();
maps\mp\_compass::setupMiniMap("compass_map_mp_firingrange");
maps\mp\mp_firingrange_amb::main();
// If the team nationalites change in this file,
// you must update the team nationality in the level's csc file as well!
maps\mp\gametypes\_teamset_cubans::level_init();
/****** GET ENTITIES ******/
//TRIGGERS
alleyTrigger = getent("alleyTrigger","targetname");
windowTrigger = getent("triggerwindowTarget","targetname");
//TARGETS
target1 = getent("fieldTarget_BackLeft","targetname");
target2 = getent("fieldTarget_FrontLeft","targetname");
target3 = getent("fieldTarget_Middle","targetname");
target4 = getent("fieldTarget_BackRight","targetname");
target5 = getent("fieldTarget_FrontRight","targetname");
target6 = getent("trenchTarget_GroundWall","targetname");
target7 = getent("trailerTarget_Window","targetname");
target8 = getent("alleyTarget_Cover","targetname");
target9 = getent("alleyTarget_Path","targetname");
target10 = getent("centerTarget_Sandbags","targetname");
target11 = getent("towerTarget_Front","targetname");
target12 = getent("towerTarget_Back","targetname");
target13 = getent("centerTarget_Path","targetname");
target14 = getent("centerTarget_PathBunkerL","targetname");
target15 = getent("centerTarget_PathBunkerR","targetname");
target16 = getent("steelBuildingTarget_Slide1","targetname");
target17 = getent("steelBuildingTarget_PopUp","targetname");
target18 = getent("target_alleyWindow1","targetname");
target19 = getent("target_alleyWindow2","targetname");
target20 = getent("target_alleyWindow3","targetname");
//TARGET LIGHTs
//Props
targetLight1_off = getent("steelBuildingTargetLight1_off", "targetname");
targetLight1_on = getent("steelBuildingTargetLight1_on", "targetname");
targetLight2_off = getent("steelBuildingTargetLight2_off", "targetname");
targetLight2_on = getent("steelBuildingTargetLight2_on", "targetname");
//Lights
level.const_fx_exploder_red_light_1 = 1001;
level.const_fx_exploder_red_light_2 = 1002;
//LOUDSPEAKERS
speaker1 = getent("loudspeaker1", "targetname");
speaker2 = getent("loudspeaker2", "targetname");
//PROPANE TANKS
/*propaneTank1 = getent("explodingPropaneTank","targetname");
propaneTank2 = getent("explodingPropaneTank2","targetname");
propaneTank3 = getent("explodingPropaneTank3","targetname");*/
/****** HIDE ON TARGET LIGHTS ******/
//Keep the on versions of the light model hidden until appropriate target takes damage.
targetLight1_on Hide();
targetLight2_on Hide();
/****** DAMAGE OBJECTS ********/
//TARGETS
target1 SetCanDamage(true);
target2 SetCanDamage(true);
target3 SetCanDamage(true);
target4 SetCanDamage(true);
target5 SetCanDamage(true);
target8 SetCanDamage(true);
target9 SetCanDamage(true);
target10 SetCanDamage(true);
target13 SetCanDamage(true);
target14 SetCanDamage(true);
target15 SetCanDamage(true);
target16 SetCanDamage(true);
target17 SetCanDamage(true);
target18 SetCanDamage(true);
target19 SetCanDamage(true);
target20 SetCanDamage(true);
target1 thread damageTarget(1);
target2 thread damageTarget(1);
target3 thread damageTarget(1);
target4 thread damageTarget(1);
target5 thread damageTarget(1);
target8 thread damageTarget(2);
target9 thread damageTarget(2);
target10 thread damageTarget(2);
target13 thread damageTarget(2);
target14 thread damageTarget(3);
target15 thread damageTarget(3);
target16 thread damageTargetLights(targetLight1_on, targetLight1_off, speaker1, "amb_target_buzzer", level.const_fx_exploder_red_light_2 );
target17 thread damageTargetLights(targetLight2_on, targetLight2_off, speaker2, "amb_target_buzzer", level.const_fx_exploder_red_light_1 );
target18 thread damageTarget(4);
target19 thread damageTarget(4);
target20 thread damageTarget(5);
//PROPANE TANKS
/*propaneTank1 SetCanDamage(true);
propaneTank2 SetCanDamage(true);
propaneTank3 SetCanDamage(true);
propaneTank1 thread damagePropaneTank("mpl_kls_artillery_impact");
propaneTank2 thread damagePropaneTank("mpl_kls_artillery_impact");
propaneTank3 thread damagePropaneTank("mpl_kls_artillery_impact");*/
/****** MOVE TARGETS ******/
//Sliding Targets
target1 thread moveTarget(4, 220, 10.1);
target2 thread moveTarget(4, 220, 5.2);
target3 thread moveTarget(4, 220, 10.3);
target4 thread moveTarget(3, 290, 8.4);
target5 thread moveTarget(3, 285, 3);
target6 thread moveTarget(1, 228, 8.1);
target7 thread moveTarget(7, (57, 23, 0), 3);
target8 thread moveTarget(1, 250, 5.5);
target9 thread moveTarget(1, 146, 8.6);
target10 thread moveTarget(1, 165, 8.7);
target11 thread moveTarget(4, 136, 5.05);
target12 thread moveTarget(3, 136, 7.15);
target13 thread moveTarget(1, 228, 8.25);
target16 thread moveTarget(4, 164, 5.35);
target17 thread moveTarget(5, 48, 5.45);
target18 thread moveTarget(3, 270, 8.55);
target19 thread moveTarget(6, 70, 6.65);
target20 thread moveTarget(1, 130, 5.75);
//Hinge Targets
//targetHinge1 thread rotateTarget(2, 90, 0.5, 3); //-Z direction, 90 degrees, in .5 seconds, wait inbetween for 3 seconds.
target11 thread rotateTarget(2, 90, 0.5, 2);
target12 thread rotateTarget(1, 90, 0.7, 3);
//Triggers
alleyTrigger thread triggerCheck(target9);
windowTrigger thread triggerCheck(target7);
// collision keeping players from capping the HQ point from outside the room.
spawncollision("collision_geo_10x10x512","collider",(-415, -429, -128), (0, 0, 0));
spawncollision("collision_geo_10x10x512","collider",(-415, -419, -128), (0, 0, 0));
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
SetDvar( "scr_spawn_enemy_influencer_radius", 1600 );
SetDvar( "scr_spawn_dead_friend_influencer_radius", 1300 );
SetDvar( "scr_spawn_dead_friend_influencer_timeout_seconds", 13 );
SetDvar( "scr_spawn_dead_friend_influencer_count", 7 );
}
triggerCheck(target)
{
self endon("game_ended");
while(1)
{
self waittill("trigger", player);
//If the target is close enough to the player to cause a possible issue, tell the target to go back the other direction.
distance = Distance(target.origin, self.origin);
if(distance <= 90)
{
target notify( "targetStopMoving" );
while( isdefined( player) && player isTouching(self) && distance <= 90)
{
if ( DistanceSquared( target.origin, target.railPoints[0] ) < DistanceSquared( player.origin, target.railPoints[0] ) )
target.preferredNextPos = 0;
else
target.preferredNextPos = 1;
wait( 0.25 );
}
}
}
}
damageTarget(dir)
{
self endon("game_ended");
while(1)
{
self waittill("damage", damage, attacker, direction);
switch(dir)
{
case 1:
self rotateroll(self.angles[1] + 90, .1);
wait(.2);
self rotateroll(self.angles[1] - 90, .1);
wait(.2);
self PlaySound ("amb_target_flip");
break;
case 2:
{
rotation = 1;
if ( isdefined( attacker ) && isPlayer( attacker ) )
{
yaw = get2DYaw( attacker.origin, self.origin );
if ( attacker.angles[1] > yaw )
rotation = -1;
}
self rotateyaw(self.angles[2] + (180 * rotation), .3);
self PlaySound ("amb_target_twirl");
self waittill("rotatedone");
}
break;
case 3:
self rotatepitch(self.angles[1] + 90, .1);
wait(.2);
self rotatepitch(self.angles[1] - 90, .1);
wait(.2);
self PlaySound ("amb_target_flip");
break;
case 4:
self rotateroll(self.angles[1] - 90, .1);
wait(.2);
self rotateroll(self.angles[1] + 90, .1);
wait(.2);
self PlaySound ("amb_target_flip");
break;
case 5:
self rotatepitch(self.angles[1] - 90, .1);
wait(.2);
self rotatepitch(self.angles[1] + 90, .1);
wait(.2);
self PlaySound ("amb_target_flip");
break;
}
}
}
//Another damage target function that handles Light style damage responses.
damageTargetLights(light_on, light_off, speaker, alias, exploderHandle)
{
self endon("game_ended");
while(1)
{
self waittill("damage");
speaker PlaySound(alias);
exploder(exploderHandle);
light_off Hide();
light_on Show();
wait(0.5);
exploder_stop(exploderHandle);
light_off Show();
light_on Hide();
}
}
/*damagePropaneTank(soundAlias)
{
self endon("game_ended");
while(1)
{
self waittill("damage");
RadiusDamage(self.origin, 500, 100, 50);
PlayFX(level._effect["rcbombexplosion"] , self.origin);
self PlaySound(soundAlias);
self Delete();
}
}*/
//Pass in one of the following to define the start direction of the target: 1 for +y, 2 for -y, 3 for +x, 4 for -x, 5 for +Z, 6 for -Z.
//Pass in the distance in units the target is to travel.
//Pass in the ammount of time in seconds that it will take the target to travel that distance.
moveTarget(dir, dis, speed)
{
self endon("game_ended");
keepMoving = true; //Local var to decide if the target needs to be paused or not.
//Get the targets starting position or nearPos
startPOS = self.origin;
//Find out the targets far position.
FarPOS = self.origin;
sound = Spawn ("script_origin", self.origin);
sound LinkTo(self);
sound PlayLoopSound ("amb_target_chain");
switch(dir)
{
case 1://+Y
farPOS = self.origin + (0,dis,0);
break;
case 2://-Y
farPOS = self.origin - (0,dis,0);
break;
case 3://+X
farPOS = self.origin + (dis,0,0);
break;
case 4://-X
farPOS = self.origin - (dis,0,0);
break;
case 5://+Z
farPOS = self.origin + (0,0,dis);
break;
case 6://-Z
farPOS = self.origin - (0,0,dis);
break;
case 7://Custom
farPOS = self.origin - dis;
break;
}
self.railPoints = [];
self.railPoints[0] = startPos;
self.railPoints[1] = FarPos;
self.preferredNextPos = 1;
self.playerTrigger = false;
//Move the target
while(1)
{
nextPos = self.railPoints[self.preferredNextPos];
if ( self.preferredNextPos == 0 )
self.preferredNextPos = 1;
else
self.preferredNextPos = 0;
self moveto(nextPos, speed);
self waittill_either("movedone","targetStopMoving");
self PlaySound ("amb_target_stop");
}
}
rotateTarget(dir, deg, speed, pauseTime)
{
self endon("game_ended");
while(1)
{
switch(dir)
{
case 1: //+Z
self rotateyaw(self.angles[2] + deg, speed);
self PlaySound ("amb_target_rotate");
wait(pauseTime);
self rotateyaw(self.angles[2] - deg, speed);
self PlaySound ("amb_target_rotate");
wait(pauseTime);
break;
case 2: //-Z
self rotateyaw(self.angles[2] - deg, speed);
self PlaySound ("amb_target_rotate");
wait(pauseTime);
self rotateyaw(self.angles[2] + deg, speed);
self PlaySound ("amb_target_rotate");
wait(pauseTime);
break;
case 3: //+X
self rotateroll(self.angles[0] + deg, speed);
self PlaySound ("amb_target_rotate");
wait(pauseTime);
self rotateroll(self.angles[0] - deg, speed);
self PlaySound ("amb_target_rotate");
wait(pauseTime);
break;
case 4: //-X
self rotateroll(self.angles[0] - deg, speed);
self PlaySound ("amb_target_rotate");
wait(pauseTime);
self rotateroll(self.angles[0] + deg, speed);
self PlaySound ("amb_target_rotate");
wait(pauseTime);
break;
case 5: //+Y
self rotateroll(self.angles[1] + deg, speed);
self PlaySound ("amb_target_rotate");
wait(pauseTime);
self rotateroll(self.angles[1] - deg, speed);
self PlaySound ("amb_target_rotate");
wait(pauseTime);
break;
case 6: //-Y
self rotatepitch(self.angles[1] - deg, speed);
wait(pauseTime);
self rotatepitch(self.angles[1] + deg, speed);
wait(pauseTime);
break;
case 7: //Custom
self rotateto( (self.angles[0] + 90, self.angles[1] - 90, self.angles[2] + 45), speed);
wait(pauseTime);
self rotateto( (self.angles[0] - 90, self.angles[1] + 90, self.angles[2] - 45), speed);
wait(pauseTime);
}
}
}

View File

@ -0,0 +1,386 @@
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\_events;
main()
{
//needs to be first for create fx
maps\mp\mp_golfcourse_fx::main();
precachemodel("collision_geo_64x64x256");
precachemodel("collision_wall_256x256x10");
maps\mp\_load::main();
// maps\mp\_compass::setupMiniMap("compass_map_mp_golfcourse");
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
maps\mp\_compass::setupMiniMap("compass_map_mp_golfcourse_wager");
}
else
{
maps\mp\_compass::setupMiniMap("compass_map_mp_golfcourse");
}
maps\mp\mp_golfcourse_amb::main();
// If the team nationalites change in this file, you must also update the level's csc file,
// the level's csv file, and the share/raw/mp/mapsTable.csv
maps\mp\gametypes\_teamset_cubans::level_init();
// Set up the default range of the compass
setdvar("compassmaxrange","2100");
// Set up some generic War Flag Names.
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
level thread sprinklers_init();
level thread gopher_init();
//spawning collision in wager match so players can't hide in the spawned in columns
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 || isPregame() )
{
spawncollision("collision_geo_64x64x256","collider",(-1075, -797, -105), (0, 340.8, 0));
spawncollision("collision_geo_64x64x256","collider",(-551, -965, -105), (0, 340.8, 0));
}
//spawning collision wall to stop players from getting out of the map by the pond
spawncollision("collision_wall_256x256x10","collider",(416, 592, -172), (0, 45, -7));
//spawn p_gc_signpost_short model to cover hole in geo under scoreboard
scoreboard1 = Spawn("script_model", (-2046, 839, -215) );
if ( IsDefined(scoreboard1) )
{
scoreboard1.angles = (0, 180, 0);
scoreboard1 SetModel("p_gc_signpost_short");
}
}
sprinklers_init()
{
wait( 3 );
exploders = [];
exploders[ exploders.size ] = 1001; //sprinkler by sand trap
exploders[ exploders.size ] = 1002; //sprinkler in middle of map
exploders[ exploders.size ] = 1003; //sprinkler by bridge
exploders[ exploders.size ] = 1004;
exploders[ exploders.size ] = 1005;
exploders[ exploders.size ] = 1006;
exploders[ exploders.size ] = 1007;
exploders[ exploders.size ] = 3001;
exploders[ exploders.size ] = 3002;
exploders[ exploders.size ] = 3003;
exploders[ exploders.size ] = 3004;
exploders[ exploders.size ] = 3005;
exploders[ exploders.size ] = 3006;
exploders[ exploders.size ] = 3007;
exploders[ exploders.size ] = 3008;
exploders[ exploders.size ] = 3009;
exploders[ exploders.size ] = 3010;
exploders[ exploders.size ] = 3011;
exploders[ exploders.size ] = 3012;
for ( i = 0; i < exploders.size; i++ )
{
sprinkler_init( exploders[ i ] );
}
}
sprinkler_init( exploder_num )
{
create_fx_ent = exploder_find( exploder_num );
assertex( IsDefined( create_fx_ent ), "unknown sprinkler exploder: " + exploder_num );
create_fx_ent.fake_health = 40;
radius = 10;
height = 10;
create_fx_ent.damage_trigger = Spawn( "trigger_damage", create_fx_ent.v[ "origin" ] - ( 0, 0, 5 ), 0, radius, height );
/#
//create_fx_ent.damage_trigger thread trigger_debug( radius, height );
//create_fx_ent.damage_trigger thread sprinkler_debug( create_fx_ent );
#/
create_fx_ent.destroyed_exploder = exploder_num + 1000;
if ( exploder_num == 1001 || exploder_num == 1002 || exploder_num == 1003 )
{
radius = 125;
height = 150;
start = create_fx_ent.v[ "origin" ] + vector_scale( create_fx_ent.v[ "forward" ], 384 );
end = start + ( 0, 0, -8000 );
trace = BulletTrace( start, end, false, undefined, false, false );
origin = trace[ "position" ];
create_fx_ent thread sprinkler_water_think( origin, radius, height );
create_fx_ent.soundent = spawn ( "script_origin", create_fx_ent.v[ "origin" ] );
create_fx_ent.soundent playloopsound ("amb_sprinkler");
}
// spawn sound ents
create_fx_ent thread sprinkler_think(exploder_num);
exploder( exploder_num );
}
sprinkler_think(exploder_num)
{
for ( ;; )
{
self.damage_trigger waittill( "damage", amount, attacker, direction, point, type );
if ( IsDefined( type ) )
{
if ( type == "MOD_MELEE" || type == "MOD_EXPLOSIVE" || type == "MOD_IMPACT" )
{
break;
}
}
self.fake_health -= amount;
if ( self.fake_health <= 0 )
{
break;
}
}
if (isdefined (self.soundent))
{
self.soundent stoploopsound();
clientnotify("so_"+exploder_num);
}
playsoundatposition ("amb_sprinkler_geyser", self.v[ "origin" ] );
self.damage_trigger delete();
// delete sound ents
// stop exploder
exploder( self.destroyed_exploder );
self exploder_fade();
if ( IsDefined( self.water_trigger ) )
{
self.water_trigger delete();
}
wait( 0.25 );
self thread sprinkler_water_think( self.v[ "origin" ], 50, 100 );
wait( 1 );
exploder_stop( self.v[ "exploder" ] );
wait( 5 );
self.water_trigger delete();
}
sprinkler_water_think( origin, radius, height )
{
self.water_trigger = Spawn( "trigger_radius", origin, 0, radius, height );
/#
//self.water_trigger thread trigger_debug( radius, height );
#/
for ( ;; )
{
self.water_trigger waittill( "trigger", entity );
if ( !IsDefined( entity ) || !IsPlayer( entity ) || !IsAlive( entity ) )
{
continue;
}
player = entity;
if ( player.sessionstate != "playing" )
{
continue;
}
if ( !IsDefined( player.golfcourse_water_drops ) )
{
player.golfcourse_water_drops = false;
}
if ( player.golfcourse_water_drops )
{
continue;
}
player thread sprinkler_water_drops( self.water_trigger );
}
}
sprinkler_water_drops( trigger )
{
self endon( "death" );
self endon( "disconnect" );
trigger endon( "death" );
self thread water_drop_end_think();
trigger thread water_drop_death_think( self );
for ( ;; )
{
if ( !self IsTouching( trigger ) )
{
self notify( "water_drop_end" );
return;
}
if ( !self.golfcourse_water_drops )
{
self.golfcourse_water_drops = true;
self SetWaterDrops( 50 );
}
wait( RandomIntRange( 1, 3 ) );
}
}
water_drop_end_think()
{
self endon( "disconnect" );
self waittill_any( "death", "water_drop_end" );
self.golfcourse_water_drops = false;
self SetWaterDrops( 0 );
}
water_drop_death_think( player )
{
player endon( "death" );
player endon( "disconnect" );
player endon( "water_drop_end" );
self waittill( "death" );
player notify( "water_drop_end" );
}
exploder_find( num )
{
num = int( num );
for( i = 0; i < level.createFXent.size; i++ )
{
ent = level.createFXent[ i ];
if( !isdefined( ent ) )
continue;
if( ent.v[ "type" ] != "exploder" )
continue;
if( !isdefined( ent.v[ "exploder" ] ) )
continue;
if( ent.v[ "exploder" ] != num )
continue;
return ent;
}
return undefined;
}
exploder_fade()
{
assert( IsDefined( self.looper ) );
TriggerFx( self.looper, GetTime()/1000 + 100 );
}
gopher_init()
{
level waittill( "prematch_over" );
if ( !IsDefined( game[ "gopher_fx" ] ) )
{
game[ "gopher_fx" ] = false;
}
if ( isRoundBased() && getRoundsPlayed() >= 3 && getRoundsPlayed() % 3 == 0 )
{
game[ "gopher_fx" ] = false;
}
if ( game[ "gopher_fx" ] )
{
return;
}
if ( cointoss() )
{
return;
}
exploders = [];
exploders[ exploders.size ] = 5001;
exploders[ exploders.size ] = 5002;
exploders[ exploders.size ] = 5003;
exploders[ exploders.size ] = 5004;
percent = RandomIntRange( 20, 90 );
minutes = ( percent * 0.01 ) * level.timelimit;
add_timed_event( minutes * 60, "gopher_fx" );
percent = RandomIntRange( 20, 90 );
score = ( percent * 0.01 ) * level.scorelimit;
add_score_event( score, "gopher_fx" );
level waittill( "gopher_fx" );
game[ "gopher_fx" ] = true;
exploder( random( exploders ) );
}
/#
sprinkler_debug( create_fx_ent )
{
self endon( "death" );
for ( ;; )
{
print3d( self.origin, create_fx_ent.fake_health );
wait( 0.05 );
}
}
trigger_debug( radius, height )
{
self endon( "death" );
for ( ;; )
{
drawcylinder( self.origin, radius, height, 1 );
wait( 1 );
}
}
#/

View File

@ -0,0 +1,234 @@
#include maps\mp\_utility;
#include common_scripts\utility;
main()
{
/#
level thread devgui_mountain();
execdevgui( "devgui_mp_mountain" );
#/
//needs to be first for create fx
maps\mp\mp_mountain_fx::main();
precachemodel("collision_vehicle_64x64x64");
precachemodel("collision_wall_512x512x10");
precachemodel("collision_geo_128x128x128");
maps\mp\_load::main();
maps\mp\mp_mountain_amb::main();
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
maps\mp\_compass::setupMiniMap("compass_map_mp_mountain_wager");
}
else
{
maps\mp\_compass::setupMiniMap("compass_map_mp_mountain");
}
//setExpFog(2048, 6000, 1, 0.5, 0.5, 0);
// If the team nationalites change in this file,
// you must update the team nationality in the level's csc file as well!
maps\mp\gametypes\_teamset_winterspecops::level_init();
// Set up the default range of the compass
//setdvar("compassmaxrange","2100");
// Set up some generic War Flag Names.
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
// spawn vehicle collision to prevent rc car from entering a large rock
spawncollision("collision_vehicle_64x64x64","collider",(1740, -1585, 240), (0, 36.8, 0));
spawncollision("collision_vehicle_64x64x64","collider",(1715, -1580, 240), (0, 26.4, 0));
// spawn collision to prevent players from leaping to a rock in the vista
spawncollision("collision_wall_512x512x10","collider",(3931, -2522, 288), (0, 45, 0));
spawncollision("collision_wall_512x512x10","collider",(3931, -2522, 800), (0, 45, 0));
// spawn collision to prevent players from leaping to a rock in the vista over top of the killbrush.
spawncollision("collision_wall_512x512x10","collider",(3709, -2538, 560), (0, 180, 0));
// spawn collision to prevent players from sitting in a rock by the ice bridge
spawncollision("collision_geo_128x128x128","collider",(2242.2, 128.3, 260), (0, 310.2, 0));
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
SetDvar( "scr_spawn_enemy_influencer_radius", 1620 );
level thread gondola_sway();
level thread glass_exploder_init();
glasses = GetStructArray( "glass_shatter_on_spawn", "targetname" );
for ( i = 0; i < glasses.size; i++ )
{
RadiusDamage( glasses[i].origin, 64, 101, 100 );
}
}
devgui_mountain( cmd )
{
for ( ;; )
{
wait( 0.5 );
devgui_string = GetDvar( #"devgui_notify" );
switch( devgui_string )
{
case "":
break;
default:
level notify( devgui_string );
break;
}
SetDvar( "devgui_notify", "" );
}
}
//Picks randomly from 2 sway strengths
gondola_sway()
{
level endon ("gondola_triggered");
gondola_cab = GetEnt( "gondola_cab", "targetname" );
while( 1 )
{
randomSwingAngle = RandomFloatRange( 2, 5 );
randomSwingTime = RandomFloatRange( 2, 3 );
gondola_cab RotateTo( (randomSwingAngle*0.5,(randomSwingAngle*0.6)+90,randomSwingAngle*.8), randomSwingTime, randomSwingTime*0.3, randomSwingTime*0.3 );
gondola_cab playsound ("amb_gondola_swing");
wait( randomSwingTime );
gondola_cab RotateTo( ((randomSwingAngle*0.5)*-1,(randomSwingAngle*-1*0.6)+90,randomSwingAngle*.8*-1), randomSwingTime, randomSwingTime*0.3, randomSwingTime*0.3 );
gondola_cab playsound ("amb_gondola_swing_back");
wait( randomSwingTime );
}
}
glass_exploder_init()
{
single_exploders = [];
for ( i = 0; i < level.createFXent.size; i++ )
{
ent = level.createFXent[ i ];
if ( !IsDefined( ent ) )
continue;
if ( ent.v[ "type" ] != "exploder" )
continue;
if ( ent.v[ "exploder" ] == 201 || ent.v[ "exploder" ] == 202 )
{
ent thread glass_group_exploder_think();
}
else if ( ent.v[ "exploder" ] >= 101 && ent.v[ "exploder" ] <= 106 )
{
single_exploders[ single_exploders.size ] = ent;
}
else if ( ent.v[ "exploder" ] == 301 || ent.v[ "exploder" ] == 302 )
{
single_exploders[ single_exploders.size ] = ent;
}
}
level thread glass_exploder_think( single_exploders );
}
glass_group_exploder_think()
{
thresholdSq = 160 * 160;
count = 0;
for ( ;; )
{
level waittill( "glass_smash", origin );
if ( DistanceSquared( self.v[ "origin" ], origin ) < thresholdSq )
{
count++;
}
if ( count >= 3 )
{
exploder( self.v[ "exploder" ] );
return;
}
}
}
glass_exploder_think( exploders )
{
thresholdSq = 160 * 160;
if ( exploders.size <= 0 )
{
return;
}
for ( ;; )
{
closest = 999 * 999;
closest_exploder = undefined;
level waittill( "glass_smash", origin );
for ( i = 0; i < exploders.size; i++ )
{
if ( !IsDefined( exploders[i] ) )
{
continue;
}
if ( IsDefined( exploders[i].glass_broken ) )
{
continue;
}
distSq = DistanceSquared( exploders[i].v[ "origin" ], origin );
if ( distSq > thresholdSq )
{
continue;
}
if ( distSq < closest )
{
closest_exploder = exploders[i];
closest = distSq;
}
}
if ( IsDefined( closest_exploder ) )
{
closest_exploder.glass_broken = true;
exploder( closest_exploder.v[ "exploder" ] );
}
}
}

View File

@ -0,0 +1,405 @@
#include maps\mp\_utility;
#include common_scripts\utility;
main()
{
//needs to be first for create fx
maps\mp\mp_nuked_fx::main();
precachemodel("collision_wall_128x128x10");
// move a dom spawn that is sharing space with one of the mannequins
move_spawn_point( "mp_dom_spawn", (791, 449, -20), ( 779, 445, -20 ) );
maps\mp\_load::main();
maps\mp\mp_nuked_amb::main();
maps\mp\_compass::setupMiniMap("compass_map_mp_nuked");
level.onSpawnIntermission = ::nuked_intermission;
/#
level thread devgui_nuked();
execdevgui( "devgui_mp_nuked" );
#/
// If the team nationalites change in this file,
// you must update the team nationality in the level's csc file as well!
maps\mp\gametypes\_teamset_urbanspecops::level_init();
// Set up the default range of the compass
setdvar("compassmaxrange","2100");
// Set up some generic War Flag Names.
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
SetDvar( "scr_spawn_enemy_influencer_radius", 1600 );
SetDvar( "scr_spawn_dead_friend_influencer_radius", 1300 );
SetDvar( "scr_spawn_dead_friend_influencer_timeout_seconds", 8 );
SetDvar( "scr_spawn_dead_friend_influencer_count", 7 );
//spawn collision in yellow house to prevent players from jump-crouching into a door.
spawncollision("collision_wall_128x128x10","collider",(769.2, 329.3, 143), (0, 290.6, 0));
spawncollision("collision_wall_128x128x10","collider",(769.2, 329.3, 271), (0, 290.6, 0));
level.const_fx_exploder_end_game_glass_shatter = 5001;
level.disableOutroVisionSet = true;
level thread nuked_mannequin_init();
nuked_doomsday_clock_init();
level thread maps\mp\mp_nuked_platform::main();
level thread nuked_population_sign_think();
level thread nuked_bomb_drop_think();
/#
level thread nuked_bomb_drop_dev();
#/
}
move_spawn_point( targetname, start_point, new_point )
{
spawn_points = getentarray( targetname, "classname" );
for ( i = 0; i < spawn_points.size; i++ )
{
if ( distancesquared( spawn_points[i].origin, start_point ) < 1 )
{
spawn_points[i].origin = new_point;
return;
}
}
}
nuked_mannequin_init()
{
keep_count = 28;
level.mannequin_count = 0;
destructibles = GetEntArray( "destructible", "targetname" );
mannequins = nuked_mannequin_filter( destructibles );
if ( mannequins.size <= 0 )
{
return;
}
remove_count = mannequins.size - keep_count;
remove_count = clamp( remove_count, 0, remove_count );
mannequins = array_randomize( mannequins );
for ( i = 0; i < remove_count; i++ )
{
assert( IsDefined( mannequins[i].target ) );
collision = GetEnt( mannequins[i].target, "targetname" );
assert( IsDefined( collision ) );
collision delete();
mannequins[i] delete();
level.mannequin_count--;
}
level waittill( "prematch_over" );
level.mannequin_time = GetTime();
}
nuked_mannequin_filter( destructibles )
{
mannequins = [];
for ( i = 0; i < destructibles.size; i++ )
{
destructible = destructibles[i];
if ( IsSubStr( destructible.destructibledef, "male" ) )
{
mannequins[ mannequins.size ] = destructible;
level.mannequin_count++;
}
}
return mannequins;
}
nuked_intermission()
{
maps\mp\gametypes\_globallogic_defaults::default_onSpawnIntermission();
if ( wasLastRound() )
{
level notify( "bomb_drop" );
}
}
nuked_bomb_drop_think()
{
cameraStart = GetStruct( "endgame_camera_start", "targetname" );
cameraEnd = GetStruct( cameraStart.target, "targetname" );
bomb = GetEnt( "nuked_bomb", "targetname" );
for ( ;; )
{
camera = Spawn( "script_model", cameraStart.origin );
camera.angles = cameraStart.angles;
camera SetModel( "tag_origin" );
level waittill( "bomb_drop" );
if( level.finalkillcam && IsDefined(level.lastKillCam ) )
{
wait( 0.1 );
while( level.inFinalKillcam )
{
wait( 0.1 );
}
}
for ( i = 0; i < get_players().size; i++ )
{
player = get_players()[i];
player CameraSetPosition( camera );
player CameraSetLookAt();
player CameraActivate( true );
}
cam_move_time = set_dvar_float_if_unset( "scr_cam_move_time", "2.5" );
bomb_explode_delay = set_dvar_float_if_unset( "scr_bomb_explode_delay", "1.5" );
glass_break_delay = set_dvar_float_if_unset( "scr_glass_break_delay", "0.5" );
//white_out_delay = set_dvar_float_if_unset( "scr_white_out_delay", "1.0" );
camera MoveTo( cameraEnd.origin, cam_move_time, 0, 0 );
camera RotateTo( cameraEnd.angles, cam_move_time, 0, 0 );
bomb playSound ("amb_end_nuke");
dest = ( bomb.origin[0], bomb.origin[1], bomb.origin[2] - 3700 );
time = set_dvar_float_if_unset( "scr_bomb_time", "1.5" );
accel_time = set_dvar_float_if_unset( "scr_bomb_accel_time", ".75" );
bomb MoveTo( dest, time, accel_time, 0 );
wait( bomb_explode_delay );
playfx ( level._effect["fx_mp_nuked_nuclear_explosion"], bomb.origin);
wait( glass_break_delay );
level thread waitForGlassBreak();
cameraForward = anglestoforward( cameraEnd.angles );
explodePoint = cameraEnd.origin + 20*cameraForward;
//black = ( 0.2, 0.2, 0.2 );
//debugstar(explodePoint, 2 * 1000, black);
physicsExplosionSphere( explodePoint, 128, 128, 1 );
RadiusDamage( explodePoint, 128, 128, 128 );
//wait( white_out_delay );
camera thread vibrate();
//PrintLn( "SND NUKE play" );
//VisionSetNaked( "flash_grenade", .4 );
/#
//bomb waittill( "movedone" );
wait( 3.5 - glass_break_delay );
level notify( "bomb_reset" );
camera delete();
#/
}
}
vibrate()
{
self endon( "death" );
pitchVibrateAmplitude = 1;
vibrateAmplitude = 2;
vibrateTime = 0.05;
originalAngles = self.angles;
angles0 = ( originalAngles[0], originalAngles[1], originalAngles[2] - vibrateAmplitude );
angles1 = ( originalAngles[0], originalAngles[1], originalAngles[2] + vibrateAmplitude );
for(;;)
{
angles0 = ( originalAngles[0] - pitchVibrateAmplitude , originalAngles[1], originalAngles[2] - vibrateAmplitude );
angles1 = ( originalAngles[0] + pitchVibrateAmplitude, originalAngles[1], originalAngles[2] + vibrateAmplitude );
self RotateTo(angles0, vibrateTime );
self waittill( "rotatedone" );
self RotateTo(angles1, vibrateTime );
self waittill( "rotatedone" );
if ( vibrateAmplitude > 0 )
vibrateAmplitude -= 0.25;
pitchVibrateAmplitude = 0 - pitchVibrateAmplitude;
pitchVibrateAmplitude *= 0.66;
}
}
waitForGlassBreak()
{
level endon( "bomb_reset" );
level waittill( "glass_smash", origin );
exploder( level.const_fx_exploder_end_game_glass_shatter );
}
nuked_population_sign_think()
{
tens_model = GetEnt( "counter_tens", "targetname" );
ones_model = GetEnt( "counter_ones", "targetname" );
step = ( 360 / 10 ); // 10 digits (0-9) on the dial
// put the dials at 0
ones = 0;
tens = 0;
tens_model RotateRoll( step, 0.05 );
ones_model RotateRoll( step, 0.05 );
for ( ;; )
{
wait( 1 );
for ( ;; )
{
num_players = get_players().size;
dial = ones + ( tens * 10 );
if ( num_players < dial )
{
ones--;
time = set_dvar_float_if_unset( "scr_dial_rotate_time", "0.5" );
if ( ones < 0 )
{
ones = 9;
tens_model RotateRoll( 0 - step, time );
tens--;
}
ones_model RotateRoll( 0 - step, time );
ones_model waittill( "rotatedone" );
}
else if ( num_players > dial )
{
ones++;
time = set_dvar_float_if_unset( "scr_dial_rotate_time", "0.5" );
if ( ones > 9 )
{
ones = 0;
tens_model RotateRoll( step, time );
tens++;
}
ones_model RotateRoll( step, time );
ones_model waittill( "rotatedone" );
}
else
{
break;
}
}
}
}
nuked_doomsday_clock_init()
{
min_hand_model = GetEnt( "clock_min_hand", "targetname" );
sec_hand_model = GetEnt( "clock_sec_hand", "targetname" );
start_angle = 318;
min_hand_model RotatePitch( start_angle, 0.05 );
min_hand_model waittill( "rotatedone" );
if ( level.timelimit > 0 )
{
min_hand_model RotatePitch( 360 - start_angle, level.timelimit * 60 );
sec_hand_model RotatePitch( 360 * level.timelimit, level.timelimit * 60 );
}
else
{
sec_hand_model thread nuked_doomsday_clock_seconds_think();
}
}
nuked_doomsday_clock_seconds_think()
{
for ( ;; )
{
self RotatePitch( 360, 60 );
self waittill( "rotatedone" );
}
}
/#
nuked_bomb_drop_dev()
{
bomb = GetEnt( "nuked_bomb", "targetname" );
bomb_origin = bomb.origin;
for ( ;; )
{
level waittill( "bomb_reset" );
bomb.origin = bomb_origin;
player = getHostPlayer();
player CameraActivate( false );
VisionSetNaked( "mp_nuked", 0 );
}
}
devgui_nuked( cmd )
{
for ( ;; )
{
wait( 0.5 );
devgui_string = GetDvar( #"devgui_notify" );
switch( devgui_string )
{
case "":
break;
case "warp_to_bomb":
player = getHostPlayer();
AddDebugCommand( "noclip" );
player SetOrigin( ( 3969, 8094, 1052 ) );
player SetPlayerAngles( ( -19, 94, 0 ) );
break;
default:
level notify( devgui_string );
break;
}
SetDvar( "devgui_notify", "" );
}
}
#/

View File

@ -0,0 +1,852 @@
#include maps\mp\_utility;
#include common_scripts\utility;
main()
{
precachemodel("tag_origin");
/#
level thread devgui_radiation();
execdevgui("devgui_mp_radiation");
#/
//needs to be first for create fx
maps\mp\mp_radiation_fx::main();
precachemodel("collision_geo_64x64x256");
precachemodel("collision_wall_128x128x10");
precachemodel("collision_geo_256x256x10");
maps\mp\_load::main();
maps\mp\mp_radiation_amb::main();
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
maps\mp\_compass::setupMiniMap("compass_map_mp_radiation_wager");
}
else
{
maps\mp\_compass::setupMiniMap("compass_map_mp_radiation");
}
//Increase sample size so as to resolve lighting issue
SetDvar("sm_sunSampleSizeNear", ".5" );
// If the team nationalites change in this file,
// you must update the team nationality in the level's csc file as well!
maps\mp\gametypes\_teamset_urbanspecops::level_init();
// Set up the default range of the compass
setdvar("compassmaxrange","2100");
// COLLISION - to prevent players from placing turrets inside a large cylinder brush in the tank room
spawncollision("collision_geo_64x64x256","collider",(1221, 41, 236), (0, 0, 0));
// COLLISION - to prevent players from jumping onto a little ledge of collision
spawncollision("collision_wall_128x128x10","collider",(1042, -309, 309), (0, 0, 0));
spawncollision("collision_wall_128x128x10","collider",(1080, -309, 309), (0, 0, 0));
// COLLISION - to prevent players from dropping turrets in the large grey tanks by the warehouse
spawncollision("collision_geo_64x64x256","collider",(568, 219, 264), (0, 0, 0));
spawncollision("collision_geo_64x64x256","collider",(567, -105, 264), (0, 0, 0));
// COLLISION - to prevent players dropping off the catwalk onto ledge in warehouse
spawncollision("collision_wall_128x128x10","collider",(1157, -345, 186), (0, 270, 0));
spawncollision("collision_wall_128x128x10","collider",(1157, -345, 314), (0, 270, 0));
spawncollision("collision_wall_128x128x10","collider",(1157, -345, 442), (0, 270, 0));
//NOTURRET - spawns radius triggers to stop players from placing turrets in the large cylinders in the NE corner of the map
addNoTurretTrigger((1440, -1116, 145), 230, 256);
addNoTurretTrigger((1446, -1659, 145), 230, 256);
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
flag_init_func();
level_objects_init();
}
flag_init_func()
{
flag_init("kill_stuck_players");
}
level_objects_init()
{
level._digger_fx = LoadFX( "maps/mp_maps/fx_mp_sand_digger_radiation" );
waittillframeend;
level._door_switch_trig1 = getent_and_assert("switch_trigger1");
level._door_switch_trig2 = getent_and_assert("switch_trigger2");
level._door1 = getent_and_assert("big_door1_clip");
level._door2 = getent_and_assert("big_door2_clip");
level.const_fx_exploder_switch_green_light = 2001;
level.const_fx_exploder_switch_red_light = 2002;
//Gets some diggers digging
level thread digger_dig_init();
//Gets diggers in the background moving
moving_diggers_init();
//Sets up the switchs players can flip to open the double doors
level thread door_switch_func();
if( !level.wagerMatch && !isPregame() )
{
//get my doors opening at the start of the match
level thread double_doors_open_at_start();
}
//Get conveyer belt working
level thread conveyer_belt_init();
}
turnSwitchPanelRed()
{
exploder_stop( level.const_fx_exploder_switch_green_light );
exploder( level.const_fx_exploder_switch_red_light );
}
turnSwitchPanelGreen()
{
exploder_stop( level.const_fx_exploder_switch_red_light );
exploder( level.const_fx_exploder_switch_green_light );
}
//Sets it up so a player can flip a switch and open large double doors
door_switch_func()
{
//Set up the use trigger switches that activate my double doors
level._door_switch_trig1 thread door_switch_setup();
level._door_switch_trig2 thread door_switch_setup();
//Cooldown switches inform the player that the door switch is on cooldown if they try to interact with it
cooldown_switches = GetEntArray("off_trigger","targetname");
AssertEx( cooldown_switches.size > 0, "Missing off_triggers");
for( i = 0; i < cooldown_switches.size; i++)
{
cooldown_switches[i] UseTriggerRequireLookAt();
cooldown_switches[i] SetCursorHint( "HINT_NOICON" );
cooldown_switches[i] SetHintString( &"MP_HOLD_DOOR_SWITCH_UNAVAILABLE");
cooldown_switches[i] trigger_off();
}
turnSwitchPanelRed();
kill_trig1 = getent_and_assert("edge_death_trig1");
kill_trig2 = getent_and_assert("edge_death_trig2");
center_death_trig = getent_and_assert("center_death_trig");
//Set up DVARS for tweaking door opening sequence
d1_new_angle = set_dvar_int_if_unset("scr_d1_new_angle", "123");
d2_new_angle = set_dvar_int_if_unset("scr_d2_new_angle", "-123");
door_model1 = getent_and_assert("big_door1");
door_model2 = getent_and_assert("big_door2");
door_model1 LinkTo(level._door1);
door_model2 LinkTo(level._door2);
door_monster_clip = GetEnt("door_monster_clip","targetname");
//door_monster_clip thread dog_kill();
//snd_door_status tracks if the door is open or closed
snd_door_status = 0;
light_structs = getstructarray("switch_struct","targetname");
AssertEx( light_structs.size > 0, "Missing light structs");
for( i = 0; i < light_structs.size; i++)
{
light_structs[i] thread switch_lights(i);
}
tunnel_structs = getstructarray("tunnel_light_spot","targetname");
AssertEx(tunnel_structs.size > 0, "Missing light structs");
for( i = 0; i < light_structs.size; i++)
{
tunnel_structs[i] thread tunnel_lights(i);
}
while(!level.wagermatch)
{
//This is a switch in the level on the catwalk
waittill_any_ents(level._door_switch_trig1,"trigger",level._door_switch_trig2,"trigger");
//Disables the switch temporarily
level._door_switch_trig1 trigger_off();
level._door_switch_trig2 trigger_off();
for( i = 0; i < cooldown_switches.size; i++)
{
cooldown_switches[i] trigger_on();
}
//Set up DVARS for tweaking door opening sequence. Acceleration and decelation variation added for realistic offset.
door_time = set_dvar_int_if_unset("scr_d1_time", "8");
//The doors have specific accelleration and deceleration values so as give an organic-looking timing offset.
//When the doors are opening, we want Door 2 to accelerate slightly faster so as to avoid clipping.
if(snd_door_status == 0)
{
d1_accel = door_time * .6;
d2_accel = door_time * .7;
d1_decel = door_time * .4;
d2_decel = door_time * .3;
//Monster clip is placed and path nodes are severed to keep dogs from running on the doors
door_monster_clip trigger_on();
door_monster_clip DisconnectPaths();
}
//When the doors are closing, we want Door 1 to accelerate slightly faster so as to avoid clipping.
else
{
d1_accel = door_time * .7;
d2_accel = door_time * .6;
d1_decel = door_time * .3;
d2_decel = door_time * .4;
}
door_cooldown = set_dvar_int_if_unset("scr_door_cooldown", "20");
level._door1 RotateRoll(d1_new_angle, door_time, d1_accel, d1_decel);
level._door2 RotateRoll(d2_new_angle, door_time, d2_accel, d2_decel);
thread dropEverythingOnDoorsToGround();
level thread destroyEquipment();
// Play door opening sound
level._door1 playloopsound ("evt_hydraulic_loop", .5);
level._door1 playsound ("evt_hydraulic_start");
level._door1 thread door_snd_alarm ( 5 );
//This sets it so my doors move in reverse next time they're activated
d1_new_angle = d1_new_angle * -1;
d2_new_angle = d1_new_angle * -1;
//Flag marks the period of time i'm checking for any player caught in moving collision
flag_set("kill_stuck_players");
//Give time for doors to move a moderate amount before starts kill trigger
wait 4;
//Only want to kill players if doors are closing
if(snd_door_status == 1)
{
//These are three seperate trigger brushes I want to check for stuck players
kill_trig1 thread kill_edge_players_func();
kill_trig2 thread kill_edge_players_func();
center_death_trig thread kill_edge_players_func();
}
level._door1 waittill("rotatedone");
//snd_door_status tracks if the door is currently open or closed for seprate open and close audio
if (snd_door_status == 0)
{
//stops the move loop, plays endind sound, and set current door status
level._door1 stoploopsound (1);
center_death_trig playsound ("evt_hydraulic_open");
snd_door_status = 1;
}
else
{
//stops the move loop, plays endind sound, and set current door status
level._door1 stoploopsound (1);
center_death_trig playsound ("evt_hydraulic_close");
//Clip is removed so dogs can path
door_monster_clip ConnectPaths();
door_monster_clip trigger_off();
snd_door_status = 0;
}
flag_clear("kill_stuck_players");
//Special notify to end my check for players caught on collision
level notify ("edge_check");
wait (door_cooldown);
level notify ("no_cooldown");
for( i = 0; i < cooldown_switches.size; i++)
{
cooldown_switches[i] trigger_off();
}
level._door_switch_trig1 trigger_on();
level._door_switch_trig2 trigger_on();
}
}
door_snd_alarm ( alarmTimes )
{
for (i=0; i < alarmTimes; i++)
{
wait (.5);
playsoundatposition("amb_alarm_buzz",(-664,110,436));
playsoundatposition("amb_alarm_buzz",(-664,-72,436));
playsoundatposition("amb_alarm_buzz",(-666,-602,436));
playsoundatposition("amb_alarm_buzz",(-666,660,444));
wait (1.5);
}
}
//Self is the use triggers that activate the double doors
door_switch_setup()
{
self usetriggerrequirelookat();
if ( level.wagerMatch )
{
self SetHintString(&"MP_HOLD_DOOR_SWITCH_UNAVAILABLE");
turnSwitchPanelRed();
}
else
{
self SetHintString(&"MP_HOLD_TO_OPERATE_DOORS");
turnSwitchPanelGreen();
}
while ( !level.wagerMatch )
{
// self is the switch. who is the player that triggered switch
self waittill("trigger", who);
//Added "if" check for when the doors are triggered without a player -Leif
if(IsDefined( who ))
{
who playsound ("evt_hydraulic_switch");
}
wait (1);
}
}
//Self is a trigger. The triggers are placed in places i'm afraid of players getting caught
kill_edge_players_func()
{
level endon ("edge_check");
//This only loops while the doors are moving
while(1)
{
self waittill("trigger", player);
if((player IsTouching(level._door1)) || (player IsTouching(level._door2)))
{
player DoDamage(player.health * 2, self.origin, player, player, 0, "MOD_SUICIDE" );
// TODO: add crushing audio. CDC
}
else
{
wait .05;
}
}
}
//TO DO: Review this function for multiplayer API improvements.
//'Self' is the struct within the panel that operates the double doors
switch_lights( element_number )
{
if ( level.PrematchPeriod > 0 && level.inPrematchPeriod == true )
{
level waittill("prematch_over");
}
while(1)
{
effect_ent = Spawn("script_model", self.origin);
effect_ent SetModel("tag_origin");
//This wait is necesary to get the effect to work on the newly created script model.
wait .1;
//Green light signals the switch is not on cooldown
turnSwitchPanelGreen();
//PlayFXOnTag(level._effect["green_light"], effect_ent,"tag_origin" );
waittill_any_ents(level._door_switch_trig1,"trigger",level._door_switch_trig2,"trigger");
//This function is array threaded, so we must prevent FX from playing in the same frame using this loop
for (i = 0; i < element_number; i++)
{
wait .1;
}
effect_ent Delete();
blinky_effect_ent = Spawn("script_model", self.origin);
blinky_effect_ent SetModel("tag_origin");
//This wait is necesary to get the effect to work on the newly created script model.
wait .1;
//Blink red light signals the double doors are moving
turnSwitchPanelRed();
//PlayFXOnTag(level._effect["blink_light"], blinky_effect_ent,"tag_origin" );
//This notify signals that the doors have stopped moving
level waittill ("edge_check");
for (i = 0; i < element_number; i++)
{
wait .1;
}
blinky_effect_ent Delete();
final_effect_ent = Spawn("script_model", self.origin);
final_effect_ent SetModel("tag_origin");
//This wait is necesary to get the effect to work on the newly created script model.
wait .1;
//Red light signals the switch cannot be used
//PlayFXOnTag(level._effect["red_light"], final_effect_ent,"tag_origin" );
//This notify signals that the doors have stopped moving
level waittill ("no_cooldown");
for (i = 0; i < element_number; i++)
{
wait .1;
}
final_effect_ent Delete();
}
}
//'Self' is the struct within the light bulbs in the Radiation tunnel. This function manages FX in the tunnel
//'Element number' is equal to self's index number in the array that got array threaded.
tunnel_lights(element_number)
{
door_closed = true;
while(1)
{
//Must define may variable to avoid SRE
effect_ent = undefined;
//When door is closed, play "solid" tunnel light effect
if(door_closed)
{
effect_ent = Spawn("script_model", self.origin);
effect_ent SetModel("tag_origin");
//Must wait a moment for the script model to finish spawning
wait .1;
PlayFXOnTag(level._effect["green_light"], effect_ent,"tag_origin" );
}
//Wait until a tunnel double door switch is hit
waittill_any_ents(level._door_switch_trig1,"trigger",level._door_switch_trig2,"trigger");
//This loop makes sure effects do not happen in the same frame, as this function has been array threaded to multiple ents.
for (i = 0; i < element_number; i++)
{
wait .1;
}
//'New effect' is the blinking lights that occur while the double doors are moving
new_effect_ent = Spawn("script_model", self.origin);
new_effect_ent SetModel("tag_origin");
if(IsDefined(effect_ent))
{
effect_ent Delete();
}
//Must wait a moment for the script model to finish spawning
wait .1;
PlayFXOnTag(level._effect["blink_light"], new_effect_ent,"tag_origin" );
level waittill ("edge_check");
for (i = 0; i < element_number; i++)
{
wait .1;
}
new_effect_ent Delete();
if(!door_closed)
{
door_closed = true;
}
else
{
door_closed = false;
}
}
}
//Open doors at start
double_doors_open_at_start()
{
//Set up the double doors to open at the start of the match
if ( level.PrematchPeriod > 0 && level.inPrematchPeriod == true )
{
level waittill("prematch_over");
}
//Slow down my door for other functions to hit waittil's
wait .3;
//Note I didn't use the "useby player[0]" convention due to a hesitance to grab specific players in MP.
level._door_switch_trig1 notify ("trigger");
}
//Set up the devgui to have the ability to operate the doors, adjust door cooldown, rotate times, digger behavior, etc.
devgui_radiation(cmd)
{
while(1)
{
wait(0.5);
devgui_string = GetDvar( #"devgui_notify");
switch(devgui_string)
{
case "":
break;
case "operate_doors":
level._door_switch_trig1 notify ("trigger");
break;
default:
level notify(devgui_string);
break;
}
SetDvar("devgui_notify", "");
}
}
//*****TO DO: MOVE DIGGER FUNCTIONALITY CLIENT SIDE.*********
//Sets it up so I can handle multiple diggers doing a digging action
digger_dig_init()
{
diggers = GetEntArray("digger_body","targetname");
AssertEx( diggers.size > 0, "Unable to find entity with targetname 'digger_body'" );
array_thread(diggers,::digger_dig_think);
}
//Self is the digger's body entity. Function creates a series of movements for the diggers to create a digging behavior
digger_dig_think()
{
body = self;
arm = GetEnt(self.target, "targetname");
AssertEx(IsDefined(arm), "Unable to find arm entity for a digger at " + self.origin );
blade_center = GetEnt(arm.target, "targetname");
AssertEx(IsDefined(blade_center), "Unable to find blade entity for a digger at " + self.origin );
blade_pieces = GetEntArray("digger_blade","targetname");
for( i = 0; i < blade_pieces.size; i++)
{
blade_pieces[i] LinkTo(blade_center);
}
blade_center LinkTo( arm );
arm LinkTo( body );
//play idle sound on body
body playloopsound ("evt_excavator_idle", .5);
if(IsDefined(self.script_float))
{
set_dvar_int_if_unset("scr_dig_delay", self.script_float );
}
else
{
//'20' is the default value for the cooldown on the digger's dig action
set_dvar_int_if_unset("scr_dig_delay", 20 );
}
while(1)
{
arm_move_speed = set_dvar_int_if_unset("scr_arm_move_speed", 11);
blade_spin_speed = set_dvar_int_if_unset("scr_blade_spin_speed", 80);
blade_spin_up_time = set_dvar_int_if_unset("scr_blade_spin_up_time", 3);
body_turn = RandomIntRange(-15,15);
//Must grab the absolute value of the turn value to get proper time fraction, which is the "positive_value_func"
body_turn_speed = (positive_value_func(body_turn)) * .3;
body RotateYaw(body_turn, body_turn_speed, body_turn_speed/4, body_turn_speed/4 );
// play move loop on arm, and rev one shot on body
arm playloopsound ("evt_excavator_move", .5);
body playsound ("evt_excavator_rev");
body waittill ("rotatedone");
arm Unlink(body);
arm RotatePitch(-45, arm_move_speed, arm_move_speed/4, arm_move_speed/4);
arm waittill ("rotatedone");
blade_center UnLink(arm);
blade_center RotatePitch(1800, blade_spin_speed, blade_spin_up_time, blade_spin_up_time);
smokeAngles = ( 0, arm.angles[1]+180, arm.angles[2] );
forward = anglesToForward( smokeAngles );
//playfx ( level.chopper_fx["explode"]["death"], self.origin, forward );
PlayFX( level._digger_fx, ( blade_center.origin[0], blade_center.origin[1], blade_center.origin[2]-560), forward );
//stop loop on arm
//iprintlnbold ("this is the stop I suspect"); //had to comment this out for playtest. -Leif
arm stoploopsound (1);
// play digging loop on blade
blade_center playloopsound ("evt_excavator_blade", .5);
blade_center waittill ("rotatedone");
// stop diggin loop blade
blade_center stoploopsound (.5);
blade_center LinkTo(arm);
arm RotatePitch(45, arm_move_speed, arm_move_speed/4, arm_move_speed/4 );
// play move loop on arm, and rev one shot on body
arm playloopsound ("evt_excavator_move", .5);
body playsound ("evt_excavator_rev");
arm waittill ("rotatedone");
arm LinkTo( body );
body RotateYaw((body_turn * -1), body_turn_speed, body_turn_speed/4, body_turn_speed/4);
body waittill ("rotatedone");
arm stoploopsound (.5);
wait (GetDvarFloat( #"scr_dig_delay" ));
}
}
//Sets it up so the script can easily handle multiple moving diggers
moving_diggers_init()
{
diggers = GetEntArray("moving_digger","targetname");
//AssertEx( diggers.size > 0, "Unable to find entity with targetname 'moving_digger'" );
array_thread(diggers, ::moving_diggers_think);
}
//Sets up diggers that follow structs. Note the script_int K/V pair sets up the move time.
moving_diggers_think()
{
digger_struct = getstruct_and_assert(self.target);
while(1)
{
//Each struct has a script_int key value pair that determines the length of time it takes to complete the move
self MoveTo(digger_struct.origin, digger_struct.script_int);
AssertEx(IsDefined(digger_struct.script_int), "Unable to find digger struct's 'script_int' key value pair for moving digger" );
self waittill("movedone");
//Structs target other structs to determine the digger's path.
if(IsDefined(digger_struct.target))
{
digger_struct = GetStruct(digger_struct.target,"targetname");
}
else
{
break;
}
}
}
//Function needed to get the absolute value of an integer and be sure its a positive number
positive_value_func(num)
{
return(max(1, abs(num)));
}
//Starts a thread to alter player's velocity as long as they're in the trigger
conveyer_belt_init()
{
//Need to set dvar to determine force of momentum in trigger
set_dvar_int_if_unset( "scr_coveyer_speed", 45 );
conveyer_trigger = getent_and_assert("coveyer_trig");
//The trigger targets a script struct. The struct contains angles to determine the force direction.
trigger_struct = getstruct_and_assert(conveyer_trigger.target);
//Find direction that my trigger is pointed toward
trigger_angles = AnglesToForward(trigger_struct.angles);
//Create intensity of conveyer force equal to my script DVar. Store it on my trigger for a seperate function to use.
conveyer_trigger._conveyer_vector = vector_scale(trigger_angles,GetDvarInt( #"scr_coveyer_speed"));
while(1)
{
conveyer_trigger waittill("trigger", player);
if(IsPlayer(player))
{
conveyer_trigger thread trigger_thread(player, ::player_on_conveyer);
}
wait .05;
}
}
//Self is trigger. Function is ran when player jumps into the trigger.
player_on_conveyer(player, endon_string)
{
player endon ("death");
player endon ("disconnect");
player endon(endon_string);
while(1)
{
player_velocity = player GetVelocity();
//Don't want jumping player to be pulled by conveyer
if (player IsOnGround())
{
//Gives player momentum in the direction of the conveyer equal to a dvar I created earlier along with their own momentum
player SetVelocity(player_velocity + self._conveyer_vector);
}
wait .05;
}
}
getent_and_assert(ent_name)
{
thing = GetEnt( ent_name, "targetname");
AssertEx(IsDefined(thing), "Unable to find targetname " + ent_name);
return thing;
}
getstruct_and_assert(struct_name)
{
thing = getstruct( struct_name, "targetname");
AssertEx(IsDefined(thing), "Unable to find struct at " +struct_name);
return thing;
}
dropEverythingOnDoorsToGround()
{
level endon("edge_check");
// keep dropping all to ground to keep the items in physics
// if you only do it once or twice they come back to rest to fast
// if there is a problem with this solution then we are going to need
// to do something for keeping the crates in physics while in contact
// with the doors.
while(1)
{
wait(0.1);
dropAllToGround( (0,0,128), 181, 100 );
}
}
destroyEquipment()
{
level endon ( "edge_check" );
for ( ;; )
{
wait( 2 );
grenades = GetEntArray( "grenade", "classname" );
for ( i = 0; i < grenades.size; i++ )
{
item = grenades[i];
if ( !IsDefined( item.name ) )
{
continue;
}
if ( !IsDefined( item.owner ) )
{
continue;
}
if ( !IsWeaponEquipment( item.name ) )
{
continue;
}
if ( !item IsTouching( level._door1 ) && !item IsTouching( level._door2 ) )
{
continue;
}
watcher = item.owner getWatcherForWeapon( item.name );
if ( !IsDefined( watcher ) )
{
continue;
}
watcher thread maps\mp\gametypes\_weaponobjects::waitAndDetonate( item, 0.0, undefined );
}
}
}
getWatcherForWeapon( weapname )
{
if ( !IsDefined( self ) )
{
return undefined;
}
if ( !IsPlayer( self ) )
{
return undefined;
}
for ( i = 0; i < self.weaponObjectWatcherArray.size; i++ )
{
if ( self.weaponObjectWatcherArray[i].weapon != weapname )
{
continue;
}
return ( self.weaponObjectWatcherArray[i] );
}
return undefined;
}
//spawns triggers to stop players from placing turrets
addNoTurretTrigger( position, radius, height )
{
while( !IsDefined( level.noTurretPlacementTriggers ) )
wait( 0.1 );
trigger = Spawn( "trigger_radius", position, 0, radius, height );
level.noTurretPlacementTriggers[level.noTurretPlacementTriggers.size] = trigger;
}

View File

@ -0,0 +1,139 @@
#include maps\mp\_utility;
main()
{
//needs to be first for create fx
maps\mp\mp_russianbase_fx::main();
precachemodel("collision_geo_32x32x128");
precachemodel("collision_wall_256x256x10");
maps\mp\_load::main();
maps\mp\mp_russianbase_amb::main();
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
maps\mp\_compass::setupMiniMap("compass_map_mp_russianbase_wager");
}
else
{
maps\mp\_compass::setupMiniMap("compass_map_mp_russianbase");
}
// If the team nationalites change in this file,
// you must update the team nationality in the level's csc file as well!
maps\mp\gametypes\_teamset_winterspecops::level_init();
// Set up the default range of the compass
setdvar("compassmaxrange","2100");
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
//fog
//setExpFog(200, 6000, 0.7, 0.7, 0.73, 0);
/#
level thread devgui_russianbase();
execdevgui( "devgui_mp_russianbase" );
#/
// spawn collision for hole in wall between E2 and E3
spawncollision("collision_wall_256x256x10","collider",(-1731, 960, 288), (0, 270, 0));
// spawn collision for the new telephone pole
spawncollision("collision_geo_32x32x128","collider",(-120, 1828, 63), (0, 0, 0));
//spawn a new set of windows in front of the missing ones for PS3
window1 = Spawn("script_model", (-2116, 0, 504) );
if ( IsDefined(window1) )
{
window1.angles = (0,0,0);
window1 SetModel("p_rus_window_dark01");
}
window2 = Spawn("script_model", (-1878, 0, 504) );
if ( IsDefined(window2) )
{
window2.angles = (0,0,0);
window2 SetModel("p_rus_window_dark01");
}
//spawn a new telephone pole
pole1 = Spawn("script_model", (-114.081, 1821.35, -10) );
if ( IsDefined(pole1) )
{
pole1.angles = (0, 15.2, 0);
pole1 SetModel("p_rus_electricpole");
}
level thread runTrain();
}
runTrain()
{
level endon( "game_ended" );
precacheModel("t5_veh_train_boxcar");
precacheModel("t5_veh_train_fuelcar");
precacheModel("t5_veh_train_engine");
// if you change moveTime of numOfCarts you need to change it in client script also
moveTime = 20;
numOfCarts = 40;
originalRation = ( moveTime / 80 );
maxWaitBetweenTrains = getDvarIntDefault( #"scr_maxWaitBetweenTrains", 200 );
trainTime = ( moveTime + ( numOfCarts * 4 * originalRation ) );
/#
russian_base_train_dev();
#/
for(;;)
{
waitBetweenTrains = randomint( maxWaitBetweenTrains );
if ( waitBetweenTrains > 0 )
wait( waitBetweenTrains );
level clientNotify("play_train");
wait( trainTime );
}
}
/#
russian_base_train_dev()
{
for ( ;; )
{
level waittill( "run_train" );
level clientNotify("play_train");
}
}
devgui_russianbase( cmd )
{
for ( ;; )
{
wait( 0.5 );
devgui_string = GetDvar( #"devgui_notify" );
switch( devgui_string )
{
case "":
break;
default:
level notify( devgui_string );
break;
}
SetDvar( "devgui_notify", "" );
}
}
#/

View File

@ -0,0 +1,107 @@
#include maps\mp\_utility;
#include common_scripts\utility;
//========================================================
// main
//========================================================
main()
{
//needs to be first for create fx
maps\mp\mp_silo_fx::main();
maps\mp\createart\mp_silo_art::main();
precachemodel("collision_wall_256x256x10");
maps\mp\_load::main();
// maps\mp\_compass::setupMiniMap("compass_map_mp_silo");
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
maps\mp\_compass::setupMiniMap("compass_map_mp_silo_wager");
}
else
{
maps\mp\_compass::setupMiniMap("compass_map_mp_silo");
}
/#
execdevgui( "devgui_mp_silo" );
#/
maps\mp\mp_silo_amb::main();
// If the team nationalites change in this file, you must also update the level's csc file,
// the level's csv file, and the share/raw/mp/mapsTable.csv
maps\mp\gametypes\_teamset_urbanspecops::level_init();
// Set up the default range of the compass
setdvar( "compassmaxrange","2100" );
// Set up some generic War Flag Names.
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning( true );
level thread crane_container();
//spawning collision in wager match so players can't hide in the spawned plates
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 || isPregame() )
{
spawncollision("collision_wall_256x256x10","collider",(1527, 71, 16), (0, 337, 0));
}
}
//========================================================
// cargo_container
//========================================================
crane_container()
{
crane_container = GetEnt( "crane_container", "targetname" );
if( !IsDefined( crane_container ) )
{
return;
}
crane_container thread rotate_crane_container();
}
//========================================================
// rotate_crane_container
//========================================================
rotate_crane_container()
{
rotate_time = 8;
rotate_angle = 30;
self RotateYaw( rotate_angle / 2, rotate_time / 2 );
self waittill( "rotatedone" );
while( true )
{
rotate_angle = rotate_angle * -1;
self RotateYaw( rotate_angle, rotate_time, rotate_time / 2, rotate_time / 2 );
self waittill( "rotatedone" );
}
}

View File

@ -0,0 +1,105 @@
#include maps\mp\_utility;
main()
{
//needs to be first for create fx
maps\mp\mp_villa_fx::main();
precachemodel("collision_geo_64x64x256");
precachemodel("collision_geo_32x32x128");
precachemodel("collision_geo_32x32x32");
maps\mp\_load::main();
maps\mp\mp_villa_amb::main();
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
maps\mp\_compass::setupMiniMap("compass_map_mp_villa_wager");
}
else
{
maps\mp\_compass::setupMiniMap("compass_map_mp_villa");
}
// If the team nationalites change in this file,
// you must update the team nationality in the level's csc file as well!
maps\mp\gametypes\_teamset_cubans::level_init();
// Set up the default range of the compass
setdvar("compassmaxrange","2100");
// Set up some generic War Flag Names.
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
// collision keeping players from poking their heads into rock
spawncollision("collision_geo_64x64x256","collider",(4790, 1863, 388), (0, 30.8, 0));
// collision keeping players from poking their heads into another rock near the allies spawn
spawncollision("collision_geo_32x32x128","collider",(4329, 3735, 144), (0, 0, 0));
// collision keeping players from poking their heads into another rock near D2.
spawncollision("collision_geo_32x32x32","collider",(2512, 3818, 113), (0, 45, 0));
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
level thread startLightning();
}
startLightning()
{
while(1)
{
self thread trigger_lightning_exploder();
wait( 30 + randomfloat(40) );
//wait (4);
}
}
trigger_lightning_exploder()
{
randomExploder = randomint( 4 );
//randomExploder = 3;
switch( randomExploder )
{
case 0:
exploder(1001);
playsoundatposition("amb_thunder_clap",( 259.2, -801, 1197 ));
//println ("sound exploder 1");
break;
case 1:
exploder(1002);
playsoundatposition("amb_thunder_clap",( 2523, -17012, 1174 ));
//println ("sound exploder 2");
break;
case 2:
exploder(1003);
playsoundatposition("amb_thunder_clap",(6457, -611, 1145));
//println ("sound exploder 3");
break;
case 3:
exploder(1004);
playsoundatposition("amb_thunder_clap",(4981, 1335, 890));
//println ("sound exploder 4");
break;
}
}

View File

@ -0,0 +1,88 @@
#include maps\mp\_utility;
main()
{
//needs to be first for create fx
maps\mp\mp_zoo_fx::main();
precachemodel("collision_wall_256x256x10");
precachemodel("collision_geo_32x32x128");
precachemodel("collision_geo_128x128x10");
precachemodel("collision_geo_64x64x64");
maps\mp\_load::main();
maps\mp\mp_zoo_amb::main();
// maps\mp\_compass::setupMiniMap("compass_map_mp_zoo");
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
{
maps\mp\_compass::setupMiniMap("compass_map_mp_zoo_wager");
}
else
{
maps\mp\_compass::setupMiniMap("compass_map_mp_zoo");
}
// If the team nationalites change in this file, you must also update the level's csc file,
// the level's csv file, and the share/raw/mp/mapsTable.csv
maps\mp\gametypes\_teamset_urbanspecops::level_init();
// Set up the default range of the compass
setdvar("compassmaxrange","2100");
// Set up some generic War Flag Names.
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
//spawn gates to explain rogue physics collision brush
gate1 = Spawn("script_model", (1040, 1495, 56) );
if ( IsDefined(gate1) )
{
gate1.angles = (0, 270, 0);
gate1 SetModel("p_zoo_bend_gate_mid");
}
gate2 = Spawn("script_model", (1104, 1495, 56) );
if ( IsDefined(gate2) )
{
gate2.angles = (0, 270, 0);
gate2 SetModel("p_zoo_bend_gate_mid");
}
// spawn collision for bit of collision above a light in B3
spawncollision("collision_wall_256x256x10","collider",(876, 2034, 169), (0, 90, 0));
// spawn collision to stop players from hiding inside the may-pole.
spawncollision("collision_geo_32x32x128","collider",(49, 832, 66), (0, 0, 0));
spawncollision("collision_geo_32x32x128","collider",(49, 832, 194), (0, 0, 0));
// spawn collision to stop players from hiding inside the may-pole base.
spawncollision("collision_geo_64x64x64","collider",(47, 833, -16), (0, 0, 0));
spawncollision("collision_geo_64x64x64","collider",(47, 833, -16), (0, 315, 0));
// spawn collision to stop players from standing on collision in aviary.
spawncollision("collision_geo_128x128x10","collider",(934, 205, 74), (28.2, 340.6, -38.4));
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 || isPregame() )
{
spawncollision("collision_wall_256x256x10","collider",(-5, 821, 72), (0, 297, 0));
}
}

77
mods/mp_patch/mod.csv Normal file
View File

@ -0,0 +1,77 @@
rawfile,maps/mp/_dogs.gsc
rawfile,maps/mp/_utility.gsc
rawfile,maps/mp/gametypes/_globallogic_player.gsc
rawfile,maps/mp/gametypes/_globallogic_score.gsc
rawfile,maps/mp/gametypes/_spawning.gsc
rawfile,maps/mp/gametypes/ctf.gsc
rawfile,maps/mp/gametypes/dem.gsc
rawfile,maps/mp/gametypes/dom.gsc
rawfile,maps/mp/gametypes/koth.gsc
rawfile,maps/mp/gametypes/sab.gsc
rawfile,maps/mp/mp_array.gsc
rawfile,maps/mp/mp_cairo.gsc
rawfile,maps/mp/mp_cosmodrome.gsc
rawfile,maps/mp/mp_crisis.gsc
rawfile,maps/mp/mp_duga.gsc
rawfile,maps/mp/mp_firingrange.gsc
rawfile,maps/mp/mp_mountain.gsc
rawfile,maps/mp/mp_nuked.gsc
rawfile,maps/mp/mp_radiation.gsc
rawfile,maps/mp/mp_russianbase.gsc
rawfile,maps/mp/mp_villa.gsc
rawfile,maps/mp/mp_zoo.gsc
rawfile,maps/mp/mp_golfcourse.gsc
rawfile,maps/mp/mp_silo.gsc
rawfile,clientscripts/mp/_claymore.csc
menufile,ui_mp/patch.txt
menufile,ui_mp/custom_settings_general.menu
menufile,ui_mp/fileshare_playercard.menu
menufile,ui_mp/after_action_report.menu
menufile,ui_mp/options_multi.menu
menufile,ui_mp/scriptmenus/callvote.menu
menufile,ui_mp/scriptmenus/changeclass.menu
menufile,ui_mp/scriptmenus/class.menu
menufile,ui_mp/hud_hardcore.menu
menufile,ui_mp/players.menu
menufile,ui_mp/hud_team.menu
menufile,ui_mp/hud_ffa.menu
menufile,ui_mp/playercards_clantag.menu
menufile,ui_mp/mods.menu
menufile,ui_mp/cac_custom.menu
menufile,ui_mp/cac_popups.menu
menufile,ui_mp/cac_weapon.menu
menufile,ui_mp/combat_record.menu
menufile,ui_mp/game_mode.menu
menufile,ui_mp/main.menu
menufile,ui_mp/pc_serversettings.menu
menufile,ui_mp/serverbrowser.menu
menufile,ui_mp/custom_game_create.menu
menufile,ui_mp/pc_basictraining.menu
rawfile,rumble/shotgun_fire_h.rmb
rawfile,rumble/shotgun_fire_l.rmb
rawfile,rumble/silencer_fire_h.rmb
rawfile,rumble/silencer_fire_l.rmb
rawfile,rumble/heavygun_fire_h.rmb
rawfile,rumble/heavygun_fire_l.rmb
rawfile,rumble/smg_fire_h.rmb
rawfile,rumble/smg_fire_l.rmb
rawfile,rumble/assault_fire_h.rmb
rawfile,rumble/assault_fire_l.rmb
rawfile,rumble/flamethrower_h.rmb
rawfile,rumble/flamethrower_l.rmb
rawfile,rumble/damage_heavy_h.rmb
rawfile,rumble/damage_heavy_l.rmb
menufile,ui/options_graphics_pc.menu
menufile,ui/error.menu
stringtable,mp/gametypesTable.csv
stringtable,mp/mapsTable.csv
stringtable,mp/attachmentTable.csv
rawfile,maps/mp/gametypes/_bot.gsc
menufile,ui_mp/playercards.menu
1 rawfile maps/mp/_dogs.gsc
2 rawfile maps/mp/_utility.gsc
3 rawfile maps/mp/gametypes/_globallogic_player.gsc
4 rawfile maps/mp/gametypes/_globallogic_score.gsc
5 rawfile maps/mp/gametypes/_spawning.gsc
6 rawfile maps/mp/gametypes/ctf.gsc
7 rawfile maps/mp/gametypes/dem.gsc
8 rawfile maps/mp/gametypes/dom.gsc
9 rawfile maps/mp/gametypes/koth.gsc
10 rawfile maps/mp/gametypes/sab.gsc
11 rawfile maps/mp/mp_array.gsc
12 rawfile maps/mp/mp_cairo.gsc
13 rawfile maps/mp/mp_cosmodrome.gsc
14 rawfile maps/mp/mp_crisis.gsc
15 rawfile maps/mp/mp_duga.gsc
16 rawfile maps/mp/mp_firingrange.gsc
17 rawfile maps/mp/mp_mountain.gsc
18 rawfile maps/mp/mp_nuked.gsc
19 rawfile maps/mp/mp_radiation.gsc
20 rawfile maps/mp/mp_russianbase.gsc
21 rawfile maps/mp/mp_villa.gsc
22 rawfile maps/mp/mp_zoo.gsc
23 rawfile maps/mp/mp_golfcourse.gsc
24 rawfile maps/mp/mp_silo.gsc
25 rawfile clientscripts/mp/_claymore.csc
26 menufile ui_mp/patch.txt
27 menufile ui_mp/custom_settings_general.menu
28 menufile ui_mp/fileshare_playercard.menu
29 menufile ui_mp/after_action_report.menu
30 menufile ui_mp/options_multi.menu
31 menufile ui_mp/scriptmenus/callvote.menu
32 menufile ui_mp/scriptmenus/changeclass.menu
33 menufile ui_mp/scriptmenus/class.menu
34 menufile ui_mp/hud_hardcore.menu
35 menufile ui_mp/players.menu
36 menufile ui_mp/hud_team.menu
37 menufile ui_mp/hud_ffa.menu
38 menufile ui_mp/playercards_clantag.menu
39 menufile ui_mp/mods.menu
40 menufile ui_mp/cac_custom.menu
41 menufile ui_mp/cac_popups.menu
42 menufile ui_mp/cac_weapon.menu
43 menufile ui_mp/combat_record.menu
44 menufile ui_mp/game_mode.menu
45 menufile ui_mp/main.menu
46 menufile ui_mp/pc_serversettings.menu
47 menufile ui_mp/serverbrowser.menu
48 menufile ui_mp/custom_game_create.menu
49 menufile ui_mp/pc_basictraining.menu
50 rawfile rumble/shotgun_fire_h.rmb
51 rawfile rumble/shotgun_fire_l.rmb
52 rawfile rumble/silencer_fire_h.rmb
53 rawfile rumble/silencer_fire_l.rmb
54 rawfile rumble/heavygun_fire_h.rmb
55 rawfile rumble/heavygun_fire_l.rmb
56 rawfile rumble/smg_fire_h.rmb
57 rawfile rumble/smg_fire_l.rmb
58 rawfile rumble/assault_fire_h.rmb
59 rawfile rumble/assault_fire_l.rmb
60 rawfile rumble/flamethrower_h.rmb
61 rawfile rumble/flamethrower_l.rmb
62 rawfile rumble/damage_heavy_h.rmb
63 rawfile rumble/damage_heavy_l.rmb
64 menufile ui/options_graphics_pc.menu
65 menufile ui/error.menu
66 stringtable mp/gametypesTable.csv
67 stringtable mp/mapsTable.csv
68 stringtable mp/attachmentTable.csv
69 rawfile maps/mp/gametypes/_bot.gsc
70 menufile ui_mp/playercards.menu

View File

@ -0,0 +1,104 @@
a0,b1,c2,d3,e4,f5,g6,h7,i8,j9,k10,l11,m12,n13,o14
"# Weapon Attachment Data [ DO NOT CHANGE FORMAT, NAME/REFERENCE ARE TO BE UNIQUE IN THE WHOLE TABLE ]",,,,,,,,,,,,,,
# index,# attach point,# group,# name,# reference,# count,# image,# description,# data - string,# data - int ,# data - int2 (binary mask),# data - string - compatible attachments - separated by a space ,# cost of this attachment,#unlock lvl,#unlock plevel
0,none,attachment,MPUI_NO_ATTACHMENT,none,,weapon_missing_image,MPUI_NO_ATTACHMENT_DESC,,0,,,,,
1,top,attachment,MPUI_REFLEX,reflex,,menu_mp_weapons_attach_aimpoint,MPUI_REFLEX_DESC,REFLEX,1,,dualclip extclip grip rf silencer,1000,,
2,top,attachment,MPUI_ELBIT,elbit,,menu_mp_weapons_attach_elbit,MPUI_ELBIT_DESC,ELBIT,2,,dualclip extclip grip rf silencer,1000,,
3,top,attachment,MPUI_ACOG,acog,,menu_mp_weapons_attach_acog,MPUI_ACOG_DESC,ACOG,3,,dualclip extclip grip rf silencer,1000,,
4,top,attachment,MPUI_LPS,lps,,menu_mp_weapons_attach_lps,MPUI_LPS_DESC,LPS,4,,,2000,,
5,top,attachment,MPUI_VZOOM,vzoom,,menu_mp_weapons_attach_vzoom,MPUI_VZOOM_DESC,VZOOM,5,,extclip silencer,2000,,
6,top,attachment,MPUI_IR,ir,,menu_mp_weapons_attach_ir,MPUI_IR_DESC,IR,6,,dualclip extclip grip silencer,2000,,
7,bottom,attachment,MPUI_GL,gl,,menu_mp_weapons_attach_grenade_launcher,MPUI_GL_DESC,GL,7,,,3000,,
8,bottom,attachment,MPUI_MK,mk,,menu_mp_weapons_attach_masterkey,MPUI_MK_DESC,MK,8,,,1000,,
9,muzzle,attachment,MPUI_SILENCER,silencer,,menu_mp_weapons_attach_silencer,MPUI_SILENCER_DESC,SILENCER,9,,acog dualclip elbit extclip grip ir reflex rf upgradesight vzoom,2000,,
10,bottom,attachment,MPUI_GRIP,grip,,menu_mp_weapons_attach_grip,MPUI_GRIP_DESC,GRIP,10,,acog dualclip elbit extclip ir reflex rf silencer,1000,,
11,trigger,attachment,MPUI_EXTCLIP,extclip,,menu_mp_weapons_attach_extend_clip,MPUI_EXTCLIP_DESC,EXTCLIP,11,,acog elbit grip ir reflex rf silencer upgradesight vzoom,1000,,
12,trigger,attachment,MPUI_DUALCLIP,dualclip,,menu_mp_weapons_attach_dual_clip,MPUI_DUALCLIP_DESC,DUALCLIP,12,,acog elbit grip ir reflex rf silencer,1000,,
13,trigger,attachment,MPUI_SADDLE,saddle,,weapon_missing_image,MPUI_SADDLE_DESC,SADDLE,13,,,,,
14,trigger,attachment,MPUI_FMJ,fmj,,weapon_missing_image,MPUI_FMJ_DESC,FMJ,14,,,,,
15,trigger,attachment,MPUI_HP,hp,,weapon_missing_image,MPUI_HP_DESC,HP,15,,,,,
16,trigger,attachment,MPUI_RF,rf,,menu_mp_weapons_attach_rof,MPUI_RF_DESC,RF,16,,acog dualclip elbit extclip grip reflex silencer,3000,,
17,bottom,attachment,MPUI_FT,ft,,menu_mp_weapons_attach_flamethrower,MPUI_FT_DESC,FT,17,,,1000,,
18,bottom,attachment,MPUI_BAYONET,bayonet,,weapon_missing_image,MPUI_BAYONET_DESC,BAYONET,18,,,,,
19,trigger,attachment,MPUI_AUTO,auto,,menu_mp_weapons_attach_auto,MPUI_AUTO_DESC,auto,19,,,2000,,
20,trigger,attachment,MPUI_SPEED,speed,,menu_mp_weapons_attach_reload,MPUI_SPEED_DESC,speed,20,,,1000,,
21,top,attachment,MPUI_UPGRADESIGHT,upgradesight,,menu_mp_weapons_attach_upgradesight,MPUI_UPGRADESIGHT_DESC,upgradesight,21,,,250,,
22,muzzle,attachment,MPUI_SNUB,snub,,menu_mp_weapons_attach_snub,MPUI_SNUB_DESC,snub,22,,,500,,
23,bottom,attachment,MPUI_DW,dw,,weapon_missing_image,MPUI_DW_DESC,dw,23,,,1000,,
0,camo,weaponoption,MPUI_NONE,camo_none,,weapon_missing_image,MPUI_NONE,,,,,,,
1,camo,weaponoption,MPUI_CAMO_DUSTY,camo_dusty,,menu_mp_weapons_camo_dusty,MPUI_CAMO_DUSTY,,,,,250,,
2,camo,weaponoption,MPUI_CAMO_ICE,camo_ice,,menu_mp_weapons_camo_icy,MPUI_CAMO_ICE,,,,,250,,
3,camo,weaponoption,MPUI_CAMO_RED,cammo_red,,menu_mp_weapons_camo_mass,MPUI_CAMO_RED,,,,,250,,
4,camo,weaponoption,MPUI_CAMO_OLIVE,camo_od,,menu_mp_weapons_camo_olive,MPUI_CAMO_OLIVE,,,,,250,,
5,camo,weaponoption,MPUI_CAMO_NEVADA,camo_desert_nevada,,menu_mp_weapons_camo_nevada,MPUI_CAMO_NEVADA,,,,,250,,
6,camo,weaponoption,MPUI_CAMO_SAHARA,camo_desert_sahara,,menu_mp_weapons_camo_sahara,MPUI_CAMO_SAHARA,,,,,250,,
7,camo,weaponoption,MPUI_CAMO_ERDL,camo_jungle_erdl,,menu_mp_weapons_camo_erdl,MPUI_CAMO_ERDL,,,,,250,,
8,camo,weaponoption,MPUI_CAMO_TIGER,camo_jungle_tiger,,menu_mp_weapons_camo_tiger,MPUI_CAMO_TIGER,,,,,250,,
9,camo,weaponoption,MPUI_CAMO_BERLIN,camo_urban_german,,menu_mp_weapons_camo_berlin,MPUI_CAMO_BERLIN,,,,,250,,
10,camo,weaponoption,MPUI_CAMO_WARSAW,camo_urban_warsaw,,menu_mp_weapons_camo_warsaw,MPUI_CAMO_WARSAW,,,,,250,,
11,camo,weaponoption,MPUI_CAMO_SIBERIA,camo_winter_siberia,,menu_mp_weapons_camo_siberia,MPUI_CAMO_SIBERIA,,,,,250,,
12,camo,weaponoption,MPUI_CAMO_YUKON,camo_winter_yukon,,menu_mp_weapons_camo_yukon,MPUI_CAMO_YUKON,,,,,250,,
13,camo,weaponoption,MPUI_CAMO_WOODLAND,camo_woodland,,menu_mp_weapons_camo_wood,MPUI_CAMO_WOODLAND,,,,,250,,
14,camo,weaponoption,MPUI_CAMO_FLORA,camo_woodland_flora,,menu_mp_weapons_camo_flora,MPUI_CAMO_FLORA,,,,,250,,
15,camo,weaponoption,MPUI_CAMO_GOLD,camo_gold,,menu_mp_weapons_camo_gold,MPUI_CAMO_GOLD,,,,,50000,,14
16,lens,weaponoption,MPUI_LENS_DEFAULT,,,,,,,,,,,
17,lens,weaponoption,MPUI_LENS_RED,,,,,,,,,500,,
18,lens,weaponoption,MPUI_LENS_BLUE,,,,,,,,,500,,
19,lens,weaponoption,MPUI_LENS_GREEN,,,,,,,,,500,,
20,lens,weaponoption,MPUI_LENS_ORANGE,,,,,,,,,500,,
21,lens,weaponoption,MPUI_LENS_YELLOW,,,,,,,,,500,,
22,reticle,weaponoption,MPUI_RETICLE_DEFAULT,,,menu_mp_reticle_red_dot_main,,,,,,,,
23,reticle,weaponoption,MPUI_RETICLE_1,,,menu_mp_reticle_circle_split01,,,,,,500,,
24,reticle,weaponoption,MPUI_RETICLE_2,,,menu_mp_reticle_lines_dots01,,,,,,500,,
25,reticle,weaponoption,MPUI_RETICLE_3,,,menu_mp_reticle_circles05,,,,,,500,,
26,reticle,weaponoption,MPUI_RETICLE_4,,,menu_mp_reticle_happyface01,,,,,,500,,
27,reticle,weaponoption,MPUI_RETICLE_ARROWS02,,,menu_mp_reticle_arrows02,,,,,,500,,
28,reticle,weaponoption,MPUI_RETICLE_ARROWS01,,,menu_mp_reticle_arrows01,,,,,,500,,
29,reticle,weaponoption,MPUI_RETICLE_ARROWS03,,,menu_mp_reticle_arrows03,,,,,,500,,
30,reticle,weaponoption,MPUI_RETICLE_BONES,,,menu_mp_reticle_bones,,,,,,500,,
31,reticle,weaponoption,MPUI_RETICLE_BURST01,,,menu_mp_reticle_burst01,,,,,,500,,
32,reticle,weaponoption,MPUI_RETICLE_CIRCLES01,,,menu_mp_reticle_circles01,,,,,,500,,
33,reticle,weaponoption,MPUI_RETICLE_CIRCLES02,,,menu_mp_reticle_circles02,,,,,,500,,
34,reticle,weaponoption,MPUI_RETICLE_CIRCLES03,,,menu_mp_reticle_circles03,,,,,,500,,
35,reticle,weaponoption,MPUI_RETICLE_CIRCLES04,,,menu_mp_reticle_circles04,,,,,,500,,
36,reticle,weaponoption,MPUI_RETICLE_CIRCLES_LINES01,,,menu_mp_reticle_circles_lines01,,,,,,500,,
37,reticle,weaponoption,MPUI_RETICLE_CIRCLES_LINES02,,,menu_mp_reticle_circles_lines02,,,,,,500,,
38,reticle,weaponoption,MPUI_RETICLE_CIRCLES_LINES03,,,menu_mp_reticle_circles_lines03,,,,,,500,,
39,reticle,weaponoption,MPUI_RETICLE_CIRCLES_TRIANGLES01,,,menu_mp_reticle_circles_triangles01,,,,,,500,,
40,reticle,weaponoption,MPUI_RETICLE_CIRCLES_TRIANGLES02,,,menu_mp_reticle_circles_triangles02,,,,,,500,,
41,reticle,weaponoption,MPUI_RETICLE_CROSS01,,,menu_mp_reticle_cross01,,,,,,500,,
42,reticle,weaponoption,MPUI_RETICLE_CROSS02,,,menu_mp_reticle_cross02,,,,,,500,,
43,reticle,weaponoption,MPUI_RETICLE_CROSS03,,,menu_mp_reticle_cross03,,,,,,500,,
44,reticle,weaponoption,MPUI_RETICLE_CROSS04,,,menu_mp_reticle_cross04,,,,,,500,,
45,reticle,weaponoption,MPUI_RETICLE_CROSS05,,,menu_mp_reticle_cross05,,,,,,500,,
46,reticle,weaponoption,MPUI_RETICLE_DIAMOND01,,,menu_mp_reticle_diamond01,,,,,,500,,
47,reticle,weaponoption,MPUI_RETICLE_DIAMOND02,,,menu_mp_reticle_diamond02,,,,,,500,,
48,reticle,weaponoption,MPUI_RETICLE_HEART,,,menu_mp_reticle_heart,,,,,,500,,
49,reticle,weaponoption,MPUI_RETICLE_RADIATION,,,menu_mp_reticle_radiation,,,,,,500,,
50,reticle,weaponoption,MPUI_RETICLE_SKULL01,,,menu_mp_reticle_skull01,,,,,,500,,
51,reticle,weaponoption,MPUI_RETICLE_SQUARE01,,,menu_mp_reticle_square01,,,,,,500,,
52,reticle,weaponoption,MPUI_RETICLE_SQUARE02,,,menu_mp_reticle_square02,,,,,,500,,
53,reticle,weaponoption,MPUI_RETICLE_SQUARES_CROSS,,,menu_mp_reticle_squares_cross01,,,,,,500,,
54,reticle,weaponoption,MPUI_RETICLE_STAR01,,,menu_mp_reticle_star01,,,,,,500,,
55,reticle,weaponoption,MPUI_RETICLE_THREEDOTS01,,,menu_mp_reticle_three_dots,,,,,,500,,
56,reticle,weaponoption,MPUI_RETICLE_TREYARCH,,,menu_mp_reticle_treyarch,,,,,,500,,
57,reticle,weaponoption,MPUI_RETICLE_TRIANGLE01,,,menu_mp_reticle_triangle01,,,,,,500,,
58,reticle,weaponoption,MPUI_RETICLE_TRIANGLE02,,,menu_mp_reticle_triangle02,,,,,,500,,
59,reticle,weaponoption,MPUI_RETICLE_X01,,,menu_mp_reticle_x01,,,,,,500,,
60,reticle,weaponoption,MPUI_RETICLE_X02,,,menu_mp_reticle_x02,,,,,,500,,
61,reticle,weaponoption,MPUI_RETICLE_YINGYANG,,,menu_mp_reticle_yinyang,,,,,,500,,
62,tag,weaponoption,FEATURE_GUN_TAG,tag,,,,,,,,1000,,
63,emblem,weaponoption,FEATURE_GUN_EMBLEM,emblem,,,,,,,,1000,,
64,tag,weaponoption,FEATURE_SECOND_ATTACHMENT,2ndattach,,,,,,,,3000,,
65,reticle_color,weaponoption,MPUI_RETICLE_COLOR_1,,,,,,,,,,,
66,reticle_color,weaponoption,MPUI_RETICLE_COLOR_2,,,,,,,,,250,,
67,reticle_color,weaponoption,MPUI_RETICLE_COLOR_3,,,,,,,,,250,,
68,reticle_color,weaponoption,MPUI_RETICLE_COLOR_4,,,,,,,,,250,,
69,reticle_color,weaponoption,MPUI_RETICLE_COLOR_5,,,,,,,,,250,,
70,reticle_color,weaponoption,MPUI_RETICLE_COLOR_6,,,,,,,,,250,,
71,reticle_color,weaponoption,MPUI_RETICLE_COLOR_7,,,,,,,,,250,,
0,none,point,MPUI_NONE,none,,weapon_missing_image,MPUI_NO_ATTACHMENT_DESC,,,,,,,
1,none,point,MENU_ATTACH_POINT_TOP,top,,,MENU_ATTACH_POINT_TOP_DESC,,,,,,,
2,none,point,MENU_ATTACH_POINT_BOTTOM,bottom,,,MENU_ATTACH_POINT_BOTTOM_DESC,,,,,,,
3,none,point,MENU_ATTACH_POINT_TRIGGER,trigger,,,MENU_ATTACH_POINT_TRIGGER_DESC,,,,,,,
4,none,point,MENU_ATTACH_POINT_MUZZLE,muzzle,,,MENU_ATTACH_POINT_MUZZLE_DESC,,,,,,,
1 a0 b1 c2 d3 e4 f5 g6 h7 i8 j9 k10 l11 m12 n13 o14
2 # Weapon Attachment Data [ DO NOT CHANGE FORMAT, NAME/REFERENCE ARE TO BE UNIQUE IN THE WHOLE TABLE ]
3 # index # attach point # group # name # reference # count # image # description # data - string # data - int # data - int2 (binary mask) # data - string - compatible attachments - separated by a space # cost of this attachment #unlock lvl #unlock plevel
4 0 none attachment MPUI_NO_ATTACHMENT none weapon_missing_image MPUI_NO_ATTACHMENT_DESC 0
5 1 top attachment MPUI_REFLEX reflex menu_mp_weapons_attach_aimpoint MPUI_REFLEX_DESC REFLEX 1 dualclip extclip grip rf silencer 1000
6 2 top attachment MPUI_ELBIT elbit menu_mp_weapons_attach_elbit MPUI_ELBIT_DESC ELBIT 2 dualclip extclip grip rf silencer 1000
7 3 top attachment MPUI_ACOG acog menu_mp_weapons_attach_acog MPUI_ACOG_DESC ACOG 3 dualclip extclip grip rf silencer 1000
8 4 top attachment MPUI_LPS lps menu_mp_weapons_attach_lps MPUI_LPS_DESC LPS 4 2000
9 5 top attachment MPUI_VZOOM vzoom menu_mp_weapons_attach_vzoom MPUI_VZOOM_DESC VZOOM 5 extclip silencer 2000
10 6 top attachment MPUI_IR ir menu_mp_weapons_attach_ir MPUI_IR_DESC IR 6 dualclip extclip grip silencer 2000
11 7 bottom attachment MPUI_GL gl menu_mp_weapons_attach_grenade_launcher MPUI_GL_DESC GL 7 3000
12 8 bottom attachment MPUI_MK mk menu_mp_weapons_attach_masterkey MPUI_MK_DESC MK 8 1000
13 9 muzzle attachment MPUI_SILENCER silencer menu_mp_weapons_attach_silencer MPUI_SILENCER_DESC SILENCER 9 acog dualclip elbit extclip grip ir reflex rf upgradesight vzoom 2000
14 10 bottom attachment MPUI_GRIP grip menu_mp_weapons_attach_grip MPUI_GRIP_DESC GRIP 10 acog dualclip elbit extclip ir reflex rf silencer 1000
15 11 trigger attachment MPUI_EXTCLIP extclip menu_mp_weapons_attach_extend_clip MPUI_EXTCLIP_DESC EXTCLIP 11 acog elbit grip ir reflex rf silencer upgradesight vzoom 1000
16 12 trigger attachment MPUI_DUALCLIP dualclip menu_mp_weapons_attach_dual_clip MPUI_DUALCLIP_DESC DUALCLIP 12 acog elbit grip ir reflex rf silencer 1000
17 13 trigger attachment MPUI_SADDLE saddle weapon_missing_image MPUI_SADDLE_DESC SADDLE 13
18 14 trigger attachment MPUI_FMJ fmj weapon_missing_image MPUI_FMJ_DESC FMJ 14
19 15 trigger attachment MPUI_HP hp weapon_missing_image MPUI_HP_DESC HP 15
20 16 trigger attachment MPUI_RF rf menu_mp_weapons_attach_rof MPUI_RF_DESC RF 16 acog dualclip elbit extclip grip reflex silencer 3000
21 17 bottom attachment MPUI_FT ft menu_mp_weapons_attach_flamethrower MPUI_FT_DESC FT 17 1000
22 18 bottom attachment MPUI_BAYONET bayonet weapon_missing_image MPUI_BAYONET_DESC BAYONET 18
23 19 trigger attachment MPUI_AUTO auto menu_mp_weapons_attach_auto MPUI_AUTO_DESC auto 19 2000
24 20 trigger attachment MPUI_SPEED speed menu_mp_weapons_attach_reload MPUI_SPEED_DESC speed 20 1000
25 21 top attachment MPUI_UPGRADESIGHT upgradesight menu_mp_weapons_attach_upgradesight MPUI_UPGRADESIGHT_DESC upgradesight 21 250
26 22 muzzle attachment MPUI_SNUB snub menu_mp_weapons_attach_snub MPUI_SNUB_DESC snub 22 500
27 23 bottom attachment MPUI_DW dw weapon_missing_image MPUI_DW_DESC dw 23 1000
28 0 camo weaponoption MPUI_NONE camo_none weapon_missing_image MPUI_NONE
29 1 camo weaponoption MPUI_CAMO_DUSTY camo_dusty menu_mp_weapons_camo_dusty MPUI_CAMO_DUSTY 250
30 2 camo weaponoption MPUI_CAMO_ICE camo_ice menu_mp_weapons_camo_icy MPUI_CAMO_ICE 250
31 3 camo weaponoption MPUI_CAMO_RED cammo_red menu_mp_weapons_camo_mass MPUI_CAMO_RED 250
32 4 camo weaponoption MPUI_CAMO_OLIVE camo_od menu_mp_weapons_camo_olive MPUI_CAMO_OLIVE 250
33 5 camo weaponoption MPUI_CAMO_NEVADA camo_desert_nevada menu_mp_weapons_camo_nevada MPUI_CAMO_NEVADA 250
34 6 camo weaponoption MPUI_CAMO_SAHARA camo_desert_sahara menu_mp_weapons_camo_sahara MPUI_CAMO_SAHARA 250
35 7 camo weaponoption MPUI_CAMO_ERDL camo_jungle_erdl menu_mp_weapons_camo_erdl MPUI_CAMO_ERDL 250
36 8 camo weaponoption MPUI_CAMO_TIGER camo_jungle_tiger menu_mp_weapons_camo_tiger MPUI_CAMO_TIGER 250
37 9 camo weaponoption MPUI_CAMO_BERLIN camo_urban_german menu_mp_weapons_camo_berlin MPUI_CAMO_BERLIN 250
38 10 camo weaponoption MPUI_CAMO_WARSAW camo_urban_warsaw menu_mp_weapons_camo_warsaw MPUI_CAMO_WARSAW 250
39 11 camo weaponoption MPUI_CAMO_SIBERIA camo_winter_siberia menu_mp_weapons_camo_siberia MPUI_CAMO_SIBERIA 250
40 12 camo weaponoption MPUI_CAMO_YUKON camo_winter_yukon menu_mp_weapons_camo_yukon MPUI_CAMO_YUKON 250
41 13 camo weaponoption MPUI_CAMO_WOODLAND camo_woodland menu_mp_weapons_camo_wood MPUI_CAMO_WOODLAND 250
42 14 camo weaponoption MPUI_CAMO_FLORA camo_woodland_flora menu_mp_weapons_camo_flora MPUI_CAMO_FLORA 250
43 15 camo weaponoption MPUI_CAMO_GOLD camo_gold menu_mp_weapons_camo_gold MPUI_CAMO_GOLD 50000 14
44 16 lens weaponoption MPUI_LENS_DEFAULT
45 17 lens weaponoption MPUI_LENS_RED 500
46 18 lens weaponoption MPUI_LENS_BLUE 500
47 19 lens weaponoption MPUI_LENS_GREEN 500
48 20 lens weaponoption MPUI_LENS_ORANGE 500
49 21 lens weaponoption MPUI_LENS_YELLOW 500
50 22 reticle weaponoption MPUI_RETICLE_DEFAULT menu_mp_reticle_red_dot_main
51 23 reticle weaponoption MPUI_RETICLE_1 menu_mp_reticle_circle_split01 500
52 24 reticle weaponoption MPUI_RETICLE_2 menu_mp_reticle_lines_dots01 500
53 25 reticle weaponoption MPUI_RETICLE_3 menu_mp_reticle_circles05 500
54 26 reticle weaponoption MPUI_RETICLE_4 menu_mp_reticle_happyface01 500
55 27 reticle weaponoption MPUI_RETICLE_ARROWS02 menu_mp_reticle_arrows02 500
56 28 reticle weaponoption MPUI_RETICLE_ARROWS01 menu_mp_reticle_arrows01 500
57 29 reticle weaponoption MPUI_RETICLE_ARROWS03 menu_mp_reticle_arrows03 500
58 30 reticle weaponoption MPUI_RETICLE_BONES menu_mp_reticle_bones 500
59 31 reticle weaponoption MPUI_RETICLE_BURST01 menu_mp_reticle_burst01 500
60 32 reticle weaponoption MPUI_RETICLE_CIRCLES01 menu_mp_reticle_circles01 500
61 33 reticle weaponoption MPUI_RETICLE_CIRCLES02 menu_mp_reticle_circles02 500
62 34 reticle weaponoption MPUI_RETICLE_CIRCLES03 menu_mp_reticle_circles03 500
63 35 reticle weaponoption MPUI_RETICLE_CIRCLES04 menu_mp_reticle_circles04 500
64 36 reticle weaponoption MPUI_RETICLE_CIRCLES_LINES01 menu_mp_reticle_circles_lines01 500
65 37 reticle weaponoption MPUI_RETICLE_CIRCLES_LINES02 menu_mp_reticle_circles_lines02 500
66 38 reticle weaponoption MPUI_RETICLE_CIRCLES_LINES03 menu_mp_reticle_circles_lines03 500
67 39 reticle weaponoption MPUI_RETICLE_CIRCLES_TRIANGLES01 menu_mp_reticle_circles_triangles01 500
68 40 reticle weaponoption MPUI_RETICLE_CIRCLES_TRIANGLES02 menu_mp_reticle_circles_triangles02 500
69 41 reticle weaponoption MPUI_RETICLE_CROSS01 menu_mp_reticle_cross01 500
70 42 reticle weaponoption MPUI_RETICLE_CROSS02 menu_mp_reticle_cross02 500
71 43 reticle weaponoption MPUI_RETICLE_CROSS03 menu_mp_reticle_cross03 500
72 44 reticle weaponoption MPUI_RETICLE_CROSS04 menu_mp_reticle_cross04 500
73 45 reticle weaponoption MPUI_RETICLE_CROSS05 menu_mp_reticle_cross05 500
74 46 reticle weaponoption MPUI_RETICLE_DIAMOND01 menu_mp_reticle_diamond01 500
75 47 reticle weaponoption MPUI_RETICLE_DIAMOND02 menu_mp_reticle_diamond02 500
76 48 reticle weaponoption MPUI_RETICLE_HEART menu_mp_reticle_heart 500
77 49 reticle weaponoption MPUI_RETICLE_RADIATION menu_mp_reticle_radiation 500
78 50 reticle weaponoption MPUI_RETICLE_SKULL01 menu_mp_reticle_skull01 500
79 51 reticle weaponoption MPUI_RETICLE_SQUARE01 menu_mp_reticle_square01 500
80 52 reticle weaponoption MPUI_RETICLE_SQUARE02 menu_mp_reticle_square02 500
81 53 reticle weaponoption MPUI_RETICLE_SQUARES_CROSS menu_mp_reticle_squares_cross01 500
82 54 reticle weaponoption MPUI_RETICLE_STAR01 menu_mp_reticle_star01 500
83 55 reticle weaponoption MPUI_RETICLE_THREEDOTS01 menu_mp_reticle_three_dots 500
84 56 reticle weaponoption MPUI_RETICLE_TREYARCH menu_mp_reticle_treyarch 500
85 57 reticle weaponoption MPUI_RETICLE_TRIANGLE01 menu_mp_reticle_triangle01 500
86 58 reticle weaponoption MPUI_RETICLE_TRIANGLE02 menu_mp_reticle_triangle02 500
87 59 reticle weaponoption MPUI_RETICLE_X01 menu_mp_reticle_x01 500
88 60 reticle weaponoption MPUI_RETICLE_X02 menu_mp_reticle_x02 500
89 61 reticle weaponoption MPUI_RETICLE_YINGYANG menu_mp_reticle_yinyang 500
90 62 tag weaponoption FEATURE_GUN_TAG tag 1000
91 63 emblem weaponoption FEATURE_GUN_EMBLEM emblem 1000
92 64 tag weaponoption FEATURE_SECOND_ATTACHMENT 2ndattach 3000
93 65 reticle_color weaponoption MPUI_RETICLE_COLOR_1
94 66 reticle_color weaponoption MPUI_RETICLE_COLOR_2 250
95 67 reticle_color weaponoption MPUI_RETICLE_COLOR_3 250
96 68 reticle_color weaponoption MPUI_RETICLE_COLOR_4 250
97 69 reticle_color weaponoption MPUI_RETICLE_COLOR_5 250
98 70 reticle_color weaponoption MPUI_RETICLE_COLOR_6 250
99 71 reticle_color weaponoption MPUI_RETICLE_COLOR_7 250
100 0 none point MPUI_NONE none weapon_missing_image MPUI_NO_ATTACHMENT_DESC
101 1 none point MENU_ATTACH_POINT_TOP top MENU_ATTACH_POINT_TOP_DESC
102 2 none point MENU_ATTACH_POINT_BOTTOM bottom MENU_ATTACH_POINT_BOTTOM_DESC
103 3 none point MENU_ATTACH_POINT_TRIGGER trigger MENU_ATTACH_POINT_TRIGGER_DESC
104 4 none point MENU_ATTACH_POINT_MUZZLE muzzle MENU_ATTACH_POINT_MUZZLE_DESC

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,31 @@
# Map Data Table,,,,,,,,,,,,,,,
a0,b1,c2,d3,e4,f5,g6,h7,i8,j9,k10,,,,,
maxnum_map,26,,,,,,,,,,,,,,
#mapname,#allies characters,#axis characters,#mapname,#mapimage,#index,#description,#mapoverlay,#map size description,#vehicles,#splitscreen,#dlc map,,,,
,,,,,,,,,,,,,,,
mp_array,winterspecops,winterspecops,MPUI_array,menu_mp_array_map_select_final,0,MPUI_DESC_MAP_array,compass_overlay_map_array,LARGE,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_cracked,junglemarines,junglemarines,MPUI_CRACKED,menu_mp_cracked_map_select_final,1,MPUI_DESC_MAP_CRACKED,compass_overlay_map_cracked,LARGE,NO,YES,0,MPUI_MARINE_SHORT,MPUI_NVA_SHORT,sog,nva
mp_crisis,cubans,cubans,MPUI_CRISIS,menu_mp_crisis_map_select_final,2,MPUI_DESC_MAP_CRISIS,compass_overlay_map_crisis,MEDIUM,NO,YES,0,MPUI_REBELS_SHORT,MPUI_TROPAS_SHORT,op40,tropas
mp_firingrange,cubans,cubans,MPUI_firingrange,menu_mp_firingrange_map_select_final,3,MPUI_DESC_MAP_firingrange,compass_overlay_map_firingrange,SMALL,NO,YES,0,MPUI_REBELS_SHORT,MPUI_TROPAS_SHORT,op40,tropas
mp_duga,winterspecops,winterspecops,MPUI_DUGA,menu_mp_duga_map_select_final,4,MPUI_DESC_MAP_DUGA,compass_overlay_map_duga,MEDIUM,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_hanoi,junglemarines,junglemarines,MPUI_HANOI,menu_mp_hanoi_map_select_final,5,MPUI_DESC_MAP_HANOI,compass_overlay_map_hanoi,MEDIUM,NO,YES,0,MPUI_MARINE_SHORT,MPUI_NVA_SHORT,sog,nva
mp_cairo,cubans,cubans,MPUI_CAIRO,menu_mp_cairo_map_select_final,6,MPUI_DESC_MAP_CAIRO,compass_overlay_map_cairo,MEDIUM,NO,YES,0,MPUI_REBELS_SHORT,MPUI_TROPAS_SHORT,op40,tropas
mp_havoc,junglemarines,junglemarines,MPUI_HAVOC,menu_mp_havoc_map_select_final,7,MPUI_DESC_MAP_HAVOC,compass_overlay_map_havoc,LARGE,NO,YES,0,MPUI_MARINE_SHORT,MPUI_NVA_SHORT,sog,nva
mp_cosmodrome,urbanspecops,urbanspecops,MPUI_COSMODROME,menu_mp_cosmodrome_map_select_final,8,MPUI_DESC_MAP_COSMODROME,compass_overlay_map_cosmodrome,MEDIUM,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_nuked,urbanspecops,urbanspecops,MPUI_NUKED,menu_mp_nuked_map_select_final,9,MPUI_DESC_MAP_NUKED,compass_overlay_map_nuked,SMALL,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_radiation,urbanspecops,urbanspecops,MPUI_RADIATION,menu_mp_radiation_map_select_final,10,MPUI_DESC_MAP_RADIATION,compass_overlay_map_radiation,MEDIUM,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_mountain,winterspecops,winterspecops,MPUI_MOUNTAIN,menu_mp_mountain_map_select_final,11,MPUI_DESC_MAP_MOUNTAIN,compass_overlay_map_mountain,MEDIUM,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_villa,cubans,cubans,MPUI_villa,menu_mp_villa_map_select_final,12,MPUI_DESC_MAP_villa,compass_overlay_map_villa,MEDIUM,NO,YES,0,MPUI_REBELS_SHORT,MPUI_TROPAS_SHORT,op40,tropas
mp_russianbase,winterspecops,winterspecops,MPUI_russianbase,menu_mp_russianbase_map_select_final,13,MPUI_DESC_MAP_russianbase,compass_overlay_map_russianbase,LARGE,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_berlinwall2,urbanspecops,urbanspecops,MPUI_BERLINWALL2,menu_mp_berlinwall2_map_select_final,14,MPUI_DESC_MAP_BERLINWALL2,compass_overlay_map_berlinwall2,MEDIUM,NO,YES,2,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_discovery,winterspecops,winterspecops,MPUI_DISCOVERY,menu_mp_discovery_map_select_final,15,MPUI_DESC_MAP_DISCOVERY,compass_overlay_map_discovery2,MEDIUM,NO,YES,2,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_kowloon,urbanspecops,urbanspecops,MPUI_KOWLOON,menu_mp_kowloon_map_select_final,16,MPUI_DESC_MAP_KOWLOON,compass_overlay_map_kowloon,MEDIUM,NO,YES,2,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_stadium,urbanspecops,urbanspecops,MPUI_STADIUM,menu_mp_stadium_map_select_final,17,MPUI_DESC_MAP_STADIUM,compass_overlay_map_stadium,MEDIUM,NO,YES,2,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_gridlock,urbanspecops,urbanspecops,MPUI_GRIDLOCK,menu_mp_gridlock_map_select_final,18,MPUI_DESC_MAP_GRIDLOCK,compass_overlay_map_convoy,MEDIUM,NO,YES,3,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_hotel,cubans,cubans,MPUI_HOTEL,menu_mp_hotel_map_select_final,19,MPUI_DESC_MAP_HOTEL,compass_overlay_map_hotel2,MEDIUM,NO,YES,3,MPUI_REBELS_SHORT,MPUI_TROPAS_SHORT,op40,tropas
mp_outskirts,winterspecops,winterspecops,MPUI_OUTSKIRTS,menu_mp_outskirts_map_select_final,20,MPUI_DESC_MAP_OUTSKIRTS,compass_overlay_map_stockpile,MEDIUM,NO,YES,3,MPUI_MARINE_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_zoo,urbanspecops,urbanspecops,MPUI_ZOO,menu_mp_zoo_map_select_final,21,MPUI_DESC_MAP_ZOO,compass_overlay_map_zoo,MEDIUM,NO,YES,3,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_silo,urbanspecops,urbanspecops,MPUI_SILO,menu_mp_silo_map_select_final,22,MPUI_DESC_MAP_SILO,compass_overlay_map_silo,MEDIUM,NO,YES,4,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_golfcourse,cubans,cubans,MPUI_GOLFCOURSE,menu_mp_golfcourse_map_select_final,23,MPUI_DESC_MAP_GOLFCOURSE,compass_overlay_map_golfcourse,MEDIUM,NO,YES,4,MPUI_REBELS_SHORT,MPUI_TROPAS_SHORT,op40,tropas
mp_drivein,urbanspecops,urbanspecops,MPUI_DRIVEIN,menu_mp_drivein_map_select_final,24,MPUI_DESC_MAP_DRIVEIN,compass_overlay_map_drivein,MEDIUM,NO,YES,4,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
mp_area51,urbanspecops,urbanspecops,MPUI_AREA51,menu_mp_area51_map_select_final,25,MPUI_DESC_MAP_AREA51,compass_overlay_map_area51,MEDIUM,NO,YES,4,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
1 # Map Data Table
2 a0 b1 c2 d3 e4 f5 g6 h7 i8 j9 k10
3 maxnum_map 26
4 #mapname #allies characters #axis characters #mapname #mapimage #index #description #mapoverlay #map size description #vehicles #splitscreen #dlc map
5
6 mp_array winterspecops winterspecops MPUI_array menu_mp_array_map_select_final 0 MPUI_DESC_MAP_array compass_overlay_map_array LARGE NO YES 0 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
7 mp_cracked junglemarines junglemarines MPUI_CRACKED menu_mp_cracked_map_select_final 1 MPUI_DESC_MAP_CRACKED compass_overlay_map_cracked LARGE NO YES 0 MPUI_MARINE_SHORT MPUI_NVA_SHORT sog nva
8 mp_crisis cubans cubans MPUI_CRISIS menu_mp_crisis_map_select_final 2 MPUI_DESC_MAP_CRISIS compass_overlay_map_crisis MEDIUM NO YES 0 MPUI_REBELS_SHORT MPUI_TROPAS_SHORT op40 tropas
9 mp_firingrange cubans cubans MPUI_firingrange menu_mp_firingrange_map_select_final 3 MPUI_DESC_MAP_firingrange compass_overlay_map_firingrange SMALL NO YES 0 MPUI_REBELS_SHORT MPUI_TROPAS_SHORT op40 tropas
10 mp_duga winterspecops winterspecops MPUI_DUGA menu_mp_duga_map_select_final 4 MPUI_DESC_MAP_DUGA compass_overlay_map_duga MEDIUM NO YES 0 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
11 mp_hanoi junglemarines junglemarines MPUI_HANOI menu_mp_hanoi_map_select_final 5 MPUI_DESC_MAP_HANOI compass_overlay_map_hanoi MEDIUM NO YES 0 MPUI_MARINE_SHORT MPUI_NVA_SHORT sog nva
12 mp_cairo cubans cubans MPUI_CAIRO menu_mp_cairo_map_select_final 6 MPUI_DESC_MAP_CAIRO compass_overlay_map_cairo MEDIUM NO YES 0 MPUI_REBELS_SHORT MPUI_TROPAS_SHORT op40 tropas
13 mp_havoc junglemarines junglemarines MPUI_HAVOC menu_mp_havoc_map_select_final 7 MPUI_DESC_MAP_HAVOC compass_overlay_map_havoc LARGE NO YES 0 MPUI_MARINE_SHORT MPUI_NVA_SHORT sog nva
14 mp_cosmodrome urbanspecops urbanspecops MPUI_COSMODROME menu_mp_cosmodrome_map_select_final 8 MPUI_DESC_MAP_COSMODROME compass_overlay_map_cosmodrome MEDIUM NO YES 0 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
15 mp_nuked urbanspecops urbanspecops MPUI_NUKED menu_mp_nuked_map_select_final 9 MPUI_DESC_MAP_NUKED compass_overlay_map_nuked SMALL NO YES 0 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
16 mp_radiation urbanspecops urbanspecops MPUI_RADIATION menu_mp_radiation_map_select_final 10 MPUI_DESC_MAP_RADIATION compass_overlay_map_radiation MEDIUM NO YES 0 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
17 mp_mountain winterspecops winterspecops MPUI_MOUNTAIN menu_mp_mountain_map_select_final 11 MPUI_DESC_MAP_MOUNTAIN compass_overlay_map_mountain MEDIUM NO YES 0 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
18 mp_villa cubans cubans MPUI_villa menu_mp_villa_map_select_final 12 MPUI_DESC_MAP_villa compass_overlay_map_villa MEDIUM NO YES 0 MPUI_REBELS_SHORT MPUI_TROPAS_SHORT op40 tropas
19 mp_russianbase winterspecops winterspecops MPUI_russianbase menu_mp_russianbase_map_select_final 13 MPUI_DESC_MAP_russianbase compass_overlay_map_russianbase LARGE NO YES 0 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
20 mp_berlinwall2 urbanspecops urbanspecops MPUI_BERLINWALL2 menu_mp_berlinwall2_map_select_final 14 MPUI_DESC_MAP_BERLINWALL2 compass_overlay_map_berlinwall2 MEDIUM NO YES 2 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
21 mp_discovery winterspecops winterspecops MPUI_DISCOVERY menu_mp_discovery_map_select_final 15 MPUI_DESC_MAP_DISCOVERY compass_overlay_map_discovery2 MEDIUM NO YES 2 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
22 mp_kowloon urbanspecops urbanspecops MPUI_KOWLOON menu_mp_kowloon_map_select_final 16 MPUI_DESC_MAP_KOWLOON compass_overlay_map_kowloon MEDIUM NO YES 2 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
23 mp_stadium urbanspecops urbanspecops MPUI_STADIUM menu_mp_stadium_map_select_final 17 MPUI_DESC_MAP_STADIUM compass_overlay_map_stadium MEDIUM NO YES 2 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
24 mp_gridlock urbanspecops urbanspecops MPUI_GRIDLOCK menu_mp_gridlock_map_select_final 18 MPUI_DESC_MAP_GRIDLOCK compass_overlay_map_convoy MEDIUM NO YES 3 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
25 mp_hotel cubans cubans MPUI_HOTEL menu_mp_hotel_map_select_final 19 MPUI_DESC_MAP_HOTEL compass_overlay_map_hotel2 MEDIUM NO YES 3 MPUI_REBELS_SHORT MPUI_TROPAS_SHORT op40 tropas
26 mp_outskirts winterspecops winterspecops MPUI_OUTSKIRTS menu_mp_outskirts_map_select_final 20 MPUI_DESC_MAP_OUTSKIRTS compass_overlay_map_stockpile MEDIUM NO YES 3 MPUI_MARINE_SHORT MPUI_RUSSIAN_SHORT ops spets
27 mp_zoo urbanspecops urbanspecops MPUI_ZOO menu_mp_zoo_map_select_final 21 MPUI_DESC_MAP_ZOO compass_overlay_map_zoo MEDIUM NO YES 3 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
28 mp_silo urbanspecops urbanspecops MPUI_SILO menu_mp_silo_map_select_final 22 MPUI_DESC_MAP_SILO compass_overlay_map_silo MEDIUM NO YES 4 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
29 mp_golfcourse cubans cubans MPUI_GOLFCOURSE menu_mp_golfcourse_map_select_final 23 MPUI_DESC_MAP_GOLFCOURSE compass_overlay_map_golfcourse MEDIUM NO YES 4 MPUI_REBELS_SHORT MPUI_TROPAS_SHORT op40 tropas
30 mp_drivein urbanspecops urbanspecops MPUI_DRIVEIN menu_mp_drivein_map_select_final 24 MPUI_DESC_MAP_DRIVEIN compass_overlay_map_drivein MEDIUM NO YES 4 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets
31 mp_area51 urbanspecops urbanspecops MPUI_AREA51 menu_mp_area51_map_select_final 25 MPUI_DESC_MAP_AREA51 compass_overlay_map_area51 MEDIUM NO YES 4 MPUI_SPECOPS_SHORT MPUI_RUSSIAN_SHORT ops spets

View File

@ -0,0 +1,10 @@
RUMBLEGRAPHFILE
7
0.0000 0.5259
0.1303 0.4762
0.2821 0.3148
0.4742 0.1540
0.6613 0.0590
0.8340 0.0150
1.0000 0.0000

View File

@ -0,0 +1,7 @@
RUMBLEGRAPHFILE
4
0.0000 1.0000
0.3991 1.0000
0.4041 0.0000
1.0000 0.0000

View File

@ -0,0 +1,6 @@
RUMBLEGRAPHFILE
3
0.0000 0.5000
0.1050 0.3000
1.0000 0.0000

View File

@ -0,0 +1,7 @@
RUMBLEGRAPHFILE
4
0.0000 1.0000
0.1250 1.0000
0.4300 0.0000
1.0000 0.0000

View File

@ -0,0 +1,5 @@
RUMBLEGRAPHFILE
2
0.0000 0.2399
1.0000 0.2397

View File

@ -0,0 +1,5 @@
RUMBLEGRAPHFILE
2
0.0000 0.0000
1.0000 0.0000

View File

@ -0,0 +1,10 @@
RUMBLEGRAPHFILE
7
0.0000 0.4109
0.1192 0.3717
0.2806 0.2431
0.4579 0.1533
0.6595 0.0449
0.8328 0.0152
1.0000 0.0000

View File

@ -0,0 +1,7 @@
RUMBLEGRAPHFILE
4
0.0000 1.0000
0.3200 1.0000
0.3250 0.0000
1.0000 0.0000

View File

@ -0,0 +1,7 @@
RUMBLEGRAPHFILE
4
0.0000 0.1641
0.2265 0.1314
0.6077 0.0270
1.0000 0.0000

View File

@ -0,0 +1,7 @@
RUMBLEGRAPHFILE
4
0.0000 1.0000
0.3851 1.0000
0.5701 0.1200
1.0000 0.0000

View File

@ -0,0 +1,8 @@
RUMBLEGRAPHFILE
5
0.0000 0.5405
0.2518 0.4860
0.4920 0.1496
0.7479 0.0328
1.0000 0.0000

View File

@ -0,0 +1,7 @@
RUMBLEGRAPHFILE
4
0.0000 0.4000
0.1196 0.3470
0.1565 0.0058
1.0000 0.0000

View File

@ -0,0 +1,8 @@
RUMBLEGRAPHFILE
5
0.0000 0.4800
0.2300 0.3600
0.5460 0.0999
0.8061 0.0064
1.0000 0.0000

View File

@ -0,0 +1,7 @@
RUMBLEGRAPHFILE
4
0.0000 0.4830
0.1365 0.4703
0.1447 0.0000
1.0000 0.0000

907
mods/mp_patch/ui/error.menu Normal file
View File

@ -0,0 +1,907 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#define CHOICE_X_START 0
#define CHOICE_Y_START 34
#define CHOICE_GROUP "errors"
#include "ui_mp/menustyle.inc"
#include "ui/choices_setup_common.menu"
#include "ui_mp/popupstyle.inc"
#include "ui/choices_setup_popmenu.menu"
#undef CHOICE_FOCUS_SOUND
#define CHOICE_FOCUS_SOUND "uin_navigation_over"
#define OPEN_WAGER_FAIL_IF_NEEDED \
if ( getDStat( "AfterActionReportStats", "wagerMatchFailed" ) == 1 ) \
{ \
open error_wagerfail; \
}
#define ERROR_ONESC \
uiScript clearError; \
close self; \
OPEN_WAGER_FAIL_IF_NEEDED \
execNow if( !menuisopen( main ) ) openmenu main;
#define ERROR_ACTION \
play CHOICE_FOCUS_SOUND; \
uiScript clearError; \
ERROR_ONESC
#define ERROR_CONTINUE \
play CHOICE_FOCUS_SOUND; \
uiScript clearError; \
close self; \
uiScript loadSaveGameMap;
{
menuDef
{
name fullscreen_error
fullscreen 1
rect 0 0 640 480 // Size and position of the menu
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( error_popmenu, setfocus error_popmenu_2, ERROR_ONESC, 1 )
onOpen
{
if( IN_MP_FRONTEND )
{
activateBlur;
}
if( dvarString("com_errorMessage") != "" )
{
execnow setLocalVarString error_popmenuTitle (dvarString("com_errorTitle"));
execnow setLocalVarString error_popmenuMessage (dvarString("com_errorMessage"));
}
if( IN_MP_FRONTEND )
{
uiScript clearError;
}
}
SYSTEM_POPUP_TITLE_VIS( localVarString( error_popmenuTitle ), 1 )
SYSTEM_POPUP_SUBTITLE_VIS( localVarString( error_popmenuMessage ), 1 )
//FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_CONTINUE", ERROR_CONTINUE, ( dvarString( "error_menu_info" ) == "MENU_SCRIPTS_OUT_OF_DATE" ), ; )
//FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_EXIT", ERROR_ACTION, 1, name error_popmenu_2 )
SIMPLE_CHOICE_BUTTON_SOUND_VIS_EX( 0 (SYSTEM_POPUP_HEIGHT+4) 70 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
;,
"@MENU_CONTINUE", ITEM_ALIGN_MIDDLE_CENTER, ERROR_CONTINUE, when( dvarString( "error_menu_info" ) == "MENU_SCRIPTS_OUT_OF_DATE" ), ; )
SIMPLE_CHOICE_BUTTON_SOUND_VIS_EX( 0 (SYSTEM_POPUP_HEIGHT+4) 70 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
exp rect X( SYSTEM_POPUP_WIDTH - getTextWidth( locString( "@MENU_EXIT" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) - 8 ),
"@MENU_EXIT", ITEM_ALIGN_MIDDLE_CENTER, ERROR_ACTION, 1, name error_popmenu_2; )
}
#define SYSTEM_ERROR_POPUP( popupname ) \
menuDef \
{ \
SYSTEM_POPUP_SETUP_VIS( popupname, ;, focusFirst; uiScript clearError; close self;, 1 ) \
onOpen \
{ \
if( IN_MP_FRONTEND ) \
{ \
activateBlur; \
} \
execnow setLocalVarString (popupname + "Title") (dvarString("com_errorTitle")); \
execnow setLocalVarString (popupname + "Message") (dvarString("com_errorMessage")); \
} \
\
SYSTEM_POPUP_TITLE_VIS( localVarString( (popupname + "Title") ), 1 ) \
SYSTEM_POPUP_SUBTITLE_VIS( localVarString( (popupname + "Message") ), 1 ) \
\
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", uiScript clearError; close self; OPEN_WAGER_FAIL_IF_NEEDED, 1, ; ) \
}
menuDef
{
#define WAGERFAIL_ONFOCUS \
execnow statwriteddl AfterActionReportStats wagerMatchFailed 0;
#define WAGERFAIL_ONESC \
close self;
#define WAGERFAIL_ACTION \
play CHOICE_FOCUS_SOUND; \
WAGERFAIL_ONESC
SYSTEM_POPUP_SETUP_VIS( error_wagerfail, WAGERFAIL_ONFOCUS, WAGERFAIL_ONESC, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_WAGER_FAIL_TITLE", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_WAGER_FAIL_DESC", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_EXIT", WAGERFAIL_ACTION, 1, ; )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( autojoinfriend_popmenu, setfocus autojoinfriend_popmenu_2, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( dvarString( "com_errorMessage" ), 1 )
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_AUTOJOIN_FRIEND", 1 )
#define FRIEND_AUTO_JOIN_ON \
exec "party_autojoindevfriend 1"; \
close autojoinfriend_popmenu; \
setdvar com_errorMessage ""; \
setdvar com_errorTitle "";
#define FRIEND_AUTO_JOIN_OFF \
exec "party_autojoindevfriend 0"; \
close autojoinfriend_popmenu; \
setdvar com_errorMessage ""; \
setdvar com_errorTitle "";
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_YES_CAPS", FRIEND_AUTO_JOIN_ON, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_NO_CAPS", FRIEND_AUTO_JOIN_OFF, 1, name autojoinfriend_popmenu_2 )
}
#undef POPUP_BUTTON_COUNT
#define POPUP_BUTTON_COUNT 1
menuDef
{
SYSTEM_POPUP_SETUP_VIS( consolestatsalert_popmenu, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@EXE_CONSOLE_STATS_CHECK_ALERT_TITLE", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( "@EXE_CONSOLE_STATS_CHECK_ALERT_MESSAGE", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_OK", close consolestatsalert_popmenu;, 1, ; )
}
#ifdef PS3
// PS3 controller removed warning
menuDef
{
SYSTEM_POPUP_SETUP_VIS( controllerremoved_popmenu, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( locString("@PLATFORM_CONTROLLER_DISCONNECTED") + (dvarString( "disconnected_ctrls" )), 1 )
itemDef
{
type ITEM_TYPE_BUTTON_NO_TEXT
rect 0 0 0 0 0 0
visible 1
}
}
// I know, not an error, handy here
// profile lookup dialog
menuDef
{
SYSTEM_POPUP_SETUP_VIS( profile_lookup_popmenu, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@PLATFORM_PROFILE_LOOKUP", 1 )
itemDef
{
type ITEM_TYPE_BUTTON_NO_TEXT
rect 0 0 0 0 0 0
visible 1
}
SYSTEM_POPUP_SPINNER( 1 )
}
#endif
// save game data corrupted warning
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_connectingtodw, ;, ;, 1 )
onESC
{
if( IN_MP_FRONTEND )
{
deactivateBlur;
}
CENTER_POPUP_ON_CLOSE
execNow ui_animate popup_connectingtodwhandler notification default 0;
close popup_connectingtodwhandler;
close self;
}
onClose
{
if( IN_MP_FRONTEND )
{
deactivateBlur;
}
execNow ui_animate popup_connectingtodwhandler notification default 0;
close popup_connectingtodwhandler;
}
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_CONNECTING_TO_DW" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
name popup_connectingtodwhandler
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
visible 1
backcolor 0 0 0 0
style WINDOW_STYLE_FILLED
onOpen
{
exec "initiateDemonWareConnect";
if( dvarBool( live_banned ) )
{
execNow ui_animate popup_connectingtodwhandler notification show 2000;
}
else
{
execNow ui_animate popup_connectingtodwhandler notification show 30000;
}
open popup_connectingtodw;
}
itemDef
{
name "notification"
visible 0
state
{
name "show"
onEnter
{
if( dvarBool( live_banned ) )
{
setdvar com_errorTitle "@MENU_NOTICE_CAPS";
setdvar com_errorMessage "@PLATFORM_BANNED";
open error_popmenu;
}
elseif( isDemonwareFetchingDone() == 0 )
{
setdvar com_errorTitle "@MENU_NOTICE_CAPS";
setdvar com_errorMessage "@EXE_DEMONWARE_DISCONNECT";
open error_popmenu;
}
close popup_connectingtodw;
close popup_inliveconnectingtodw;
}
}
}
}
// Shown while connecting to DemonWare & getting all needed items for playing on
// LIVE while in the online (dvar) sections of the game, happens when another user
// signs in on another controller
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_inliveconnectingtodw, ;, ;, 1 )
onESC
{
if( IN_MP_FRONTEND )
{
deactivateBlur;
}
CENTER_POPUP_ON_CLOSE
close self;
}
onClose
{
if( IN_MP_FRONTEND )
{
deactivateBlur;
}
}
execKeyInt BUTTON_BACK {}
execKeyInt BUTTON_B {}
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_CONNECTING_TO_DW" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_gettingdata, ;, ;, 1 )
onESC
{
if( IN_MP_FRONTEND )
{
deactivateBlur;
}
close menu_xboxlive;
close findgame_category;
close popup_gettingdata;
close live_cac_popup;
close popup_gamesetup_private;
close private_cac_popup;
exec "onlinegame 0";
exec "xstopprivateparty";
exec "xstopparty";
}
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_DOWNLOADING_GAME_SETTINGS_CAPS" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_downloadingfile, ;, execnow fileShareAbortOperation;, 1 )
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_DOWNLOAD_FILE" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_downloadinginfo, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_DOWNLOADING" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_downloadingCompressedStats, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_DOWNLOAD_OTHER_PLAYER_STATS" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_fetchstats, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_FETCH_STATS" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_uploadingfile, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_UPLOAD_FILE" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_gettingPlayercardInfo, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_GETTING_PLAYERCARD" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_getlclaninfofromxuid, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_GETTING_CLAN_INFO" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_gettingoffers, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_GETTING_STORE_DATA" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_connectingtolobby, ;, focusFirst;, 1 )
onESC
{
if( IN_MP_FRONTEND )
{
deactivateBlur;
}
close menu_xboxlive;
close popup_gettingdata;
close live_cac_popup;
close popup_gamesetup_private;
close private_cac_popup;
exec "onlinegame 0";
exec "xstopprivateparty";
exec "xstopparty";
}
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_CONNECTING_TO_LOBBY" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_connecting_dw, ;, focusFirst;, 1 )
onESC
{
if( IN_MP_FRONTEND )
{
deactivateBlur;
}
close menu_xboxlive;
close popup_gettingdata;
close live_cac_popup;
close popup_gamesetup_private;
close private_cac_popup;
close main_online
exec "onlinegame 0";
close self;
}
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_CONNECTING_DW" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_creating_account, ;, focusFirst;, 1 )
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_CREATING_PROFILE" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_deleting_account, ;, focusFirst;, 1 )
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_DELETING_PROFILE" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_error_deleting_account, ;, focusFirst;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_ERROR_DELETING_PROFILE", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_error_creating_account, ;, focusFirst;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_ERROR_CREATING_PROFILE", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_account_not_available, ;, focusFirst;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_ACCOUNT_NOT_AVAILABLE", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_reconnectingtoparty, ;, close menu_xboxlive; close popup_gettingdata;, 1 )
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_RECONNECTING_TO_SQUAD" ), 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_error_contentserver_down, ;, focusFirst; uiScript clearError; close self;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MPUI_ERROR_CAPS", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_CONTENT_SERVER_DOWN", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", uiScript clearError; close self;, 1, ; )
}
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( stats_notfound_error_popup, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_STATERROR_TITLE", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_STATS_ERROR", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; )
}
SYSTEM_ERROR_POPUP( "error_dw_fetch_file" )
menuDef
{
SYSTEM_POPUP_SETUP_VIS( save_corrupted, ;, close self; close blackout_3d_tv, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_SAVE_CORRUPTED", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_SAVEDATA_CORRUPTED", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self; close blackout_3d_tv, 1, ; )
}
SYSTEM_ERROR_POPUP( "error_popmenu_party" )
SYSTEM_ERROR_POPUP( "error_popmenu_lobby" )
SYSTEM_ERROR_POPUP( "error_popmenu_keyboard" )
menuDef
{
SYSTEM_POPUP_SETUP_VIS( startmatch_popup, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MPUI_ERROR_CAPS", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( "@PLATFORM_MIN_ONE_REMOTE", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self, 1, ; )
}
#undef POPUP_BUTTON_COUNT
#define POPUP_BUTTON_COUNT 2
menuDef
{
SYSTEM_POPUP_SETUP_VIS( acceptinvite_warning, setFocus acceptinvite_warning_2, close self;, 1 )
onOpen
{
close menu_joinsession;
}
SYSTEM_POPUP_TITLE_VIS( "@MENU_ACCEPTINVITETITLE", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_LEAVEMPGAMEWARNINGSQUADHOST", when( privatepartyhost() && !aloneinparty() ); )
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_LEAVESQUADWARNING", when( !privatepartyhost() && !inlobby() ); )
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_LEAVEMPGAMEWARNING", when( !privatepartyhost() && inlobby() ); )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_RESUMEGAME", close menu_joinsession; close self;, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_ACCEPTINVITE", close self; exec "acceptInvite";, 1, name acceptinvite_warning_2 )
}
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X 180
#undef CHOICE_Y_START
#define CHOICE_Y_START 230
#define TOAST_POPUP_Y_OFFSET -55
#define TOAST_POPUP_HEIGHT 36
#define TOAST_POPUP_ICON_HEIGHT 26
#define TOAST_POPUP_ICON_WIDTH 26
#define TOAST_BIG_DESC_WIDTH ( GetTextWidth( getToastPopupDescription(), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) )
#define TOAST_SIDE_PAD_SIZE 10
#define TOAST_MIDDLE_PAD_SIZE 5
#define TOAST_POPUP_BG_WIDTH( textWidth ) ( TOAST_SIDE_PAD_SIZE + TOAST_POPUP_ICON_WIDTH + TOAST_MIDDLE_PAD_SIZE + textWidth + TOAST_SIDE_PAD_SIZE )
#define TOAST_POPUP_BG_X_START( textWidth ) ( -1 * ( TOAST_POPUP_BG_WIDTH( textWidth ) / 2 ) )
#define TOAST_POPUP_ICON_X_START( textWidth ) ( TOAST_POPUP_BG_X_START( textWidth ) + TOAST_SIDE_PAD_SIZE )
#define TOAST_POPUP_TEXT_X_START( textWidth ) ( TOAST_POPUP_ICON_X_START( textWidth ) + TOAST_POPUP_ICON_WIDTH + TOAST_MIDDLE_PAD_SIZE )
#define SHOW_NORMAL_TOAST_POPUP ( getToastPopupTitle() != "" )
menuDef
{
name menu_toast_popup
rect 0 0 640 480
focuscolor COLOR_FOCUSED
style WINDOW_STYLE_FILLED
priority MENU_PRI_POPUP
openSlideSpeed 150
closeSlideSpeed 700
openSlideDirection MENU_SLIDE_DIRECTION_BOTTOM_TO_TOP
closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
// Title and description version
itemDef
{
rect 0 TOAST_POPUP_Y_OFFSET 0 TOAST_POPUP_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM
exp rect X( TOAST_POPUP_BG_X_START( getToastPopupWidth() ) )
exp rect W( TOAST_POPUP_BG_WIDTH( getToastPopupWidth() ) )
style WINDOW_STYLE_SHADER_FRAMED
frame 16 0.5 FRAME_SIDE_ALL
background "menu_mp_lobby_frame_circle"
forecolor 0 0 0 0.5
visible when( SHOW_NORMAL_TOAST_POPUP );
decoration
}
PREPROC_SHADER_DRAW_ADV_VIS_EX( TOAST_POPUP_ICON_X_START( getToastPopupWidth() ),
(TOAST_POPUP_Y_OFFSET+5),
TOAST_POPUP_ICON_WIDTH,
TOAST_POPUP_ICON_HEIGHT,
HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM,
getToastPopupIcon(), 1 1 1 0.8,
when( SHOW_NORMAL_TOAST_POPUP );, ; )
PREPROC_TEXT_DRAW_ADV_VIS_EX( TOAST_POPUP_TEXT_X_START( getToastPopupWidth() ),
(TOAST_POPUP_Y_OFFSET+2),
( getToastPopupWidth() ),
15,
HORIZONTAL_ALIGN_CENTER,
VERTICAL_ALIGN_BOTTOM,
getToastPopupTitle(),
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, 1 1 1 1,
when( SHOW_NORMAL_TOAST_POPUP );, ; )
PREPROC_TEXT_DRAW_ADV_VIS_EX( TOAST_POPUP_TEXT_X_START( getToastPopupWidth() ),
(TOAST_POPUP_Y_OFFSET+18),
( getToastPopupWidth() ),
15,
HORIZONTAL_ALIGN_CENTER,
VERTICAL_ALIGN_BOTTOM,
getToastPopupDescription(),
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, 1 1 1 1,
when( SHOW_NORMAL_TOAST_POPUP );, ; )
// Description only version
itemDef
{
rect 0 TOAST_POPUP_Y_OFFSET 0 TOAST_POPUP_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM
exp rect X( TOAST_POPUP_BG_X_START( TOAST_BIG_DESC_WIDTH ) )
exp rect W( TOAST_POPUP_BG_WIDTH( TOAST_BIG_DESC_WIDTH ) )
style WINDOW_STYLE_SHADER_FRAMED
frame 16 0.5 FRAME_SIDE_ALL
background "menu_mp_lobby_frame_circle"
forecolor 0 0 0 0.5
visible when( !SHOW_NORMAL_TOAST_POPUP );
decoration
}
PREPROC_SHADER_DRAW_ADV_VIS_EX( TOAST_POPUP_ICON_X_START( TOAST_BIG_DESC_WIDTH ),
(TOAST_POPUP_Y_OFFSET+5),
TOAST_POPUP_ICON_WIDTH,
TOAST_POPUP_ICON_HEIGHT,
HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM,
getToastPopupIcon(), 1 1 1 0.8,
when( !SHOW_NORMAL_TOAST_POPUP );, ; )
PREPROC_TEXT_DRAW_ADV_VIS_EX( TOAST_POPUP_TEXT_X_START( TOAST_BIG_DESC_WIDTH ),
(TOAST_POPUP_Y_OFFSET+5),
TOAST_BIG_DESC_WIDTH,
TOAST_POPUP_ICON_HEIGHT,
HORIZONTAL_ALIGN_CENTER,
VERTICAL_ALIGN_BOTTOM,
getToastPopupDescription(),
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, 1 1 1 1,
when( !SHOW_NORMAL_TOAST_POPUP );, ; )
}
#define VIS_PRESS_START 1
menuDef
{
name "pregame_loaderror"
rect 0 0 640 480
fullScreen 1
focusColor COLOR_FOCUSED
backcolor 1 1 1 0
style WINDOW_STYLE_FILLED
onClose
{
uiScript clearError
}
onOpen
{
setdvar ui_SaveLoadVisible "0";
}
onEsc
{
uiScript playerstart
}
// background
itemDef
{
style WINDOW_STYLE_FILLED
type ITEM_TYPE_OWNERDRAW
rect FULLSCREEN_WIDE
backcolor 1 1 1 1
visible 1
background cinematic
decoration
}
itemDef
{
name "profile"
type ITEM_TYPE_OWNERDRAW
visible 1
rect 40 40 560 400
ownerdraw UI_LOADPROFILING
decoration
}
itemDef
{
name errorinfo
type ITEM_TYPE_TEXT
rect 120 142 400 255
style WINDOW_STYLE_FILLED
textalign ITEM_ALIGN_TOP_CENTER
autowrapped
dvar "com_errorMessage"
textscale .8
forecolor 1 .2 .2 1
visible 1
decoration
}
#ifdef PS3
itemDef
{
type ITEM_TYPE_TEXT
text "@PLATFORM_UI_PRESS_BUTTONSELECTCHOICE"
style WINDOW_STYLE_FILLED
textscale TEXTSIZE_SMALL
border 0
bordercolor 1 1 1 1
rect 0 388 640 45
textalign ITEM_ALIGN_TOP_CENTER
textaligny 4
forecolor 1 1 1 0.4
backcolor 0 0 0 0
visible when ( !dvarbool( ui_isSaving ) && VIS_PRESS_START );
decoration
}
#endif
#ifdef XENON
itemDef
{
type ITEM_TYPE_TEXT
text "@MENU_PRESS_START_TO_SKIP"
style WINDOW_STYLE_FILLED
textscale TEXTSIZE_SMALL
border 0
bordercolor 1 1 1 1
rect 0 388 640 45
textalign ITEM_ALIGN_TOP_CENTER
textaligny 4
forecolor 1 1 1 0.4
backcolor 0 0 0 0
visible when ( !dvarbool( ui_isSaving ) && VIS_PRESS_START );
decoration
}
#endif
#ifdef PC
itemDef
{
type ITEM_TYPE_TEXT
text "@MENU_CLICK_TO_START_THE_MISSION"
style WINDOW_STYLE_FILLED
textscale TEXTSIZE_SMALL
border 0
bordercolor 1 1 1 1
rect 0 388 640 45
textalign ITEM_ALIGN_TOP_CENTER
textaligny 4
forecolor 1 1 1 0.4
backcolor 0 0 0 0
visible when ( !dvarbool( ui_isSaving ) && VIS_PRESS_START );
decoration
}
#endif // #ifdef PC
itemDef
{
type ITEM_TYPE_BUTTON
rect -128 0 896 480
style WINDOW_STYLE_EMPTY
visible 1
forecolor 0 0 0 0
backcolor 0 0 0 0
action
{
uiScript playerstart
}
}
#include "ui/safearea.menu"
}
menuDef
{
name "pregame_loaderror_mp"
rect 0 0 640 480
fullScreen 1
focusColor COLOR_FOCUSED
backcolor 1 1 1 0
style WINDOW_STYLE_FILLED
blurWorld 6.0
onClose
{
uiScript clearError
}
onOpen
{
setdvar ui_SaveLoadVisible "0";
}
// background
itemDef
{
style WINDOW_STYLE_FILLED
rect FULLSCREEN_WIDE
backcolor 0.2 0.2 0.2 .5
visible 1
decoration
}
itemDef
{
name "profile"
type ITEM_TYPE_OWNERDRAW
visible 1
rect 40 40 560 400
ownerdraw UI_LOADPROFILING
decoration
}
itemDef
{
name errorinfo
type ITEM_TYPE_TEXT
rect 120 142 400 255
style WINDOW_STYLE_FILLED
textalign ITEM_ALIGN_TOP_CENTER
autowrapped
dvar "com_errorMessage"
textscale .8
forecolor 1 .2 .2 1
visible 1
decoration
}
// the button
// Text message saying you should click to continue
#ifdef CONSOLE
itemDef
{
type ITEM_TYPE_TEXT
text "@MENU_PRESS_START"
style WINDOW_STYLE_FILLED
textscale TEXTSIZE_TITLE
rect 0 388 640 45
textalign ITEM_ALIGN_TOP_CENTER
textaligny 4
forecolor 1 1 1 1
visible 1
decoration
}
#endif // #ifdef CONSOLE
#ifdef PC
itemDef
{
type ITEM_TYPE_TEXT
text "@MENU_CLICK_TO_START_THE_MISSION"
style WINDOW_STYLE_FILLED
textscale TEXTSIZE_TITLE
rect 0 388 640 45
textalign ITEM_ALIGN_TOP_CENTER
textaligny 4
forecolor 1 1 1 1
visible 1
decoration
}
#endif // #ifdef PC
itemDef
{
type ITEM_TYPE_BUTTON
rect -128 0 896 480
style WINDOW_STYLE_EMPTY
visible 1
forecolor 0 0 0 0
backcolor 0 0 0 0
action
{
uiScript clearLoadErrorsSummary
}
}
#include "ui/safearea.menu"
}
}

View File

@ -0,0 +1,447 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#define OPTIONS_STYLE 1
#define CHOICE_SEP_1 27
#define CHOICE_SEP_2 30
#include "ui_mp/menustyle.inc"
#include "ui/choices_setup_common.menu"
#include "ui/framestyle.inc"
#include "ui/frame.inc"
#undef CHOICE_ACTION_SOUND
#define CHOICE_ACTION_SOUND "uin_mouse_click_t"
#undef CHOICE_BUTTON_NAME
#define CHOICE_BUTTON_NAME "options_graphics_"
#undef MENUDEF_NAME
#define MENUDEF_NAME options_graphics
#undef OPTIONS_GRAPHICS_HEIGHT
#undef OPTIONS_GRAPHICS_WIDTH
#define OPTIONS_GRAPHICS_HEIGHT 332
#define OPTIONS_GRAPHICS_WIDTH OPTIONS_GRAPHICS_HEIGHT * FRAME_ASPECT_RATIO
{
menuDef
{
name options_graphics
fullScreen 0
rect 0 0 640 480
focusColor COLOR_FOCUSED
soundloop ""
onOpen
{
LOCAL_CLOSE_ALL_BUT( options_graphics )
setLocalVarBool ui_showApply 0;
setLocalVarBool ui_hideBack 1;
// setfromdvar dst src
exec "exec ui/options_graphics.cfg";
if ( dvarInt( r_picmip_manual ) == 0 )
{
exec "set ui_r_picmip -1";
exec "set ui_r_picmip_bump -1";
exec "set ui_r_picmip_spec -1";
exec "set ui_r_picmip_manual 0";
}
setdvar g_reloading "0";
// round ai_corpsecount down to valid values.
if ( dvarInt( ai_corpsecount ) >= 32 )
{
// KTouevsky: Bump this number when the RAGDOLL_MAX_SIMULATING in ragdoll.h is bumped to 32 too
// setDvar ai_corpseCount 32;
setDvar ai_corpseCount 16;
}
elseif ( dvarInt( ai_corpsecount ) >= 16 )
{
setDvar ai_corpseCount 16;
}
elseif ( dvarInt( ai_corpsecount ) >= 10 )
{
setDvar ai_corpseCount 10;
}
elseif ( dvarInt( ai_corpsecount ) >= 5 )
{
setDvar ai_corpseCount 5;
}
elseif ( dvarInt( ai_corpsecount ) >= 3 )
{
setDvar ai_corpseCount 3;
}
// 2008-Aug-1 KTouevsky: loosk like COD4 have "Soften Smoke Edges" to be "Yes/No" only and linked to r_zfeather directly
//execOnDvarFloatValue r_zfeather 0 "set ui_zfeather 0"; // off
//execOnDvarFloatValue r_zfeather 1 "set ui_zfeather 1"; // world
//execOnDvarFloatValue r_depthPrepassModels 1 "set ui_zfeather 2"; // everything
if (IsInGame())
{
showMenu "pausedbkgnd";
}
else
{
activateBlur;
}
}
onClose
{
setLocalVarBool ui_hideBack 0;
//execOnDvarIntValue ui_zfeather 0 "set r_zfeather 0;set r_depthPrepassModels 0"; // off
//execOnDvarIntValue ui_zfeather 1 "set r_zfeather 1;set r_depthPrepassModels 0"; // world
//execOnDvarIntValue ui_zfeather 2 "set r_zfeather 1;set r_depthPrepassModels 1"; // everything
if (IsInGame())
{
hideMenu "pausedbkgnd";
}
else
{
deactivateBlur;
}
// be sure brightness (r_gamma) is stored in the profile
exec updategamerprofile;
}
onESC
{
close self;
open options_new_pc;
}
PC_TAB_SWITCH_ACTIONS( options_new_pc, options_controls_new_pc, options_controls_new_pc )
#include "ui_mp/leftside_options.inc"
#undef CHOICE_X_START
#undef CHOICE_Y_START
#undef CHOICE_HORIZONTAL_ALIGN
#undef CHOICE_VERTICAL_ALIGN
#undef CHOICE_DVAR_EXTRA_WIDTH
#undef CHOICE_TEXT_OFFSET_X
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
#define CHOICE_X_START ((-OPTIONS_GRAPHICS_WIDTH/2) - 75)
#define CHOICE_Y_START ((-OPTIONS_GRAPHICS_HEIGHT/2) + 32)
#define CHOICE_DVAR_EXTRA_WIDTH 120
#define CHOICE_TEXT_OFFSET_X -10
#undef CHOICE_TEXTSTYLE
#undef CHOICE_TEXTSIZE
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
#undef CHOICE_TEXT_COLOR_NO_HL
#undef CHOICE_TEXT_COLOR_HL
#undef CHOICE_CAPTION_TEXT_COLOR_NO_HL
#undef CHOICE_CAPTION_TEXT_COLOR_HL
#define CHOICE_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
#define CHOICE_TEXT_COLOR_HL 1 1 1 1
#define CHOICE_CAPTION_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
#define CHOICE_CAPTION_TEXT_COLOR_HL 0 0 0 1
#define TEXTURE_QUALITY_ACTION \
setLocalVarBool ui_showApply 1; \
setDvar ui_r_picmip_bump dvarInt( ui_r_picmip ); \
setDvar ui_r_picmip_spec dvarInt( ui_r_picmip ); \
if ( dvarInt( ui_r_picmip ) == -1 ) \
{ \
setDvar ui_r_picmip_manual 0; \
} \
else \
{ \
setDVar ui_r_picmip_manual 1; \
}
#define MP_ZOMBIE_INGAME ( IsInGame() && ( dvarBool( ui_multiplayer ) || dvarBool( zombiemode ) ) )
FRAME_CHOICE_SECTION_TITLE( 21, "@MENU_GRAPHICS_CAPS" )
FRAME_CHOICE_DVARENUMLIST_VIS( 22, "@MENU_VIDEO_MODE_CAPS", ui_r_mode, r_mode, setLocalVarBool ui_showApply 1, !MP_ZOMBIE_INGAME )
FRAME_CHOICE_DVARYESNO_VIS( 23, "@MENU_FULLSCREEN_CAPS", ui_r_fullscreen, setLocalVarBool ui_showApply 1, !MP_ZOMBIE_INGAME )
FRAME_CHOICE_DVARFLOATLIST_VIS( 24, "@MENU_ANTIALIASING_CAPS", ui_r_aasamples, { "@MENU_OFF_CAPS" 1 "@MENU_2X_CAPS" 2 "@MENU_4X_CAPS" 4 "@MENU_8X_CAPS" 8 }, setLocalVarBool ui_showApply 1;, !MP_ZOMBIE_INGAME && !dvarbool(r_supports16xAA) )
FRAME_CHOICE_DVARFLOATLIST_VIS( 24, "@MENU_ANTIALIASING_CAPS", ui_r_aasamples, { "@MENU_OFF_CAPS" 1 "@MENU_2X_CAPS" 2 "@MENU_4X_CAPS" 4 "@MENU_8X_CAPS" 8 "@MENU_16X_CAPS" 16 }, setLocalVarBool ui_showApply 1;, !MP_ZOMBIE_INGAME && dvarbool(r_supports16xAA) )
FRAME_CHOICE_DVARSTRINGLIST_VIS( 25, "@MENU_ASPECT_RATIO_CAPS", ui_r_aspectratio, { "@MENU_AUTO_CAPS"; "auto"; "@MENU_STANDARD_4_3_CAPS"; "standard"; "@MENU_WIDE_16_10_CAPS"; "wide 16:10"; "@MENU_WIDE_16_9_CAPS"; "wide 16:9" }, setLocalVarBool ui_showApply 1, !MP_ZOMBIE_INGAME )
FRAME_CHOICE_DVARENUMLIST_VIS( 26, "@MENU_SCREEN_REFRESH_RATE_CAPS", ui_r_displayRefresh, r_displayRefresh, setLocalVarBool ui_showApply 1;, !MP_ZOMBIE_INGAME )
FRAME_CHOICE_DVARYESNO_VIS( 27, "@MENU_SYNC_EVERY_FRAME_CAPS", ui_r_vsync, setLocalVarBool ui_showApply 1, !MP_ZOMBIE_INGAME )
FRAME_CHOICE_DVARSTRINGLIST( 28, "@MENU_TEXTURE_MIPMAPS_CAPS", r_texFilterMipMode, { "@MENU_AUTOMATIC_CAPS"; "Unchanged"; "@MENU_BILINEAR_CAPS"; "Force Bilinear"; "@MENU_TRILINEAR_CAPS"; "Force Trilinear" }, ; )
FRAME_DVARSLIDER( 29, "@MENU_TEXTURE_ANISOTROPY_CAPS", r_texFilterAnisoMin, 1, 1, 16, ; )
FRAME_CHOICE_DVARFLOATLIST_VIS( 30, "@MENU_TEXTURE_QUALITY_CAPS", ui_r_picmip, { "@MENU_AUTOMATIC_CAPS" -1 "@PLATFORM_LOW_CAPS" 3 "@MENU_NORMAL_CAPS" 2 "@PLATFORM_HIGH_CAPS" 1 "@MENU_EXTRA_CAPS" 0 }, TEXTURE_QUALITY_ACTION, !MP_ZOMBIE_INGAME )
FRAME_CHOICE_DVARYESNO_VIS( 31, "@PATCH_MENU_OPTION_SHADERWARMING_CAPS", r_shaderWarming, ;, 1 )
FRAME_CHOICE_DVARYESNO_VIS( 32, "@MENU_SHADOWS_CAPS", sm_enable, ;, dvarbool( ui_showShadowOptions ) )
FRAME_CHOICE_DVARYESNO_VIS( 33, "@MENU_OPTION_BULLET_IMPACTS_CAPS", fx_marks, ;, 1 )
// KTouevsky: Add back insane when the RAGDOLL_MAX_SIMULATING in ragdoll.h is bumped to 32 too
// FRAME_CHOICE_DVARFLOATLIST_VIS( 34, "@MENU_NUMBER_OF_CORPSES_CAPS", ai_corpsecount, { "@MENU_TINY_CAPS" 3 "@MENU_SMALL_CAPS" 5 "@MENU_MEDIUM_CAPS" 10 "@MENU_LARGE_CAPS" 16 "@MENU_INSANE_CAPS" 32 }, ;, !dvarBool( ui_multiplayer ) )
FRAME_CHOICE_DVARFLOATLIST_VIS( 34, "@MENU_NUMBER_OF_CORPSES_CAPS", ai_corpsecount, { "@MENU_TINY_CAPS" 3 "@MENU_SMALL_CAPS" 5 "@MENU_MEDIUM_CAPS" 10 "@MENU_LARGE_CAPS" 16 }, ;, !dvarBool( ui_multiplayer ) )
FRAME_DVARSLIDER( 35, "@MENU_BRIGHTNESS_CAPS", r_gamma, 1, 0.5, 3, ; )
FRAME_DVARSLIDER_VIS( 36, "@PLATFORM_FOV_CAPS", cg_fov_default, 1, 65, 80, ;, ( dvarint( ui_multiplayer ) ) )
#undef CHOICE_TEXTCOLOR
#define CHOICE_TEXTCOLOR 0.2 0.2 0.2 1
// darker disabled color in-game
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 22, "@MENU_VIDEO_MODE_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 23, "@MENU_FULLSCREEN_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 24, "@MENU_ANTIALIASING_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 25, "@MENU_ASPECT_RATIO_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 26, "@MENU_SCREEN_REFRESH_RATE_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 27, "@MENU_SYNC_EVERY_FRAME_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 30, "@MENU_TEXTURE_QUALITY_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 32, "@MENU_SHADOWS_CAPS", ;, ;, !dvarbool( ui_showShadowOptions ) && MP_ZOMBIE_INGAME, ; )
#undef CHOICE_TEXTCOLOR
#define CHOICE_TEXTCOLOR 0.4 0.4 0.4 1
// lighter disabled color in the shell
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 32, "@MENU_SHADOWS_CAPS", ;, ;, !dvarbool( ui_showShadowOptions ), ; )
#undef CHOICE_TEXT_COLOR_NO_HL
#undef CHOICE_TEXT_COLOR_HL
#undef CHOICE_CAPTION_TEXT_COLOR_NO_HL
#undef CHOICE_CAPTION_TEXT_COLOR_HL
#define CHOICE_TEXT_COLOR_NO_HL 1 1 1 1
#define CHOICE_TEXT_COLOR_HL 0 0 0 1
#define CHOICE_CAPTION_TEXT_COLOR_NO_HL 1 1 1 1
#define CHOICE_CAPTION_TEXT_COLOR_HL 0 0 0 1
FRAME_BUTTON_PC_RIGHT_OFFSET( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT, 0,
"@MENU_APPLY",
open vid_restart_popmenu;,
when( ( localVarBool( ui_showApply ) && !dvarint( sv_running ) ) || dvarInt(ui_allow_graphic_change) ); )
FRAME_BUTTON_PC_RIGHT_OFFSET( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT, 0,
"@MENU_APPLY",
uiScript openMenuOnDvar g_reloading 0 vid_restart_popmenu_listen;
uiScript openMenuOnDvarNot g_reloading 0 vid_restart_popmenu_dead;,
when( localVarBool( ui_showApply ) && dvarint( sv_running ) && dvarInt( ui_allow_graphic_change ) == 0 ); )
//CHOICE_APPLY_VIS( "@MENU_APPLY", open vid_restart_popmenu, when( ( localVarBool( ui_showApply ) && !dvarint( sv_running ) ) || dvarInt(ui_allow_graphic_change) ); )
//CHOICE_APPLY_VIS( "@MENU_APPLY", uiScript openMenuOnDvar g_reloading 0 vid_restart_popmenu_listen; uiScript openMenuOnDvarNot g_reloading 0 vid_restart_popmenu_dead;, when( localVarBool( ui_showApply ) && dvarint( sv_running ) && dvarInt( ui_allow_graphic_change ) == 0 ); )
//CHOICE_BACK( "@MENU_BACK", close self )
// These are last so I don't have to redefine everything.
#undef CHOICE_TEXTALIGN
#define CHOICE_TEXTALIGN ITEM_ALIGN_MIDDLE_LEFT
#undef CHOICE_TEXT_OFFSET_X
#define CHOICE_TEXT_OFFSET_X -5010
#undef CHOICE_X_START
#define CHOICE_X_START ((-OPTIONS_GRAPHICS_WIDTH/2) - 125 + 5000)
#undef CHOICE_TEXTCOLOR
#define CHOICE_TEXTCOLOR 0.2 0.2 0.2 1
// darker disabled color in-game
FRAME_CHOICE_DBUTTON_DARK_VIS_EX( 41, dvarString( ui_r_mode ), ;, ;, MP_ZOMBIE_INGAME, ; )
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 42, ui_r_fullscreen, ITEM_TYPE_MULTI, dvarFloatList { "@MENU_NO_CAPS" 0 "@MENU_YES_CAPS" 1 }, ;, MP_ZOMBIE_INGAME, ; )
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 43, ui_r_aasamples, ITEM_TYPE_MULTI, dvarFloatList { "@MENU_OFF_CAPS" 1 "@MENU_2X_CAPS" 2 "@MENU_4X_CAPS" 4 "@MENU_8X_CAPS" 8 "@MENU_16X_CAPS" 16 }, ;, MP_ZOMBIE_INGAME, ; )
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 44, ui_r_aspectratio, ITEM_TYPE_MULTI, dvarStrList { "@MENU_AUTO_CAPS"; "auto"; "@MENU_STANDARD_4_3_CAPS"; "standard"; "@MENU_WIDE_16_10_CAPS"; "wide 16:10"; "@MENU_WIDE_16_9_CAPS"; "wide 16:9" }, ;, MP_ZOMBIE_INGAME, ; )
FRAME_CHOICE_DBUTTON_DARK_VIS_EX( 45, dvarString( ui_r_displayRefresh ), ;, ;, MP_ZOMBIE_INGAME, ; )
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 46, ui_r_vsync, ITEM_TYPE_MULTI, dvarFloatList { "@MENU_NO_CAPS" 0 "@MENU_YES_CAPS" 1 }, ;, MP_ZOMBIE_INGAME, ; )
#undef CHOICE_Y_OFFSET
#define CHOICE_Y_OFFSET (CHOICE_SIZE_Y / 2)
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 49, ui_r_picmip, ITEM_TYPE_MULTI, dvarFloatList { "@MENU_AUTOMATIC_CAPS" -1 "@PLATFORM_LOW_CAPS" 3 "@MENU_NORMAL_CAPS" 2 "@PLATFORM_HIGH_CAPS" 1 "@MENU_EXTRA_CAPS" 0 }, ;, MP_ZOMBIE_INGAME, ; )
#undef CHOICE_Y_OFFSET
#define CHOICE_Y_OFFSET 0
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 52, sm_enable, ITEM_TYPE_MULTI, dvarFloatList { "@MENU_NO_CAPS" 0 "@MENU_YES_CAPS" 1 }, ;, !dvarbool( ui_showShadowOptions ) && MP_ZOMBIE_INGAME, ; )
#undef CHOICE_TEXTCOLOR
#define CHOICE_TEXTCOLOR 0.4 0.4 0.4 1
// lighter disabled color in the shell
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 52, sm_enable, ITEM_TYPE_MULTI, dvarFloatList { "@MENU_NO_CAPS" 0 "@MENU_YES_CAPS" 1 }, ;, !dvarbool( ui_showShadowOptions ), ; )
/*
itemDef
{
name graphic_warning
type ITEM_TYPE_BUTTON
text "@MENU_GRAPHICS_WARNING"
style WINDOW_STYLE_FILLED
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 20 -116 240 240 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM
textfont UI_FONT_NORMAL
textalign ITEM_ALIGN_LEFT
textscale TEXTSIZE_SMALL
visible 1
mouseEnter { play CHOICE_FOCUS_SOUND; }
decoration
autowrapped
}
*/
//CHOICE_FOOTNOTE( "@MENU_GRAPHICS_WARNING", 340, 340 )
}
// restoring button properties
// ---
#undef TEXTSIZE_BUTTON_PC
#define TEXTSIZE_BUTTON_PC 0.4
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X 224
#undef SECTION_X_OFFSET
#define SECTION_X_OFFSET 0
// ---
#undef CHOICE_BUTTON_NAME
#define CHOICE_BUTTON_NAME "options_graphics_texture_"
#undef MENUDEF_NAME
#define MENUDEF_NAME options_graphics_texture
menuDef
{
name options_graphics_texture
fullScreen 0
rect 0 0 640 480
focusColor COLOR_FOCUSED
soundloop ""
onOpen
{
LOCAL_CLOSE_ALL_BUT( options_graphics_texture )
setLocalVarBool ui_hideBack 1;
setLocalVarBool ui_showApply 0;
exec "setfromdvar ui_r_picmip r_picmip";
exec "setfromdvar ui_r_picmip_bump r_picmip_bump";
exec "setfromdvar ui_r_picmip_spec r_picmip_spec";
exec "setfromdvar ui_r_picmip_manual r_picmip_manual";
if (IsInGame())
{
showMenu "pausedbkgnd";
}
else
{
activateBlur;
}
}
onClose
{
setLocalVarBool ui_hideBack 0;
if (IsInGame())
{
hideMenu "pausedbkgnd";
}
else
{
deactivateBlur;
}
}
onESC
{
close self;
open options_new_pc;
}
PC_TAB_SWITCH_ACTIONS( options_new_pc, options_controls_new_pc, options_controls_new_pc )
#include "ui_mp/leftside_options.inc"
#undef CHOICE_X_START
#undef CHOICE_Y_START
#undef CHOICE_HORIZONTAL_ALIGN
#undef CHOICE_VERTICAL_ALIGN
#undef CHOICE_DVAR_EXTRA_WIDTH
#undef CHOICE_TEXT_OFFSET_X
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
#define CHOICE_X_START ((-OPTIONS_GRAPHICS_WIDTH/2) - 75)
#define CHOICE_Y_START ((-OPTIONS_GRAPHICS_HEIGHT/2) + 32)
#define CHOICE_DVAR_EXTRA_WIDTH 120
#define CHOICE_TEXT_OFFSET_X -10
#undef CHOICE_TEXTSTYLE
#undef CHOICE_TEXTSIZE
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
#undef CHOICE_TEXT_COLOR_NO_HL
#undef CHOICE_TEXT_COLOR_HL
#undef CHOICE_CAPTION_TEXT_COLOR_NO_HL
#undef CHOICE_CAPTION_TEXT_COLOR_HL
#define CHOICE_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
#define CHOICE_TEXT_COLOR_HL 1 1 1 1
#define CHOICE_CAPTION_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
#define CHOICE_CAPTION_TEXT_COLOR_HL 0 0 0 1
FRAME_CHOICE_SECTION_TITLE( 21, "@MENU_TEXTURE_SETTINGS_CAPS" )
FRAME_CHOICE_DVARSTRINGLIST( 22, "@MENU_TEXTURE_MIPMAPS_CAPS", r_texFilterMipMode, { "@MENU_AUTOMATIC_CAPS"; "Unchanged"; "@MENU_BILINEAR_CAPS"; "Force Bilinear"; "@MENU_TRILINEAR_CAPS"; "Force Trilinear" }, setLocalVarBool ui_showApply 1 )
FRAME_DVARSLIDER( 23, "@MENU_TEXTURE_ANISOTROPY_CAPS", r_texFilterAnisoMin, 1, 1, 16, setLocalVarBool ui_showApply 1 )
FRAME_CHOICE_DVARFLOATLIST_VIS( 24, "@MENU_TEXTURE_QUALITY_CAPS", ui_r_picmip_manual, { "@MENU_AUTOMATIC_CAPS" 0 "@MENU_MANUAL_CAPS" 1 }, setLocalVarBool ui_showApply 1, 1 )
FRAME_CHOICE_DVARFLOATLIST_VIS( 25, "@MENU_TEXTURE_RESOLUTION_CAPS", ui_r_picmip, { "@PLATFORM_LOW_CAPS" 3 "@MENU_NORMAL_CAPS" 2 "@PLATFORM_HIGH_CAPS" 1 "@MENU_EXTRA_CAPS" 0 }, setLocalVarBool ui_showApply 1, ( dvarint( ui_r_picmip_manual ) ) )
FRAME_CHOICE_DVARFLOATLIST_VIS( 26, "@MENU_NORMAL_MAP_RESOLUTION_CAPS", ui_r_picmip_bump, { "@PLATFORM_LOW_CAPS" 3 "@MENU_NORMAL_CAPS" 2 "@PLATFORM_HIGH_CAPS" 1 "@MENU_EXTRA_CAPS" 0 }, setLocalVarBool ui_showApply 1, ( dvarint( ui_r_picmip_manual ) ) )
FRAME_CHOICE_DVARFLOATLIST_VIS( 27, "@MENU_SPECULAR_MAP_RESOLUTION_CAPS", ui_r_picmip_spec, { "@PLATFORM_LOW_CAPS" 3 "@MENU_NORMAL_CAPS" 2 "@PLATFORM_HIGH_CAPS" 1 "@MENU_EXTRA_CAPS" 0 }, setLocalVarBool ui_showApply 1, ( dvarint( ui_r_picmip_manual ) ) )
FRAME_BUTTON_PC_RIGHT_OFFSET( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT, 0,
"@MENU_APPLY",
close self;
open apply_picmip_popmenu;,
when( localVarBool( ui_showApply ) ); )
//CHOICE_APPLY_VIS( "@MENU_APPLY", close self; open apply_picmip_popmenu, when( localVarBool( ui_showApply ) ) )
//CHOICE_BACK( "@MENU_BACK", close self; open options_graphics )
/*
itemDef
{
name graphic_warning
type ITEM_TYPE_BUTTON
text "@MENU_GRAPHICS_WARNING"
style WINDOW_STYLE_FILLED
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 20 -116 240 240 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM
textfont UI_FONT_NORMAL
textalign ITEM_ALIGN_LEFT
textscale TEXTSIZE_SMALL
visible 1
mouseEnter { play CHOICE_FOCUS_SOUND; }
decoration
autowrapped
}
*/
//CHOICE_FOOTNOTE( "@MENU_GRAPHICS_WARNING", 340, 340 )
}
menuDef
{
name apply_picmip_popmenu
fullScreen 0
rect 0 0 640 480
focusColor COLOR_FOCUSED
soundloop ""
onOpen
{
setLocalVarBool ui_showApply 0;
execnow "setfromdvar r_picmip ui_r_picmip";
execnow "setfromdvar r_picmip_bump ui_r_picmip_bump";
execnow "setfromdvar r_picmip_spec ui_r_picmip_spec";
execnow "setfromdvar r_picmip_manual ui_r_picmip_manual";
exec "wait; wait; r_applyPicmip";
close apply_picmip_popmenu;
open options_graphics_texture;
}
// background black frame
PREPROC_SHADER_DRAW( 320 0 600 480, "white", 0.1 0.1 0.12 1 )
CHOICE_SECTION_TITLE( 1, "@MENU_APPLYING_CHANGES" )
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,32 @@
#include "ui/menudef.h"
// ----------------- allocate stat for custom class settings -------------------
// custom class stats stat numbers
#include "ui_mp/cac_stats.inc"
#define CAC_DEFAULT_PRIMARY_GRENADE GetDefaultClassSlot( dvarstring( ui_class ), "primarygrenade" )
#define CAC_DEFAULT_PRIMARY GetDefaultClassSlot( dvarstring( ui_class ), "primary" )
// no default primary attachments for now
#define CAC_DEFAULT_PRIMARY_ATTACHMENT 0
#define CAC_DEFAULT_SECONDARY GetDefaultClassSlot( dvarstring( ui_class ), "secondary" )
// no default secondary attachments for now
#define CAC_DEFAULT_SECONDARY_ATTACHMENT 0
#define CAC_DEFAULT_SPECIALTY1 GetDefaultClassSlot( dvarstring( ui_class ), "specialty1" )
#define CAC_DEFAULT_SPECIALTY2 GetDefaultClassSlot( dvarstring( ui_class ), "specialty2" )
#define CAC_DEFAULT_SPECIAL_GRENADE GetDefaultClassSlot( dvarstring( ui_class ), "specialgrenade" )
// no default camo for now
#define CAC_DEFAULT_CAMO 0
#define CAC_DEFAULT_DEATHSTREAK GetDefaultClassSlot( dvarstring( ui_class ), "deathstreak" )
#define CAC_DEFAULT_KILLSTREAK_TIER1 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak1" )
#define CAC_DEFAULT_KILLSTREAK_TIER2 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak2" )
#define CAC_DEFAULT_KILLSTREAK_TIER3 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak3" )
// custom class name
#define CAC_MENU_NAME "menu_cac_custom"
#include "ui_mp/common_macro.inc"
{
#include "ui_mp/cac.inc"
}

View File

@ -0,0 +1,813 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#include "ui_mp/popup_player_info.inc"
#include "ui/framestyle.inc"
#include "ui_mp/menustyle.inc"
#include "ui/choices_setup_common.menu"
#include "ui_mp/popupstyle.inc"
#include "ui_mp/cac_stats.inc"
#include "ui/choices_setup_popmenu.menu"
#define IS_ONLINE_GAME ( dvarInt( splitscreen ) == 0 && dvarInt( systemlink ) == 0 )
#define IS_BASICTRAINING_GAME ( dvarInt( xblive_basictraining ) > 0 )
// saving popup for CAC ONLY - for a lack of better place
#define LOCAL_SAVING \
"wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait;"
menuDef
{
SYSTEM_POPUP_SETUP_VIS( saving_popup, exec LOCAL_SAVING" "LOCAL_SAVING" closemenu saving_popup";, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_SAVING", 1 )
SYSTEM_POPUP_SPINNER( 1 )
}
#define LOCAL_ACCEPT_ACTION( pclass, pclass_s ) \
if ( IS_ONLINE_GAME && !IS_BASICTRAINING_GAME ) \
{ \
setDvarFromLocString( dvarString( ui_custom_name ), pclass ); \
} \
execNow "equipDefaultClass ( dvarString( ui_custom_name ) ) class_custom"pclass_s; \
execNow "updategamerprofile"; \
play CHOICE_FOCUS_SOUND; \
close "popup_cac_defaultclasswarning"pclass_s; \
close "popup_cac_template";
#define LOCAL_CANCEL_ACTION( pclass_s ) \
play CHOICE_FOCUS_SOUND; \
close "popup_cac_defaultclasswarning"pclass_s;
// reset to default class confirmation popup menu
#define RESET_WARNING_POPUP( pclass, pclass_s ) \
menuDef \
{ \
SYSTEM_POPUP_SETUP_VIS( "popup_cac_defaultclasswarning"pclass_s, setfocus "popup_cac_defaultclasswarning"pclass_s"_2", ;, 1 ) \
\
SYSTEM_POPUP_TITLE_VIS( "@MENU_RESET_TO_DEFAULT", 1 ) \
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_CUSTOM_CLASS_RESET_WARNING", 1 ) \
\
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_YES", LOCAL_ACCEPT_ACTION( pclass, pclass_s ), 1, ; ) \
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_NO", LOCAL_CANCEL_ACTION( pclass_s ), 1, name "popup_cac_defaultclasswarning"pclass_s"_2" ) \
}
RESET_WARNING_POPUP( "@CLASS_CLASS1", "_smg" )
RESET_WARNING_POPUP( "@CLASS_CLASS2", "_cqb" )
RESET_WARNING_POPUP( "@CLASS_CLASS3", "_assault" )
RESET_WARNING_POPUP( "@CLASS_CLASS4", "_lmg" )
RESET_WARNING_POPUP( "@CLASS_CLASS5", "_sniper" )
menuDef
{
SYSTEM_POPUP_SETUP_VIS( copyClassConfirmation, setfocus copyClassConfirmation_2;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( getCopyClassConfirmationText( dvarInt("ui_custom_class_highlighted"), dvarInt("ui_classToReplace") ), 1 )
#define COPY_CLASS_ACTION \
execNow copyClass (dvarInt("ui_custom_class_highlighted")) (dvarInt("ui_classToReplace")); \
close self;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_YES", COPY_CLASS_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL", close self;, 1, name copyClassConfirmation_2 )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( copyCustomGametypeClassConfirmation, setfocus copyCustomGametypeClassConfirmation_2;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( getCopyCustomGametypeClassConfirmationText( dvarInt("ui_custom_gametype_class_highlighted"), dvarInt("ui_customGametypeClassToReplace") ), 1 )
#define COPY_CUSTOM_CLASS_ACTION \
execNow copyCustomGametypeClass (dvarInt("ui_custom_gametype_class_highlighted")) (dvarInt("ui_customGametypeClassToReplace")); \
close self;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_YES", COPY_CUSTOM_CLASS_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL", close self;, 1, name copyCustomGametypeClassConfirmation_2 )
}
#ifdef XENON
#define SELECT_ICON "ui_button_xenon_3d_a_32x32"
#endif
#ifdef PS3
#define SELECT_ICON "ui_button_ps3_x_32x32"
#endif
#undef POPUP_BUTTON_COUNT
#define POPUP_BUTTON_COUNT 5
// Copy Class Popup
menuDef
{
SYSTEM_POPUP_SETUP_VIS( copyClassPopup, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( GetCopyClassDialogTitle( dvarInt("ui_custom_class_highlighted") ), 1 )
itemDef
{
name custom_class_list
type ITEM_TYPE_LISTBOX
feeder FEEDER_CUSTOM_CLASSES
rect CHOICE_X_START CHOICE_Y_START CHOICE_SIZE_X (CHOICE_SIZE_Y*6) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN
elementwidth CHOICE_SIZE_X
elementheight CHOICE_SIZE_Y
elementtype LISTBOX_TEXT
textstyle ITEM_TEXTSTYLE_NORMAL
textfont UI_FONT_NORMAL
textscale TEXTSIZE_DEFAULT
textalignx CHOICE_SIZE_Y
textaligny 0
forecolor 1 1 1 1
focusColor 1 1 1 1
disableColor 1 1 1 1
selectBorder 0.8 0.95 1 0
outlinecolor 1 1 1 1
elementBackgroundColor NEW_FRAME_BUTTON_BG_COLOR
selectIcon SELECT_ICON
elementHighlightColor NEW_FRAME_BUTTON_TEXT_HIGHLIGHT_COLOR
#ifdef PC
modal
usepaging
#else //#ifdef PC
noscrollbars
#endif //#ifdef PC
noBlinkingHighlight
visible 1
onfocus
{
play CHOICE_FOCUS_SOUND;
}
onListboxSelectionChange
{
play CHOICE_FOCUS_SOUND;
}
doubleclick
{
execNow set ui_classToReplace (getFeederData("selection"));
open copyClassConfirmation;
close self;
}
}
SYSTEM_POPUP_BACK_BUTTON
}
#undef POPUP_BUTTON_COUNT
#define POPUP_BUTTON_COUNT 5
// Copy Custom Gametype Class Popup
menuDef
{
SYSTEM_POPUP_SETUP_VIS( copyCustomGametypeClassPopup, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( GetCopyCustomGametypeClassDialogTitle( dvarInt("ui_custom_gametype_class_highlighted") ), 1 )
itemDef
{
name custom_class_list
type ITEM_TYPE_LISTBOX
feeder FEEDER_CUSTOM_GAMETYPE_CLASSES
rect CHOICE_X_START CHOICE_Y_START CHOICE_SIZE_X (CHOICE_SIZE_Y*6) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN
elementwidth CHOICE_SIZE_X
elementheight CHOICE_SIZE_Y
elementtype LISTBOX_TEXT
textstyle ITEM_TEXTSTYLE_NORMAL
textfont UI_FONT_NORMAL
textscale TEXTSIZE_DEFAULT
textalignx CHOICE_SIZE_Y
textaligny 0
forecolor 1 1 1 1
focusColor 1 1 1 1
disableColor 1 1 1 1
selectBorder 0.8 0.95 1 0
outlinecolor 1 1 1 1
elementBackgroundColor NEW_FRAME_BUTTON_BG_COLOR
selectIcon SELECT_ICON
elementHighlightColor NEW_FRAME_BUTTON_TEXT_HIGHLIGHT_COLOR
#ifdef PC
modal
usepaging
#else //#ifdef PC
noscrollbars
#endif //#ifdef PC
noBlinkingHighlight
visible 1
onfocus
{
play CHOICE_FOCUS_SOUND;
}
onListboxSelectionChange
{
play CHOICE_FOCUS_SOUND;
}
doubleclick
{
execNow set ui_customGametypeClassToReplace (getFeederData("selection"));
open copyCustomGametypeClassConfirmation;
close self;
}
}
SYSTEM_POPUP_BACK_BUTTON
}
#ifdef PC
#undef CHOICE_FOCUS_SOUND
#define CHOICE_FOCUS_SOUND "uin_navigation_over"
#undef POPUP_BUTTON_COUNT
#define POPUP_BUTTON_COUNT 3
#define RENAME_ACTION \
exec "setNewCustomName"; close self;
menuDef
{
SYSTEM_POPUP_SETUP_VIS( "pc_rename", exec "getOldCustomName"; setFocus nameEntry;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MPUI_RENAME_CLASS", 1 )
itemDef
{
name nameEntry
TYPE ITEM_TYPE_UPREDITFIELD
text "@MENU_NAME1"
dvar "ui_custom_newname"
rect CHOICE_RECT( 1 )
textaligny 2
maxchars 15
maxpaintchars 15
textalign ITEM_ALIGN_MIDDLE_LEFT
textfont UI_FONT_NORMAL
textscale TEXTSIZE_DEFAULT
forecolor .9 .9 .9 1
style WINDOW_STYLE_FILLED
backcolor 0 0 0 .3
visible 1
mouseenter { show keyBindStatus; play CHOICE_FOCUS_SOUND; }
mouseexit { hide keyBindStatus; setfocus ok_button; }
accept { if ( dvarString( ui_custom_newname ) != "" ) { RENAME_ACTION } }
}
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_OK", RENAME_ACTION, ( dvarString( ui_custom_newname ) != "" ), ; )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 2, "@MENU_OK", ;, ;, ( dvarString( ui_custom_newname ) == "" ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MENU_CANCEL", close self; setDvar ui_custom_newname "";, 1, ; )
}
#endif
#undef POPUP_BUTTON_COUNT
#define POPUP_BUTTON_COUNT 2
menuDef
{
SYSTEM_POPUP_SETUP_VIS( clearAttachmentNotification, focusFirst;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MPUI_CAC_ATTACHMENTS_CLEARED", 1 )
#define CLEAR_ATTACHMENTS_ACTION \
execNow clearAllAttachmentsForItem (dvarString( ui_custom_name )) (STAT_CAC_PRIMARY); \
if ( !dvarBool("buyingAndEquippingProItem") ) \
{ \
execnow equipclasscurrentitem (dvarString( ui_custom_name )); \
} \
else \
{ \
execnow equipclassitem (dvarString( ui_custom_name )) (GetCurrentItemIndex() + 1); \
execnow buildItemListForSlotName (dvarString( selected_loadout_slot )); \
} \
setDvar buyingAndEquippingProItem "0";
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", CLEAR_ATTACHMENTS_ACTION; close self; execnow ui_animate menu_cac_custom * CloseDropDownList 0;, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_CANCEL", close self;, 1, ; )
}
// Redefinitions for MEDIUM_POPUP_SETUP popups
#undef POPUP_WIDTH
#define POPUP_WIDTH MEDIUM_POPUP_WIDTH
#undef POPUP_HEIGHT
#define POPUP_HEIGHT MEDIUM_POPUP_HEIGHT
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X CONFIRM_PURCHASE_SIZE_X
#undef CHOICE_Y_START
#define CHOICE_Y_START POPUP_Y_START_TOP
#undef PLAYER_INFO_ALIGN
#define PLAYER_INFO_ALIGN // Purposely set to nothing. The popup setup macro sets the alignment. If items within it set their own aligment, they end up offset incorrectly.
#undef PLAYER_INFO_X_START
#define PLAYER_INFO_X_START( frameWidth ) ( frameWidth - PLAYER_INFO_WIDTH - PLAYER_INFO_PAD )
#undef PLAYER_INFO_Y_START
#define PLAYER_INFO_Y_START( frameHeight ) ( PLAYER_INFO_PAD * 2 )
#undef BG_BACKCOLOR
#define BG_BACKCOLOR POPUP_BACKCOLOR
// Redefinitions for MEDIUM_POPUP_SETUP popups
#define PURCHASE_CONFIRMATION_RIGHT_X ( MEDIUM_POPUP_WIDTH / 2 )
#define PURCHASE_INFO_WIDTH ( ( MEDIUM_POPUP_WIDTH / 2 ) - POPUP_SIDE_PAD )
#define CONFIRMATION_ITEM_INFO_VIS( itemName, itemCost, itemDesc, balanceHeader, balanceAfter, visArg ) \
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 1 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, locString( "@MENU_POINTS", itemCost ), TEXTSIZE_LARGE, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, NEW_FRAME_GREEN_RGB 1, visArg, ; ) \ /* Cost */
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 2 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, "@" + itemName, TEXTSIZE_LARGE, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, NEW_FRAME_GREEN_RGB 1, visArg, ; ) \ /* Name */
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 4 ) PURCHASE_INFO_WIDTH 200, 0 0, "@" + itemDesc, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, MEDIUM_POPUP_GRAY, visArg, autowrapped; ) \ /* Description */
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 7 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, "@MPUI_YOUR_BANK", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, MEDIUM_POPUP_GRAY, visArg, ; ) \ /* Currency Available Header */
PREPROC_TEXT_DRAW_VIS_EX( (MEDIUM_POPUP_WIDTH-75) CHOICE_Y( 7 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, locString( "@MENU_POINTS", GetStatByName( "CODPOINTS" ) ), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, visArg, ; ) \ /* Currency Available */
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 8 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, balanceHeader, TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, MEDIUM_POPUP_GRAY, visArg, ; ) \ /* Balance After Purchase Header */
PREPROC_TEXT_DRAW_VIS_EX( (MEDIUM_POPUP_WIDTH-75) CHOICE_Y( 8 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, balanceAfter, TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, visArg, ; ) /* Balance After Purchase */
#define PURCHASE_CONFIRMATION_ITEM_INFO( itemName, itemCost, itemDesc ) \
CONFIRMATION_ITEM_INFO_VIS( itemName, itemCost, itemDesc, "@MPUI_BALANCE_AFTER_PURCHASE", locString( "@MENU_POINTS", GetStatByName( "CODPOINTS" ) - itemCost ), 1 )
#define PURCHASE_CONFIRMATION_ITEM_INFO_VIS( itemName, itemCost, itemDesc, visArg ) \
CONFIRMATION_ITEM_INFO_VIS( itemName, itemCost, itemDesc, "@MPUI_BALANCE_AFTER_PURCHASE", locString( "@MENU_POINTS", GetStatByName( "CODPOINTS" ) - itemCost ), visArg )
#define IS_TWO_ATTACHMENT_PERK_EQUIPPED \
( ( STAT_CAC_SPECIALTY2 == getItemIndex( "PERKS_PROFESSIONAL" ) ) || ( STAT_CAC_SPECIALTY2 == getItemIndex( "PERKS_PROFESSIONAL_PRO" ) ) )
#define TWO_ATTACHMENTS_EQUIPPED \
( GetItemNumAttachmentsEquipped( dvarString( ui_custom_name ), STAT_CAC_PRIMARY ) > 1 || GetItemNumAttachmentsEquipped( dvarString( ui_custom_name ), STAT_CAC_SECONDARY ) > 1 )
#define TWO_ATTACHMENT_PERK_NOT_HIGHLIGHTED \
( GetCurrentItemIndex() != getItemIndex( "PERKS_PROFESSIONAL" ) && GetCurrentItemIndex() != getItemIndex( "PERKS_PROFESSIONAL_PRO" ) )
#define PERK_2_EQUIP_ACTION \
if( TWO_ATTACHMENTS_EQUIPPED && IS_TWO_ATTACHMENT_PERK_EQUIPPED && TWO_ATTACHMENT_PERK_NOT_HIGHLIGHTED ) \
{ \
setDvar buyingAndEquippingProItem "0"; \
execNow openMenu clearAttachmentNotification; \
execnow set ui_closeAfterPurchase 0; \
} \
else \
{ \
execnow equipclasscurrentitem (dvarString( ui_custom_name )); \
execnow set ui_closeAfterPurchase 1; \
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseConfirmation", setfocus "PurchaseConfirmation_3";, ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( GetCurrentItemName(), GetCurrentItemCost(), GetItemDesc( GetCurrentItemIndex() ) )
#define BUY_ACTION \
execnow purchasecurrentitem; \
if ( dvarString( ui_inside_popup ) == "select_weapon" ) \
{ \
execnow buildItemListForSlotNameAndGroup (dvarString(selected_loadout_slot)) (dvarString(selected_group)); \
} \
elseif ( dvarString( ui_inside_popup ) == "equipment_head" ) \
{ \
execnow buildItemListForSlotName (dvarString( selected_loadout_slot )); \
} \
close self;
#define BUY_AND_EQUIP_ACTION \
execnow purchasecurrentitem; \
if ( dvarString( ui_inside_popup ) == "specialties_2" ) \
{ \
PERK_2_EQUIP_ACTION \
} \
else \
{ \
execnow equipclasscurrentitem (dvarString( ui_custom_name )); \
execnow set ui_closeAfterPurchase 1; \
} \
if ( dvarString( ui_inside_popup ) == "select_weapon" ) \
{ \
execnow buildItemListForSlotNameAndGroup (dvarString(selected_loadout_slot)) (dvarString(selected_group)); \
execnow set ui_closeAfterPurchase 1; \
} \
elseif ( dvarString( ui_inside_popup ) == "equipment_head" ) \
{ \
execnow buildItemListForSlotName (dvarString( selected_loadout_slot )); \
} \
close self;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_AND_EQUIP_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self, 1, name PurchaseConfirmation_3 )
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseKillstreakConfirmation", setfocus "PurchaseKillstreakConfirmation_3";, ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( GetCurrentItemName(), GetCurrentItemCost(), GetItemDesc( GetCurrentItemIndex() ) )
#define BUY_KILLSTREAK_ACTION \
execnow purchasecurrentitem; \
close self;
#define BUY_AND_EQUIP_KILLSTREAK_ACTION \
execnow purchasecurrentitem; \
execnow equipGlobalItemInSlotSorted 3 killstreak 1; \
execnow set ui_closeAfterPurchase 1; \
close self;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_KILLSTREAK_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_AND_EQUIP_KILLSTREAK_ACTION, ( GetNumSortedItemsEquipped() < 3 ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL_PURCHASE_CAPS", close self, ( GetNumSortedItemsEquipped() == 3 ), name PurchaseKillstreakConfirmation_3 )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self, ( GetNumSortedItemsEquipped() < 3 ), name PurchaseKillstreakConfirmation_3 )
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseProConfirmation", setfocus "PurchaseProConfirmation_3", ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( GetItemName( GetCurrentItemIndex() + 1 ), GetItemCost( GetCurrentItemIndex() + 1 ), GetItemDesc( GetCurrentItemIndex() + 1 ) )
#define BUY_PRO_ACTION \
execnow purchasecurrentproitem; \
execnow buildItemListForSlotName (dvarString( selected_loadout_slot )); \
close self;
#define BUY_AND_EQUIP_PRO_ACTION \
execnow purchasecurrentproitem; \
if ( dvarString( ui_inside_popup ) == "specialties_2" && TWO_ATTACHMENTS_EQUIPPED && IS_TWO_ATTACHMENT_PERK_EQUIPPED && TWO_ATTACHMENT_PERK_NOT_HIGHLIGHTED ) \
{ \
setDvar buyingAndEquippingProItem "1"; \
execNow openMenu clearAttachmentNotification; \
execnow set ui_closeAfterPurchase 0; \
} \
else \
{ \
execnow equipclassitem (dvarString( ui_custom_name )) (GetCurrentItemIndex() + 1); \
execnow set ui_closeAfterPurchase 1; \
execnow buildItemListForSlotName (dvarString( selected_loadout_slot )); \
} \
close self;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_PRO_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_AND_EQUIP_PRO_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self, 1, name PurchaseProConfirmation_3 )
}
#define GET_SLOT_STAT \
( Select( dvarString( selected_loadout_slot ) == "primary", STAT_CAC_PRIMARY, STAT_CAC_SECONDARY ) )
#define SELECTING_PRIMARY \
( dvarString( selected_loadout_slot ) == "primary" )
#define CAN_EQUIP_TWO_ATTACHMENTS \
( ( SELECTING_PRIMARY ) && ( isItemEquipped( getitemindex("PERKS_PROFESSIONAL"), dvarString( ui_custom_name ) ) || isItemEquipped( getitemindex("PERKS_PROFESSIONAL_PRO"), dvarString( ui_custom_name ) ) ) )
#define NUM_EQUIPPED_ATTACHMENTS \
GetItemNumAttachmentsEquipped( dvarString( ui_custom_name ), GET_SLOT_STAT )
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseAttachmentConfirmation", setfocus "PurchaseAttachmentConfirmation_3", ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( GetCurrentItemAttachmentName(), GetCurrentItemAttachmentCost(), GetAttachmentDesc( GetItemAttachment( GetCurrentItemIndex(), GetCurrentItemAttachmentNum() ) ) )
#define BUY_ATTACHMENT_ACTION \
execnow purchasecurrentitemattachment; \
close self;
#define BUY_ATTACHMENT_AND_EQUIP_ACTION \
execnow purchasecurrentitemattachment; \
if( ( NUM_EQUIPPED_ATTACHMENTS < 1 ) || ( NUM_EQUIPPED_ATTACHMENTS == 1 && CAN_EQUIP_TWO_ATTACHMENTS ) ) \
{ \
execnow equipclasscurrentattachment ( dvarString( ui_custom_name ) ); \
} \
close self;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_ATTACHMENT_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_ATTACHMENT_AND_EQUIP_ACTION, ( ( NUM_EQUIPPED_ATTACHMENTS == 0 ) || ( NUM_EQUIPPED_ATTACHMENTS == 1 && CAN_EQUIP_TWO_ATTACHMENTS ) ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL_PURCHASE_CAPS", close self, ( NUM_EQUIPPED_ATTACHMENTS == 2 || ( ( NUM_EQUIPPED_ATTACHMENTS == 1 ) && !CAN_EQUIP_TWO_ATTACHMENTS ) ), name PurchaseAttachmentConfirmation_3 )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self, ( ( NUM_EQUIPPED_ATTACHMENTS == 0 ) || ( NUM_EQUIPPED_ATTACHMENTS == 1 && CAN_EQUIP_TWO_ATTACHMENTS ) ), name PurchaseAttachmentConfirmation_3 )
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseOptionConfirmation", setfocus "PurchaseOptionConfirmation_3", ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( GetWeaponOptionName( GetCurrentItemOption() ), GetWeaponOptionCost( GetCurrentItemOption() ), GetWeaponOptionName( GetCurrentItemOption() ) )
#define BUY_OPTION_ACTION \
execnow purchasecurrentitemoption; \
close self;
#define BUY_OPTION_AND_EQUIP_ACTION \
execnow purchasecurrentitemoption; \
execnow equipclasscurrentoption ( dvarString( ui_custom_name ) ) ( dvarString( ui_option_name ) ); \
execnow set ui_closeAfterPurchase 1; \
close self;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_OPTION_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_OPTION_AND_EQUIP_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseOptionConfirmation_3 )
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseContractConfirmation", setfocus "PurchaseContractConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( GetContractName( GetCurrentContractIndex() ), GetContractCost( GetCurrentContractIndex() ), GetContractDesc( GetCurrentContractIndex() ) )
#define BUY_CONTRACT_ACTION \
execnow activatecontract ( GetCurrentContractIndex() ) ( dvarint( ui_activeContract ) ); \
close self; \
execnow ui_animate menu_xboxlive_contracts anim_controller CloseDropDownList 0;
#define DEACTIVATE_AND_BUY_CONTRACT_ACTION \
execnow activatecontract ( GetCurrentContractIndex() ) ( dvarint( ui_activeContract ) ); \
close self; \
execnow ui_animate menu_xboxlive_contracts anim_controller CloseDropDownList 0;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_CONTRACT_ACTION, ( !IsContractInProgress( GetIndexForActiveContract( dvarInt( ui_activeContract ) ) ) ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_DEACTIVATE_AND_BUY_CAPS", DEACTIVATE_AND_BUY_CONTRACT_ACTION, ( IsContractInProgress( GetIndexForActiveContract( dvarInt( ui_activeContract ) ) ) ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseContractConfirmation_2 )
PREPROC_TEXT_DRAW_VIS_EX( CHOICE_X( 3 ) CHOICE_Y( 3 ) CHOICE_SIZE_X CHOICE_SIZE_Y, 0 0, "@MPUI_REPLACE_CONTRACT_WARNING", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, NEW_FRAME_ORANGE_RGB 1, when( IsContractInProgress( GetIndexForActiveContract( dvarInt( ui_activeContract ) ) ) );, autowrapped )
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseWeaponOptionConfirmation", setfocus "PurchaseWeaponOptionConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO_VIS( GetItemName( dvarInt( weaponOptionIndex ) ), GetWeaponOptionCost( GetItemOptionByName( dvarString( weaponOptionRef ) ) ), GetItemDesc( dvarInt( weaponOptionIndex ) ), 1 )
#define BUY_WEAPON_OPTION_ACTION( optionRef ) \
execnow PurchaseWeaponOption optionRef; \
close self;
#define BUY_AND_EQUIP_WEAPON_OPTION_ACTION( optionRef ) \
execnow PurchaseWeaponOption optionRef; \
close self; \
execnow toggleWeaponOption (dvarString( ui_custom_name )) optionRef;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_WEAPON_OPTION_ACTION( ( dvarString( weaponOptionRef ) ) ), 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_AND_EQUIP_WEAPON_OPTION_ACTION( ( dvarString( weaponOptionRef ) ) ), 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self, 1, name PurchaseWeaponOptionConfirmation_2 )
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseEmblemLayerConfirmation", setfocus "PurchaseEmblemLayerConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( ( locString( "MENU_EMBLEM_LAYER_CAPS", emblemSelectedLayer() + 1 ) ) , emblemLayerCost( emblemSelectedLayer() ), "" )
#define BUY_EMBLEM_LAYER_ACTION \
execnow emblempurchaselayer; \
close self;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_EMBLEM_LAYER_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseEmblemLayerConfirmation_2 )
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseClanTagFeatureConfirmation", setfocus "PurchaseClanTagFeatureConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( "MPUI_CLANTAG_" + GetClanTagFeatureName( GetCurrentClanTagFeature() ), GetClanTagFeatureCost( GetCurrentClanTagFeature() ), "MPUI_CLANTAG_" + GetClanTagFeatureName( GetCurrentClanTagFeature() ) + "_DESC" )
#define BUY_CLAN_TAG_FEATURE_ACTION \
execnow PurchaseClanTagFeature ( GetCurrentClanTagFeature() ); \
close self;
#define BUY_AND_EQUIP_CLAN_TAG_FEATURE_ACTION \
execnow PurchaseClanTagFeature ( GetCurrentClanTagFeature() ); \
execNow statwriteddl clanTagStats selectedFeature ( GetCurrentClanTagFeature() ); \
close self;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_CLAN_TAG_FEATURE_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_AND_EQUIP_CLAN_TAG_FEATURE_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseClanTagFeatureConfirmation_2 )
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseCurrentWeaponOptionConfirmation", setfocus "PurchaseCurrentWeaponOptionConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( GetWeaponOptionName( GetCurrentItemOption() ), GetWeaponOptionCost( GetCurrentItemOption() ), GetWeaponOptionName( GetCurrentItemOption() ) )
#define BUY_CURRENT_WEAPON_OPTION_ACTION \
execnow purchasecurrentitemoption; \
close self;
#define BUY_AND_EQUIP_CURRENT_WEAPON_OPTION_ACTION \
execnow purchasecurrentitemoption; \
execnow "equipclasscurrentoption ( dvarString( ui_custom_name ) ) ( dvarString( ui_optiongroup_name ) )"; \
execnow set ui_closeAfterPurchase 1; \
close self;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_CURRENT_WEAPON_OPTION_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_AND_EQUIP_CURRENT_WEAPON_OPTION_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseCurrentWeaponOptionConfirmation_2 )
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseEmblemIconConfirmation", setfocus "PurchaseEmblemIconConfirmation_3", ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( emblemIconName( localvarint( emblem_selected_icon_id ) ), emblemIconCost( localvarint( emblem_selected_icon_id ) ), "" )
#define BUY_EMBLEM_ICON_ACTION \
execnow emblempurchaseicon ( localvarint( emblem_selected_icon_id ) ); \
close self;
#define BUY_SELECT_EMBLEM_ICON_ACTION \
execnow emblempurchaseicon ( localvarint( emblem_selected_icon_id ) ); \
close self; \
execNow emblemClear; \
execNow emblemIcon ( localvarint( emblem_selected_icon_id ) ); \
close emblem_icon_select; \
openimmediate emblem_edit;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_EMBLEM_ICON_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_SELECT_CAPS", BUY_SELECT_EMBLEM_ICON_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseEmblemIconConfirmation_3 )
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseEmblemBackgroundConfirmation", setfocus "PurchaseEmblemBackgroundConfirmation_3", ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( emblemBackgroundName( localvarint( bg_hi_index ) ), emblemBackgroundCost( localvarint( bg_hi_index ) ), "" )
PREPROC_SHADER_DRAW( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 4 ) 185 40, emblemBackgroundMaterial( localvarint( bg_hi_index ) ), 1 1 1 1 )
#define BUY_EMBLEM_BACKGROUND_ACTION \
execnow emblempurchasebackgroundbyindex ( localvarint( bg_hi_index ) ); \
close self;
#define BUY_SELECT_EMBLEM_BACKGROUND_ACTION \
execnow emblempurchasebackgroundbyindex ( localvarint( bg_hi_index ) ); \
execnow emblemselectbackground ( localvarint( bg_hi_index ) ); \
close self; \
close emblem_bg_select; \
openimmediate emblem_edit;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_EMBLEM_BACKGROUND_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_SELECT_CAPS", BUY_SELECT_EMBLEM_BACKGROUND_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseEmblemBackgroundConfirmation_3 )
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PurchaseAttachmentPointConfirmation", setfocus "PurchaseAttachmentPointConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
#define SELECTED_ATTACHMENT_POINT_NAME \
tablelookup( "mp/attachmentTable.csv", 4, dvarString( "selected_attachment_point" ), 3 )
#define SELECTED_ATTACHMENT_POINT_COST \
tablelookup( "mp/attachmentTable.csv", 4, dvarString( "selected_attachment_point" ), 12 )
#define SELECTED_ATTACHMENT_POINT_DESC \
tablelookup( "mp/attachmentTable.csv", 4, dvarString( "selected_attachment_point" ), 7 )
PURCHASE_CONFIRMATION_ITEM_INFO( SELECTED_ATTACHMENT_POINT_NAME, SELECTED_ATTACHMENT_POINT_COST, SELECTED_ATTACHMENT_POINT_DESC )
#define IS_PRIMARY ( dvarString( "selected_loadout_slot" ) == "primary" )
#define PURCHASE_ATTACH_POINT_ACTION \
execnow "purchaseitemattachmentpoint" (Select( IS_PRIMARY, STAT_CAC_PRIMARY, STAT_CAC_SECONDARY )) (dvarString( "selected_attachment_point" )); \
close self;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", PURCHASE_ATTACH_POINT_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseAttachmentPointConfirmation_2 )
}
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "PrestigeLBPurchaseConfirmation", setfocus "PrestigeLBPurchaseConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( "MPUI_PRESTIGE_LEADERBOARDS_CAPS", GetItemCost(GetItemIndex("FEATURE_PRESTIGE_LB")), "" )
#define BUY_PRESTIGE_LB_ACTION \
execNow purchaseItem (getItemIndex("FEATURE_PRESTIGE_LB")); \
execnow "uploadstats"; \
close self; \
openImmediate menu_playercards_lb_prestige
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_PRESTIGE_LB_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL_PURCHASE_CAPS", close self, 1, name PrestigeLBPurchaseConfirmation_2 )
}
// Redefinitions for LARGE_POPUP_SETUP popups
#undef POPUP_WIDTH
#define POPUP_WIDTH LARGE_POPUP_WIDTH
#undef POPUP_HEIGHT
#define POPUP_HEIGHT LARGE_POPUP_HEIGHT
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X (LARGE_POPUP_WIDTH / 3)
// Redefinitions for LARGE_POPUP_SETUP popups
// ====================================================================================================
// reset to default class selection ===================================================================
// ====================================================================================================
#define RESET_DEFAULT_ACTION( ptype ) \
play CHOICE_FOCUS_SOUND; \
open "popup_cac_defaultclasswarning"ptype;
#undef CHOICE_GROUP
#define CHOICE_GROUP "reset_class"
// hackaround to work for PC's floating mouse unfocusing
#undef UI_FOCUSFIRST
#ifdef PC
#define UI_FOCUSFIRST "ui_class"
#else
#define UI_FOCUSFIRST "ui_fake_focus"
#endif
menuDef
{
#define IS_CUSTOM_CLASS_MODE dvarInt( ui_useCustomClassInfo ) == 1
LARGE_POPUP_SETUP_VIS( "popup_cac_template", execnow "set "UI_FOCUSFIRST" class_smg";, ;, POPUP_GLOW_WHITE, 0, 1 )
LARGE_POPUP_TITLE_VIS( dvarString( dvarString( ui_custom_name ) ), when( !IS_CUSTOM_CLASS_MODE && IS_ONLINE_GAME && !IS_BASICTRAINING_GAME ) )
LARGE_POPUP_TITLE_VIS( dvarString( dvarString( offline_custom_name ) ), when( !IS_CUSTOM_CLASS_MODE && ( !IS_ONLINE_GAME || IS_BASICTRAINING_GAME ) ) )
LARGE_POPUP_TITLE_VIS( dvarString( custom_class_name ), when( IS_CUSTOM_CLASS_MODE ) )
LARGE_POPUP_SUBTITLE_VIS( toUpper( dvarstring(ui_menu_selection_title) ), 1 )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 1, "@CLASS_CLASS1", RESET_DEFAULT_ACTION( "_smg" ), setdvar ui_class class_custom_smg; setDvarFromLocString( ui_default_name, "@CLASS_CLASS1" );, ;, 1, ; )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 2, "@CLASS_CLASS2", RESET_DEFAULT_ACTION( "_cqb" ), setdvar ui_class class_custom_cqb; setDvarFromLocString( ui_default_name, "@CLASS_CLASS2" );, ;, 1, ; )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 3, "@CLASS_CLASS3", RESET_DEFAULT_ACTION( "_assault" ), setdvar ui_class class_custom_assault; setDvarFromLocString( ui_default_name, "@CLASS_CLASS3" );, ;, 1, ; )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 4, "@CLASS_CLASS4", RESET_DEFAULT_ACTION( "_lmg" ), setdvar ui_class class_custom_lmg; setDvarFromLocString( ui_default_name, "@CLASS_CLASS4" );, ;, 1, ; )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 5, "@CLASS_CLASS5", RESET_DEFAULT_ACTION( "_sniper" ), setdvar ui_class class_custom_sniper; setDvarFromLocString( ui_default_name, "@CLASS_CLASS5" );, ;, 1, ; )
#undef CAC_WIDTH
#define CAC_WIDTH LARGE_POPUP_WIDTH
#undef CAC_HEIGHT
#define CAC_HEIGHT LARGE_POPUP_HEIGHT
#define COMMON_ITEM_INFO_WIDTH 200
#define COMMON_ITEM_INFO_X (CAC_WIDTH - COMMON_ITEM_INFO_WIDTH - POPUP_SIDE_PAD )
#define COMMON_ITEM_INFO_Y (POPUP_SIDE_PAD*1.5)
// Default class stats
#undef STAT_CAC_PRIMARY_GRENADE
#define STAT_CAC_PRIMARY_GRENADE GetDefaultClassSlot( dvarstring( ui_class ), "primarygrenade" )
#undef STAT_CAC_PRIMARY
#define STAT_CAC_PRIMARY GetDefaultClassSlot( dvarstring( ui_class ), "primary" )
// no default attachments or camo for now
#undef STAT_CAC_PRIMARY_ATTACHMENT
#define STAT_CAC_PRIMARY_ATTACHMENT 0
#undef STAT_CAC_PRIMARY_CAMO
#define STAT_CAC_PRIMARY_CAMO 0
#undef STAT_CAC_SECONDARY
#define STAT_CAC_SECONDARY GetDefaultClassSlot( dvarstring( ui_class ), "secondary" )
// no default attachments or camo for now
#undef STAT_CAC_SECONDARY_ATTACHMENT
#define STAT_CAC_SECONDARY_ATTACHMENT 0
#undef STAT_CAC_SECONDARY_CAMO
#define STAT_CAC_SECONDARY_CAMO 0
#undef STAT_CAC_SPECIALTY1
#define STAT_CAC_SPECIALTY1 GetDefaultClassSlot( dvarstring( ui_class ), "specialty1" )
#undef STAT_CAC_SPECIALTY2
#define STAT_CAC_SPECIALTY2 GetDefaultClassSlot( dvarstring( ui_class ), "specialty2" )
#undef STAT_CAC_SPECIALTY3
#define STAT_CAC_SPECIALTY3 GetDefaultClassSlot( dvarstring( ui_class ), "specialty3" )
#undef STAT_CAC_EQUIPMENT
#define STAT_CAC_EQUIPMENT GetDefaultClassSlot( dvarstring( ui_class ), "equipment" )
#undef STAT_CAC_SPECIAL_GRENADE
#define STAT_CAC_SPECIAL_GRENADE GetDefaultClassSlot( dvarstring( ui_class ), "specialgrenade" )
#undef STAT_CAC_BODY
#define STAT_CAC_BODY GetDefaultClassSlot( dvarstring( ui_class ), "body" )
#undef STAT_CAC_DEATHSTREAK
#define STAT_CAC_DEATHSTREAK GetDefaultClassSlot( dvarstring( ui_class ), "deathstreak" )
#undef STAT_CAC_KILLSTREAK_TIER1
#define STAT_CAC_KILLSTREAK_TIER1 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak1" )
#undef STAT_CAC_KILLSTREAK_TIER2
#define STAT_CAC_KILLSTREAK_TIER2 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak2" )
#undef STAT_CAC_KILLSTREAK_TIER3
#define STAT_CAC_KILLSTREAK_TIER3 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak3" )
#undef FIRST_ATTACHMENT_PRIMARY_WEAPON
#define FIRST_ATTACHMENT_PRIMARY_WEAPON -1
#undef SECOND_ATTACHMENT_PRIMARY_WEAPON
#define SECOND_ATTACHMENT_PRIMARY_WEAPON -1
#include "ui_mp/newframe.inc"
#include "ui_mp/cac_item_info.inc"
LARGE_POPUP_BACK_BUTTON
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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,423 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#include "ui_mp/custom_mode.inc"
#define IS_TEAM_MODE \
( dvarString( "ui_gametype" ) != "dm" )
#define GAME_OPTIONS_MENU_NAME "custom_settings_general"
#define MENUDEF_NAME custom_settings_general
#define CUSTOM_GAME_OPTIONS_TITLE "@CUSTOM_GENERAL_OPTIONS_CAPS"
#define CHOICE1_TEXT "@CUSTOM_OPT_HARDCORE"
#define CHOICE1_DESC "@CUSTOM_OPT_HARDCORE_DESC"
#define CHOICE1_DVAR "scr_hardcore"
#define CHOICE1_DVARTEXT CHOICE1_DVAR"_text"
#define CHOICE1_SHOW 1
#define CHOICE1_EXEC1 execNowOnDvarIntValue scr_hardcore 0 "exec hardcore_disable.cfg";
#define CHOICE1_EXEC2 execNowOnDvarIntValue scr_hardcore 1 "exec hardcore_settings.cfg";
#define CHOICE1_STRLIST { "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1}
#define CHOICE1_EXEC play CHOICE_FOCUS_SOUND; CHOICE1_EXEC1 CHOICE1_EXEC2
#define CHOICE1_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE1_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CHOICE2_TEXT "@CUSTOM_OPT_KILLCAM"
#define CHOICE2_DESC "@CUSTOM_OPT_KILLCAM_DESC"
#define CHOICE2_DVAR "scr_game_allowkillcam"
#define CHOICE2_DVARTEXT CHOICE2_DVAR"_text"
#define CHOICE2_SHOW 1
#define CHOICE2_STRLIST { "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1}
#define CHOICE2_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE2_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CHOICE3_TEXT "@CUSTOM_OPT_HEADSHOTS_ONLY"
#define CHOICE3_DESC "@CUSTOM_OPT_HEADSHOT_ONLY_DESC"
#define CHOICE3_DVAR "scr_game_onlyheadshots"
#define CHOICE3_DVARTEXT CHOICE3_DVAR"_text"
#define CHOICE3_SHOW 1
#define CHOICE3_STRLIST { "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1}
#define CHOICE3_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE3_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CHOICE4_TEXT "@CUSTOM_OPT_ALLOW_SPRINT"
#define CHOICE4_DESC "@CUSTOM_OPT_ALLOW_SPRINT_DESC"
#define CHOICE4_DVAR "scr_player_sprintTime"
#define CHOICE4_DVARTEXT CHOICE4_DVAR"_text"
#define CHOICE4_SHOW 1
#define CHOICE4_STRLIST { "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 4}
#define CHOICE4_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE4_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CHOICE_SEP_1 4
#define CHOICE_EXTRA \
CUSTOM_BUTTON( 5, "@CUSTOM_RESPAWN_OPTIONS", execNow openMenu "popup_respawn_settings";, "@CUSTOM_RESPAWN_OPTIONS_DESC", "", 1 ) \
CUSTOM_BUTTON( 6, "@CUSTOM_LIVES_AND_HEALTH_OPTIONS", execNow openMenu "popup_lives_and_health_settings";, "@CUSTOM_LIVES_AND_HEALTH_OPTIONS_DESC", "", 1 ) \
CUSTOM_BUTTON( 7, "@CUSTOM_TEAM_OPTIONS", execNow openMenu "popup_team_settings";, "@CUSTOM_TEAM_OPTIONS_DESC", "", IS_TEAM_MODE ) \
CUSTOM_BUTTON( 7, "@CUSTOM_FFA_SPECTATE_OPTIONS", execNow openMenu "popup_ffa_spectate_settings";, "@CUSTOM_FFA_SPECTATE_OPTIONS_DESC", "", !IS_TEAM_MODE ) \
{
#include "ui_mp/custom_game_options.inc"
}
#define CUSTOM_OPTION_POPUP_WIDTH 320
#define CUSTOM_OPTION_POPUP_HEIGHT 195
#define CUSTOM_OPTION_POPUP_HINT_Y_OFFSET 70
#define CUSTOM_OPTION_POPUP_DVAR_OFFSET_X 110
//***********************************************************************************
// Respawn Settings
//***********************************************************************************
#undef MENUDEF_NAME
#define CUSTOM_OPTIONS_POPUP_MENU_NAME "popup_respawn_settings"
#define MENUDEF_NAME popup_respawn_settings
#define CUSTOM_OPTIONS_POPUP_TITLE "@CUSTOM_RESPAWN_OPTIONS"
#define CUSTOM_OPTIONS_POPUP_NUM_ITEMS 3
#define CHOICE1_TEXT "@CUSTOM_RESPAWN_DELAY"
#define CHOICE1_DESC "@CUSTOM_RESPAWN_DELAY_DESC"
#define CHOICE1_DVAR "custom_playerrespawndelay"
#define CHOICE1_DVARTEXT CHOICE1_DVAR"_text"
#define CHOICE1_SHOW 1
#define CHOICE1_STR1 "@MPUI_RULES_NONE_CAPS"
#define CHOICE1_STR2 "@MPUI_RULES_2_5SECONDS_CAPS"
#define CHOICE1_STR3 "@MPUI_RULES_5SECONDS_CAPS"
#define CHOICE1_STR4 "@MPUI_RULES_7_5SECONDS_CAPS"
#define CHOICE1_STR5 "@MPUI_RULES_10SECONDS_CAPS"
#define CHOICE1_STR6 "@MPUI_RULES_15SECONDS_CAPS"
#define CHOICE1_STR7 "@MPUI_RULES_20SECONDS_CAPS"
#define CHOICE1_STR8 "@MPUI_RULES_30SECONDS_CAPS"
#define CHOICE1_STR9 "@MPUI_RULES_40SECONDS_CAPS"
#define CHOICE1_STR10 "@MPUI_RULES_50SECONDS_CAPS"
#define CHOICE1_STR11 "@MPUI_RULES_1MINUTE_CAPS"
#define CHOICE1_STR12 "@MPUI_RULES_1_5MINUTES_CAPS"
#define CHOICE1_VAL1 0
#define CHOICE1_VAL2 2.5
#define CHOICE1_VAL3 5
#define CHOICE1_VAL4 7.5
#define CHOICE1_VAL5 10
#define CHOICE1_VAL6 15
#define CHOICE1_VAL7 20
#define CHOICE1_VAL8 30
#define CHOICE1_VAL9 40
#define CHOICE1_VAL10 50
#define CHOICE1_VAL11 60
#define CHOICE1_VAL12 90
#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_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE1_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CHOICE1_NUMVALS 12
#define CHOICE2_TEXT "@CUSTOM_RULES_FORCE_RESPAWN"
#define CHOICE2_DESC "@CUSTOM_FORCE_RESPAWN_DESC"
#define CHOICE2_DVAR "scr_player_forcerespawn"
#define CHOICE2_DVARTEXT CHOICE2_DVAR"_text"
#define CHOICE2_SHOW 1
#define CHOICE2_STRLIST { "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1}
#define CHOICE2_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE2_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CHOICE2_VIS dvarFloat( custom_waverespawndelay ) == 0
#define CHOICE2_DISABLED_DESC "@CUSTOM_FORCE_RESPAWN_DISABLED_DESC"
#define CHOICE2_DISABLE_ON_INVIS 1
#define CHOICE3_TEXT "@CUSTOM_WAVE_RESPAWN_DELAY"
#define CHOICE3_DESC "@CUSTOM_WAVE_RESPAWN_DELAY_DESC"
#define CHOICE3_DVAR custom_waverespawndelay
#define CHOICE3_DVARTEXT CHOICE3_DVAR"_text"
#define CHOICE3_SHOW 1
#define CHOICE3_STR1 "@MPUI_RULES_NONE_CAPS"
#define CHOICE3_STR2 "@MPUI_RULES_5SECONDS_CAPS"
#define CHOICE3_STR3 "@MPUI_RULES_10SECONDS_CAPS"
#define CHOICE3_STR4 "@MPUI_RULES_15SECONDS_CAPS"
#define CHOICE3_STR5 "@MPUI_RULES_30SECONDS_CAPS"
#define CHOICE3_STR6 ""
#define CHOICE3_STR7 ""
#define CHOICE3_STR8 ""
#define CHOICE3_STR9 ""
#define CHOICE3_STR10 ""
#define CHOICE3_STR11 ""
#define CHOICE3_STR12 ""
#define CHOICE3_VAL1 0
#define CHOICE3_VAL2 5
#define CHOICE3_VAL3 10
#define CHOICE3_VAL4 15
#define CHOICE3_VAL5 30
#define CHOICE3_VAL6 0
#define CHOICE3_VAL7 0
#define CHOICE3_VAL8 0
#define CHOICE3_VAL9 0
#define CHOICE3_VAL10 0
#define CHOICE3_VAL11 0
#define CHOICE3_VAL12 0
#define CHOICE3_EXEC ;
#define CHOICE3_STRLIST { CHOICE3_STR1 CHOICE3_VAL1 CHOICE3_STR2 CHOICE3_VAL2 CHOICE3_STR3 CHOICE3_VAL3 CHOICE3_STR4 CHOICE3_VAL4 CHOICE3_STR5 CHOICE3_VAL5 CHOICE3_STR6 CHOICE3_VAL6 CHOICE3_STR7 CHOICE3_VAL7 CHOICE3_STR8 CHOICE3_VAL8 CHOICE3_STR9 CHOICE3_VAL9 CHOICE3_STR10 CHOICE3_VAL10 CHOICE3_STR11 CHOICE3_VAL11 CHOICE3_STR12 CHOICE3_VAL12 }
#define CHOICE3_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE3_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CHOICE3_NUMVALS 5
#define CUSTOM_RESET_TO_DEFAULT resetdvar CHOICE1_DVAR; resetdvar CHOICE2_DVAR; resetdvar CHOICE3_DVAR;
{
#include "ui_mp/custom_options_popup.inc"
}
//***********************************************************************************
// Lives & Health
//***********************************************************************************
#define CUSTOM_OPTIONS_POPUP_MENU_NAME "popup_lives_and_health_settings"
#define MENUDEF_NAME popup_lives_and_health_settings
#define CUSTOM_OPTIONS_POPUP_TITLE "@CUSTOM_LIVES_AND_HEALTH_OPTIONS_CAPS"
#define CUSTOM_OPTIONS_POPUP_NUM_ITEMS 3
#define CHOICE1_TEXT "@CUSTOM_NUMBER_OF_LIVES"
#define CHOICE1_DESC "@CUSTOM_NUMBER_OF_LIVES_DESC"
#define CHOICE1_DVAR "custom_numlives"
#define CHOICE1_DVARTEXT CHOICE1_DVAR"_text"
#define CHOICE1_SHOW 1
#define CHOICE1_STR1 "@MPUI_RULES_UNLIMITED_CAPS"
#define CHOICE1_STR2 "@MPUI_RULES_ITEM_LIFE_CAPS"
#define CHOICE1_STR3 "@MPUI_RULES_ITEM_2LIVES_CAPS"
#define CHOICE1_STR4 "@MPUI_RULES_ITEM_3LIVES_CAPS"
#define CHOICE1_STR5 "@MPUI_RULES_ITEM_5LIVES_CAPS"
#define CHOICE1_STR6 "@MPUI_RULES_ITEM_9LIVES_CAPS"
#define CHOICE1_STR7 ""
#define CHOICE1_STR8 ""
#define CHOICE1_STR9 ""
#define CHOICE1_STR10 ""
#define CHOICE1_STR11 ""
#define CHOICE1_STR12 ""
#define CHOICE1_VAL1 0
#define CHOICE1_VAL2 1
#define CHOICE1_VAL3 2
#define CHOICE1_VAL4 3
#define CHOICE1_VAL5 5
#define CHOICE1_VAL6 9
#define CHOICE1_VAL7 0
#define CHOICE1_VAL8 0
#define CHOICE1_VAL9 0
#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_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE1_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CHOICE1_NUMVALS 6
#define CHOICE2_TEXT "@CUSTOM_MAX_HEALTH"
#define CHOICE2_DESC "@CUSTOM_MAX_HEALTH_DESC"
#define CHOICE2_DVAR "scr_player_maxhealth"
#define CHOICE2_DVARTEXT CHOICE2_DVAR"_text"
#define CHOICE2_SHOW 1
#define CHOICE2_STR1 "@MPUI_RULES_MINISCULE_CAPS"
#define CHOICE2_STR2 "@MPUI_RULES_HALF_CAPS"
#define CHOICE2_STR3 "@MPUI_RULES_NORMAL_CAPS"
#define CHOICE2_STR4 "@MPUI_RULES_DOUBLE_CAPS"
#define CHOICE2_STR5 ""
#define CHOICE2_STR6 ""
#define CHOICE2_STR7 ""
#define CHOICE2_STR8 ""
#define CHOICE2_STR9 ""
#define CHOICE2_STR10 ""
#define CHOICE2_STR11 ""
#define CHOICE2_STR12 ""
#define CHOICE2_VAL1 30
#define CHOICE2_VAL2 50
#define CHOICE2_VAL3 100
#define CHOICE2_VAL4 200
#define CHOICE2_VAL5 0
#define CHOICE2_VAL6 0
#define CHOICE2_VAL7 0
#define CHOICE2_VAL8 0
#define CHOICE2_VAL9 0
#define CHOICE2_VAL10 0
#define CHOICE2_VAL11 0
#define CHOICE2_VAL12 0
#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_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE2_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CHOICE2_NUMVALS 4
#define CHOICE2_VIS dvarInt( "custom_class_mode" ) != 1
#define CHOICE2_DISABLED_DESC "@CUSTOM_MAX_HEALTH_DISABLED_DESC"
#define CHOICE2_DISABLE_ON_INVIS 1
#define CHOICE3_TEXT "@CUSTOM_HEALTH_REGEN"
#define CHOICE3_DESC "@CUSTOM_HEALTH_REGEN_DESC"
#define CHOICE3_DVAR "scr_player_healthregentime"
#define CHOICE3_DVARTEXT CHOICE3_DVAR"_text"
#define CHOICE3_SHOW 1
#define CHOICE3_STR1 "@MPUI_RULES_NONE_CAPS"
#define CHOICE3_STR2 "@MPUI_RULES_FAST_CAPS"
#define CHOICE3_STR3 "@MPUI_RULES_NORMAL_CAPS"
#define CHOICE3_STR4 "@MPUI_RULES_SLOW_CAPS"
#define CHOICE3_STR5 ""
#define CHOICE3_STR6 ""
#define CHOICE3_STR7 ""
#define CHOICE3_STR8 ""
#define CHOICE3_STR9 ""
#define CHOICE3_STR10 ""
#define CHOICE3_STR11 ""
#define CHOICE3_STR12 ""
#define CHOICE3_VAL1 0
#define CHOICE3_VAL2 2
#define CHOICE3_VAL3 5
#define CHOICE3_VAL4 10
#define CHOICE3_VAL5 0
#define CHOICE3_VAL6 0
#define CHOICE3_VAL7 0
#define CHOICE3_VAL8 0
#define CHOICE3_VAL9 0
#define CHOICE3_VAL10 0
#define CHOICE3_VAL11 0
#define CHOICE3_VAL12 0
#define CHOICE3_EXEC ;
#define CHOICE3_STRLIST { CHOICE3_STR1 CHOICE3_VAL1 CHOICE3_STR2 CHOICE3_VAL2 CHOICE3_STR3 CHOICE3_VAL3 CHOICE3_STR4 CHOICE3_VAL4 CHOICE3_STR5 CHOICE3_VAL5 CHOICE3_STR6 CHOICE3_VAL6 CHOICE3_STR7 CHOICE3_VAL7 CHOICE3_STR8 CHOICE3_VAL8 CHOICE3_STR9 CHOICE3_VAL9 CHOICE3_STR10 CHOICE3_VAL10 CHOICE3_STR11 CHOICE3_VAL11 CHOICE3_STR12 CHOICE3_VAL12 }
#define CHOICE3_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE3_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CHOICE3_NUMVALS 4
#define CHOICE3_VIS dvarInt( "custom_class_mode" ) != 1
#define CHOICE3_DISABLED_DESC "@CUSTOM_HEALTH_REGEN_DISABLED_DESC"
#define CHOICE3_DISABLE_ON_INVIS 1
#define CUSTOM_RESET_TO_DEFAULT resetdvar CHOICE1_DVAR; resetdvar CHOICE2_DVAR; resetdvar CHOICE3_DVAR;
{
#include "ui_mp/custom_options_popup.inc"
}
//***********************************************************************************
// Team Settings
//***********************************************************************************
#define CUSTOM_OPTIONS_POPUP_MENU_NAME "popup_team_settings"
#define MENUDEF_NAME popup_team_settings
#define CUSTOM_OPTIONS_POPUP_TITLE "@CUSTOM_TEAM_OPTIONS"
#define CUSTOM_OPTIONS_POPUP_NUM_ITEMS 2
#define CHOICE1_TEXT "@CUSTOM_OPT_SPECTATE"
#define CHOICE1_DESC "@CUSTOM_OPT_SPECTATE_DESC"
#define CHOICE1_DVAR scr_game_spectatetype
#define CHOICE1_DVARTEXT CHOICE1_DVAR"_text"
#define CHOICE1_SHOW 1
#define CHOICE1_STR1 "@MENU_DISABLED_CAPS"
#define CHOICE1_STR2 "@MPUI_RULES_TEAM_ONLY_CAPS"
#define CHOICE1_STR3 "@MPUI_RULES_FREE_CAPS"
#define CHOICE1_STR4 ""
#define CHOICE1_STR5 ""
#define CHOICE1_STR6 ""
#define CHOICE1_STR7 ""
#define CHOICE1_STR8 ""
#define CHOICE1_STR9 ""
#define CHOICE1_STR10 ""
#define CHOICE1_STR11 ""
#define CHOICE1_STR12 ""
#define CHOICE1_VAL1 0
#define CHOICE1_VAL2 1
#define CHOICE1_VAL3 2
#define CHOICE1_VAL4 0
#define CHOICE1_VAL5 0
#define CHOICE1_VAL6 0
#define CHOICE1_VAL7 0
#define CHOICE1_VAL8 0
#define CHOICE1_VAL9 0
#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_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE1_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CHOICE1_NUMVALS 3
#define CHOICE2_TEXT "@CUSTOM_FRIENDLY_FIRE"
#define CHOICE2_DESC "@CUSTOM_FRIENDLY_FIRE_DESC"
#define CHOICE2_DVAR scr_team_fftype
#define CHOICE2_DVARTEXT CHOICE2_DVAR"_text"
#define CHOICE2_SHOW 1
#define CHOICE2_STR1 "@MENU_DISABLED_CAPS"
#define CHOICE2_STR2 "@MENU_ENABLED_CAPS"
#define CHOICE2_STR3 "@MPUI_RULES_REFLECT_CAPS"
#define CHOICE2_STR4 "@MPUI_RULES_SHARED_CAPS"
#define CHOICE2_STR5 ""
#define CHOICE2_STR6 ""
#define CHOICE2_STR7 ""
#define CHOICE2_STR8 ""
#define CHOICE2_STR9 ""
#define CHOICE2_STR10 ""
#define CHOICE2_STR11 ""
#define CHOICE2_STR12 ""
#define CHOICE2_VAL1 0
#define CHOICE2_VAL2 1
#define CHOICE2_VAL3 2
#define CHOICE2_VAL4 3
#define CHOICE2_VAL5 0
#define CHOICE2_VAL6 0
#define CHOICE2_VAL7 0
#define CHOICE2_VAL8 0
#define CHOICE2_VAL9 0
#define CHOICE2_VAL10 0
#define CHOICE2_VAL11 0
#define CHOICE2_VAL12 0
#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_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE2_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CHOICE2_NUMVALS 4
#define CUSTOM_RESET_TO_DEFAULT resetdvar CHOICE1_DVAR; resetdvar CHOICE2_DVAR;
{
#include "ui_mp/custom_options_popup.inc"
}
//***********************************************************************************
// Free for All specate settings
//***********************************************************************************
#define CUSTOM_OPTIONS_POPUP_MENU_NAME "popup_ffa_spectate_settings"
#define MENUDEF_NAME popup_ffa_spectate_settings
#define CUSTOM_OPTIONS_POPUP_TITLE "@CUSTOM_FFA_SPECTATE_OPTIONS"
#define CUSTOM_OPTIONS_POPUP_NUM_ITEMS 1
#define CHOICE1_TEXT "@CUSTOM_OPT_SPECTATE"
#define CHOICE1_DESC "@CUSTOM_OPT_SPECTATE_DESC"
#define CHOICE1_DVAR scr_game_spectatetype
#define CHOICE1_DVARTEXT CHOICE1_DVAR"_text"
#define CHOICE1_SHOW 1
#define CHOICE1_STR1 "@MENU_DISABLED_CAPS"
#define CHOICE1_STR2 "@MPUI_RULES_PLAYERS_ONLY_CAPS"
#define CHOICE1_STR3 "@MPUI_RULES_FREE_CAPS"
#define CHOICE1_STR4 ""
#define CHOICE1_STR5 ""
#define CHOICE1_STR6 ""
#define CHOICE1_STR7 ""
#define CHOICE1_STR8 ""
#define CHOICE1_STR9 ""
#define CHOICE1_STR10 ""
#define CHOICE1_STR11 ""
#define CHOICE1_STR12 ""
#define CHOICE1_VAL1 0
#define CHOICE1_VAL2 1
#define CHOICE1_VAL3 2
#define CHOICE1_VAL4 0
#define CHOICE1_VAL5 0
#define CHOICE1_VAL6 0
#define CHOICE1_VAL7 0
#define CHOICE1_VAL8 0
#define CHOICE1_VAL9 0
#define CHOICE1_VAL10 0
#define CHOICE1_VAL11 0
#define CHOICE1_VAL12 0
#define CHOICE1_EXEC open GAME_OPTIONS_MENU_NAME"_"CHOICE1_TEXT; play CHOICE_FOCUS_SOUND;
#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 3
#define CHOICE1_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
#define CHOICE1_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
#define CUSTOM_RESET_TO_DEFAULT resetdvar CHOICE1_DVAR;
{
#include "ui_mp/custom_options_popup.inc"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,887 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#include "ui_mp/custom_mode.inc"
#define CHOICE_SEP_OFFSET_Y -2
#define CHOICE_SIDEITEM_SPACING -310
#include "ui_mp/menustyle.inc"
#include "ui/choices_setup_common.menu"
#include "ui/choices_setup_popmenu.menu"
#include "ui_mp/stats_info.inc"
#include "ui_mp/overlaybg.inc"
#include "ui_mp/fileshare.inc"
#include "ui/framestyle.inc"
#include "ui_mp/newframe.inc"
#include "ui/frame.inc"
#include "ui_mp/popup_player_info.inc"
#undef CHOICE_TEXTSTYLE
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
#undef CHOICE_GROUP
#define CHOICE_GROUP "menu_game_mode_upload"
#define HINT_TEXT_WIDTH ( FRAME_DEFAULT_WIDTH - ( FRAME_TITLE_X_OFFSET * 2 ) )
menuDef
{
name menu_game_mode_upload
rect 0 0 640 480
focuscolor COLOR_FOCUSED
style WINDOW_STYLE_FILLED
priority MENU_PRI_ONTOP
control MENU_CONTROL_OPENER
soundloop MENU_MUSIC
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
openSlideDirection MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT
closeSlideDirection MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT
onOpen
{
READ_FILE_SHARE;
setdvar ui_custom_save_to_file_share 1;
setDvar fsUnoccupiedHighlightGreen 1;
setLocalVarString ui_choicegroup CHOICE_GROUP;
}
onFocus
{
play CHOICE_FOCUS_SOUND;
activateBlur;
}
onClose
{
setdvar ui_custom_save_to_file_share 0;
deactivateblur;
}
onESC
{
close self;
}
execKeyInt APAD_LEFT { play CHOICE_FOCUS_SOUND; }
execKeyInt DPAD_LEFT { play CHOICE_FOCUS_SOUND; }
execKeyInt APAD_RIGHT { play CHOICE_FOCUS_SOUND; }
execKeyInt DPAD_RIGHT { play CHOICE_FOCUS_SOUND; }
execKeyInt APAD_UP { execnow set fshSelectLastSlotRow 1; setfocus fileShareSlots; }
execKeyInt DPAD_UP { execnow set fshSelectLastSlotRow 1; setfocus fileShareSlots; }
execKeyInt APAD_DOWN { execnow set fshSelectFirstSlotRow 1; setfocus fileShareSlots; }
execKeyInt DPAD_DOWN { execnow set fshSelectFirstSlotRow 1; setfocus fileShareSlots; }
FRAME_DEFAULT
FRAME_TITLE_DEFAULT( "@MENU_FILESHARE_MYSHARE_CAPS", 1 )
PLAYER_INFO_VIS( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, 1 )
itemDef
{
name fileShareSlots
type ITEM_TYPE_LISTBOX
feeder FEEDER_FILESHARE_MYSLOTS
FILESHARE_COMMON_OPTIONS
elementwidth 70
elementheight 70
elementtype LISTBOX_TEXT
textalign HORIZONTAL_ALIGN_LEFT
textfont UI_FONT_NORMAL
forecolor CHOICE_TEXTCOLOR
modal
doubleclick
{
if ( getFeederData( "slot" ) <= 6 )
{
if ( !( FILESHARE_TASKSINPROGRESS ) )
{
play CHOICE_FOCUS_SOUND;
if ( getFeederData( "slotOccupied" ) != 1 )
{
open menu_game_mode_upload_save;
}
else
{
open menu_game_mode_upload_confirm;
}
}
}
}
onListboxSelectionChange { play CHOICE_FOCUS_SOUND; }
visible 1
FILESHARE_SLOTS_USERAREAS
}
FILESHARE_BOTTOM( fileShareSlots, 1 )
FILESHARE_DETAILS( 35, (FRAME_CHOICE_Y_START-1), HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER,
"menu_game_mode_upload", "fileShareSlots",
getFeederData( "fileShareSlots", "slotOccupied" ) && getFeederData( "fileShareSlots", "count" ) > 0.0 )
#ifdef CONSOLE
PREPROC_TEXT_DRAW_VIS( -144 158 30 15 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
( int( getFeederData( "fileShareSlots", "slot" ) ) + " " + locString( "@MENU_FILESHARE_OF18") ),
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, 1 1 1 1, when( IsPremiumSubscriber() ) )
PREPROC_SHADER_DRAW_VIS_EX( -114 160 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
"ui_arrow_left", COLOR_BODY_TEXT,
when( IsPremiumSubscriber() && getFeederData( "fileShareSlots", "slot" ) > 6 ),
rotation 90; )
PREPROC_SHADER_DRAW_VIS_EX( -107 160 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
"ui_arrow_right", COLOR_BODY_TEXT,
when( IsPremiumSubscriber() && getFeederData( "fileShareSlots", "slot" ) > 6 && getFeederData( "fileShareSlots", "slot" ) < 13 ),
rotation 90; )
PREPROC_SHADER_DRAW_VIS_EX( -114 160 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
"ui_arrow_right", COLOR_BODY_TEXT,
when( IsPremiumSubscriber() && getFeederData( "fileShareSlots", "slot" ) <= 6 ),
rotation 90; )
#endif //#ifdef CONSOLE
HINT_TEXT_ALL( 15, CHOICE_X_START, -8, CHOICE_SIZE_X, "@MENU_FILESHARE_CHOOSESLOT", 1 1 1 1, 1, ; )
#ifdef PC
NEW_FRAME_BACK_BUTTON_ACTION( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT, close self; )
#else //#ifdef PC
NEW_FRAME_BACK_BUTTON( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT )
PREPROC_TEXT_DRAW_VIS( -160 (FRAME_DEFAULT_HEIGHT/2) 50 17 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
"@PLATFORM_SELECT",
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1,
when( getFeederData( menu_game_mode_upload, fileShareSlots, "slot" ) <= 6 ); )
#endif // #else // #ifdef PC
}
#undef ON_ESC
#define ON_ESC \
close self;
menuDef
{
name custom_select_from_fileshare
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
focuscolor COLOR_FOCUSED
style WINDOW_STYLE_FILLED
priority MENU_PRI_ONTOP
control MENU_CONTROL_OPENER
soundloop MENU_MUSIC
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
openSlideDirection MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT
closeSlideDirection MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT
onOpen
{
#ifdef PC
exec readfileshare
#endif
setDvar fsUnoccupiedHighlightGreen 2;
setLocalVarString ui_choicegroup CHOICE_GROUP;
}
onFocus
{
activateBlur;
}
onClose
{
deactivateBlur;
}
onESC
{
ON_ESC
}
execKeyInt APAD_LEFT { play CHOICE_FOCUS_SOUND; }
execKeyInt DPAD_LEFT { play CHOICE_FOCUS_SOUND; }
execKeyInt APAD_RIGHT { play CHOICE_FOCUS_SOUND; }
execKeyInt DPAD_RIGHT { play CHOICE_FOCUS_SOUND; }
execKeyInt APAD_UP { execnow set fshSelectLastSlotRow 1; setfocus fileShareSlots; }
execKeyInt DPAD_UP { execnow set fshSelectLastSlotRow 1; setfocus fileShareSlots; }
execKeyInt APAD_DOWN { execnow set fshSelectFirstSlotRow 1; setfocus fileShareSlots; }
execKeyInt DPAD_DOWN { execnow set fshSelectFirstSlotRow 1; setfocus fileShareSlots; }
FRAME_DEFAULT
FRAME_TITLE_DEFAULT( "@CUSTOM_FILESHARE_SELECT_MODE_TITLE", 1 )
FRAME_SUBTITLE_DEFAULT( "@CUSTOM_FILESHARE_SELECT_MODE_DESC", 1 )
PLAYER_INFO_VIS( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, 1 )
itemDef
{
name fileShareSlots
type ITEM_TYPE_LISTBOX
feeder FEEDER_FILESHARE_MYSLOTS
FILESHARE_COMMON_OPTIONS
origin 0 0
elementwidth 70
elementheight 67
elementtype LISTBOX_TEXT
textalign ITEM_ALIGN_MIDDLE_CENTER
textfont UI_FONT_NORMAL
textscale TEXTSIZE_SUBTITLE
forecolor CHOICE_TEXTCOLOR
modal
doubleclick
{
play CHOICE_FOCUS_SOUND;
if ( getFeederData( "slotOccupied" ) && !( FILESHARE_TASKSINPROGRESS ) )
{
if( getFeederData( "fileType" ) == "customgamemode" )
{
execNow downloadCustomGametype (getFeederData( "fileID" )) (getFeederData( "fileSize" ));
closeimmediate custom_select_from_fileshare;
closeimmediate select_game_mode;
}
}
}
onListboxSelectionChange { play CHOICE_FOCUS_SOUND; }
visible 1
FILESHARE_SLOTS_USERAREAS
}
FILESHARE_BOTTOM( fileShareSlots, 1 )
/* SLOT OCCUPIED */
#define SLOT_OCCUPIED_CONDITION \
( getFeederData( "fileShareSlots", "slotOccupied" ) && getFeederData( "fileShareSlots", "count" ) > 0.0 )
#define SLOT_HAS_GAME_MODE \
( getFeederData( "fileShareSlots", "fileType" ) == "customgamemode" )
#undef FILESHARE_SELECTOR_TOOLTIP_Y
#ifdef PC
#define FILESHARE_SELECTOR_TOOLTIP_Y FILESHARE_TOOLTIP_PC_Y
#else //#ifdef PC
#define FILESHARE_SELECTOR_TOOLTIP_Y 95
#endif //#ifdef PC
// Tooltip - Occupied Slot with custom game mode
PREPROC_SHADER_DRAW_VIS_EX( (FRAME_CHOICE_X_START-2) FILESHARE_SELECTOR_TOOLTIP_Y 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
"ui_arrow_right", COLOR_BODY_TEXT,
when( SLOT_OCCUPIED_CONDITION && SLOT_HAS_GAME_MODE ), ; )
PREPROC_TEXT_DRAW_VIS_EX( (FRAME_CHOICE_X_START+8) FILESHARE_SELECTOR_TOOLTIP_Y 280 36 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
locString( "CUSTOM_FILESHARE_CGM_HIGHLIGHTED" ),
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1,
when( SLOT_OCCUPIED_CONDITION && SLOT_HAS_GAME_MODE ), autowrapped; )
// Tooltip - Occupied Slot that is not a custom game mode
PREPROC_SHADER_DRAW_VIS_EX( (FRAME_CHOICE_X_START-2) FILESHARE_SELECTOR_TOOLTIP_Y 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
"ui_arrow_right", COLOR_BODY_TEXT,
when( SLOT_OCCUPIED_CONDITION && !SLOT_HAS_GAME_MODE ), ; )
PREPROC_TEXT_DRAW_VIS_EX( (FRAME_CHOICE_X_START+8) FILESHARE_SELECTOR_TOOLTIP_Y 280 36 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
locString( "CUSTOM_FILESHARE_CANT_SELECT" ),
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1,
when( SLOT_OCCUPIED_CONDITION && !SLOT_HAS_GAME_MODE ), autowrapped; )
FILESHARE_SPINNER( 145, -45, when( FILESHARE_TASKSINPROGRESS ), 350 )
execKeyInt APAD_UP
{
execnow set fshSelectLastSlotRow 1;
setfocus fileShareSlots;
}
execKeyInt DPAD_UP
{
execnow set fshSelectLastSlotRow 1;
setfocus fileShareSlots;
}
execKeyInt APAD_DOWN
{
execnow set fshSelectFirstSlotRow 1;
setfocus fileShareSlots;
}
execKeyInt DPAD_DOWN
{
execnow set fshSelectFirstSlotRow 1;
setfocus fileShareSlots;
}
#ifdef CONSOLE
PREPROC_TEXT_DRAW_VIS( -146 80 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
( int( getFeederData( "fileShareSlots", "slot" ) ) ),
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, 1 1 1 1,
1 )
PREPROC_TEXT_DRAW_VIS( -142 80 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
"@MENU_FILESHARE_OF6",
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, 1 1 1 1,
when ( !IsPremiumSubscriber() ) )
// Top Arrow
PREPROC_SHADER_DRAW_VIS_EX( -114 75 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
"ui_arrow_left", COLOR_BODY_TEXT,
when( IsPremiumSubscriber() && getFeederData( "fileShareSlots", "slot" ) > 6 ), rotation 90; )
// Bottom Arrow 1
PREPROC_SHADER_DRAW_VIS_EX( -107 75 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
"ui_arrow_right", COLOR_BODY_TEXT,
when( IsPremiumSubscriber() && getFeederData( "fileShareSlots", "slot" ) > 6 && getFeederData( "fileShareSlots", "slot" ) < 13 ), rotation 90; )
// Bottom Arrow 2
PREPROC_SHADER_DRAW_VIS_EX( -114 75 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
"ui_arrow_right", COLOR_BODY_TEXT,
when( IsPremiumSubscriber() && getFeederData( "fileShareSlots", "slot" ) <= 6 ), rotation 90; )
#endif //#ifdef CONSOLE
// File details
FILESHARE_DETAILS( 35, (FRAME_CHOICE_Y_START-1), HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER,
"custom_select_from_fileshare", "fileShareSlots",
SLOT_OCCUPIED_CONDITION )
FILESHARE_SPINNER( 145, -45, when( FILESHARE_TASKSINPROGRESS ), 350 )
// Button prompts
#ifdef PC
FRAME_BACK_BUTTON_DEFAULT_ACTION( ON_ESC )
#else //#ifdef PC
FRAME_BACK_BUTTON_DEFAULT
PREPROC_TEXT_DRAW_VIS( -160 (FILESHARE_FRAME_HEIGHT/2) 50 17 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
"@PLATFORM_SELECT",
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1,
when( SLOT_OCCUPIED_CONDITION && SLOT_HAS_GAME_MODE ); )
#endif //#ifdef PC
#include "ui/safearea.menu"
}
#define GAMEMODE_NAME_X 40
#define GAMEMODE_NAME_Y ( FRAME_CHOICE_Y_START - 7 )
#define GAMEMODE_NAME_HEIGHT 30
#define GAMEMODE_NAME_SIZE GAMEMODE_IMAGE_WIDTH GAMEMODE_NAME_HEIGHT
#define GAMEMODE_IMAGE_X GAMEMODE_NAME_X
#define GAMEMODE_IMAGE_Y (GAMEMODE_NAME_Y + GAMEMODE_NAME_HEIGHT + 15)
#define GAMEMODE_IMAGE_ASPECT_RATIO 1.0
#define GAMEMODE_IMAGE_WIDTH 180
#define GAMEMODE_IMAGE_HEIGHT (GAMEMODE_IMAGE_WIDTH * GAMEMODE_IMAGE_ASPECT_RATIO)
#define GAMEMODE_IMAGE_SIZE GAMEMODE_IMAGE_WIDTH GAMEMODE_IMAGE_HEIGHT
#define GAMEMODE_DESC_X GAMEMODE_NAME_X
#define GAMEMODE_DESC_Y (GAMEMODE_IMAGE_Y + GAMEMODE_IMAGE_HEIGHT + 15)
#define GAMEMODE_DESC_SIZE GAMEMODE_IMAGE_WIDTH 60
#undef DEFAULT_SLIDE_IN_SPEED
#define DEFAULT_SLIDE_IN_SPEED 180
#undef DEFAULT_SLIDE_OUT_SPEED
#define DEFAULT_SLIDE_OUT_SPEED 180
#undef ON_ESC
#define ON_ESC \
deactivateBlur; \
play uin_navigation_menu_lg_close; \
close self;
menuDef
{
name select_game_mode
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
{
activateBlur;
play uin_navigation_menu_lg_open;
setdvar invite_visible "0";
setDvar ui_preview dvarString( ui_gametype );
setFocus gamemode_selection;
execNow refreshFeederSelection gamemode_selection;
execNow movefeeder ( GetGamemodeIndexByName( gamemode_selection, tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_gametype ), 1 ) ) ) gamemode_selection;
}
onFocus { }
onClose
{
setdvar invite_visible "1";
}
onESC
{
ON_ESC
}
FRAME_DEFAULT
FRAME_TITLE_DEFAULT( "@MPUI_CHANGE_GAME_MODE_CAPS", 1 )
#define GAME_HC_TDM_HACK ( dvarInt( "xblive_basictraining" ) && dvarString( ui_preview ) == "hc_tdm" )
#define GAME_DESC_VIS_ARG ( dvarInt( "xblive_basictraining" ) || dvarBool( splitscreen ) || dvarBool( systemlink ) || getFeederData( "gamemode_selection", "selection" ) != 0 )
#define GAMETYPE_IMAGE tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_preview ), 3 )
#define GAMEMODE tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_preview ), 1 )
#define GAMEMODE_DESC tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_preview ), 2 )
#define GAMEMODE_DESC_DISPLAY( titleText, imageMat, descText, visArg ) \
PREPROC_TEXT_DRAW_ALL( GAMEMODE_NAME_X GAMEMODE_NAME_Y GAMEMODE_NAME_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
titleText, \
TEXTSIZE_TITLE, 0, 0, ITEM_ALIGN_TOP_CENTER, 1 1 1 1, UI_FONT_EXTRABIG, ITEM_TEXTSTYLE_NORMAL, \
when( visArg );, ; ) \
PREPROC_SHADER_DRAW_VIS_EX( GAMEMODE_IMAGE_X GAMEMODE_IMAGE_Y GAMEMODE_IMAGE_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, \
imageMat, 1 1 1 1, \
when( visArg );, \
; ) \
PREPROC_TEXT_DRAW_VIS_EX( GAMEMODE_DESC_X GAMEMODE_DESC_Y GAMEMODE_DESC_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
descText, \
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_CENTER, 1 1 1 1, \
when( visArg );, autowrapped )
GAMEMODE_DESC_DISPLAY( "@" + GAMEMODE, GAMETYPE_IMAGE, "@" + GAMEMODE_DESC, GAME_DESC_VIS_ARG && !GAME_HC_TDM_HACK )
GAMEMODE_DESC_DISPLAY( "@MPUI_BASIC_TRAINING_HC_TDM", GAMETYPE_IMAGE, "@" + GAMEMODE_DESC, GAME_HC_TDM_HACK )
GAMEMODE_DESC_DISPLAY( "@CUSTOM_CUSTOM_GAME_MODE_CAPS", "playlist_custom", "@CUSTOM_SELECT_FROM_FILESHARE_DESC", !GAME_DESC_VIS_ARG && !GAME_HC_TDM_HACK )
#define RESET_CUSTOM_GAMEMODE_IF_CHANGED \
if( dvarString( "ui_preview" ) != dvarString( "ui_gametype" ) ) \
{ \
execNow "resetCustomGametype"; \
}
// gametype selection ===========================================
itemDef
{
name gamemode_selection
type ITEM_TYPE_LISTBOX
feeder FEEDER_GAMETYPES_BASE
rect (FRAME_CHOICE_X_START-1) ( FRAME_CHOICE_Y_START - 3 ) FRAME_BUTTON_WIDTH 308 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
elementwidth 30
elementheight 19
noscrollbars
noBlinkingHighlight
textfont CHOICE_TEXTFONT
textscale CHOICE_TEXTSIZE
forecolor CHOICE_TEXTCOLOR
focusColor COLOR_TITLE
disablecolor FRAME_GREY_RGB 1
textstyle ITEM_TEXTSTYLE_NORMAL
modal
visible 1
// x y w h len horzAlign vertAlign
userarea 4 0 0 (FRAME_BUTTON_WIDTH+1) 19 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* BACKGROUND */
17 0 FRAME_BUTTON_WIDTH 19 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* NAME */
0 1 17 18 16 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* A_BUTTON */
(FRAME_BUTTON_WIDTH-18) 2 14 14 0 ITEM_ALIGN_CENTER ITEM_ALIGN_MIDDLE /* CUSTOMIZED ICON */
onfocus
{
play CHOICE_FOCUS_SOUND;
}
doubleclick
{
if( !GAME_DESC_VIS_ARG )
{
open "custom_select_from_fileshare";
}
else
{
RESET_CUSTOM_GAMEMODE_IF_CHANGED
setDvar ui_gametype dvarString( ui_preview );
play CHOICE_ACTION_SOUND;
execNow "xupdatepartystate";
deactivateBlur;
close self;
}
}
onListboxSelectionChange { play CHOICE_FOCUS_SOUND; }
}
CUSTOM_MODE_CUSTOMIZED_STAR( FRAME_CHOICE_X_START, ( FRAME_DEFAULT_HEIGHT/2 ) - 70, dvarInt( customGameMode ) )
#ifdef PC
#define BUTTON_SPACING 20
#define RESET_BUTTON_OFFSET ( getTextWidth( locString( "@PLATFORM_BACK" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) + 8 + BUTTON_SPACING )
FRAME_BACK_BUTTON_DEFAULT_ACTION( ON_ESC )
FRAME_BUTTON_PC_LEFT_OFFSET( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, RESET_BUTTON_OFFSET, "@PLATFORM_RESET_TO_DEFAULT",
open popup_custom_confirm_revert;, when( dvarBool( customGameMode ) ) )
#else //PC
FRAME_BACK_BUTTON_DEFAULT
CUSTOM_MODE_RESET_TO_DEFAULT_BUTTON( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, -76, open popup_custom_confirm_revert;, dvarBool( customGameMode ) )
#endif //PC
#include "ui/safearea.menu"
}
#define MAPSELECT_NAME_X 20
#define MAPSELECT_NAME_Y (FRAME_CHOICE_Y_START-7)
#define MAPSELECT_NAME_HEIGHT 30
#define MAPSELECT_NAME_SIZE MAPSELECT_IMAGE_WIDTH MAPSELECT_NAME_HEIGHT
#define MAPSELECT_IMAGE_X MAPSELECT_NAME_X
#define MAPSELECT_IMAGE_Y (MAPSELECT_NAME_Y + MAPSELECT_NAME_HEIGHT + 5)
#define MAPSELECT_IMAGE_ASPECT_RATIO 0.675
#define MAPSELECT_IMAGE_WIDTH 224
#define MAPSELECT_IMAGE_HEIGHT (MAPSELECT_IMAGE_WIDTH * MAPSELECT_IMAGE_ASPECT_RATIO)
#define MAPSELECT_IMAGE_SIZE MAPSELECT_IMAGE_WIDTH MAPSELECT_IMAGE_HEIGHT
#define MAPSELECT_DESC_TITLE_HEIGHT 15
#define MAPSELECT_DESC_TITLE_SIZE MAPSELECT_IMAGE_WIDTH MAPSELECT_DESC_TITLE_HEIGHT
#define MAPSELECT_DESC_X MAPSELECT_NAME_X
#define MAPSELECT_DESC_Y (MAPSELECT_IMAGE_Y + MAPSELECT_IMAGE_HEIGHT + 10 )
#define MAPSELECT_DESC_HEIGHT 50
#define MAPSELECT_DESC_SIZE MAPSELECT_IMAGE_WIDTH MAPSELECT_DESC_HEIGHT
#define MAPSELECT_SIZE_X MAPSELECT_NAME_X
#define MAPSELECT_SIZE_Y (MAPSELECT_DESC_Y+MAPSELECT_DESC_TITLE_HEIGHT+MAPSELECT_DESC_HEIGHT)
#define MAPSELECT_SIZE_SIZE MAPSELECT_IMAGE_WIDTH MAPSELECT_DESC_HEIGHT
#define SWITCH_MAP_LIST_ACTION \
if( dvarBool( "dlc2" ) || dvarBool( "dlc3" ) || dvarBool( "dlc4" ) ) \
{ \
if( dvarBool( ui_showDLCMaps ) ) \
{ \
setDvar ui_showDLCMaps 0; \
execNow movefeeder 0 map_selection; \
} \
else \
{ \
setDvar ui_showDLCMaps 1; \
execNow movefeeder 0 map_selection; \
} \
}
#define SWITCH_TO_MAPS_ACTION \
setDvar ui_showDLCMaps 0; \
execNow movefeeder 0 map_selection;
#define SWITCH_TO_DLC_ACTION \
setDvar ui_showDLCMaps 1; \
execNow movefeeder 0 map_selection;
#undef ON_ESC
#define ON_ESC \
deactivateBlur; \
play uin_navigation_menu_lg_close; \
close self; \
setDvar settings_map_selected 0;
#define CHOICE_TAB_TEXTSIZE TEXTSIZE_SMALL
#define TAB_1_TEXT (locString( "@MPUI_MAPS_CAPS" ))
#define TAB_2_TEXT (locString( "@MPUI_DLC_MAPS_CAPS" ))
#define TAB_BG_PAD 5
#define TAB_1_WIDTH ( getTextWidth( TAB_1_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
#define TAB_2_WIDTH ( getTextWidth( TAB_2_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
#define TAB_HEIGHT 15
#define MAP_TAB_1_X NEW_FRAME_CHOICE_X_START
#define MAP_TAB_2_X ( MAP_TAB_1_X + TAB_1_WIDTH )
#define MAP_TAB_Y ( ( -NEW_FRAME_DEFAULT_HEIGHT / 2 ) + NEW_FRAME_HEADER_HEIGHT - TAB_HEIGHT )
#define MAP_TAB_HEADER( visArg ) \
/* highlighted header */ \
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_TAB_1_X, \
MAP_TAB_Y, \
TAB_1_WIDTH, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
TAB_1_TEXT, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
NEW_FRAME_ORANGE_RGB 1, when( visArg && dvarBool( ui_showDLCMaps ) == 0 ), ; ) \
/* non highlighted header */ \
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_TAB_1_X, \
MAP_TAB_Y, \
TAB_1_WIDTH, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
TAB_1_TEXT, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
NEW_FRAME_GRAY_TEXT_COLOR, when( visArg && dvarBool( ui_showDLCMaps ) == 1 ), TAB_MOUSEOVER_HIGHLIGHT; )
#define DLC_TAB_HEADER( visArg ) \
/* highlighted header */ \
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_TAB_2_X, \
MAP_TAB_Y, \
TAB_2_WIDTH, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
TAB_2_TEXT, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
NEW_FRAME_ORANGE_RGB 1, when( visArg && dvarBool( ui_showDLCMaps ) == 1 ), ; ) \
/* non highlighted header */ \
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_TAB_2_X, \
MAP_TAB_Y, \
TAB_2_WIDTH, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
TAB_2_TEXT, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
NEW_FRAME_GRAY_TEXT_COLOR, when( visArg && dvarBool( ui_showDLCMaps ) == 0 ), TAB_MOUSEOVER_HIGHLIGHT; )
#define MAP_TAB_BG( px, pw, visArg ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER_FRAMED \
frame 16 0.2 FRAME_OPEN_BOTTOM \
rect 0 MAP_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
exp rect X( px ) \
exp rect W( pw ) \
background "menu_mp_tab_frame_inner" \
forecolor 1 1 1 1 \
visible when( visArg ) \
decoration \
}
#define MAP_TAB_BUTTON( px, pw, actionArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_BUTTON_NO_TEXT \
rect 0 MAP_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
exp rect X( px ) \
exp rect W( pw ) \
visible when( visArg ) \
mouseenter { play CHOICE_FOCUS_SOUND; } \
onFocus \
{ \
play CHOICE_FOCUS_SOUND; \
} \
action \
{ \
play CHOICE_ACTION_SOUND; \
actionArg; \
} \
}
menuDef
{
name select_map
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
{
activateBlur;
play uin_navigation_menu_lg_open;
setdvar invite_visible "0";
setDvar ui_preview dvarString( ui_mapname );
setDvar settings_map_selected 1;
setFocus map_selection;
setDvar ui_showDLCMaps 0;
execNow movefeeder ( GetMapIndexByName( map_selection, tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_mapname ) , 3 ) ) ) map_selection;
}
onFocus { }
onClose
{
deactivateBlur;
setdvar invite_visible "1";
}
onESC
{
ON_ESC
}
execKeyInt K_LEFTARROW
{
SWITCH_MAP_LIST_ACTION
}
execKeyInt K_RIGHTARROW
{
SWITCH_MAP_LIST_ACTION
}
FRAME_DEFAULT
FRAME_TITLE_DEFAULT( "@MPUI_CHANGE_MAP_CAPS", 1 )
#define MAPS_TAB_VISIBLE ( 1 )
#define DLC_TAB_VISIBLE ( dvarBool( "dlc2" ) || dvarBool( "dlc3" ) || dvarBool( "dlc4" ) )
MAP_TAB_BG( MAP_TAB_1_X, TAB_1_WIDTH, MAPS_TAB_VISIBLE )
MAP_TAB_HEADER( MAPS_TAB_VISIBLE )
MAP_TAB_BUTTON( MAP_TAB_1_X, TAB_1_WIDTH, SWITCH_TO_MAPS_ACTION, MAPS_TAB_VISIBLE )
MAP_TAB_BG( MAP_TAB_2_X, TAB_2_WIDTH, DLC_TAB_VISIBLE )
DLC_TAB_HEADER( DLC_TAB_VISIBLE )
MAP_TAB_BUTTON( MAP_TAB_2_X, TAB_2_WIDTH, SWITCH_TO_DLC_ACTION, DLC_TAB_VISIBLE )
#define MAP_IMAGE tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_preview ) , 0 )
#define MAP_NAME tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_preview ) , 3 )
#define MAP_SIZE tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_preview ) , 8 )
#define MAP_DESC tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_preview ) , 6 )
#define MAP_SELECT_DISPLAY( mapName, mapImage, mapSize, mapDesc, visArg ) \
PREPROC_TEXT_DRAW_ALL( MAPSELECT_NAME_X MAPSELECT_NAME_Y MAPSELECT_NAME_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
mapName, \
TEXTSIZE_TITLE, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, UI_FONT_EXTRABIG, ITEM_TEXTSTYLE_NORMAL, \
when( visArg );, ; ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER_STREAMED \
type ITEM_TYPE_IMAGE \
rect MAPSELECT_IMAGE_X MAPSELECT_IMAGE_Y MAPSELECT_IMAGE_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
forecolor 1 1 1 1 \
exp material( mapImage ) \
visible when( visArg ) \
decoration \
} \
PREPROC_TEXT_DRAW_VIS( MAPSELECT_DESC_X MAPSELECT_DESC_Y MAPSELECT_DESC_TITLE_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
"@MPUI_DESCRIPTION_CAPS", \
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 0 0 0 0.8, \
when( visArg ); ) \
PREPROC_TEXT_DRAW_VIS_EX( MAPSELECT_DESC_X (MAPSELECT_DESC_Y+15) MAPSELECT_DESC_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
mapDesc, \
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, \
when( visArg );, autowrapped ) \
PREPROC_TEXT_DRAW_VIS( MAPSELECT_SIZE_X MAPSELECT_SIZE_Y MAPSELECT_DESC_TITLE_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
"@MPUI_MAP_SIZE_CAPS", \
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 0 0 0 0.8, \
when( visArg ); ) \
PREPROC_TEXT_DRAW_VIS( MAPSELECT_SIZE_X (MAPSELECT_SIZE_Y+15) MAPSELECT_SIZE_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
mapSize, \
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, \
when( visArg ); )
MAP_SELECT_DISPLAY( "@" + MAP_NAME + "_CAPS", "menu_" + dvarString( ui_preview ) + "_map_select_final", "@MPUI_MAPSIZE_" + MAP_SIZE, "@" + MAP_DESC, 1 )
// map selection ===========================================
itemDef
{
name map_selection
type ITEM_TYPE_LISTBOX
feeder FEEDER_MAPS
rect (FRAME_CHOICE_X_START-1) (FRAME_CHOICE_Y_START-3) FRAME_BUTTON_WIDTH 308 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
elementwidth 30
elementheight 19
noscrollbars
noBlinkingHighlight
textfont CHOICE_TEXTFONT
textscale CHOICE_TEXTSIZE
forecolor CHOICE_TEXTCOLOR
focusColor COLOR_TITLE
disablecolor FRAME_GREY_RGB 1
textstyle ITEM_TEXTSTYLE_NORMAL
modal
visible when( dvarBool( settings_map_selected ) )
/* x y w h len horzAlign vertAlign */
userarea 3 0 0 (FRAME_BUTTON_WIDTH+1) 19 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* FEEDER_MAPSELECTION_COLUMN_BACKGROUND */
17 0 FRAME_BUTTON_WIDTH 19 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* FEEDER_MAPSELECTION_COLUMN_NAME */
0 1 17 18 16 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* FEEDER_MAPSELECTION_COLUMN_A_BUTTON */
onfocus { play CHOICE_FOCUS_SOUND; }
onListboxSelectionChange { play CHOICE_FOCUS_SOUND; }
doubleclick
{
setDvar ui_mapname dvarString( ui_preview );
play CHOICE_ACTION_SOUND;
execNow "xupdatepartystate";
deactivateBlur;
close self;
}
execKeyInt DPAD_LEFT
{
SWITCH_MAP_LIST_ACTION
}
execKeyInt DPAD_RIGHT
{
SWITCH_MAP_LIST_ACTION
}
execKeyInt APAD_LEFT
{
SWITCH_MAP_LIST_ACTION
}
execKeyInt APAD_RIGHT
{
SWITCH_MAP_LIST_ACTION
}
}
#ifdef PC
FRAME_BACK_BUTTON_DEFAULT_ACTION( ON_ESC )
#else //#ifdef PC
FRAME_BACK_BUTTON_DEFAULT
#endif //#ifdef PC
#include "ui/safearea.menu"
}
#include "ui_mp/popupstyle.inc"
menuDef
{
SYSTEM_POPUP_SETUP_VIS( menu_game_mode_upload_confirm, activateblur; execNow raiseFeederEvent Populate;, deactivateblur; close self;, 1 )
onClose
{
deactivateblur;
play CHOICE_FOCUS_SOUND;
execNow raiseFeederEvent Clear;
}
SYSTEM_POPUP_TITLE_VIS( "@MENU_FILESHARE_REPLACECONFIRM", 1 )
itemDef
{
DYNAMIC_MENU_COMMON_FIELDS
backgroundItemListbox "white"
rect CHOICE_X_START CHOICE_Y_START CHOICE_SIZE_X 400
menuItemsDef
{
maxRows 4
DYNAMIC_MENU_COMMON_COLUMNS
menuColDef
{
type MENU_ITEM_TYPE_LOC_TEXT
rect 0 0 50 CHOICE_SIZE_Y ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE
maxChars 50
}
}
onEvent Yes
{
open menu_game_mode_upload_save;
close self;
}
onEvent No { close self; }
onEvent Clear { execNow clearFeeder; }
onEvent Populate {
execNow addToFeeder Yes MENU_YES;
execNow addToFeeder No MENU_CANCEL;
}
onfocus { play CHOICE_FOCUS_SOUND; }
onListboxSelectionChange { play CHOICE_FOCUS_SOUND; }
doubleclick { play CHOICE_FOCUS_SOUND;
execNow raiseFeederEvent; }
}
}
// Redefinitions for MEDIUM_POPUP_SETUP popups
#undef POPUP_WIDTH
#define POPUP_WIDTH MEDIUM_POPUP_WIDTH
#undef POPUP_HEIGHT
#define POPUP_HEIGHT MEDIUM_POPUP_HEIGHT
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X (POPUP_WIDTH-(POPUP_SIDE_PAD*2))
#undef CHOICE_Y_START
#define CHOICE_Y_START POPUP_Y_START_TOP
#undef PLAYER_INFO_ALIGN
#define PLAYER_INFO_ALIGN // Purposely set to nothing. The popup setup macro sets the alignment. If items within it set their own aligment, they end up offset incorrectly.
#undef PLAYER_INFO_X_START
#define PLAYER_INFO_X_START( frameWidth ) ( frameWidth - PLAYER_INFO_WIDTH - PLAYER_INFO_PAD )
#undef PLAYER_INFO_Y_START
#define PLAYER_INFO_Y_START( frameHeight ) ( PLAYER_INFO_PAD * 2 )
#undef BG_BACKCOLOR
#define BG_BACKCOLOR POPUP_BACKCOLOR
// Redefinitions for MEDIUM_POPUP_SETUP popups
#define GAME_MODE_FILESHARE_UPLOAD_ACTION \
execNow uploadCustomGametype ( getFeederData( "menu_game_mode_upload", "fileShareSlots", "slot" ) ); \
setdvar customGameMode 1; \
execNow "xupdatepartystate";
menuDef
{
MEDIUM_POPUP_SETUP_VIS( menu_game_mode_upload_save, activateblur;, deactivateblur; close self;, POPUP_GLOW_WHITE, 0, 1 )
onClose
{
deactivateblur;
play CHOICE_FOCUS_SOUND;
}
MEDIUM_POPUP_TITLE_VIS( "@MENU_SAVE_INFORMATION_CAPS", 1 )
PREPROC_TEXT_DRAW_VIS( CHOICE_ORIGIN( 1 ) CHOICE_SIZE_X CHOICE_SIZE_Y HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
locString( "@MPUI_TITLE" )+" :",
TEXTSIZE_SMALL, 0, 0, CHOICE_TEXTALIGN, 1 1 1 1,
1 )
FRAME_CHOICE_BUTTON( 2, dvarString(fsSelectedFileName), execNow demo_keyboard fileshareFileName; )
PREPROC_TEXT_DRAW_VIS( CHOICE_ORIGIN( 3 ) CHOICE_SIZE_X CHOICE_SIZE_Y HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
locString( "@MPUI_DESCRIPTION" )+" :",
TEXTSIZE_SMALL, 0, 0, CHOICE_TEXTALIGN, 1 1 1 1,
1 )
FRAME_CHOICE_BUTTON( 4, dvarString(fsSelectedFileDescription), execNow demo_keyboard fileshareFileDescription; )
FRAME_CHOICE_BUTTON( 6, "@MENU_CONTINUE", GAME_MODE_FILESHARE_UPLOAD_ACTION; close self; close menu_game_mode_upload; )
MEDIUM_POPUP_BACK_BUTTON
}

View File

@ -0,0 +1,208 @@
// CONSOLE HUD - MP
#include "ui/menudef.h"
#include "ui_mp/hud_gametypes.inc"
#include "ui_mp/choices_setup_teams.menu"
#define BAR_START_X 42
#define BAR_START_Y -42
#define BAR_HEIGHT 39
#define BAR_WIDTH 143
#define BAR_HEIGHT_TOP 20
#define BAR_HEIGHT_BOTTOM 16
#define BAR_PERCENT_PLAYER ( max( player( score ), 0 ) / dvarInt( "ui_scorelimit" ) )
#define BAR_PRECENT_BEST_OTHER_PLAYER ( Select( player( score ) == scoreatrank( 1 ), (max( scoreatrank( 2 ), 0 ) / dvarInt( "ui_scorelimit" )), (max( scoreatrank( 1 ), 0 ) / dvarInt( "ui_scorelimit" )) ) )
#define BEST_OTHER_PLAYER_SCORE ( Select( player( score ) == scoreatrank( 1 ), scoreatrank( 2 ), scoreatrank( 1 ) ) )
#define FSM_VISIBILITY ( isVisibilityBitSet( BIT_SELECTING_LOCATION ) && !isVisibilityBitSet( BIT_SPECTATING_CLIENT ) && !isVisibilityBitSet( BIT_SCOREBOARD_OPEN ) )
{
menuDef
{
name "scorebars_ffa_background"
rect BOTTOM_RECT_X BOTTOM_RECT_Y 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
exp rect Y( BOTTOM_RECT_Y - (ONLINEGAME * ONLINEGAME_OFFSET) );
fullScreen 0
visible when( !FSM_VISIBILITY )
visibilityBits bits( BIT_HUD_VISIBLE HUD_VISIBILITY !BIT_IN_KILLCAM SHOULD_DISPLAY_SCOREBAR !BIT_UI_ACTIVE !BIT_IN_GUIDED_MISSILE !BIT_IN_GUIDED_MISSILE_STATIC )
#define BG_OFFSET_X (-15)
#define BG_OFFSET_Y (-5)
#define BG_START_X (BAR_START_X+BG_OFFSET_X)
#define BG_START_Y (BAR_START_Y+BG_OFFSET_Y)
// score background
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect BG_START_X BG_START_Y 187 46 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp material( "hud_frame_faction_fade" );
forecolor 1 1 1 0.5
visible 1
decoration
}
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect (BAR_START_X-69) (BG_START_Y-14) 240 59 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp material( "hud_frame_faction_lines" );
forecolor 1 1 1 0.4
visible 1
decoration
}
#define PROGRESS_OFFSET_X 47
// Player progress bar
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect BAR_START_X -42 70 BAR_HEIGHT_TOP HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp rect W( PROGRESS_OFFSET_X + (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PERCENT_PLAYER );
exp material( "hud_score_progress" );
forecolor 0.42 0.68 0.46 0.8
visible when( dvarInt( "ui_scorelimit" ) != 0 && player( score ) > 0 )
decoration
}
// Other player progress bar
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect BAR_START_X -20 70 BAR_HEIGHT_BOTTOM HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp rect W( PROGRESS_OFFSET_X + (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PRECENT_BEST_OTHER_PLAYER );
exp material( "hud_score_progress" );
forecolor 0.73 0.29 0.19 0.8
visible when( dvarInt( "ui_scorelimit" ) != 0 && BEST_OTHER_PLAYER_SCORE > 0 )
decoration
}
// FACTION ICONS
#define FACTION_ICON_WIDTH 64
#define FACTION_ICON_HEIGHT FACTION_ICON_WIDTH
#define FACTION_BG_WIDTH 92
#define FACTION_BG_HEIGHT FACTION_BG_WIDTH
#define FACTION_BG_X_START (BAR_START_X-(FACTION_BG_WIDTH/2))
#define FACTION_BG_Y_START (BAR_START_Y-(FACTION_BG_HEIGHT/2))
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect FACTION_BG_X_START FACTION_BG_Y_START FACTION_BG_WIDTH FACTION_BG_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp material( "hud_faction_back_light" );
forecolor 1 1 1 0.25
visible 1
decoration
}
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect FACTION_BG_X_START FACTION_BG_Y_START FACTION_BG_WIDTH FACTION_BG_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp material( "hud_faction_backing" );
forecolor 1 1 1 0.2
visible 1
decoration
}
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect (FACTION_BG_X_START+9) (FACTION_BG_Y_START+20) FACTION_ICON_WIDTH FACTION_ICON_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
origin 5 -5
exp material( dvarString( "g_TeamIcon_Allies" ) );
visible when( TEAM_IS_MARINES );
forecolor 1 1 1 1
decoration
}
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect (FACTION_BG_X_START+9) (FACTION_BG_Y_START+20) FACTION_ICON_WIDTH FACTION_ICON_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
origin 5 -5
exp material( dvarString( "g_TeamIcon_Axis" ) );
visible when( TEAM_IS_OPFOR );
forecolor 1 1 1 1
decoration
}
}
#define SCORE_OFFSET_X (PROGRESS_OFFSET_X-12)
#define SCORE_START_X (BAR_START_X+SCORE_OFFSET_X)
#define SCORE_COLOR 1 1 1
menuDef
{
name "scorebars_ffa_scores"
rect BOTTOM_RECT_X BOTTOM_RECT_Y 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
exp rect Y( BOTTOM_RECT_Y - (ONLINEGAME * ONLINEGAME_OFFSET) );
fullScreen 0
visible when( !FSM_VISIBILITY )
visibilityBits bits( BIT_HUD_VISIBLE SHOULD_DISPLAY_SCOREBAR !BIT_IN_KILLCAM !BIT_UI_ACTIVE !BIT_IN_GUIDED_MISSILE !BIT_IN_GUIDED_MISSILE_STATIC BIT_TEAM_FREE !BIT_IN_VEHICLE )
// draws Player score
itemDef
{
type ITEM_TYPE_TEXT
rect SCORE_START_X -23 24 24 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp rect X( SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PERCENT_PLAYER ) );
exp text( player( score ) );
textfont UI_FONT_EXTRABIG
textscale TEXTSIZE_LARGE
textalign ITEM_ALIGN_CENTER
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
forecolor SCORE_COLOR 1
visible 1
decoration
}
// Top Arrow
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect SCORE_START_X -53 24 24 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp rect X( SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PERCENT_PLAYER ) );
exp material( "hud_frame_arrow" );
forecolor 1 1 1 0.8
visible 1
decoration
}
#define OT_SCORE_START_X (SCORE_START_X+2)
// OTHER Player score
itemDef
{
type ITEM_TYPE_TEXT
rect (OT_SCORE_START_X-1) -7 20 20 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp rect X( OT_SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PRECENT_BEST_OTHER_PLAYER ) );
exp text( BEST_OTHER_PLAYER_SCORE );
textfont UI_FONT_EXTRABIG
textscale TEXTSIZE_DEFAULT
textalign ITEM_ALIGN_CENTER
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
forecolor SCORE_COLOR 1
visible 1
decoration
}
// Bottom Arrow
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect OT_SCORE_START_X -16 20 (-20) HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp rect X( OT_SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PRECENT_BEST_OTHER_PLAYER ) );
exp material( "hud_frame_arrow" );
forecolor 1 1 1 0.8
visible 1
decoration
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,315 @@
// CONSOLE HUD - MP
#include "ui/menudef.h"
#include "ui/framestyle.inc"
#include "ui_mp/hud_gametypes.inc"
#define BAR_START_X 42
#define BAR_START_Y -42
#define BAR_HEIGHT 39
#define BAR_WIDTH 143
#define BAR_HEIGHT_TOP 20
#define BAR_HEIGHT_BOTTOM 16
#define BAR_PERCENT_TEAM ( max( team( score ), 0 ) / dvarInt( "ui_scorelimit" ) )
#define BAR_PRECENT_OTHERTEAM ( max( otherteam( score ), 0 ) / dvarInt( "ui_scorelimit" ) )
#define FSM_VISIBILITY ( isVisibilityBitSet( BIT_SELECTING_LOCATION ) && !isVisibilityBitSet( BIT_SPECTATING_CLIENT ) && !isVisibilityBitSet( BIT_SCOREBOARD_OPEN ) )
{
menuDef
{
name "scorebars_team_background"
rect BOTTOM_RECT_X BOTTOM_RECT_Y 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
exp rect Y( BOTTOM_RECT_Y - (ONLINEGAME * ONLINEGAME_OFFSET) );
fullScreen 0
visible when( !FSM_VISIBILITY )
visibilityBits bits( BIT_HUD_VISIBLE !BIT_IN_KILLCAM !BIT_UI_ACTIVE HUD_VISIBILITY !BIT_IN_GUIDED_MISSILE !BIT_IN_GUIDED_MISSILE_STATIC SHOULD_DISPLAY_SCOREBAR )
#define BG_OFFSET_X (-15)
#define BG_OFFSET_Y (-5)
#define BG_START_X (BAR_START_X+BG_OFFSET_X)
#define BG_START_Y (BAR_START_Y+BG_OFFSET_Y)
// score background
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect BG_START_X BG_START_Y 187 46 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp material( "hud_frame_faction_fade" );
forecolor 1 1 1 0.5
visible 1
decoration
}
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect (BAR_START_X-69) (BG_START_Y-14) 240 59 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp material( "hud_frame_faction_lines" );
forecolor 1 1 1 0.4
visible 1
decoration
}
#define PROGRESS_OFFSET_X 47
// Player team progress bar
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect BAR_START_X -42 70 BAR_HEIGHT_TOP HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp rect W( PROGRESS_OFFSET_X + (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PERCENT_TEAM );
exp material( "hud_score_progress" );
forecolor 0.42 0.68 0.46 0.8
visible when( dvarInt( "ui_scorelimit" ) != 0 && team( score ) > 0 )
decoration
}
// Other team progress bar
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect BAR_START_X -20 70 BAR_HEIGHT_BOTTOM HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp rect W( PROGRESS_OFFSET_X + (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PRECENT_OTHERTEAM );
exp material( "hud_score_progress" );
forecolor 0.73 0.29 0.19 0.8
visible when( dvarInt( "ui_scorelimit" ) != 0 && otherteam( score ) > 0 )
decoration
}
// FACTION ICONS
#define FACTION_ICON_WIDTH 64
#define FACTION_ICON_HEIGHT FACTION_ICON_WIDTH
#define FACTION_BG_WIDTH 92
#define FACTION_BG_HEIGHT FACTION_BG_WIDTH
#define FACTION_BG_X_START (BAR_START_X-(FACTION_BG_WIDTH/2))
#define FACTION_BG_Y_START (BAR_START_Y-(FACTION_BG_HEIGHT/2))
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect FACTION_BG_X_START FACTION_BG_Y_START FACTION_BG_WIDTH FACTION_BG_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp material( "hud_faction_back_light" );
forecolor 1 1 1 0.25
visible 1
decoration
}
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect FACTION_BG_X_START FACTION_BG_Y_START FACTION_BG_WIDTH FACTION_BG_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp material( "hud_faction_backing" );
forecolor 1 1 1 0.2
visible 1
decoration
}
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect (FACTION_BG_X_START+9) (FACTION_BG_Y_START+20) FACTION_ICON_WIDTH FACTION_ICON_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
origin 5 -5
exp material( dvarString( "g_TeamIcon_Allies" ) );
visible when( team( name ) == "TEAM_ALLIES" );
forecolor 1 1 1 1
decoration
}
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect (FACTION_BG_X_START+9) (FACTION_BG_Y_START+20) FACTION_ICON_WIDTH FACTION_ICON_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
origin 5 -5
exp material( dvarString( "g_TeamIcon_Axis" ) );
visible when( team( name ) == "TEAM_AXIS" );
forecolor 1 1 1 1
decoration
}
}
#define SCORE_OFFSET_X (PROGRESS_OFFSET_X-12)
#define SCORE_START_X (BAR_START_X+SCORE_OFFSET_X)
#define SCORE_COLOR 1 1 1
menuDef
{
name "scorebars_team_scores"
rect BOTTOM_RECT_X BOTTOM_RECT_Y 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
exp rect Y( BOTTOM_RECT_Y - (ONLINEGAME * ONLINEGAME_OFFSET) );
fullScreen 0
visible when( !FSM_VISIBILITY && ( isVisibilityBitSet( BIT_TEAM_ALLIES ) || isVisibilityBitSet( BIT_TEAM_AXIS ) ) );
visibilityBits bits( BIT_HUD_VISIBLE !BIT_IN_KILLCAM !BIT_UI_ACTIVE HUD_VISIBILITY !BIT_IN_GUIDED_MISSILE !BIT_IN_GUIDED_MISSILE_STATIC SHOULD_DISPLAY_SCOREBAR )
// draws TEAM score
itemDef
{
type ITEM_TYPE_TEXT
rect (SCORE_START_X-2) -23 24 24 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp rect X( SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PERCENT_TEAM ) );
exp text( team( score ) );
textfont UI_FONT_EXTRABIG
textscale TEXTSIZE_LARGE
textalign ITEM_ALIGN_CENTER
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
forecolor SCORE_COLOR 1
visible 1
decoration
}
// Top Arrow
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect SCORE_START_X -53 24 24 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp rect X( SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PERCENT_TEAM ) );
exp material( "hud_frame_arrow" );
forecolor 1 1 1 0.8
visible 1
decoration
}
#define OT_SCORE_START_X (SCORE_START_X+2)
// OTHER TEAM score
itemDef
{
type ITEM_TYPE_TEXT
rect (OT_SCORE_START_X-2) -7 20 20 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp rect X( OT_SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PRECENT_OTHERTEAM ) );
exp text( otherteam( score ) );
textfont UI_FONT_EXTRABIG
textscale TEXTSIZE_DEFAULT
textalign ITEM_ALIGN_CENTER
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
forecolor SCORE_COLOR 1
visible 1
decoration
}
// Bottom Arrow
itemDef
{
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect OT_SCORE_START_X -16 20 (-20) HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp rect X( OT_SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PRECENT_OTHERTEAM ) );
exp material( "hud_frame_arrow" );
forecolor 1 1 1 0.8
visible 1
decoration
}
}
#define STATUS_TIME 5
#define STATUS_TIME_MOD 30
#define STATUS_FONT UI_FONT_EXTRABIG
#define STATUS_TEXT_SCALE TEXTSIZE_DEFAULT
#define STATUS_START_X (BAR_START_X+(FACTION_BG_WIDTH/2)-4)
#define STATUS_START_Y (BAR_START_Y-2)
// Score Bar
menuDef
{
name "scorebar_game_status"
rect BOTTOM_RECT_X BOTTOM_RECT_Y 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
exp rect Y( BOTTOM_RECT_Y - (ONLINEGAME * ONLINEGAME_OFFSET) );
fullScreen 0
visible when ( !FSM_VISIBILITY && ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") ) );
visibilityBits bits( BIT_HUD_VISIBLE !BIT_UI_ACTIVE !BIT_BOMB_TIMER !BIT_BOMB_TIMER_A !BIT_BOMB_TIMER_B !BIT_DEMO_CAMERA_MODE_MOVIECAM !BIT_DEMO_ALL_GAME_HUD_HIDDEN !BIT_IN_KILLCAM HUD_VISIBILITY !BIT_IN_GUIDED_MISSILE !BIT_IN_GUIDED_MISSILE_STATIC !BIT_SCOREBOARD_OPEN )
#define IS_WINNING ( team( score ) > otherteam( score ) && ((timeLeft() / 1000) % STATUS_TIME_MOD > STATUS_TIME) )
// winning highlight
//itemDef
//{
// style WINDOW_STYLE_SHADER
// type ITEM_TYPE_IMAGE
// rect (STATUS_START_X-5) (BAR_START_Y-15) 16 16 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
// exp material( "hud_score_back" );
// exp rect W( getTextWidth( locString( "@MENU_WINNING_CAPS" ), STATUS_FONT, STATUS_TEXT_SCALE )+10 );
// forecolor 0.3 1 0.3 0.2
// visible when( IS_WINNING );
// decoration
//}
itemDef
{
type ITEM_TYPE_TEXT
rect STATUS_START_X STATUS_START_Y 1 1 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
text "@MENU_WINNING_CAPS"
textfont STATUS_FONT
textscale STATUS_TEXT_SCALE
textalign ITEM_ALIGN_LEFT
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
forecolor NEW_FRAME_GREEN_RGB 1
visible when( IS_WINNING );
decoration
}
#define IS_LOSING ( team( score ) < otherteam( score ) && ((timeLeft() / 1000) % STATUS_TIME_MOD > STATUS_TIME) )
// losing highlight
//itemDef
//{
// style WINDOW_STYLE_SHADER
// type ITEM_TYPE_IMAGE
// rect (STATUS_START_X-5) (BAR_START_Y-15) 16 16 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
// exp material( "hud_score_back" );
// exp rect W( getTextWidth( locString( "@MENU_LOSING_CAPS" ), STATUS_FONT, STATUS_TEXT_SCALE )+10 );
// forecolor 1 0.3 0.3 0.2
// visible when( IS_LOSING );
// decoration
//}
itemDef
{
type ITEM_TYPE_TEXT
rect STATUS_START_X STATUS_START_Y 1 1 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
text "@MENU_LOSING_CAPS"
textfont STATUS_FONT
textscale STATUS_TEXT_SCALE
textalign ITEM_ALIGN_LEFT
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
forecolor NEW_FRAME_RED_RGB 1
visible when( IS_LOSING )
decoration
}
#define IS_TIED ( team( score ) == otherteam( score ) && ((timeLeft() / 1000) % STATUS_TIME_MOD > STATUS_TIME) )
// tied highlight
//itemDef
//{
// style WINDOW_STYLE_SHADER
// type ITEM_TYPE_IMAGE
// rect (STATUS_START_X-3) (BAR_START_Y-15) 16 16 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
// exp material( "hud_score_back" );
// exp rect W( getTextWidth( locString( "@MENU_TIED_CAPS" ), STATUS_FONT, STATUS_TEXT_SCALE )+8 );
// forecolor 1 1 0.3 0.2
// visible when( IS_TIED );
// decoration
//}
itemDef
{
type ITEM_TYPE_TEXT
rect STATUS_START_X STATUS_START_Y 1 1 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
text "@MENU_TIED_CAPS"
textfont STATUS_FONT
textscale STATUS_TEXT_SCALE
textalign ITEM_ALIGN_LEFT
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
forecolor NEW_FRAME_YELLOW_RGB 1
visible when( IS_TIED )
decoration
}
#define SHOW_GAMETYPE ( ((timeLeft() / 1000) % STATUS_TIME_MOD <= STATUS_TIME ) )
itemDef
{
type ITEM_TYPE_TEXT
rect STATUS_START_X STATUS_START_Y 1 1 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
exp text( toUpper( gameTypeName() ) );
textfont STATUS_FONT
textscale STATUS_TEXT_SCALE
textalign ITEM_ALIGN_LEFT
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
forecolor SCORE_COLOR 1
visible when( SHOW_GAMETYPE )
decoration
}
}
}

View File

@ -0,0 +1,830 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#define BUTTON_BG_WIDTH 180
#define BUTTON_BG_Y_START 5
#define CHOICE_X_START -258
#define CHOICE_Y_START BUTTON_BG_Y_START + 35
#define CHOICE_GROUP "main"
#define FLYOUT_NONE 0
#define FLYOUT_LIVE 1
#define FLYOUT_OPERATIONS 2
#define FLYOUT_THEATER 3
#include "ui_mp/menustyle.inc"
#include "ui/choices_setup_common.menu"
#include "ui_mp/friendslist.inc"
#include "ui_mp/stats_info.inc"
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X BUTTON_BG_WIDTH
#undef CHOICE_TEXTSTYLE
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
#undef CHOICE_Y_SPACING
#define CHOICE_Y_SPACING CHOICE_SIZE_Y
#undef CHOICE_HORIZONTAL_ALIGN
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
#define FLYOUT_BG_COLOR 0 0 0 0.3
{
assetGlobalDef
{
fadeClamp 1.0 // sets the fadeup alpha
fadeCycle 1 // how often fade happens in milliseconds
fadeAmount 0.1 // amount to adjust alpha per cycle
}
menuDef
{
name "main"
fullScreen 1
rect 0 0 640 480
focusColor COLOR_FOCUSED
soundloop MENU_MUSIC
style WINDOW_STYLE_EMPTY
onOpen
{
uiScript stopRefresh;
open main_text;
}
onClose
{
}
onESC
{
}
}
#define RESET_GAMEMODE_DVARS \
setdvar xblive_basictraining 0; \
setdvar xblive_privatematch 0; \
setdvar xblive_wagermatch 0; \
setdvar xblive_theater 0; \
setdvar xblive_rankedmatch 0;
menuDef
{
name "main_text"
fullScreen 1
rect 0 0 640 480
focusColor COLOR_FOCUSED
soundloop MENU_MUSIC
style WINDOW_STYLE_EMPTY
onOpen
{
setdvar ui_version_show "0";
setLocalVarBool ui_centerPopup 0;
setdvar ui_bg_image "";
RESET_GAMEMODE_DVARS
}
onFocus
{
setDvar ui_flyoutHasFocus FLYOUT_NONE;
}
itemDef
{
style WINDOW_STYLE_SHADER
rect FULLSCREEN_WIDE
background "menu_mp_background_main2"
forecolor 1 1 1 1
visible 1
decoration
}
// lower corner glows
itemDef
{
style WINDOW_STYLE_SHADER
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN;
background "menu_mp_background_glow"
forecolor 0.384 0.725 0.725 0
exp forecolor a ( ((sin(milliseconds()/1500) + 1) * 0.25) + 0.25 )
visible 1
decoration
}
itemDef
{
style WINDOW_STYLE_SHADER
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN;
background "menu_mp_background_glow"
forecolor 0.384 0.725 0.725 0
exp forecolor a ( ((sin(milliseconds()/480) + 1) * 0.25) + 0.25 )
visible 1
decoration
}
#undef THINFOG_SCROLL_TIME
#define THINFOG_SCROLL_TIME 50000
itemDef
{
style WINDOW_STYLE_SHADER
rect -107 0 1708 480
exp rect X((-961) + ((float(milliseconds() % THINFOG_SCROLL_TIME) / THINFOG_SCROLL_TIME) * (854)))
background "animbg_fogscrollthin"
forecolor 1 1 1 0.5
visible 1
decoration
}
#include "ui/bg.inc"
// cod:bo logo
#define LOGO_X_OFFSET 45
#define LOGO_Y_OFFSET 70
#define LOGO_WIDTH 228
#define LOGO_HEIGHT 107
itemDef
{
visible 1
rect (-LOGO_WIDTH - LOGO_X_OFFSET) (-LOGO_HEIGHT - LOGO_Y_OFFSET) LOGO_WIDTH LOGO_HEIGHT HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM
forecolor 1 1 1 1
style WINDOW_STYLE_SHADER
background "menu_mp_background_logo"
decoration
}
#define RESET_GAME_MODES \
setdvar systemlink "0"; \
setdvar splitscreen "0"; \
setdvar onlinegame "1"; \
setdvar xblive_privatematch "0"; \
setdvar xblive_rankedmatch "0"; \
setdvar xblive_wagermatch "0"; \
setdvar xblive_clanmatch "0"; \
setdvar xblive_theater "0"; \
setdvar xblive_basictraining "0";
#define SIGN_IN_CMD exec "xsigninlive";
#define SETUP_SIGNIN \
if( IsSignedInToLive() == 0 ) \
{ \
SIGN_IN_CMD \
open error_netconnect_popmenu; \
} \
elseif( isDemonwareFetchingDone() == 1 ) \
{ \
execnow "setclientbeingused"; \
if( !getDStat( "CacLoadouts", "resetWarningDislayed" ) ) \
{ \
open customclassesreset; \
} \
else \
{ \
open live_flyout; \
execnow readFileShare; \
} \
} \
else \
{ \
open popup_connectingtodwhandler; \
}
// ----------------- BEGIN Scroller --------------------------
#include "ui/scroller.inc"
// ----------------- END Scroller ----------------------------
CHOICE_MENU_TITLE_CENTER_ALIGN_VIS( "@MENU_MULTIPLAYER_CAPS", ITEM_ALIGN_TOP_RIGHT, dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
CHOICE_MENU_TITLE_CENTER_ALIGN_VIS( "@MENU_PLAY_CAPS", ITEM_ALIGN_TOP_RIGHT, dvarInt( ui_flyoutHasFocus ) == FLYOUT_LIVE )
CHOICE_MENU_TITLE_CENTER_ALIGN_VIS( "@MENU_OPERATIONS_CAPS", ITEM_ALIGN_TOP_RIGHT, dvarInt( ui_flyoutHasFocus ) == FLYOUT_OPERATIONS )
CHOICE_MENU_TITLE_CENTER_ALIGN_VIS( "@MPUI_THEATER_LOBBY_CAPS", ITEM_ALIGN_TOP_RIGHT, dvarInt( ui_flyoutHasFocus ) == FLYOUT_THEATER )
// ----------------- BEGIN Message of the day ------------------------
// size version 1: 248 126
//#define INFO_TEXT dvarString( "motd" )
//#define INFO_TITLE "@MPUI_MOTD"
//#define MP_MOTD 1
//#include "ui_mp/info_box.inc"
// ----------------- END Message of the day --------------------------
// Menu items -------------------------------------------
// highlight when flyout is open
PREPROC_SHADER_DRAW_VIS_EX( CHOICE_ORIGIN( 1 ) (CHOICE_SIZE_X + 1) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "white", FLYOUT_BG_COLOR, when( dvarInt( ui_flyoutHasFocus ) == FLYOUT_LIVE );, ; )
TEMP_CHOICE_BUTTON_VIS( 1, "@MENU_PLAY_CAPS",
SETUP_SIGNIN,
IsSignedInToLive() && ( dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE || dvarInt( ui_flyoutHasFocus ) == FLYOUT_LIVE ) )
TEMP_CHOICE_BUTTON_VIS_DISABLED( 1, "@MENU_PLAY_CAPS",
SETUP_SIGNIN,
!IsSignedInToLive() && ( dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE || dvarInt( ui_flyoutHasFocus ) == FLYOUT_LIVE ) )
// Gray text when flyout is open
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 1 ), 0 0, "@MENU_PLAY_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE && dvarInt( ui_flyoutHasFocus ) != FLYOUT_LIVE ); )
#define SETUP_OPERATIONS_FLYOUT \
if( IsSignedInToLive() == 0 ) \
{ \
SIGN_IN_CMD \
open error_netconnect_popmenu; \
} \
elseif( isDemonwareFetchingDone() == 1 ) \
{ \
execnow "setclientbeingused"; \
open operations_flyout; \
execnow readFileShare; \
} \
else \
{ \
open popup_connectingtodwhandler; \
}
// highlight when flyout is open
PREPROC_SHADER_DRAW_VIS_EX( CHOICE_ORIGIN( 2 ) CHOICE_SIZE_X CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "white", FLYOUT_BG_COLOR, when( dvarInt( ui_flyoutHasFocus ) == FLYOUT_OPERATIONS );, ; )
TEMP_CHOICE_BUTTON_VIS( 2, "@MENU_OPERATIONS_CAPS",
SETUP_OPERATIONS_FLYOUT,
( dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE || dvarInt( ui_flyoutHasFocus ) == FLYOUT_OPERATIONS ) )
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 2 ), 0 0, "@MENU_OPERATIONS_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE && dvarInt( ui_flyoutHasFocus ) != FLYOUT_OPERATIONS ); )
#define SETUP_THEATER_FLYOUT \
if( IsSignedInToLive() == 0 ) \
{ \
SIGN_IN_CMD \
open error_netconnect_popmenu; \
} \
elseif( isDemonwareFetchingDone() == 1 ) \
{ \
execnow "setclientbeingused"; \
open theater_flyout; \
execnow readFileShare; \
} \
else \
{ \
open popup_connectingtodwhandler; \
}
// highlight when flyout is open
PREPROC_SHADER_DRAW_VIS_EX( CHOICE_ORIGIN( 3 ) CHOICE_SIZE_X CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "white", FLYOUT_BG_COLOR, when( dvarInt( ui_flyoutHasFocus ) == FLYOUT_THEATER );, ; )
TEMP_CHOICE_BUTTON_VIS( 3, "@MPUI_THEATER_LOBBY_CAPS",
SETUP_THEATER_FLYOUT,
( dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE || dvarInt( ui_flyoutHasFocus ) == FLYOUT_THEATER ) )
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 3 ), 0 0, "@MPUI_THEATER_LOBBY_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE && dvarInt( ui_flyoutHasFocus ) != FLYOUT_THEATER ); )
TEMP_CHOICE_BUTTON_VIS( 4, "@MENU_SETTINGS_CAPS",
open options_new_pc,
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 4 ), 0 0, "@MENU_SETTINGS_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
/*TEMP_CHOICE_BUTTON_VIS( 5, "@MENU_STORE_CAPS",
uiscript openurl "www.callofduty.com/game",
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 5 ), 0 0, "@MENU_STORE_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )*/
TEMP_CHOICE_BUTTON_VIS( 5, "@MENU_MODS_CAPS",
open select_mod,
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 5 ), 0 0, "@MENU_MODS_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
TEMP_CHOICE_BUTTON_VIS( 6, "@MENU_MAIN_MENU_CAPS",
open single_popmenu,
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 6 ), 0 0, "@MENU_MAIN_MENU_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
TEMP_CHOICE_BUTTON_VIS( 7, "@MENU_QUIT_CAPS",
open quit_popmenu,
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 7 ), 0 0, "@MENU_QUIT_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
FRIENDS_BUTTON
}
#define FADE_STATE( isLast, colorArg, menuName, nextName ) \
state \
{ \
name "FadeIn" \
forecolor colorArg \
\
onEnter \
{ \
execNow if( isLast != 1 ) ui_animate menuName nextName FadeIn (FLYOUT_TIME/FLYOUT_BUTTON_COUNT); \
execNow if( isLast == 1 ) set ui_flownOut 1; \
} \
}
#define FLYOUT_ARGS( isLast, menuName, colorArg, myName, nextName ) \
name myName \
FADE_STATE( isLast, colorArg, menuName, nextName )
#undef CHOICE_HORIZONTAL_ALIGN
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
#undef CHOICE_VERTICAL_ALIGN
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_TOP
#undef CHOICE_TEXTALIGN
#define CHOICE_TEXTALIGN ITEM_ALIGN_MIDDLE_LEFT
#undef CHOICE_GROUP
#define CHOICE_GROUP "flyout"
#define FLYOUT_TIME 200
#define FLYOUT_BG_X_START ( -258 + BUTTON_BG_WIDTH + 1 )
#define FLYOUT_BG_WIDTH 180
#undef CHOICE_X_START
#define CHOICE_X_START FLYOUT_BG_X_START
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X FLYOUT_BG_WIDTH
#undef CHOICE_FOCUS_SOUND
#define CHOICE_FOCUS_SOUND "uin_navigation_submenu_over"
#undef FLYOUT_BUTTON_COUNT
#define FLYOUT_BUTTON_COUNT 5
#undef FLYOUT_FIRST_CHOICE_Y
#define FLYOUT_FIRST_CHOICE_Y 1
#define SETUP_ACTION_LOBBY \
execNow "exec "XBOXLIVE_MP_CFG;
menuDef
{
name live_flyout
rect 0 0 640 480
focusColor COLOR_FOCUSED
soundloop MENU_MUSIC
control MENU_CONTROL_NO_GUESTS
onOpen
{
execNow ui_animate live_flyout ButtonBackground Fly FLYOUT_TIME;
execNow ui_animate live_flyout FirstFlyout FadeIn (FLYOUT_TIME/FLYOUT_BUTTON_COUNT);
execNow set ui_flownOut 0;
setDvar ui_flyoutHasFocus FLYOUT_LIVE;
}
onESC { close self; }
onClose
{
execNow ui_animate live_flyout ButtonBackground Default 0;
execNow ui_animate live_flyout FirstFlyout Default 0;
execNow ui_animate live_flyout SecondFlyout Default 0;
execNow ui_animate live_flyout ThirdFlyout Default 0;
execNow ui_animate live_flyout FourthFlyout Default 0;
execNow ui_animate live_flyout FifthFlyout Default 0;
execNow set ui_flownOut 0;
setDvar ui_flyoutHasFocus FLYOUT_NONE;
}
/* exit flyout button */
itemDef
{
name "ExitFlyoutButton"
type ITEM_TYPE_BUTTON
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
visible 1
action { close self; }
}
/* button background */
itemDef
{
name "ButtonBackground"
style WINDOW_STYLE_SHADER
rect FLYOUT_BG_X_START CHOICE_Y( FLYOUT_FIRST_CHOICE_Y ) FLYOUT_BG_WIDTH CHOICE_Y_SPACING CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP
forecolor FLYOUT_BG_COLOR
background "white"
visible 1
decoration
state
{
name "Fly"
rect FLYOUT_BG_X_START CHOICE_Y( FLYOUT_FIRST_CHOICE_Y ) FLYOUT_BG_WIDTH ( CHOICE_Y_SPACING * FLYOUT_BUTTON_COUNT ) CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP
}
}
HINT_TEXT_ALL( (FLYOUT_BUTTON_COUNT + 1), (FLYOUT_BG_X_START + 10), 5, (FLYOUT_BG_WIDTH - 20), (dvarString( ui_lobby_desc )), 1 1 1 1, ( dvarInt( ui_flownOut ) == 1 ), ; )
#define SETUP_ACTION_SERVER_BROWSER \
RESET_GAME_MODES \
SETUP_ACTION_LOBBY \
close self; \
open server_browser_main;
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( FLYOUT_FIRST_CHOICE_Y, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
TEMP_CHOICE_BUTTON_ALL( FLYOUT_FIRST_CHOICE_Y, "@MENU_SERVER_BROWSER_CAPS",
SETUP_ACTION_SERVER_BROWSER,
setDvar ui_lobby_desc "@MENU_SERVER_BROWSER_DESC";,
CLEARUIHINT,
1 1 1 0,
dvarBool(ui_ethernetLinkActive),
FLYOUT_ARGS( 0, live_flyout, TEXT_COLOR_NO_HL, FirstFlyout, SecondFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( FLYOUT_FIRST_CHOICE_Y, "@MENU_SERVER_BROWSER_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
#define SETUP_ACTION_RANKEDMATCH \
RESET_GAME_MODES \
SETUP_ACTION_LOBBY \
close self; \
exec "quickmatch";
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 2, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
TEMP_CHOICE_BUTTON_ALL( 2, "@MENU_RANKED_MATCH_CAPS",
SETUP_ACTION_RANKEDMATCH,
setDvar ui_lobby_desc "@MENU_RANKED_MATCH_DESC";,
CLEARUIHINT,
1 1 1 0,
dvarBool(ui_ethernetLinkActive),
FLYOUT_ARGS( 0, live_flyout, TEXT_COLOR_NO_HL, SecondFlyout, ThirdFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 2, "@MENU_RANKED_MATCH_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
#define SETUP_ACTION_WAGERMATCH \
RESET_GAME_MODES \
setDvar xblive_wagermatch "1"; \
SETUP_ACTION_LOBBY \
close self; \
exec "wagermatch";
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 3, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
TEMP_CHOICE_BUTTON_ALL( 3, "@MPUI_WAGER_MATCH_CAPS",
SETUP_ACTION_WAGERMATCH,
setDvar ui_lobby_desc "@MPUI_WAGER_MATCH_DESC";,
CLEARUIHINT,
1 1 1 0,
dvarBool(ui_ethernetLinkActive) && dvarBool(ui_mpWagerMatchEnabled),
FLYOUT_ARGS( 0, live_flyout, TEXT_COLOR_NO_HL, ThirdFlyout, FourthFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 3, "@MPUI_WAGER_MATCH_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 && dvarBool(ui_mpWagerMatchEnabled) )
#define SETUP_ACTION_BASIC_TRAINING \
RESET_GAME_MODES \
setDvar onlinegame "1"; \
setDvar xblive_basictraining "1"; \
SETUP_ACTION_LOBBY \
execNow "exec dvar_defaults.cfg"; \
setDvar ui_mapname "mp_mountain"; \
setDvar ui_gametype "tdm"; \
close self; \
open menu_xboxlive_basictraining;
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 4, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
TEMP_CHOICE_BUTTON_ALL( 4, "@MPUI_BASICTRAINING_CAPS",
SETUP_ACTION_BASIC_TRAINING,
setDvar ui_lobby_desc "@MPUI_BASICTRAINING_DESC";,
CLEARUIHINT,
1 1 1 0,
dvarBool(ui_ethernetLinkActive),
FLYOUT_ARGS( 0, live_flyout, TEXT_COLOR_NO_HL, FourthFlyout, FifthFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 4, "@MPUI_BASICTRAINING_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
#define SETUP_ACTION_PRIVATEMATCH \
RESET_GAME_MODES \
setDvar onlinegame "1"; \
setDvar xblive_privatematch "1"; \
SETUP_ACTION_LOBBY \
setDvar ui_mapname "mp_mountain"; \
setDvar ui_gametype "tdm"; \
close self; \
open menu_xboxlive_privatelobby;
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 5, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
TEMP_CHOICE_BUTTON_ALL( 5, "@MPUI_CUSTOM_MATCH_CAPS",
SETUP_ACTION_PRIVATEMATCH,
setDvar ui_lobby_desc "@MPUI_CUSTOM_MATCH_DESC";,
CLEARUIHINT,
1 1 1 0,
dvarBool(ui_ethernetLinkActive),
FLYOUT_ARGS( 1, live_flyout, TEXT_COLOR_NO_HL, FifthFlyout, NoFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 5, "@MPUI_CUSTOM_MATCH_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
} // live_flyout
#undef FLYOUT_BUTTON_COUNT
#define FLYOUT_BUTTON_COUNT 4
#undef FLYOUT_FIRST_CHOICE_Y
#define FLYOUT_FIRST_CHOICE_Y 2
menuDef
{
name operations_flyout
rect 0 0 640 480
focusColor COLOR_FOCUSED
soundloop MENU_MUSIC
control MENU_CONTROL_NO_GUESTS
onOpen
{
execNow ui_animate operations_flyout ButtonBackground Fly FLYOUT_TIME;
execNow ui_animate operations_flyout FirstFlyout FadeIn (FLYOUT_TIME/FLYOUT_BUTTON_COUNT);
execNow set ui_flownOut 0;
setDvar ui_flyoutHasFocus FLYOUT_OPERATIONS;
}
onESC { close self; }
onClose
{
execNow ui_animate operations_flyout ButtonBackground Default 0;
execNow ui_animate operations_flyout FirstFlyout Default 0;
execNow ui_animate operations_flyout SecondFlyout Default 0;
execNow ui_animate operations_flyout ThirdFlyout Default 0;
execNow ui_animate operations_flyout FourthFlyout Default 0;
execNow set ui_flownOut 0;
setDvar ui_flyoutHasFocus FLYOUT_NONE;
}
/* exit flyout button */
itemDef
{
name "ExitFlyoutButton"
type ITEM_TYPE_BUTTON
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
visible 1
action { close self; }
}
/* button background */
itemDef
{
name "ButtonBackground"
style WINDOW_STYLE_SHADER
rect FLYOUT_BG_X_START CHOICE_Y( FLYOUT_FIRST_CHOICE_Y ) FLYOUT_BG_WIDTH CHOICE_Y_SPACING CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP
forecolor FLYOUT_BG_COLOR
background "white"
visible 1
decoration
state
{
name "Fly"
rect FLYOUT_BG_X_START CHOICE_Y( FLYOUT_FIRST_CHOICE_Y ) FLYOUT_BG_WIDTH ( CHOICE_Y_SPACING * FLYOUT_BUTTON_COUNT ) CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP
}
}
HINT_TEXT_ALL( (FLYOUT_BUTTON_COUNT + FLYOUT_FIRST_CHOICE_Y), (FLYOUT_BG_X_START + 10), 5, (FLYOUT_BG_WIDTH - 20), (dvarString( ui_lobby_desc )), 1 1 1 1, ( dvarInt( ui_flownOut ) == 1 ), ; )
#define SETUP_ACTION_CREATEACLASS \
close self; \
if ( IsSignedInToLive() && areStatsFetched() && !IsGuest() ) \
{ \
exec "set ui_cac_ingame 0"; \
setdvar invite_visible "0"; \
open cac_main; \
}
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( FLYOUT_FIRST_CHOICE_Y, BG_HL_COLOR, FLYOUT_BG_WIDTH, ( dvarInt( ui_flownOut ) == 1 && !IS_ITEM_LOCKED( "FEATURE_CREATE_A_CLASS" ) ) )
TEMP_CHOICE_BUTTON_ALL( FLYOUT_FIRST_CHOICE_Y, "@MPUI_CREATE_A_CLASS_CAPS",
SETUP_ACTION_CREATEACLASS,
setDvar ui_lobby_desc "@MPUI_CAC_DESC";,
CLEARUIHINT,
1 1 1 0,
!IS_ITEM_LOCKED( "FEATURE_CREATE_A_CLASS" ),
FLYOUT_ARGS( 0, operations_flyout, TEXT_COLOR_NO_HL, FirstFlyout, SecondFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( FLYOUT_FIRST_CHOICE_Y, "@MPUI_CREATE_A_CLASS_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 && !IS_ITEM_LOCKED( "FEATURE_CREATE_A_CLASS" ) )
TEMP_CHOICE_BUTTON_ALL( FLYOUT_FIRST_CHOICE_Y, "@MPUI_CREATE_A_CLASS_CAPS",
/*NO-OP*/;,
exec set ui_lobby_desc GET_UNLOCK_LEVEL_STRING( FEATURE_CREATE_A_CLASS );,
CLEARUIHINT,
1 1 1 0,
IS_ITEM_LOCKED( "FEATURE_CREATE_A_CLASS" ),
FLYOUT_ARGS( 0, operations_flyout, NO_BG_DISABLED_COLOR, FirstFlyout, SecondFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( FLYOUT_FIRST_CHOICE_Y, "@MPUI_CREATE_A_CLASS_CAPS", NO_BG_DISABLED_COLOR, dvarInt( ui_flownOut ) == 1 && IS_ITEM_LOCKED( "FEATURE_CREATE_A_CLASS" ) )
CHOICE_LOCKEDICON_VIS( FLYOUT_FIRST_CHOICE_Y, "menu_mp_lobby_locked", when( dvarInt( ui_flownOut ) == 1 && IS_ITEM_LOCKED( "FEATURE_CREATE_A_CLASS" ) ) )
#define SETUP_ACTION_CONTRACTS \
close self; \
if ( IsSignedInToLive() && areStatsFetched() && !IsGuest() ) \
{ \
open menu_xboxlive_contracts; \
}
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 3, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 && !IS_ITEM_LOCKED( FEATURE_CONTRACTS ) )
TEMP_CHOICE_BUTTON_ALL( 3, "@MENU_CONTRACTS_CAPS",
SETUP_ACTION_CONTRACTS,
exec set ui_lobby_desc "@MPUI_CONTRACTS_DESC";,
CLEARUIHINT,
1 1 1 0,
!IS_ITEM_LOCKED( FEATURE_CONTRACTS ),
FLYOUT_ARGS( 0, operations_flyout, TEXT_COLOR_NO_HL, SecondFlyout, ThirdFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 3, "@MENU_CONTRACTS_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 && !IS_ITEM_LOCKED( FEATURE_CONTRACTS ) )
TEMP_CHOICE_BUTTON_ALL( 3, "@MENU_CONTRACTS_CAPS",
/*NO-OP*/;,
exec set ui_lobby_desc GET_UNLOCK_LEVEL_STRING( FEATURE_CONTRACTS );,
CLEARUIHINT,
1 1 1 0,
IS_ITEM_LOCKED( FEATURE_CONTRACTS ),
FLYOUT_ARGS( 1, operations_flyout, NO_BG_DISABLED_COLOR, SecondFlyout, ThirdFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 3, "@MENU_CONTRACTS_CAPS", NO_BG_DISABLED_COLOR, dvarInt( ui_flownOut ) == 1 && IS_ITEM_LOCKED( FEATURE_CONTRACTS ) )
CHOICE_LOCKEDICON_VIS( 3, "menu_mp_lobby_locked", when( dvarInt( ui_flownOut ) == 1 && IS_ITEM_LOCKED( FEATURE_CONTRACTS ) ) )
#define SETUP_ACTION_KILLSTREAKS \
close self; \
if ( IsSignedInToLive() && areStatsFetched() && !IsGuest() ) \
{ \
open menu_xboxlive_killstreaks; \
}
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 4, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 && !IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) )
TEMP_CHOICE_BUTTON_ALL( 4, "@MENU_KILLSTREAKS_CAPS",
SETUP_ACTION_KILLSTREAKS,
exec set ui_lobby_desc "@MPUI_KILLSTREAKS_DESC";,
CLEARUIHINT,
1 1 1 0,
!IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ),
FLYOUT_ARGS( 0, operations_flyout, TEXT_COLOR_NO_HL, ThirdFlyout, FourthFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 4, "@MENU_KILLSTREAKS_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 && !IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) )
TEMP_CHOICE_BUTTON_ALL( 4, "@MENU_KILLSTREAKS_CAPS",
/*NO-OP*/;,
exec set ui_lobby_desc GET_UNLOCK_LEVEL_STRING( FEATURE_KILLSTREAKS );,
CLEARUIHINT,
1 1 1 0,
IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ),
FLYOUT_ARGS( 1, operations_flyout, NO_BG_DISABLED_COLOR, ThirdFlyout, FourthFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 4, "@MENU_KILLSTREAKS_CAPS", NO_BG_DISABLED_COLOR, dvarInt( ui_flownOut ) == 1 && IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) )
CHOICE_LOCKEDICON_VIS( 4, "menu_mp_lobby_locked", when( dvarInt( ui_flownOut ) == 1 && IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) ) )
// #define SETUP_ACTION_PLAYERCARD \ defined in ui_mp\friendslist.inc
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 5, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
TEMP_CHOICE_BUTTON_ALL( 5, "@MENU_PLAYERCARD_CAPS",
close self; SETUP_ACTION_PLAYERCARD,
exec set ui_lobby_desc "@MPUI_PLAYERCARD_DESC";,
CLEARUIHINT,
1 1 1 0,
1,
FLYOUT_ARGS( 0, operations_flyout, TEXT_COLOR_NO_HL, FourthFlyout, NoFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 5, "@MENU_PLAYERCARD_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
} // operations_flyout
#undef FLYOUT_BUTTON_COUNT
#define FLYOUT_BUTTON_COUNT 3
#undef FLYOUT_FIRST_CHOICE_Y
#define FLYOUT_FIRST_CHOICE_Y 3
menuDef
{
name theater_flyout
rect 0 0 640 480
focusColor COLOR_FOCUSED
soundloop MENU_MUSIC
control MENU_CONTROL_NO_GUESTS
onOpen
{
execNow ui_animate theater_flyout ButtonBackground Fly FLYOUT_TIME;
execNow ui_animate theater_flyout FirstFlyout FadeIn (FLYOUT_TIME/FLYOUT_BUTTON_COUNT);
execNow set ui_flownOut 0;
setDvar ui_flyoutHasFocus FLYOUT_THEATER;
}
onESC { close self; }
onClose
{
execNow ui_animate theater_flyout ButtonBackground Default 0;
execNow ui_animate theater_flyout FirstFlyout Default 0;
execNow ui_animate theater_flyout SecondFlyout Default 0;
execNow ui_animate theater_flyout ThirdFlyout Default 0;
execNow set ui_flownOut 0;
setDvar ui_flyoutHasFocus FLYOUT_NONE;
}
/* exit flyout button */
itemDef
{
name "ExitFlyoutButton"
type ITEM_TYPE_BUTTON
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
visible 1
action { close self; }
}
/* button background */
itemDef
{
name "ButtonBackground"
style WINDOW_STYLE_SHADER
rect FLYOUT_BG_X_START CHOICE_Y( FLYOUT_FIRST_CHOICE_Y ) FLYOUT_BG_WIDTH CHOICE_Y_SPACING CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP
forecolor FLYOUT_BG_COLOR
background "white"
visible 1
decoration
state
{
name "Fly"
rect FLYOUT_BG_X_START CHOICE_Y( FLYOUT_FIRST_CHOICE_Y ) FLYOUT_BG_WIDTH ( CHOICE_Y_SPACING * FLYOUT_BUTTON_COUNT ) CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP
}
}
HINT_TEXT_ALL( (FLYOUT_BUTTON_COUNT + FLYOUT_FIRST_CHOICE_Y), (FLYOUT_BG_X_START + 10), 5, (FLYOUT_BG_WIDTH - 20), (dvarString( ui_lobby_desc )), 1 1 1 1, ( dvarInt( ui_flownOut ) == 1 ), ; )
#define SETUP_ACTION_FILESHARE \
setdvar ui_theater_shortcut_pc 1; \
close self; \
open menu_fileshare_myshare;
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( FLYOUT_FIRST_CHOICE_Y, BG_HL_COLOR, FLYOUT_BG_WIDTH, ( dvarInt( ui_flownOut ) == 1 ) )
TEMP_CHOICE_BUTTON_ALL( FLYOUT_FIRST_CHOICE_Y, "@MENU_FILESHARE_MYSHARE_CAPS",
SETUP_ACTION_FILESHARE,
setDvar ui_lobby_desc "@MPUI_FILE_SHARE_DESC";,
CLEARUIHINT,
1 1 1 0,
1,
FLYOUT_ARGS( 0, theater_flyout, TEXT_COLOR_NO_HL, FirstFlyout, SecondFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( FLYOUT_FIRST_CHOICE_Y, "@MENU_FILESHARE_MYSHARE_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
#define SETUP_ACTION_RECENTGAMES \
setdvar ui_theater_shortcut_pc 1; \
close self; \
open menu_fileshare_myrecentgames;
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 4, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
TEMP_CHOICE_BUTTON_ALL( 4, "@MENU_FILESHARE_MYRECENTGAMES_CAPS",
SETUP_ACTION_RECENTGAMES,
exec set ui_lobby_desc "@MPUI_MY_RECENT_GAMES_DESC";,
CLEARUIHINT,
1 1 1 0,
1,
FLYOUT_ARGS( 0, theater_flyout, TEXT_COLOR_NO_HL, SecondFlyout, ThirdFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 4, "@MENU_FILESHARE_MYRECENTGAMES_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
#define SETUP_ACTION_COMMUNITY \
if ( canShowContentFromUser( 0 ) ) \
{ \
setdvar ui_theater_shortcut_pc 1; \
close self; \
open menu_fileshare_community; \
} \
else \
{ \
open menu_community_viewwarning; \
}
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 5, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
TEMP_CHOICE_BUTTON_ALL( 5, "@MENU_FILESHARE_COMMUNITY_CAPS",
SETUP_ACTION_COMMUNITY,
exec set ui_lobby_desc "@MPUI_COMMUNITY_DESC";,
CLEARUIHINT,
1 1 1 0,
1,
FLYOUT_ARGS( 1, theater_flyout, TEXT_COLOR_NO_HL, ThirdFlyout, NoFlyout ) )
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 5, "@MENU_FILESHARE_COMMUNITY_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
} // theater_flyout
#include "ui_mp/popupstyle.inc"
#include "ui/choices_setup_popmenu.menu"
#undef POPUP_BUTTON_COUNT
#define POPUP_BUTTON_COUNT 1
menuDef
{
SYSTEM_POPUP_SETUP_VIS( customclassesreset, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_NOTICE", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_RESETCUSTOMCLASSES", 1 )
#define LOCAL_ACCEPT_RESET_CAC \
execnow statWriteDDL cacloadouts resetWarningDislayed 1; \
execnow uploadstats; \
play CHOICE_FOCUS_SOUND; \
close customclassesreset; \
open live_flyout;
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_OK", LOCAL_ACCEPT_RESET_CAC, 1, ; )
}
// ====================== single player confirmation =========================
#undef POPUP_BUTTON_COUNT
#define POPUP_BUTTON_COUNT 1
menuDef
{
SYSTEM_POPUP_SETUP_VIS( error_netconnect_popmenu, ;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_NOTICE", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( "@XBOXLIVE_NETCONNECTION", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_EXIT", close self;, 1, ; )
}
#define SETUP_SINGLE_PLAYER \
execnow "set ui_skipMainLockout 0"; \
setdvar ui_changed_exe 1; \
exec "wait;wait;wait"; \
uiScript startSingleplayer;
#undef POPUP_BUTTON_COUNT
#define POPUP_BUTTON_COUNT 2
menuDef
{
SYSTEM_POPUP_SETUP_VIS( single_popmenu, setFocus single_popmenu_2, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_SWITCH_TO_SOLO_COOP_MENU", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_YES", SETUP_SINGLE_PLAYER, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_NO", close self, 1, name single_popmenu_2 )
}
}

View File

@ -0,0 +1,162 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#define CHOICE_GROUP "mods"
#include "ui_mp/menustyle.inc"
#include "ui/choices_setup_common.menu"
#include "ui/framestyle.inc"
#include "ui/frame.inc"
#define MOD_NAME_X 40
#define MOD_NAME_Y ( FRAME_CHOICE_Y_START - 7 )
#define MOD_NAME_HEIGHT 30
#define MOD_NAME_SIZE MOD_IMAGE_WIDTH MOD_NAME_HEIGHT
#define MOD_IMAGE_X MOD_NAME_X
#define MOD_IMAGE_Y (MOD_NAME_Y + MOD_NAME_HEIGHT + 15)
#define MOD_IMAGE_ASPECT_RATIO 1.0
#define MOD_IMAGE_WIDTH 180
#define MOD_IMAGE_HEIGHT (MOD_IMAGE_WIDTH * MOD_IMAGE_ASPECT_RATIO)
#define MOD_IMAGE_SIZE MOD_IMAGE_WIDTH MOD_IMAGE_HEIGHT
#define MOD_DESC_X MOD_NAME_X
#define MOD_DESC_Y (MOD_IMAGE_Y + MOD_IMAGE_HEIGHT + 15)
#define MOD_DESC_SIZE MOD_IMAGE_WIDTH 60
#undef DEFAULT_SLIDE_IN_SPEED
#define DEFAULT_SLIDE_IN_SPEED 180
#undef DEFAULT_SLIDE_OUT_SPEED
#define DEFAULT_SLIDE_OUT_SPEED 180
#undef ON_ESC
#define ON_ESC \
deactivateBlur; \
play uin_navigation_menu_lg_close; \
close self;
#define MOD_DESC_DISPLAY( titleText, imageMat, descText, visArg ) \
PREPROC_TEXT_DRAW_ALL( MOD_NAME_X MOD_NAME_Y MOD_NAME_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
titleText, \
TEXTSIZE_TITLE, 0, 0, ITEM_ALIGN_TOP_CENTER, 1 1 1 1, UI_FONT_EXTRABIG, ITEM_TEXTSTYLE_NORMAL, \
when( visArg );, ; ) \
PREPROC_SHADER_DRAW_VIS_EX( MOD_IMAGE_X MOD_IMAGE_Y MOD_IMAGE_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, \
imageMat, 1 1 1 1, \
when( visArg );, \
; ) \
PREPROC_TEXT_DRAW_VIS_EX( MOD_DESC_X MOD_DESC_Y MOD_DESC_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
descText, \
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_CENTER, 1 1 1 1, \
when( visArg );, autowrapped )
menuDef
{
name select_mod
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
{
activateBlur;
play uin_navigation_menu_lg_open;
setdvar invite_visible "0";
setFocus mod_selection;
}
onFocus { }
onClose
{
deactivateBlur;
setdvar invite_visible "1";
}
onESC
{
ON_ESC
}
FRAME_DEFAULT
FRAME_TITLE_DEFAULT( "@MENU_MODS_CAPS", 1 )
FRAME_SUBTITLE_DEFAULT( "^3" + (locString( "@MENU_MODS_LOADED_CAPS" ) + dvarString( fs_game ) ) + "^7", when(dvarString( fs_game ) != "") )
#define MOD_IMAGE "playlist_custom"
#define MOD_NAME dvarString( ui_mod_name )
#define MOD_DESC dvarString( ui_mod_desc )
MOD_DESC_DISPLAY( MOD_NAME, MOD_IMAGE, MOD_DESC, 1 )
// gametype selection ===========================================
itemDef
{
name mod_selection
type ITEM_TYPE_LISTBOX
feeder FEEDER_MODS
rect (FRAME_CHOICE_X_START-1) ( FRAME_CHOICE_Y_START - 3 ) (FRAME_BUTTON_WIDTH+18) 308 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
elementwidth 30
elementheight 19
noBlinkingHighlight
textfont CHOICE_TEXTFONT
textscale CHOICE_TEXTSIZE
forecolor CHOICE_TEXTCOLOR
focusColor COLOR_TITLE
disablecolor FRAME_GREY_RGB 1
textstyle ITEM_TEXTSTYLE_NORMAL
modal
usePaging
visible 1
// x y w h len horzAlign vertAlign
userarea 2 0 0 (FRAME_BUTTON_WIDTH+1) 19 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* BACKGROUND */
17 0 FRAME_BUTTON_WIDTH 19 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* NAME */
onfocus { play CHOICE_FOCUS_SOUND; }
onListboxSelectionChange
{
play CHOICE_FOCUS_SOUND;
execnow set ui_mod_name ( getmodinfo( "modName" ) );
execnow set ui_mod_desc ( getmodinfo( "modDescr" ) );
}
doubleclick
{
play CHOICE_ACTION_SOUND;
open load_mod_confirm_popmenu
}
}
#undef BUTTON_SPACING
#define BUTTON_SPACING 20
#define RESET_BUTTON_OFFSET ( getTextWidth( locString( "@PLATFORM_BACK" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) + 8 + BUTTON_SPACING )
#ifdef PC
FRAME_BACK_BUTTON_DEFAULT_ACTION( ON_ESC )
#else //#ifdef PC
FRAME_BACK_BUTTON_DEFAULT
#endif //#ifdef PC
#include "ui/safearea.menu"
}
// POPUPS
#include "ui_mp/popupstyle.inc"
#include "ui/choices_setup_popmenu.menu"
#undef POPUP_BUTTON_COUNT
#define POPUP_BUTTON_COUNT 2
{
menuDef
{
SYSTEM_POPUP_SETUP_VIS( load_mod_confirm_popmenu, setFocus loadmod_confirm_popmenu2, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_MOD_CONFIRM", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( dvarString( "ui_mod_name" ), 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_YES", close self; uiScript RunMod;, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_NO", close self, 1, name loadmod_confirm_popmenu_2 )
}
}

View File

@ -0,0 +1,701 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#define OPTIONS_STYLE 1
#include "ui_mp/menustyle.inc"
#include "ui/choices_setup_common.menu"
#include "ui/framestyle.inc"
#include "ui/frame.inc"
#undef CHOICE_BUTTON_NAME
#define CHOICE_BUTTON_NAME "options_multi_"
#undef MENUDEF_NAME
#define MENUDEF_NAME options_multi
#undef OPTIONS_MULTI_HEIGHT
#undef OPTIONS_MULTI_WIDTH
#define OPTIONS_MULTI_HEIGHT 332
#define OPTIONS_MULTI_WIDTH OPTIONS_MULTI_HEIGHT * FRAME_ASPECT_RATIO
{
menuDef
{
name "options_multi"
fullScreen 0
rect 0 0 640 480
focusColor COLOR_FOCUSED
soundloop ""
onOpen
{
exec "setfromdvar ui_name name";
LOCAL_CLOSE_ALL_BUT( options_multi )
setLocalVarBool ui_hideBack 1;
if (IsInGame())
{
showMenu "pausedbkgnd";
}
else
{
activateBlur;
}
}
onClose
{
if (IsInGame())
{
hideMenu "pausedbkgnd";
}
else
{
deactivateBlur;
}
setLocalVarBool ui_hideBack 0;
exec "setfromdvar name ui_name";
uiScript "updateClanInProfile"
}
onESC
{
close self;
open options_new_pc;
}
PC_TAB_SWITCH_ACTIONS( options_new_pc, options_controls_new_pc, options_controls_new_pc )
#include "ui_mp/leftside_options.inc"
#undef CHOICE_X_START
#undef CHOICE_Y_START
#undef CHOICE_HORIZONTAL_ALIGN
#undef CHOICE_VERTICAL_ALIGN
#undef CHOICE_DVAR_EXTRA_WIDTH
#undef CHOICE_TEXT_OFFSET_X
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
#define CHOICE_X_START ((-OPTIONS_MULTI_WIDTH/2) - 75)
#define CHOICE_Y_START ((-OPTIONS_MULTI_HEIGHT/2) + 32)
#define CHOICE_DVAR_EXTRA_WIDTH 120
#define CHOICE_TEXT_OFFSET_X -10
#undef CHOICE_TEXTSTYLE
#undef CHOICE_TEXTSIZE
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
#undef CHOICE_TEXT_COLOR_NO_HL
#undef CHOICE_TEXT_COLOR_HL
#undef CHOICE_CAPTION_TEXT_COLOR_NO_HL
#undef CHOICE_CAPTION_TEXT_COLOR_HL
#define CHOICE_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
#define CHOICE_TEXT_COLOR_HL 1 1 1 1
#define CHOICE_CAPTION_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
#define CHOICE_CAPTION_TEXT_COLOR_HL 0 0 0 1
FRAME_CHOICE_SECTION_TITLE_VIS( 21, "@MENU_MULTIPLAYER_CAPS", ( dvarint( ui_multiplayer ) ) )
FRAME_CHOICE_SECTION_TITLE_VIS( 21, "@MENU_COOPERATIVE_OPTIONS_CAPS", ( !dvarint( ui_multiplayer ) ) )
FRAME_CHOICE_DVARFLOATLIST_VIS( 22, "@MENU_TEAM_INDICATOR_CAPS", team_indicator, { "@MENU_INDICATOR_FULL_CAPS" 0 "@MENU_INDICATOR_ABBREVIATED_CAPS" 1 "@MENU_INDICATOR_ICON_CAPS" 2 "@MENU_INDICATOR_ALTERNATE_CAPS" 3 }, ;, 1 )
FRAME_CHOICE_DVARYESNO_VIS( 23, "@MENU_ALLOW_DOWNLOAD_CAPS", cl_allowdownload, ;,( dvarint( ui_multiplayer ) ) )
FRAME_CHOICE_DVARYESNO_VIS( 24, "@PATCH_OPTIONS_COLOR_FRIENDS_CAPS", cg_drawFriendInColor, ;,( dvarint( ui_multiplayer ) ) )
FRAME_CHOICE_DVARYESNO_VIS( 25, "@PLATFORM_OPTIONS_RESTRICT_EMBLEMS_CAPS", live_restrictEmblems, ;,( dvarint( ui_multiplayer ) ) )
//FRAME_CHOICE_SEPARATOR( CHOICE_SEP_1 )
}
}
/*
{
menuDef
{
name options_multi
fullScreen 0
rect 0 0 370 480 // Size and position of the menu
focusColor COLOR_FOCUSED // Menu focus color for text and items
soundloop ""
onOpen
{
exec "setfromdvar ui_name name"
setdvar ui_background_gradient_show "1";
}
onClose
{
exec "setfromdvar name ui_name"
}
onESC
{
close options_multi;
}
itemDef
{
type ITEM_TYPE_TEXT
origin ORIGIN_TITLE
forecolor 1 1 1 1
text "@MENU_MULTIPLAYER"
textfont UI_FONT_NORMAL
textscale TEXTSIZE_TITLE
visible 1
decoration
}
itemDef
{
name misc
type ITEM_TYPE_BUTTON
text "@MENU_VOICE_CHAT_BUTTON"
rect 0 0 1 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
decoration
}
itemDef
{
name misc
type ITEM_TYPE_BUTTON
text "@MENU_VOTE_YES"
rect 0 15 1 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
decoration
}
itemDef
{
name misc
type ITEM_TYPE_BUTTON
text "@MENU_VOTE_NO"
rect 0 30 1 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
decoration
}
itemDef
{
name misc
type ITEM_TYPE_BUTTON
text "@MENU_CHAT"
rect 0 45 1 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
decoration
}
itemDef
{
name misc
type ITEM_TYPE_BUTTON
text "@MENU_TEAM_CHAT"
rect 0 60 1 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
decoration
}
itemDef
{
name misc
type ITEM_TYPE_BUTTON
text "@MENU_QUICK_CHAT"
rect 0 75 1 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
decoration
}
itemDef
{
name misc
type ITEM_TYPE_BUTTON
text "@MENU_ALLOW_DOWNLOAD"
rect 0 90 1 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
decoration
}
itemDef
{
name misc
type ITEM_TYPE_BUTTON
text "@MENU_DRAW_HUD"
rect 0 105 1 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
decoration
}
itemDef
{
name misc
type ITEM_TYPE_BUTTON
text "@MENU_CONNECTION"
rect 0 120 1 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
decoration
}
itemDef
{
name misc
type ITEM_TYPE_BUTTON
text "@MENU_WEAPON_MENU"
rect 0 135 1 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
decoration
}
itemDef
{
name player_name
type ITEM_TYPE_BUTTON
text "@MENU_PLAYER_NAME"
rect 0 150 1 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
decoration
}
itemDef
{
name misc
type ITEM_TYPE_BUTTON
text "@MPUI_PUNKBUSTER"
rect 0 165 1 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
decoration
}
itemDef
{
name misc
type ITEM_TYPE_BIND
text " "
dvar "+talk"
rect 0 0 320 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textalignx 170
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
mouseEnter
{
play "mouse_over";
show keyBindStatus
}
mouseexit { hide keyBindStatus }
action { play CHOICE_ACTION_SOUND; }
}
itemDef
{
name misc
type ITEM_TYPE_BIND
text " "
dvar "vote yes"
rect 0 15 320 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textalignx 170
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
mouseEnter
{
play "mouse_over";
show keyBindStatus
}
mouseexit { hide keyBindStatus }
action { play CHOICE_ACTION_SOUND; }
}
itemDef
{
name misc
type ITEM_TYPE_BIND
text " "
dvar "vote no"
rect 0 30 320 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textalignx 170
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
mouseEnter
{
play "mouse_over";
show keyBindStatus
}
mouseexit { hide keyBindStatus }
action { play CHOICE_ACTION_SOUND; }
}
itemDef
{
name misc
type ITEM_TYPE_BIND
text " "
dvar "chatmodepublic"
rect 0 45 320 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textalignx 170
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
mouseEnter
{
play "mouse_over";
show keyBindStatus
}
mouseexit { hide keyBindStatus }
action { play CHOICE_ACTION_SOUND; }
}
itemDef
{
name misc
type ITEM_TYPE_BIND
text " "
dvar "chatmodeteam"
rect 0 60 320 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textalignx 170
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
mouseEnter
{
play "mouse_over";
show keyBindStatus
}
mouseexit { hide keyBindStatus }
action { play CHOICE_ACTION_SOUND; }
}
itemDef
{
name misc
type ITEM_TYPE_BIND
text " "
dvar "mp_QuickMessage"
rect 0 75 320 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textalignx 170
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
mouseEnter
{
play "mouse_over";
show keyBindStatus
}
mouseexit { hide keyBindStatus }
action { play CHOICE_ACTION_SOUND; }
}
itemDef
{
name misc
type ITEM_TYPE_YESNO
text " "
dvar "cl_allowdownload"
rect 0 90 320 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textalignx 170
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
action { play CHOICE_ACTION_SOUND; }
mouseEnter
{
play "mouse_over";
}
}
itemDef
{
name misc
type ITEM_TYPE_YESNO
text " "
dvar "hud_enable"
rect 0 105 320 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textalignx 170
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
action { play CHOICE_ACTION_SOUND; }
mouseEnter
{
play "mouse_over";
}
}
itemDef
{
name misc
type ITEM_TYPE_MULTI
text " "
dvar "rate"
dvarFloatList { "@MENU_ISDN" 5000 "@MENU_LAN_CABLE_XDSL" 25000 }
rect 0 120 320 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textalignx 170
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
action { play CHOICE_ACTION_SOUND; }
mouseEnter
{
play "mouse_over";
}
}
itemDef
{
name misc
type ITEM_TYPE_BIND
text " "
dvar "openscriptmenu ingame changeweapon"
rect 0 135 320 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textalignx 170
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
action { play CHOICE_ACTION_SOUND; }
mouseEnter
{
play "mouse_over";
}
}
itemDef
{
name player_name
type ITEM_TYPE_EDITFIELD
text " "
dvar "ui_name"
rect 0 150 320 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textalignx 170
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
maxChars 31
maxpaintchars 18
mouseEnter
{
play "mouse_over";
}
}
itemDef
{
name misc
type ITEM_TYPE_YESNO
text " "
dvar "cl_punkbuster"
rect 0 165 320 13
origin 50 120
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textalignx 170
textaligny 11
textscale 0.25
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
visible 1
action { play CHOICE_ACTION_SOUND; }
mouseEnter
{
play "mouse_over";
}
}
///////////////////////////////////////////////////////////
itemDef
{
name cdkeybt
text "@MENU_ENTER_KEY_CODE"
type ITEM_TYPE_BUTTON
style WINDOW_STYLE_FILLED
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 102 330 150 20
textalign ITEM_ALIGN_CENTER
textscale .3
textaligny 14
forecolor .9 .9 .95 1
visible 1
textfont UI_FONT_NORMAL
mouseEnter
{
play "mouse_over";
}
action
{
play CHOICE_ACTION_SOUND;
open cdkey_menu;
}
}
itemDef
{
name keyBindStatus
rect 0 350 360 15
ownerdraw UI_KEYBINDSTATUS
text " "
style WINDOW_STYLE_FILLED
backcolor 0 0 0 0
forecolor .9 .9 .9 1
textscale .20
textalignx -12
textalign ITEM_ALIGN_CENTER
textaligny 12
visible 0
decoration
}
}
}//
*/

View File

@ -0,0 +1,7 @@
// MP patch menu defs
//
{
// loadMenu { "ui/patch.menu" }
// loadMenu { "ui/patch_popups.menu" }
loadMenu { "ui_mp/mods.menu" }
}

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, ; )
}
}

View File

@ -0,0 +1,190 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#include "ui/framestyle.inc"
#include "ui_mp/newframe.inc"
#include "ui/choices_setup_common.menu"
#include "ui_mp/custom_mode_layout.inc"
#include "ui_mp/custom_mode.inc"
#undef CHOICE_Y_START
#define CHOICE_Y_START -150
#undef CHOICE_X_START
#define CHOICE_X_START -200
#ifdef PC
#undef CHOICE_TEXTSIZE
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
#endif //#ifdef PC
#define SERVERSETTINGS_NAME_X 40
#define SERVERSETTINGS_NAME_Y (80)
#define SERVERSETTINGS_NAME_SIZE SERVERSETTINGS_IMAGE_WIDTH 30
#define SERVERSETTINGS_IMAGE_X SERVERSETTINGS_NAME_X
#define SERVERSETTINGS_IMAGE_Y (CHOICE_Y_START - 170)
#define SERVERSETTINGS_IMAGE_ASPECT_RATIO 1.0
#define SERVERSETTINGS_IMAGE_WIDTH 180
#define SERVERSETTINGS_IMAGE_HEIGHT (SERVERSETTINGS_IMAGE_WIDTH * SERVERSETTINGS_IMAGE_ASPECT_RATIO)
#define SERVERSETTINGS_IMAGE_SIZE SERVERSETTINGS_IMAGE_WIDTH SERVERSETTINGS_IMAGE_HEIGHT
#define SERVERSETTINGS_DESC_X 0
#define SERVERSETTINGS_DESC_Y (CHOICE_Y_START + 20)
#define SERVERSETTINGS_DESC_SIZE 244 60
#undef DEFAULT_SLIDE_IN_SPEED
#define DEFAULT_SLIDE_IN_SPEED 180
#undef DEFAULT_SLIDE_OUT_SPEED
#define DEFAULT_SLIDE_OUT_SPEED 180
#define CHOICE_BUTTON_NAME "SERVERSETTINGS_"
#define MENUDEF_NAME server_settings
#define SERVERSETTINGS_FRAME_WIDTH NEW_FRAME_DEFAULT_WIDTH
#define SERVERSETTINGS_FRAME_HEIGHT NEW_FRAME_DEFAULT_HEIGHT
#undef ON_ESC
#define ON_ESC \
play uin_navigation_menu_lg_close; \
close self;
menuDef
{
name MENUDEF_NAME
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
{
activateBlur;
play uin_navigation_menu_lg_open;
setdvar invite_visible "0";
}
onFocus { }
onClose
{
deactivateBlur;
setdvar invite_visible "1";
}
onESC
{
ON_ESC
}
NEW_FRAME( SERVERSETTINGS_FRAME_WIDTH, SERVERSETTINGS_FRAME_HEIGHT )
NEW_FRAME_TITLE( SERVERSETTINGS_FRAME_WIDTH, SERVERSETTINGS_FRAME_HEIGHT, "@MENU_SERVER_SETTINGS_CAPS", 1 )
// Server Name
FRAME_CHOICE_DVAREDIT_FOCUS_VIS_EX( 2, "@PATCH_SERVER_NAME_CAPS",
"sv_hostname", 20, 20,
;,
SET_CHOICE_DESC( "", "@PATCH_SERVER_NAME_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// Minimum Ping
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( 4, "@PATCH_MINIMUM_PING_CAPS",
"sv_minping", 4,
;,
SET_CHOICE_DESC( "", "@PATCH_MINIMUM_PING_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// Maximum Ping
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( 5, "@PATCH_MAXIMUM_PING_CAPS",
"sv_maxping", 4,
;,
SET_CHOICE_DESC( "", "@PATCH_MAXIMUM_PING_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// Password
FRAME_CHOICE_DVAREDIT_FOCUS_VIS_EX( 6, "@PATCH_PASSWORD1_CAPS",
"g_password", 12, 12,
;,
SET_CHOICE_DESC( "", "@PATCH_PASSWORD_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// Voice Chat Enabled
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 7, "@MENU_VOICECHAT_CAPS",
"sv_voice",
;,
SET_CHOICE_DESC( "", "@PATCH_VOICECHAT_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// Team Change Enabled
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 8, "@PATCH_MP_TEAMCHANGE_ALLOW_CAPS",
"g_allow_teamchange",
;,
SET_CHOICE_DESC( "", "@PATCH_MP_TEAMCHANGE_ALLOW_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// Team Change Keep Balanced
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 9, "@PATCH_MP_TEAMCHANGE_KEEPBALANCED_CAPS",
"g_teamchange_keepbalanced",
;,
SET_CHOICE_DESC( "", "@PATCH_MP_TEAMCHANGE_KEEPBALANCED_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// Team Change Grace Period
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( 10, "@PATCH_MP_TEAMCHANGE_GRACEPERIOD_CAPS",
"g_teamchange_graceperiod", 4,
;,
SET_CHOICE_DESC( "", "@PATCH_MP_TEAMCHANGE_GRACEPERIOD_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// Auto-Balance Enabled
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 11, "@PATCH_AUTOBALANCE_TEAMS_CAPS",
"scr_teambalance",
;,
SET_CHOICE_DESC( "", "@PATCH_AUTO_BALANCE_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// Voting Enabled
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 12, "@PATCH_ALLOW_VOTING_CAPS",
"g_allowvote",
;,
SET_CHOICE_DESC( "", "@PATCH_ALLOW_VOTING_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// Pre-game enabled
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 13, "@PATCH_PREGAME_ENABLED_CAPS",
"g_pregame_enabled",
;,
SET_CHOICE_DESC( "", "@PATCH_PRE_MATCH_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// Pre-game min players
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( 14, "@PATCH_PREGAME_MINPLAYERS_CAPS",
"party_minplayers", 3,
;,
SET_CHOICE_DESC( "", "@PATCH_MINIMUM_PLAYERS_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// Maximum Players
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( 15, "@PATCH_MAXIMUM_PLAYERS_CAPS",
"sv_maxclients", 3,
;,
SET_CHOICE_DESC( "", "@PATCH_MAXIMUM_PLAYERS_DESC", "" ),
CLEAR_CHOICE_DESC, 1, ; )
// VAC
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 16, "@PLATFORM_VAC_CAPS",
"sv_vac",
;,
SET_CHOICE_DESC( "", "@PATCH_VALVE_ANTI_CHEAT_DESC", "" ),
CLEAR_CHIOCE_DESC, 1, ; )
HINT_TEXT_ALL_RECT( CHOICE_X_START, ( (SERVERSETTINGS_FRAME_HEIGHT / 2) - 30 ), ( CHOICE_SIZE_X ), dvarString( ui_choice_desc ), 1 1 1 1, ( MenuHasFocus() && dvarString( ui_choice_desc ) != "" ), ; )
NEW_FRAME_BACK_BUTTON_ACTION( SERVERSETTINGS_FRAME_WIDTH, SERVERSETTINGS_FRAME_HEIGHT, ON_ESC )
#include "ui/safearea.menu"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,355 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#include "ui/framestyle.inc"
#include "ui_mp/newframe.inc"
#include "ui/frame.inc"
#include "ui_mp/menustyle.inc"
#include "ui_mp/overlaybg.inc"
#include "ui/choices_setup_common.menu"
#include "ui_mp/popup_player_info.inc"
#include "ui_mp/stats_info.inc"
#ifdef PC
#include "ui_mp/popupstyle.inc"
#include "ui/choices_setup_popmenu.menu"
#undef POPUP_BUTTON_COUNT
#define POPUP_BUTTON_COUNT 3
menuDef
{
SYSTEM_POPUP_SETUP_VIS( "pc_editclantag", setdvar ui_clantag_new dvarString( clanName ); setFocus nameEntry;, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MPUI_EDIT_CLAN_TAG_CAPS", 1 )
itemDef
{
name nameEntry
TYPE ITEM_TYPE_ALPHANUMERICFIELD
text "@MENU_NAME1"
dvar "ui_clantag_new"
rect CHOICE_RECT( 1 )
textaligny 2
maxchars 4
maxpaintchars 4
textalign ITEM_ALIGN_MIDDLE_LEFT
textfont UI_FONT_NORMAL
textscale TEXTSIZE_DEFAULT
forecolor .9 .9 .9 1
style WINDOW_STYLE_FILLED
backcolor 0 0 0 .3
visible 1
mouseenter { show keyBindStatus; play CHOICE_FOCUS_SOUND; }
mouseexit { hide keyBindStatus; setfocus ok_button; }
accept { }
}
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_OK", execnow setclanname; close self;, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MENU_CANCEL", close self;, 1, ; )
}
#endif
#define PLAYER_CARD_CLAN_TAG_MENU_HEIGHT NEW_FRAME_DEFAULT_HEIGHT
#define PLAYER_CARD_CLAN_TAG_MENU_WIDTH ( PLAYER_CARD_CLAN_TAG_MENU_HEIGHT * FRAME_ASPECT_RATIO )
#undef CHOICE_X_START
#define CHOICE_X_START ( -PLAYER_CARD_CLAN_TAG_MENU_WIDTH / 2 + 15 )
#undef CHOICE_Y_START
#define CHOICE_Y_START ( -PLAYER_CARD_CLAN_TAG_MENU_HEIGHT / 2 + 15 + NEW_FRAME_BG_Y_OFFSET( PLAYER_CARD_CLAN_TAG_MENU_HEIGHT ) )
#undef CHOICE_GROUP
#define CHOICE_GROUP "playercard"
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X NEW_FRAME_BUTTON_WIDTH
#undef CHOICE_TEXTSTYLE
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
#undef CHOICE_TEXTCOLOR
#define CHOICE_TEXTCOLOR NEW_FRAME_COMMON_TEXT_COLOR
#undef CHOICE_HORIZONTAL_ALIGN
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
#undef CHOICE_VERTICAL_ALIGN
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
#ifdef XENON
#define SELECT_ICON "ui_button_xenon_3d_a_32x32"
#endif
#ifdef PS3
#define SELECT_ICON "ui_button_ps3_x_32x32"
#endif
#define SET_CLANTAG_HINT \
if ( isclantagfeaturelocked( GetCurrentClanTagFeature() ) ) \
{ \
SET_HINT_TEXT( (locString( CLASS_PRESTIGE_UNLOCK_DESC, GetClanTagFeaturePlevel( GetCurrentClanTagFeature() ) )) ) \
} \
else \
{ \
CLEARUIHINT \
}
#ifdef PC
#define PLAYER_CARD_LISTBOX_RECT_EDIT (CHOICE_X_START-3) (CHOICE_Y_START+NEW_FRAME_BUTTON_HEIGHT+2) (CHOICE_SIZE_X+3) 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
#define PLAYER_CARD_LISTBOX_RECT (CHOICE_X_START-3) (CHOICE_Y_START+NEW_FRAME_BUTTON_HEIGHT*4+2) (CHOICE_SIZE_X+3) 150 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
#else //#ifdef PC
#define PLAYER_CARD_LISTBOX_RECT_EDIT (CHOICE_X_START-3) (CHOICE_Y_START+NEW_FRAME_BUTTON_HEIGHT+2) (CHOICE_SIZE_X+3) 250 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
#define PLAYER_CARD_LISTBOX_RECT (CHOICE_X_START-3) (CHOICE_Y_START+NEW_FRAME_BUTTON_HEIGHT*4+2) (CHOICE_SIZE_X+3) 250 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
#endif //#ifdef PC
#undef LIST_X_START
#define LIST_X_START ( -PLAYER_CARD_CLAN_TAG_MENU_WIDTH / 2 + 15 )
#undef LIST_Y_START
#define LIST_Y_START ( -PLAYER_CARD_CLAN_TAG_MENU_HEIGHT / 2 + 15 + NEW_FRAME_BG_Y_OFFSET( PLAYER_CARD_CLAN_TAG_MENU_HEIGHT ) )
#undef LIST_HEIGHT
#define LIST_HEIGHT (PLAYER_CARD_CLAN_TAG_MENU_HEIGHT-120)
#undef LIST_WIDTH
#define LIST_WIDTH (PLAYER_CARD_CLAN_TAG_MENU_WIDTH/2-40)
#define PLAYER_EMBLEM_BG_SIZE (190)
#define PLAYER_EMBLEM_SIZE (PLAYER_EMBLEM_BG_SIZE - 20)
#define PLAYER_EMBLEM_X_START 70
#define PLAYER_EMBLEM_Y_START (CHOICE_Y_START+20)
#define PLAYER_CARD_COMMON_ITEMS \ \
/* PLAYER NAME */ \
PLAYER_CLAN_TAG_AND_NAME( PLAYER_EMBLEM_X_START, (PLAYER_EMBLEM_Y_START-18), 1 ) \
/* BACKGROUND FOR EMBLEM */ \
itemDef \
{ \
rect PLAYER_EMBLEM_X_START PLAYER_EMBLEM_Y_START PLAYER_EMBLEM_BG_SIZE PLAYER_EMBLEM_BG_SIZE CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
style WINDOW_STYLE_SHADER_FRAMED \
frame 16 0.5 FRAME_SIDE_ALL \
background "menu_mp_lobby_frame_circle" \
forecolor 0 0 0 0.4 \
visible 1 \
decoration \
} \
/* PLAYER EMBLEM */ \
PLAYER_EMBLEM_ALL( (PLAYER_EMBLEM_X_START+10), (PLAYER_EMBLEM_Y_START+10), PLAYER_EMBLEM_SIZE, PLAYER_EMBLEM_SIZE, 1 )
#ifdef CONSOLE
#define CLAN_TAG_SPECIAL_ESC( actionArg ) \
execKeyInt KEY_ESCAPE \
{ \
play CHOICE_FOCUS_SOUND; \
actionArg; \
}
#else // #ifdef CONSOLE
#define CLAN_TAG_SPECIAL_ESC( actionArg )
#endif //#ifdef CONSOLE
#ifdef PC
#define CLAN_TAG_LIST_PC_ACTIONS \
mouseenter \
{ \
setfocus "clan_tag_list" \
}
#else //#ifdef PC
#define CLAN_TAG_LIST_PC_ACTIONS
#endif //#ifdef PC
#define CLAN_TAG_LIST( feederType, rectArg, execCommand, onActionArg, selectionChangeArgs, visArg, extraArgs ) \
itemDef\
{ \
name "clan_tag_list" \
type ITEM_TYPE_LISTBOX \
feeder feederType \
rect rectArg \
origin 0 0 \
elementwidth 30 \
elementheight 19 \
elementtype LISTBOX_TEXT \
textstyle ITEM_TEXTSTYLE_NORMAL \
textfont UI_FONT_NORMAL \
textscale TEXTSIZE_DEFAULT \
textalignx 12 \ \
textaligny 0 \
forecolor CHOICE_TEXTCOLOR \
focusColor CHOICE_TEXTCOLOR \
disableColor CHOICE_TEXTCOLOR \
noscrollbars \
selectIcon SELECT_ICON \
outlineColor 1 1 1 1 \
elementHighlightColor 0 0 0 1 \
elementBackgroundColor NEW_FRAME_TRANSPARENCY \
modal \
noBlinkingHighlight \
visible visArg \
userarea 4 0 0 CHOICE_SIZE_X 17 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* Name */ \
20 1 15 15 16 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* Image */ \
(CHOICE_SIZE_X-60) 0 50 17 24 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* Cost */ \
(CHOICE_SIZE_X+2) (17/2-LOCK_SIZE/2) LOCK_SIZE LOCK_SIZE 24 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* Lock */ \
onfocus \
{ \
play CHOICE_FOCUS_SOUND; \
SET_CLANTAG_HINT \
} \
onListboxSelectionChange \
{ \
play CHOICE_FOCUS_SOUND; \
selectionChangeArgs \
SET_CLANTAG_HINT \
} \
doubleclick \
{ \
if( IsClanTagFeaturePurchased( GetCurrentClanTagFeature() ) ) \
{ \
execNow setClanTag ( GetCurrentClanTagFeature() ); \
} \
elseif( !IsClanTagFeatureLocked( GetCurrentClanTagFeature() ) && ( GetClanTagFeatureCost( GetCurrentClanTagFeature() ) <= GetStatByName( "CODPOINTS" ) ) ) \
{ \
open PurchaseClanTagFeatureConfirmation; \
} \
} \
execKeyInt BUTTON_X \
{ \
} \
CLAN_TAG_SPECIAL_ESC( onActionArg ) \
CLAN_TAG_LIST_PC_ACTIONS \
extraArgs \
}
#ifdef PC
#define EDIT_CLAN_TAG_ACTION \
doubleclick \
{ \
open pc_editclantag; \
}
#else //#ifdef PC
#define EDIT_CLAN_TAG_ACTION \
doubleclick \
{ \
execNow editclanname; \
}
#endif //#ifdef PC
#ifdef PC
#define CLAN_TAG_LIST_EDIT_PC_ACTIONS \
mouseenter \
{ \
setfocus "clan_tag_list_edit" \
}
#else //#ifdef PC
#define CLAN_TAG_LIST_EDIT_PC_ACTIONS
#endif //#ifdef PC
#define CLAN_TAG_LIST_EDIT( feederType, rectArg, execCommand, onActionArg, selectionChangeArgs, visArg, extraArgs ) \
itemDef\
{ \
name "clan_tag_list_edit" \
type ITEM_TYPE_LISTBOX \
feeder feederType \
rect rectArg \
origin 0 0 \
elementwidth 30 \
elementheight 19 \
elementtype LISTBOX_TEXT \
textstyle ITEM_TEXTSTYLE_NORMAL \
textfont UI_FONT_NORMAL \
textscale TEXTSIZE_DEFAULT \
textalignx 22 \
textaligny 0 \
forecolor CHOICE_TEXTCOLOR \
focusColor CHOICE_TEXTCOLOR \
disableColor CHOICE_TEXTCOLOR \
noscrollbars \
selectIcon SELECT_ICON \
outlineColor 1 1 1 1 \
elementHighlightColor 0 0 0 1 \
elementBackgroundColor NEW_FRAME_TRANSPARENCY \
modal \
noBlinkingHighlight \
visible visArg \
onfocus \
{ \
play CHOICE_FOCUS_SOUND; \
setdvar ui_show_arrow "0"; \
} \
onListboxSelectionChange \
{ \
play CHOICE_FOCUS_SOUND; \
selectionChangeArgs \
setdvar ui_show_arrow "0"; \
} \
EDIT_CLAN_TAG_ACTION \
execKeyInt BUTTON_X \
{ \
} \
CLAN_TAG_SPECIAL_ESC( onActionArg ) \
CLAN_TAG_LIST_EDIT_PC_ACTIONS \
extraArgs \
}
#undef ON_ESC
#define ON_ESC \
execnow "uploadstats"; \
execnow changemenucloseslidedirection menu_playercards_clantag MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; \
close self; \
open menu_playercard_self;
menuDef
{
name menu_playercards_clantag
rect 0 0 640 480 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN
focuscolor COLOR_FOCUSED
style WINDOW_STYLE_FILLED
control MENU_CONTROL_OPENER
priority MENU_PRI_ONTOP
soundloop MENU_MUSIC
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
openSlideDirection MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT
closeSlideDirection MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT
popup
onOpen
{
setLocalVarString ui_choicegroup CHOICE_GROUP;
focusFirst;
}
onEsc
{
ON_ESC
}
onFocus
{
setLocalVarString ui_choicegroup CHOICE_GROUP;
activateBlur;
}
onClose
{
deactivateBlur;
}
NEW_FRAME( PLAYER_CARD_CLAN_TAG_MENU_WIDTH, PLAYER_CARD_CLAN_TAG_MENU_HEIGHT )
// Title
NEW_FRAME_TITLE( PLAYER_CARD_CLAN_TAG_MENU_WIDTH, PLAYER_CARD_CLAN_TAG_MENU_HEIGHT, "@MPUI_CLAN_TAG_CAPS", 1 )
PLAYER_INFO_VIS( PLAYER_CARD_CLAN_TAG_MENU_WIDTH, PLAYER_CARD_CLAN_TAG_MENU_HEIGHT, 1 )
/* Label for "Edit clan tag" */
PREPROC_TEXT_DRAW( CHOICE_X_START (CHOICE_Y_START+2) 100 10 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0,
"@MPUI_EDIT_CLAN_TAG_CAPS",
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_LT_GREY_RGB 1 )
// CLAN TAG BUTTON
CLAN_TAG_LIST_EDIT( FEEDER_CLANTAG_FEATURES_EDIT, PLAYER_CARD_LISTBOX_RECT_EDIT, ( dvarString( ui_execString ) );, ;, ;, 1, ; )
/* Label for "Clan Tag color" */
PREPROC_TEXT_DRAW( CHOICE_X_START (CHOICE_Y_START+NEW_FRAME_BUTTON_HEIGHT*3+2) 100 10 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0,
"@MPUI_CLAN_TAG_COLOR_CAPS",
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_LT_GREY_RGB 1 )
// CLAN TAG LIST
CLAN_TAG_LIST( FEEDER_CLANTAG_FEATURES, PLAYER_CARD_LISTBOX_RECT, ( dvarString( ui_execString ) );, ;, ;, 1, ; )
PLAYER_CARD_COMMON_ITEMS
HINT_TEXT( 13, CHOICE_X_START, dvarString( ui_hint_text ), dvarBool( ui_show_arrow ) )
#ifdef PC
NEW_FRAME_BACK_BUTTON_ACTION( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, ON_ESC; )
#else //#ifdef PC
NEW_FRAME_BACK_BUTTON( PLAYER_CARD_CLAN_TAG_MENU_WIDTH, PLAYER_CARD_CLAN_TAG_MENU_HEIGHT )
#endif //#ifdef PC
#include "ui/safearea.menu"
}

View File

@ -0,0 +1,166 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#include "ui/framestyle.inc"
#include "ui_mp/newframe.inc"
#define LIST_ELEM_HEIGHT 18
#define MAX_PLAYERS 32
#define PLAYERLIST_HEIGHT ((MAX_PLAYERS/2)*LIST_ELEM_HEIGHT)
#define PLAYERLIST_WIDTH 235
#define PLAYERLIST_SPACING 56
#define PLAYERLIST_A_X_START (-PLAYERLIST_WIDTH-(PLAYERLIST_SPACING/2))
#define PLAYERLIST_B_X_START (PLAYERLIST_SPACING/2)
#define PLAYERLIST_Y_START (-PLAYERLIST_HEIGHT/2)
#define PLAYERLIST_A_RECT PLAYERLIST_A_X_START PLAYERLIST_Y_START PLAYERLIST_WIDTH PLAYERLIST_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
#define PLAYERLIST_B_RECT PLAYERLIST_B_X_START PLAYERLIST_Y_START PLAYERLIST_WIDTH PLAYERLIST_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
#define RANK_BG_WIDTH 33
#define COLUMN_SCORE_WIDTH 34
#define MUTE_ICON_WIDTH LIST_ELEM_HEIGHT
#define FRIEND_ICON_WIDTH LIST_ELEM_HEIGHT
#define FRIEND_ICON_START_X ( PLAYERLIST_WIDTH - FRIEND_ICON_WIDTH - 4 )
#define MUTE_ICON_START_X ( FRIEND_ICON_START_X - MUTE_ICON_WIDTH - 4 )
#define COLUMN_NAME_START_X 34
#define COLUMN_NAME_WIDTH ( FRIEND_ICON_START_X - COLUMN_NAME_START_X )
#define IN_PREGAME ( dvarbool( ui_pregame ) )
#include "ui_mp/menustyle.inc"
#include "ui_mp/choices_setup_teams.menu"
#undef ON_ESC
#define ON_ESC \
close self; \
open class;
#define AAR_HEIGHT NEW_FRAME_DEFAULT_HEIGHT
#define AAR_WIDTH ( AAR_HEIGHT * FRAME_ASPECT_RATIO )
#define AAR_AWARD_IMAGE_COLOR 0.8 0.68 0.47 0.6
#define AAR_AWARD_IMAGE_COLOR_GREY 1 1 1 0.3
#define AAR_BODY_X_START ( -AAR_WIDTH / 2 + 15 )
#define AAR_BODY_Y_START ( -AAR_HEIGHT / 2 + 15 + NEW_FRAME_BG_Y_OFFSET( AAR_HEIGHT ) )
#define AAR_SCOREBOARD_COLUMN_SPACING 70
#define AAR_SCOREBOARD_COLUMN_4_X 420
#define AAR_SCOREBOARD_COLUMN_3_X ( AAR_SCOREBOARD_COLUMN_4_X - AAR_SCOREBOARD_COLUMN_SPACING )
#define AAR_SCOREBOARD_COLUMN_2_X ( AAR_SCOREBOARD_COLUMN_3_X - AAR_SCOREBOARD_COLUMN_SPACING )
#define AAR_SCOREBOARD_COLUMN_1_X ( AAR_SCOREBOARD_COLUMN_2_X - 50 )
#define AAR_SCOREBOARD_COLUMN_SCORE_X ( AAR_SCOREBOARD_COLUMN_1_X - 50 )
#define AAR_DBLCLICK_ACTION( menuName ) \
play CHOICE_FOCUS_SOUND; \
execnow set selectedPlayerXuid ( getfeederdata( "xuid" ) ); \
execnow set selectedFriendName ( getfeederdata( "name" ) ); \
if( (getfeederdata( "xuid" ) != getXuid()) && (getfeederdata( "xuid" ) != 0) ) \
{ \
hideMenu self; \
if (IsInGame()) \
{ \
showMenu "pausedbkgnd"; \
} \
execnow changemenuopenslidedirection menu_playercard MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT; \
execNow openMenu menu_playercard; \
}
#define AAR_SCOREBOARD_LISTBOX( scoreboard_name, feederId, x, y, w, h, visArg, extraArgs, menuName ) \
itemDef \
{ \
name scoreboard_name \
type ITEM_TYPE_LISTBOX \
feeder feederId \
rect x y w h HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
origin 0 0 \
elementwidth 30 \
elementheight 17 \
elementtype LISTBOX_TEXT \
textstyle ITEM_TEXTSTYLE_NORMAL \
textfont UI_FONT_NORMAL \
textscale TEXTSIZE_SMALL \
forecolor 1 1 1 1 \
focusColor 1 1 1 1 \
disableColor 1 1 1 1 \
elementHighlightColor 0 0 0 1 \
noBlinkingHighlight \
visible visArg \
userarea 10 -1 0 (w-16) 19 24 ITEM_ALIGN_LEFT ITEM_ALIGN_TOP /* SCOREBOARD_COLUMN_NEMESIS_BG */ \
-1 0 40 19 10 ITEM_ALIGN_LEFT ITEM_ALIGN_TOP /* SCOREBOARD_COLUMN_RANK_BG */ \
3 0 50 16 10 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_RANK */ \
16 1 16 16 32 ITEM_ALIGN_RIGHT ITEM_ALIGN_TOP /* SCOREBOARD_COLUMN_RANK_ICON */ \
50 0 100 16 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_NAME */ \
AAR_SCOREBOARD_COLUMN_SCORE_X 0 100 16 10 ITEM_ALIGN_RIGHT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_SCORE */ \
AAR_SCOREBOARD_COLUMN_1_X 0 100 16 10 ITEM_ALIGN_RIGHT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_1 */ \
AAR_SCOREBOARD_COLUMN_2_X 0 100 16 10 ITEM_ALIGN_RIGHT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_2 */ \
(AAR_SCOREBOARD_COLUMN_3_X+85) 0 16 16 10 ITEM_ALIGN_RIGHT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_3 */ \
(AAR_SCOREBOARD_COLUMN_4_X+70) 0 16 16 10 ITEM_ALIGN_RIGHT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_4 */ \
\
doubleclick \
{ \
AAR_DBLCLICK_ACTION( menuName ) \
} \
\
extraArgs \
}
{
menuDef
{
name "players"
focuscolor COLOR_FOCUSED
style WINDOW_STYLE_EMPTY
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
onEsc
{
ON_ESC
}
onOpen
{
if (IsInGame())
{
showMenu "pausedbkgnd";
}
setdvar ui_friendsListOpen "0";
setdvar ui_ingamePlayersOpen "1";
// TODO: Set Focus to something?
}
onClose
{
if (IsInGame())
{
hideMenu "pausedbkgnd";
}
setdvar ui_ingamePlayersOpen "0";
}
// ------------------ TREE TITLE ------------------
CHOICE_MENU_TITLE_ALIGN_VIS( "@MENU_PLAYERS_CAPS", HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP, ITEM_ALIGN_MIDDLE_LEFT, 1 )
/* LABEL FOR COLUMN "SCORE" */
PREPROC_TEXT_DRAW( (AAR_BODY_X_START+12+AAR_SCOREBOARD_COLUMN_SCORE_X) (AAR_BODY_Y_START-15) 100 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_SCORE_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, CHOICE_TEXTCOLOR )
/* LABEL FOR COLUMN 1 */
PREPROC_TEXT_DRAW( (AAR_BODY_X_START+12+AAR_SCOREBOARD_COLUMN_1_X) (AAR_BODY_Y_START-15) 100 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, locString( "@"+getScoreboardColumnHeader( 0 )+"_CAPS" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, CHOICE_TEXTCOLOR )
/* LABEL FOR COLUMN 2 */
PREPROC_TEXT_DRAW( (AAR_BODY_X_START+12+AAR_SCOREBOARD_COLUMN_2_X) (AAR_BODY_Y_START-15) 100 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, locString( "@"+getScoreboardColumnHeader( 1 )+"_CAPS" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, CHOICE_TEXTCOLOR )
/* LABEL FOR COLUMN 3 */
PREPROC_TEXT_DRAW( (AAR_BODY_X_START+12+AAR_SCOREBOARD_COLUMN_3_X) (AAR_BODY_Y_START-15) 100 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, locString( "MENU_FRIEND" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, CHOICE_TEXTCOLOR )
/* LABEL FOR COLUMN 4 */
PREPROC_TEXT_DRAW( (AAR_BODY_X_START+12+AAR_SCOREBOARD_COLUMN_4_X-16) (AAR_BODY_Y_START-15) 100 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, locString( "MP_MUTED" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, CHOICE_TEXTCOLOR )
/* SCOREBOARD */
AAR_SCOREBOARD_LISTBOX( scoreboard_listbox, FEEDER_AAR_SCOREBOARD, (AAR_BODY_X_START+10), (AAR_BODY_Y_START+5), (AAR_WIDTH-40), (AAR_HEIGHT-65), 1, ;, menu_aar_scoreboard )
// Back button
#ifdef PC
NEW_FRAME_BACK_BUTTON_ACTION_PC_VIS( ON_ESC, when( MenuHasFocus() ); )
#endif
}
}

View File

@ -0,0 +1,844 @@
#include "ui/menudef.h"
#include "ui_mp/newframe.inc"
#include "ui_mp/common_macro.inc"
#include "ui_mp/menustyle.inc"
#include "ui_mp/choices_setup_teams.menu"
#define PC_INGAME 1
#include "ui_mp/overlaybg.inc"
#define GAME_DESC_VIS_ARG ( dvarInt( "xblive_basictraining" ) || dvarBool( splitscreen ) || dvarBool( systemlink ) || (dvarString("ui_gametype_idx") != "0") )
menuDef
{
name "pausedbkgnd_callvote"
fullScreen 0
rect 0 0 640 480
focusColor COLOR_FOCUSED
blurWorld 4.8
visible 1
#define SINGLE_PLAYER 1
#include "ui_mp/ingamebg.inc"
}
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X 170
#define BACKGROUND_COLOR_GRAY_RGB 0.62 0.70 0.70
#ifdef PC
#undef CHOICE_X_START
#define CHOICE_X_START 30
#undef CHOICE_Y_START
#define CHOICE_Y_START -120
#define CHOICE_SEP_1 5
#else
#undef CHOICE_X_START
#define CHOICE_X_START 30
#undef CHOICE_Y_START
#define CHOICE_Y_START -30
#define CHOICE_SEP_1 3
#endif
#undef CHOICE_GROUP
#define CHOICE_GROUP "callvote"
#undef CHOICE_HORIZONTAL_ALIGN
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_LEFT
#undef CHOICE_VERTICAL_ALIGN
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
#undef BUTTON_BG_X_START
#define BUTTON_BG_X_START 30
#undef BUTTON_BG_Y_START
#define BUTTON_BG_Y_START 42
#undef CHOICE_TEXTSTYLE
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
#undef CHOICE_TEXTSIZE
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
{
menuDef
{
name callvote
fullScreen 0
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN // Size and position of the menu
focusColor COLOR_FOCUSED // Menu focus color for text and items
#ifdef CONSOLE
blurWorld 7.0
#endif
onOpen
{
showMenu "pausedbkgnd_callvote";
}
onClose
{
hideMenu "pausedbkgnd_callvote";
}
onEsc
{
close self;
open "class";
}
#define CALLVOTE_SUBTITLE ""
#include "ui_mp/scriptmenus/callvote_buttons.inc"
NEW_FRAME_BACK_BUTTON_ACTION_PC_VIS( close self;, 1 )
}
menuDef
{
name changegametype
fullScreen 0
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN // Size and position of the menu
focusColor COLOR_FOCUSED // Menu focus color for text and items
#ifdef CONSOLE
blurWorld 7.0
#endif
onEsc
{
showMenu callvote;
close self;
}
onOpen
{
setdvar invite_visible "0";
setDvar ui_mapname "mp_array";
setDvar ui_gametype "tdm";
setdvar ui_gametype_idx "1";
setDvar ui_preview dvarString( "ui_mapname" );
setdvar ui_preview_gt dvarString( "ui_gametype" );
setdvar ui_preview_gt_idx dvarString( "ui_gametype_idx" );
setDvar settings_map_selected 1;
execNow movefeeder top gamemode_selection;
execNow movefeeder top maplist;
}
onClose
{
}
#undef CALLVOTE_SUBTITLE
#define CALLVOTE_SUBTITLE "@MPUI_CHANGE_GAME_TYPEMAP"
#include "ui_mp/scriptmenus/callvote_buttons.inc"
#define GAMEMODE_X 210
#define MAPSELECT_X 430
#define MAPSELECT_Y 255
#define GAMEMODE_Y 255
#define THUMBNAIL_Y 18
itemDef
{
name gamemode_image
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect GAMEMODE_X THUMBNAIL_Y 170 135 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
border 0
bordercolor .5 .5 .5 .5
origin 0 0
exp material( tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_gametype ), 3 ) ); // ui_preview_gt
visible when(GAME_DESC_VIS_ARG);
decoration
}
itemDef
{
name gamemode_custom_image
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect GAMEMODE_X THUMBNAIL_Y 170 135 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
border 0
bordercolor .5 .5 .5 .5
origin 0 0
exp material( "playlist_infantry" );
visible when(!GAME_DESC_VIS_ARG);
decoration
}
itemDef
{
name gamemode_name
type ITEM_TYPE_TEXT
rect GAMEMODE_X 175 170 20 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textfont UI_FONT_NORMAL
textscale 0.4
forecolor 1 1 1 1
exp text "@" + tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_gametype ), 1 ); // ui_preview_gt
visible when(GAME_DESC_VIS_ARG)
decoration
}
itemDef
{
name gamemode_custom_name
type ITEM_TYPE_TEXT
rect GAMEMODE_X 175 170 20 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textfont UI_FONT_NORMAL
textscale 0.4
forecolor 1 1 1 1
text "@CUSTOM_CUSTOM_GAME_MODE_CAPS"
visible when(!GAME_DESC_VIS_ARG)
decoration
}
itemDef
{
name gamemode_desc
type ITEM_TYPE_TEXT
rect GAMEMODE_X 195 170 35 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textfont UI_FONT_SMALL
textscale 0.3
forecolor 1 1 1 1
exp text "@" + tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_gametype ), 2 ); // ui_preview_gt
visible when(GAME_DESC_VIS_ARG);
autowrapped
decoration
}
itemDef
{
name gamemode_custom_desc
type ITEM_TYPE_TEXT
rect GAMEMODE_X 195 170 35 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textfont UI_FONT_SMALL
textscale 0.3
forecolor 1 1 1 1
text "@CUSTOM_SELECT_FROM_FILESHARE_DESC"
visible when(!GAME_DESC_VIS_ARG);
autowrapped
decoration
}
#ifdef PC
#define LIST_PARAMS( listName ) \
usePaging \
mouseEnter \
{ \
setFocus listName; \
}
#else // #ifdef PC
#define LIST_PARAMS( listName )
#endif // #else // #ifdef PC
itemDef
{
name gamemode_selection
type ITEM_TYPE_LISTBOX
noBlinkingHighlight
rect GAMEMODE_X GAMEMODE_Y 170 170 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
style WINDOW_STYLE_FILLED
textscale CHOICE_TEXTSIZE
textstyle ITEM_TEXTSTYLE_SHADOWED
textfont UI_FONT_NORMAL
elementtype LISTBOX_TEXT
elementwidth 120
elementheight 18
textalignx 6
textaligny 0
backcolor 0 0 0 0.2
border 1
bordersize 1
bordercolor 1 1 1 0.15
outlinecolor 1 1 1 0
forecolor CHOICE_TEXTCOLOR
focusColor 1 1 1 1
disableColor 1 1 1 1
feeder FEEDER_GAMETYPES_INGAME
LIST_PARAMS( gamemode_selection )
visible 1
userarea 2 -1 0 155 20 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE
6 0 155 20 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE
doubleclick
{
setDvar ui_gametype_idx dvarString( "ui_preview_gt_idx" );
if( !GAME_DESC_VIS_ARG )
{
open "custom_select_from_fileshare_1";
}
else
{
if( dvarString( "ui_preview_gt" ) != dvarString( "ui_gametype" ) )
{
execNow "resetCustomGametype";
}
play CHOICE_ACTION_SOUND;
}
setDvar ui_gametype dvarString( ui_preview_gt );
}
action
{
setDvar ui_gametype_idx dvarString( "ui_preview_gt_idx" );
if( !GAME_DESC_VIS_ARG )
{
open "custom_select_from_fileshare_1";
}
else
{
if( dvarString( "ui_preview_gt" ) != dvarString( "ui_gametype" ) )
{
execNow "resetCustomGametype";
}
play CHOICE_ACTION_SOUND;
}
setDvar ui_gametype dvarString( ui_preview_gt );
}
}
itemDef
{
name mappreview
style WINDOW_STYLE_SHADER
type ITEM_TYPE_IMAGE
rect MAPSELECT_X THUMBNAIL_Y 170 135 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
border 0
bordercolor .5 .5 .5 .5
origin 0 0
exp material( tablelookup("mp/mapsTable.csv",0,dvarString(ui_mapname),4) ); // ui_preview
visible 1
decoration
}
itemDef
{
name map_name
type ITEM_TYPE_TEXT
rect MAPSELECT_X 175 170 20 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textfont UI_FONT_NORMAL
textscale 0.4
forecolor 1 1 1 1
exp text "@" + tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_mapname ) , 3 ); // ui_preview
visible 1
decoration
}
itemDef
{
name map_desc
type ITEM_TYPE_TEXT
rect MAPSELECT_X 195 170 35 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
textstyle ITEM_TEXTSTYLE_SHADOWED
textalign ITEM_ALIGN_LEFT
textfont UI_FONT_SMALL
textscale 0.3
forecolor 1 1 1 1
exp text "@" + tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_mapname ) , 6 ); // ui_preview
visible 1
autowrapped
decoration
}
itemDef
{
name maplist
rect MAPSELECT_X MAPSELECT_Y 170 170 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
type ITEM_TYPE_LISTBOX
noBlinkingHighlight
style WINDOW_STYLE_FILLED
textscale CHOICE_TEXTSIZE
textstyle ITEM_TEXTSTYLE_SHADOWED
textfont UI_FONT_NORMAL
elementtype LISTBOX_TEXT
elementwidth 120
elementheight 18
textalignx 6
textaligny 0
backcolor 0 0 0 0.2
border 1
bordersize 1
bordercolor 1 1 1 0.15
outlinecolor 1 1 1 0
forecolor CHOICE_TEXTCOLOR
focusColor 1 1 1 1
disableColor 1 1 1 1
feeder FEEDER_MAPS
LIST_PARAMS( maplist )
visible 1
userarea 2 -1 0 155 20 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* FEEDER_MAPSELECTION_COLUMN_BACKGROUND */
6 0 155 20 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* FEEDER_MAPSELECTION_COLUMN_NAME */
doubleclick { setDvar ui_mapname dvarString( ui_preview ); }
action { setDvar ui_mapname dvarString( ui_preview ); }
}
itemDef
{
name vote
type ITEM_TYPE_BUTTON
rect MAPSELECT_X (MAPSELECT_Y+170+4) 40 20 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
exp rect W( getTextWidth(locString("@MPUI_VOTE"),UI_FONT_NORMAL,TEXTSIZE_DEFAULT)+8 )
text "@MPUI_VOTE"
textfont UI_FONT_NORMAL
textscale TEXTSIZE_DEFAULT
textalign ITEM_ALIGN_MIDDLE_CENTER
textstyle ITEM_TEXTSTYLE_SHADOWED
style WINDOW_STYLE_FILLED
visible 1
forecolor 1 1 1 1
backcolor 1 1 1 0
border 1
bordersize 1
bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA
mouseEnter { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_SELECTED_RGBA; play CHOICE_FOCUS_SOUND; }
mouseexit { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA; }
action
{
play CHOICE_FOCUS_SOUND;
#ifdef CONSOLE
setDvar ui_gametype dvarString( ui_preview_gt );
setDvar ui_mapname dvarString( ui_preview );
uiScript voteTypeMapDVar ui_preview_gt ui_preview;
#else //#ifdef CONSOLE
uiScript voteTypeMapDVar ui_gametype ui_mapname;
#endif //#ifdef CONSOLE
close self;
}
}
#define TAB_1_TEXT (locString( "@MPUI_MAPS_CAPS" ))
#define TAB_2_TEXT (locString( "@MPUI_DLC_MAPS_CAPS" ))
#define TAB_BG_PAD 5
#define TAB_1_WIDTH ( getTextWidth( TAB_1_TEXT, UI_FONT_NORMAL, TEXTSIZE_DEFAULT ) + (TAB_BG_PAD*2) )
#define TAB_2_WIDTH ( getTextWidth( TAB_2_TEXT, UI_FONT_NORMAL, TEXTSIZE_DEFAULT ) + (TAB_BG_PAD*2) )
#define TAB_HEIGHT 15
#define MAP_TAB_1_X MAPSELECT_X
#define MAP_TAB_2_X ( MAP_TAB_1_X + TAB_1_WIDTH )
#define MAP_TAB_Y ( MAPSELECT_Y - TAB_HEIGHT )
#define MAPS_TAB_VISIBLE ( 1 )
#define DLC_TAB_VISIBLE ( dvarBool( "dlc2" ) || dvarBool( "dlc3" ) || dvarBool( "dlc4" ) )
itemDef
{
name switch_to_original_maps
type ITEM_TYPE_BUTTON
rect MAP_TAB_1_X MAP_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
exp rect W( TAB_1_WIDTH )
text "@MPUI_MAPS_CAPS"
textfont UI_FONT_NORMAL
textscale TEXTSIZE_DEFAULT
textalign ITEM_ALIGN_MIDDLE_CENTER
textstyle ITEM_TEXTSTYLE_SHADOWED
style WINDOW_STYLE_FILLED
visible when( DLC_TAB_VISIBLE )
forecolor 1 1 1 1
backcolor 1 1 1 0
border 1
bordersize 1
bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA
mouseEnter { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_SELECTED_RGBA; play CHOICE_FOCUS_SOUND; }
mouseexit { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA; }
action
{
setDvar ui_showDLCMaps 0;
}
}
itemDef
{
name switch_to_dlc_maps
type ITEM_TYPE_BUTTON
rect 0 MAP_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
exp rect W( TAB_2_WIDTH )
exp rect X( MAP_TAB_2_X )
text "@MPUI_DLC_MAPS_CAPS"
textfont UI_FONT_NORMAL
textscale TEXTSIZE_DEFAULT
textalign ITEM_ALIGN_MIDDLE_CENTER
textstyle ITEM_TEXTSTYLE_SHADOWED
style WINDOW_STYLE_FILLED
visible when( DLC_TAB_VISIBLE )
forecolor 1 1 1 1
backcolor 1 1 1 0
border 1
bordersize 1
bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA
mouseEnter { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_SELECTED_RGBA; play CHOICE_FOCUS_SOUND; }
mouseexit { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA; }
action
{
setDvar ui_showDLCMaps 1;
}
}
NEW_FRAME_BACK_BUTTON_ACTION_PC_VIS( exec "wait"; close self;, 1 )
}
menuDef
{
name kickplayer
fullScreen 0
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN // Size and position of the menu
focusColor COLOR_FOCUSED // Menu focus color for text and items
#ifdef CONSOLE
blurWorld 7.0
#endif
onEsc
{
showMenu callvote;
close self;
}
onClose
{
}
#undef CALLVOTE_SUBTITLE
#define CALLVOTE_SUBTITLE "@MPUI_KICK_PLAYER"
#include "ui_mp/scriptmenus/callvote_buttons.inc"
itemDef
{
name playerlist
type ITEM_TYPE_LISTBOX
noBlinkingHighlight
visible 1
rect GAMEMODE_X 90 260 330 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
style WINDOW_STYLE_FILLED
textscale CHOICE_TEXTSIZE
textstyle ITEM_TEXTSTYLE_SHADOWED
textfont UI_FONT_NORMAL
elementtype LISTBOX_TEXT
elementwidth 120
elementheight 18
textalignx 6
textaligny 0
backcolor 0 0 0 0.2
border 1
bordersize 1
bordercolor 1 1 1 0.15
outlinecolor 1 1 1 0
forecolor CHOICE_TEXTCOLOR
focusColor 1 1 1 1
disableColor 1 1 1 1
feeder FEEDER_PLAYER_LIST
LIST_PARAMS( playerlist )
userarea 2 -1 0 244 20 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE
6 0 244 20 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE
}
itemDef
{
name vote
type ITEM_TYPE_BUTTON
rect GAMEMODE_X (90+330+4) 40 20 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
exp rect W( getTextWidth(locString("@MPUI_VOTE"),UI_FONT_NORMAL,TEXTSIZE_DEFAULT)+8 )
text "@MPUI_VOTE"
textfont UI_FONT_NORMAL
textscale TEXTSIZE_DEFAULT
textalign ITEM_ALIGN_MIDDLE_CENTER
textstyle ITEM_TEXTSTYLE_SHADOWED
style WINDOW_STYLE_FILLED
visible 1
forecolor 1 1 1 1
backcolor 1 1 1 0
border 1
bordersize 1
bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA
mouseEnter { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_SELECTED_RGBA; play CHOICE_FOCUS_SOUND; }
mouseexit { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA; }
action
{
play CHOICE_FOCUS_SOUND;
uiScript voteTempBan;
close self;
}
}
NEW_FRAME_BACK_BUTTON_ACTION_PC_VIS( close self;, 1 )
}
}
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X 150
#undef CHOICE_X_START
#define CHOICE_X_START 0
#undef CHOICE_Y_START
#define CHOICE_Y_START 65
#undef CHOICE_SEP_OFFSET_Y
#define CHOICE_SEP_OFFSET_Y -2
#undef CHOICE_SIDEITEM_SPACING
#define CHOICE_SIDEITEM_SPACING -310
#undef CHOICE_DVAR_OFFSET_X
#define CHOICE_DVAR_OFFSET_X (CHOICE_SIZE_X+20)
#undef CHOICE_DVAR_TEXTALIGN
#define CHOICE_DVAR_TEXTALIGN ITEM_ALIGN_MIDDLE_LEFT
#include "ui_mp/menustyle.inc"
#include "ui/choices_setup_popmenu.menu"
#include "ui_mp/stats_info.inc"
#include "ui_mp/fileshare.inc"
#include "ui/framestyle.inc"
#include "ui_mp/newframe.inc"
#include "ui_mp/popup_player_info.inc"
#define GAME_MODE_FILESHARE_UPLOAD_ACTION \
execNow uploadCustomGametype ( getFeederData( "menu_game_mode_upload_1", "fileShareSlots", "slot" ) ); \
execNow "set customGameMode 1"; \
execNow "xupdatepartystate"; \
if( dvarInt( ui_custom_gobackonupload ) ) \
{ \
closeimmediate custom_game_create; \
closeimmediate select_game_mode; \
}
#include "ui_mp/popupstyle.inc"
FILESHARE_SLOT_SELECTOR_EX ( menu_game_mode_upload_1, GAME_MODE_FILESHARE_UPLOAD_ACTION, ;, open custom_game_create;, ; )
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X 260
#undef CHOICE_X_START
#define CHOICE_X_START 0
#undef CHOICE_Y_START
#define CHOICE_Y_START 85
#undef CHOICE_TEXTSTYLE
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
#undef ON_ESC
#define ON_ESC \
close self;
menuDef
{
name custom_select_from_fileshare_1
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
focuscolor COLOR_FOCUSED
style WINDOW_STYLE_FILLED
priority MENU_PRI_ONTOP
control MENU_CONTROL_OPENER
soundloop MENU_MUSIC
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
openSlideDirection MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT
closeSlideDirection MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT
onOpen
{
#ifdef PC
// exec readfileshare
#endif
}
onFocus
{
activateBlur;
}
onClose
{
deactivateBlur;
}
onESC
{
ON_ESC
}
NEW_FRAME( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT )
NEW_FRAME_TITLE( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT, "@CUSTOM_FILESHARE_SELECT_MODE_TITLE", 1 )
NEW_FRAME_SUBTITLE( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT, "@CUSTOM_FILESHARE_SELECT_MODE_DESC", 1 )
PLAYER_INFO_VIS( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT, 1 )
itemDef
{
name fileShareSlots
type ITEM_TYPE_LISTBOX
feeder FEEDER_FILESHARE_MYSLOTS
FILESHARE_COMMON_OPTIONS
origin 0 0
elementwidth 70
elementheight 67
elementtype LISTBOX_TEXT
textalign ITEM_ALIGN_MIDDLE_CENTER
textfont UI_FONT_NORMAL
textscale TEXTSIZE_SUBTITLE
forecolor CHOICE_TEXTCOLOR
modal
doubleclick
{
if ( getFeederData( "slotOccupied" ) && !( FILESHARE_TASKSINPROGRESS ) )
{
if( getFeederData( "fileType" ) == "customgamemode" )
{
execNow downloadCustomGametype (getFeederData( "fileID" )) (getFeederData( "fileSize" ));
closeimmediate custom_select_from_fileshare_1;
closeimmediate select_game_mode;
}
}
}
visible 1
FILESHARE_SLOTS_USERAREAS
}
FILESHARE_BOTTOM( fileShareSlots, 1 )
/* SLOT OCCUPIED */
#define SLOT_OCCUPIED_CONDITION \
( getFeederData( "fileShareSlots", "slotOccupied" ) && getFeederData( "fileShareSlots", "count" ) > 0.0 )
#define SLOT_HAS_GAME_MODE \
( getFeederData( "fileShareSlots", "fileType" ) == "customgamemode" )
#undef FILESHARE_SELECTOR_TOOLTIP_Y
#ifdef PC
#define FILESHARE_SELECTOR_TOOLTIP_Y FILESHARE_TOOLTIP_PC_Y
#else //#ifdef PC
#define FILESHARE_SELECTOR_TOOLTIP_Y 95
#endif //#ifdef PC
// Tooltip - Occupied Slot with custom game mode
PREPROC_TEXT_DRAW_VIS_EX( -255 FILESHARE_SELECTOR_TOOLTIP_Y 280 36 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, locString( "CUSTOM_FILESHARE_CGM_HIGHLIGHTED" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, when( SLOT_OCCUPIED_CONDITION && SLOT_HAS_GAME_MODE ), autowrapped; )
PREPROC_SHADER_DRAW_VIS_EX( -265 FILESHARE_SELECTOR_TOOLTIP_Y 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "ui_arrow_right", COLOR_BODY_TEXT, when( SLOT_OCCUPIED_CONDITION && SLOT_HAS_GAME_MODE ), ; )
// Tooltip - Occupied Slot that is not a custom game mode
PREPROC_TEXT_DRAW_VIS_EX( -255 FILESHARE_SELECTOR_TOOLTIP_Y 280 36 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, locString( "CUSTOM_FILESHARE_CANT_SELECT" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, when( SLOT_OCCUPIED_CONDITION && !SLOT_HAS_GAME_MODE ), autowrapped; )
PREPROC_SHADER_DRAW_VIS_EX( -265 FILESHARE_SELECTOR_TOOLTIP_Y 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "ui_arrow_right", COLOR_BODY_TEXT, when( SLOT_OCCUPIED_CONDITION && !SLOT_HAS_GAME_MODE ), ; )
FILESHARE_SPINNER( 145, -45, when( FILESHARE_TASKSINPROGRESS ), 350 )
execKeyInt APAD_UP
{
execnow set fshSelectLastSlotRow 1;
setfocus fileShareSlots;
}
execKeyInt DPAD_UP
{
execnow set fshSelectLastSlotRow 1;
setfocus fileShareSlots;
}
execKeyInt APAD_DOWN
{
execnow set fshSelectFirstSlotRow 1;
setfocus fileShareSlots;
}
execKeyInt DPAD_DOWN
{
execnow set fshSelectFirstSlotRow 1;
setfocus fileShareSlots;
}
/*
execKeyInt BUTTON_X
{
open fileshare_mymovie;
}
#ifdef CONSOLE
itemDef
{
type ITEM_TYPE_TEXT
rect -210 206 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
text "@PLATFORM_FILESHARE_MYMOVIE"
textfont CHOICE_TEXTFONT
textscale TEXTSIZE_DEFAULT
textalign ITEM_ALIGN_BOTTOM_LEFT
visible 1
decoration
}
#endif
*/
#ifndef PC
itemDef
{
type ITEM_TYPE_TEXT
rect -210 206 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
text "@PLATFORM_SELECT"
textfont CHOICE_TEXTFONT
textscale TEXTSIZE_DEFAULT
textalign ITEM_ALIGN_BOTTOM_LEFT
visible when( getFeederData( "fileShareSlots", "slotOccupied" ) == 1 )
decoration
}
#endif
NEW_FRAME_BUTTON_NOICON( 1, 28 0 0 18 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "", execnow "updatemarketplace";, ;, ;, 1, ;, ; )
//FILESHARE_LIVEBLURB( -271, 50, 290, 100, HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, !IsPremiumSubscriber(), ( localVarInt( ui_highlight ) == 1 ) )
#ifdef CONSOLE
itemDef
{
type ITEM_TYPE_TEXT
rect -146 80 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
exp text( int( getFeederData( "fileShareSlots", "slot" ) ) )
textfont CHOICE_TEXTFONT
textscale TEXTSIZE_SMALL
textalign ITEM_ALIGN_MIDDLE_RIGHT
forecolor 1 1 1 1
visible 1
decoration
}
itemDef
{
type ITEM_TYPE_TEXT
rect -142 80 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
text "@MENU_FILESHARE_OF18"
textfont CHOICE_TEXTFONT
textscale TEXTSIZE_SMALL
textalign ITEM_ALIGN_MIDDLE_LEFT
forecolor 1 1 1 1
visible 1
}
// Top Arrow
PREPROC_SHADER_DRAW_VIS_EX( -114 75 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "ui_arrow_left", COLOR_BODY_TEXT, when( getFeederData( "fileShareSlots", "slot" ) > 6 ), rotation 90; )
// Bottom Arrow 1
PREPROC_SHADER_DRAW_VIS_EX( -107 75 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "ui_arrow_right", COLOR_BODY_TEXT, when( getFeederData( "fileShareSlots", "slot" ) > 6 && getFeederData( "fileShareSlots", "slot" ) < 13 ), rotation 90; )
// Bottom Arrow 2
PREPROC_SHADER_DRAW_VIS_EX( -114 75 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "ui_arrow_right", COLOR_BODY_TEXT, when( getFeederData( "fileShareSlots", "slot" ) <= 6 ), rotation 90; )
#endif //#ifdef CONSOLE
// File details
FILESHARE_DETAILS( 35, (NEW_FRAME_CHOICE_Y_START-1), HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, "custom_select_from_fileshare_1", "fileShareSlots", SLOT_OCCUPIED_CONDITION )
FILESHARE_SPINNER( 145, -45, when( FILESHARE_TASKSINPROGRESS ), 350 )
#ifdef PC
NEW_FRAME_BACK_BUTTON_ACTION( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT, ON_ESC )
#else //#ifdef PC
NEW_FRAME_BACK_BUTTON( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT )
#endif //#ifdef PC
#include "ui/safearea.menu"
}

View File

@ -0,0 +1,365 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#include "ui_mp/stats_info.inc"
#include "ui/framestyle.inc"
#include "ui_mp/newframe.inc"
#undef CHOICE_X_START
#define CHOICE_X_START 30
#undef CHOICE_Y_START
#define CHOICE_Y_START -105
#ifdef PC
#define PC_INGAME //for background in overlaybg.inc
#endif
#define CHOICE_SEP_OFFSET_Y -2
#define CHOICE_SEP_1 5
#include "ui_mp/menustyle.inc"
#include "ui/choices_setup_common.menu"
#include "ui_mp/overlaybg.inc"
#define HIGH_BOUND "1000"
#undef BUTTON_BG_X_START
#define BUTTON_BG_X_START 30
#undef BUTTON_BG_Y_START
#define BUTTON_BG_Y_START 42
#undef CHOICE_TEXTSTYLE
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X 200
#undef CHOICE_HORIZONTAL_ALIGN
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_LEFT
#undef CHOICE_VERTICAL_ALIGN
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
// ------
#undef ON_ESC
#define ON_ESC scriptMenuResponse "back";
{
menuDef
{
name "changeclass"
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
focuscolor COLOR_FOCUSED
style WINDOW_STYLE_EMPTY
#ifdef CONSOLE
blurWorld 7.0
#endif
onOpen
{
if ( IsSplitscreen() )
{
close self;
if ( IsViewportLarge() )
{
open "changeclass_splitscreen";
}
else
{
open "changeclass_splitscreen_small";
}
}
else
{
// update player's XP
execNow "statGetByNameInDvar RANKXP ui_stat_rankxp";
if ( dvarString( ui_custom_name ) == "" )
{
execnow set ui_custom_name customclass1;
}
if( dvarString( ui_class ) == "" )
{
execnow set ui_class class_smg;
}
/*set ui_multi_s "HIGH_BOUND"; set ui_multi_dt 0";*/
setfocusbydvar "ui_customclass_selected";
//focusFirst
}
if (IsInGame())
{
showMenu "pausedbkgnd";
}
#ifdef PC
setLocalVarBool ui_hide_cac_item_info_highlights 1;
#endif // #ifdef PC
}
onClose
{
if (IsInGame())
{
hideMenu "pausedbkgnd";
}
#ifdef PC
setLocalVarBool ui_hide_cac_item_info_highlights 0;
#endif // #ifdef PC
}
onEsc
{
ON_ESC
}
execkeyint BUTTON_START
{
close self;
}
#ifndef PC // background overlay
#include "ui_mp/ingamebg.inc"
#endif // background overlay
// ------------------ TREE TITLE ------------------
CHOICE_MENU_TITLE_ALIGN_VIS( "@MPUI_CHOOSE_CLASS_CAPS", HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP, ITEM_ALIGN_MIDDLE_LEFT, 1 )
//=========================================================================
//================ MENU SELECTION FOR ONLINE/OFFLINE GAME =================
//=========================================================================
#define IS_ONLINE_GAME ( dvarInt( splitscreen ) == 0 && dvarInt( systemlink ) == 0 )
#define IS_BASICTRAINING_GAME ( dvarInt( xblive_basictraining ) > 0 )
#define FOCUS_CHECK( pnum ) \
dvartest "ui_customclass_selected" focusdvar { pnum }
#define ACTION_COMMON( pnum ) \
setDvar ui_customclass_selected pnum;
#define SHOW_ONLINE_CLASS_NAME ( IS_ONLINE_GAME && !IS_BASICTRAINING_GAME )
#define CUSTOM_CLASS_TEXT( online, offline ) \
Select( SHOW_ONLINE_CLASS_NAME, dvarString( online ), dvarString( offline ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 1, CUSTOM_CLASS_TEXT( customclass1, offline_customclass1 ),
scriptMenuResponse "custom1,0"; ACTION_COMMON( 6 ),
exec "set ui_custom_name customclass1; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
;,
!IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), FOCUS_CHECK( 6 ) )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 1, CUSTOM_CLASS_TEXT( customclass1, offline_customclass1 ),
;,
;,
IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), decoration )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 2, CUSTOM_CLASS_TEXT( customclass2, offline_customclass2 ),
scriptMenuResponse "custom2,0"; ACTION_COMMON( 7 ),
exec "set ui_custom_name customclass2; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
;,
!IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), FOCUS_CHECK( 7 ) )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 2, CUSTOM_CLASS_TEXT( customclass2, offline_customclass2 ),
;,
;,
IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), decoration )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 3, CUSTOM_CLASS_TEXT( customclass3, offline_customclass3 ),
scriptMenuResponse "custom3,0"; ACTION_COMMON( 8 ),
exec "set ui_custom_name customclass3; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
;,
!IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), FOCUS_CHECK( 8 ) )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 3, CUSTOM_CLASS_TEXT( customclass3, offline_customclass3 ),
;,
;,
IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), decoration )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 4, CUSTOM_CLASS_TEXT( customclass4, offline_customclass4 ),
scriptMenuResponse "custom4,0"; ACTION_COMMON( 9 ),
exec "set ui_custom_name customclass4; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
;,
!IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), FOCUS_CHECK( 9 ) )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 4, CUSTOM_CLASS_TEXT( customclass4, offline_customclass4 ),
;,
;,
IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), decoration )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 5, CUSTOM_CLASS_TEXT( customclass5, offline_customclass5 ),
scriptMenuResponse "custom5,0"; ACTION_COMMON( 10 ),
exec "set ui_custom_name customclass5; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
;,
!IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), FOCUS_CHECK( 10 ) )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 5, CUSTOM_CLASS_TEXT( customclass5, offline_customclass5 ),
;,
;,
IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), decoration )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 6, "@CLASS_CLASS1",
scriptMenuResponse "smg_mp,0"; ACTION_COMMON( 1 ),
exec "set ui_class class_smg; set ui_multi_s "HIGH_BOUND"; set ui_multi_dt 0";,
;,
( IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) || IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_1 ) || !IS_ONLINE_GAME ), FOCUS_CHECK( 1 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 6, dvarString( prestigeclass1 ),
scriptMenuResponse "prestige1,0"; ACTION_COMMON( 11 ),
exec "set ui_custom_name prestigeclass1; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
;,
( !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_1 ) && ( !IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) ) && IS_ONLINE_GAME ), FOCUS_CHECK( 1 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 7, "@CLASS_CLASS2",
scriptMenuResponse "cqb_mp,0"; ACTION_COMMON( 2 ),
exec" set ui_class class_cqb; set ui_multi_s "HIGH_BOUND"; set ui_multi_dt 0";,
;,
( IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) || IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_2 ) || !IS_ONLINE_GAME ), FOCUS_CHECK( 2 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 7, dvarString( prestigeclass2 ),
scriptMenuResponse "prestige2,0"; ACTION_COMMON( 12 ),
exec "set ui_custom_name prestigeclass2; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
;,
( !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_2 ) && ( !IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) ) && IS_ONLINE_GAME ), FOCUS_CHECK( 2 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 8, "@CLASS_CLASS3",
scriptMenuResponse "assault_mp,0"; ACTION_COMMON( 3 ),
exec "set ui_class class_assault; set ui_multi_s "HIGH_BOUND"; set ui_multi_dt 0";,
;,
( IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) || IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_3 ) || !IS_ONLINE_GAME ), FOCUS_CHECK( 3 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 8, dvarString( prestigeclass3 ),
scriptMenuResponse "prestige3,0"; ACTION_COMMON( 13 ),
exec "set ui_custom_name prestigeclass3; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
;,
( !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_3 ) && ( !IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) ) && IS_ONLINE_GAME ), FOCUS_CHECK( 3 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 9, "@CLASS_CLASS4",
scriptMenuResponse "lmg_mp,0"; ACTION_COMMON( 4 ),
exec "set ui_class class_lmg; set ui_multi_s "HIGH_BOUND"; set ui_multi_dt 0"; CLEAR_ITEM_NEW( FEATURE_CLOSEASSAULT ),
;,
( ( !IS_ITEM_LOCKED( FEATURE_CLOSEASSAULT ) && ( IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_4 ) || ( IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_4 ) ) ) ) || !IS_ONLINE_GAME ), FOCUS_CHECK( 4 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 9, dvarString( prestigeclass4 ),
scriptMenuResponse "prestige4,0";ACTION_COMMON( 14 ),
exec "set ui_custom_name prestigeclass4; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND; CLEAR_ITEM_NEW( FEATURE_CLOSEASSAULT ),
;,
( !IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_4 ) && IS_ONLINE_GAME ), FOCUS_CHECK( 4 ) )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 9, "@CLASS_CLASS4",
;,
;,
( IS_ITEM_LOCKED( FEATURE_CLOSEASSAULT ) && IS_ONLINE_GAME ), decoration FOCUS_CHECK( 4 ) )
CHOICE_NEWICON_VIS( 9, "menu_mp_lobby_new", when( ( IS_ITEM_NEW( FEATURE_CLOSEASSAULT ) ) && IS_ONLINE_GAME ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 10, "@CLASS_CLASS5",
scriptMenuResponse "sniper_mp,0"; ACTION_COMMON( 5 ),
exec" set ui_class class_sniper; set ui_multi_s "HIGH_BOUND"; set ui_multi_dt 0"; CLEAR_ITEM_NEW( FEATURE_SNIPER ),
;,
( ( !IS_ITEM_LOCKED( FEATURE_SNIPER ) && ( IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_5 ) || ( IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_5 ) ) ) ) || !IS_ONLINE_GAME ), FOCUS_CHECK( 5 ) )
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 10, dvarString( prestigeclass5 ),
scriptMenuResponse "prestige5,0"; ACTION_COMMON( 15 ),
exec "set ui_custom_name prestigeclass5; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND; CLEAR_ITEM_NEW( FEATURE_SNIPER ),
;,
( !IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_5 ) && IS_ONLINE_GAME ), FOCUS_CHECK( 5 ) )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 10, "@CLASS_CLASS5",
;,
;,
( IS_ITEM_LOCKED( FEATURE_SNIPER ) && IS_ONLINE_GAME ), decoration FOCUS_CHECK( 5 ) )
CHOICE_NEWICON_VIS( 10, "menu_mp_lobby_new", when( ( IS_ITEM_NEW( FEATURE_SNIPER ) ) && IS_ONLINE_GAME ) )
#define DATA_TABLE_PRIMARY_GRENADE GetDefaultClassSlot( dvarstring( ui_class ), "primarygrenade" )
#define DATA_TABLE_PRIMARY GetDefaultClassSlot( dvarstring( ui_class ), "primary" )
// no default attachments or camo for now
#define DATA_TABLE_PRIMARY_ATTACHMENT 0
#define DATA_TABLE_PRIMARY_CAMO 0
#define DATA_TABLE_SECONDARY GetDefaultClassSlot( dvarstring( ui_class ), "secondary" )
// no default attachments or camo for now
#define DATA_TABLE_SECONDARY_ATTACHMENT 0
#define DATA_TABLE_SECONDARY_CAMO 0
#define DATA_TABLE_SPECIALTY1 GetDefaultClassSlot( dvarstring( ui_class ), "specialty1" )
#define DATA_TABLE_SPECIALTY2 GetDefaultClassSlot( dvarstring( ui_class ), "specialty2" )
#define DATA_TABLE_SPECIALTY3 GetDefaultClassSlot( dvarstring( ui_class ), "specialty3" )
#define DATA_TABLE_EQUIPMENT GetDefaultClassSlot( dvarstring( ui_class ), "equipment" )
#define DATA_TABLE_SPECIAL_GRENADE GetDefaultClassSlot( dvarstring( ui_class ), "specialgrenade" )
#define DATA_TABLE_BODY GetDefaultClassSlot( dvarstring( ui_class ), "body" )
#define DATA_TABLE_DEATHSTREAK GetDefaultClassSlot( dvarstring( ui_class ), "deathstreak" )
#define DATA_TABLE_KILLSTREAK_TIER1 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak1" )
#define DATA_TABLE_KILLSTREAK_TIER2 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak2" )
#define DATA_TABLE_KILLSTREAK_TIER3 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak3" )
/* ==================================== custom classes ============================================= */
#define STATS_PRIMARY getCACItemIndex( ( dvarString( ui_custom_name ) ), "primary" )
#define STATS_PRIMARY_ATTACHMENT getCACItemIndex( ( dvarString( ui_custom_name ) ), "primaryattachment" )
#define STATS_PRIMARY_CAMO getCACItemIndex( ( dvarString( ui_custom_name ) ), "primarycamo" )
#define STATS_SECONDARY getCACItemIndex( ( dvarString( ui_custom_name ) ), "secondary" )
#define STATS_SECONDARY_ATTACHMENT getCACItemIndex( ( dvarString( ui_custom_name ) ), "secondaryattachment" )
#define STATS_SECONDARY_CAMO getCACItemIndex( ( dvarString( ui_custom_name ) ), "secondarycamo" )
#define STATS_PRIMARY_GRENADE getCACItemIndex( ( dvarString( ui_custom_name ) ), "primarygrenade" )
#define STATS_SPECIALTY1 getCACItemIndex( ( dvarString( ui_custom_name ) ), "specialty1" )
#define STATS_SPECIALTY2 getCACItemIndex( ( dvarString( ui_custom_name ) ), "specialty2" )
#define STATS_SPECIALTY3 getCACItemIndex( ( dvarString( ui_custom_name ) ), "specialty3" )
#define STATS_EQUIPMENT getCACItemIndex( ( dvarString( ui_custom_name ) ), "equipment" )
#define STATS_SPECIAL_GRENADE getCACItemIndex( ( dvarString( ui_custom_name ) ), "specialgrenade" )
#define STATS_BODY getCACItemIndex( ( dvarString( ui_custom_name ) ), "body" )
#define STATS_DEATHSTREAK getCACItemIndex( "cacLoadouts", "deathstreak" )
#define STATS_KILLSTREAK_TIER1 getCACItemIndex( "cacLoadouts", "killstreak1" )
#define STATS_KILLSTREAK_TIER2 getCACItemIndex( "cacLoadouts", "killstreak2" )
#define STATS_KILLSTREAK_TIER3 getCACItemIndex( "cacLoadouts", "killstreak3" )
#include "ui/safearea.menu"
/* ================================================================================= */
/* ================================ LOADOUT DISPLAY ================================ */
/* ================================================================================= */
#define STAT_CAC_PRIMARY_GRENADE int(min( STATS_PRIMARY_GRENADE + dvarInt(ui_multi_s), DATA_TABLE_PRIMARY_GRENADE + dvarInt(ui_multi_dt) ))
#define STAT_CAC_PRIMARY int(min( STATS_PRIMARY + dvarInt(ui_multi_s), DATA_TABLE_PRIMARY + dvarInt(ui_multi_dt) ))
#define STAT_CAC_PRIMARY_ATTACHMENT int(min( STATS_PRIMARY_ATTACHMENT + dvarInt(ui_multi_s), DATA_TABLE_PRIMARY_ATTACHMENT + dvarInt(ui_multi_dt) ))
#define STAT_CAC_PRIMARY_CAMO int(min( STATS_PRIMARY_CAMO + dvarInt(ui_multi_s), DATA_TABLE_PRIMARY_CAMO + dvarInt(ui_multi_dt) ))
#define STAT_CAC_SECONDARY int(min( STATS_SECONDARY + dvarInt(ui_multi_s), DATA_TABLE_SECONDARY + dvarInt(ui_multi_dt) ))
#define STAT_CAC_SECONDARY_ATTACHMENT int(min( STATS_SECONDARY_ATTACHMENT + dvarInt(ui_multi_s), DATA_TABLE_SECONDARY_ATTACHMENT + dvarInt(ui_multi_dt) ))
#define STAT_CAC_SECONDARY_CAMO int(min( STATS_SECONDARY_CAMO + dvarInt(ui_multi_s), DATA_TABLE_SECONDARY_CAMO + dvarInt(ui_multi_dt) ))
#define STAT_CAC_SPECIALTY1 int(min( STATS_SPECIALTY1 + dvarInt(ui_multi_s), DATA_TABLE_SPECIALTY1 + dvarInt(ui_multi_dt) ))
#define STAT_CAC_SPECIALTY2 int(min( STATS_SPECIALTY2 + dvarInt(ui_multi_s), DATA_TABLE_SPECIALTY2 + dvarInt(ui_multi_dt) ))
#define STAT_CAC_SPECIALTY3 int(min( STATS_SPECIALTY3 + dvarInt(ui_multi_s), DATA_TABLE_SPECIALTY3 + dvarInt(ui_multi_dt) ))
#define STAT_CAC_EQUIPMENT int(min( STATS_EQUIPMENT + dvarInt(ui_multi_s), DATA_TABLE_EQUIPMENT + dvarInt(ui_multi_dt) ))
#define STAT_CAC_SPECIAL_GRENADE int(min( STATS_SPECIAL_GRENADE + dvarInt(ui_multi_s), DATA_TABLE_SPECIAL_GRENADE + dvarInt(ui_multi_dt) ))
#define STAT_CAC_BODY int(min( STATS_BODY + dvarInt(ui_multi_s), DATA_TABLE_BODY + dvarInt(ui_multi_dt) ))
#define STAT_CAC_DEATHSTREAK int(min( STATS_DEATHSTREAK + dvarInt(ui_multi_s), DATA_TABLE_DEATHSTREAK + dvarInt(ui_multi_dt) ))
#define STAT_CAC_KILLSTREAK_TIER1 STATS_KILLSTREAK_TIER1
#define STAT_CAC_KILLSTREAK_TIER2 STATS_KILLSTREAK_TIER2
#define STAT_CAC_KILLSTREAK_TIER3 STATS_KILLSTREAK_TIER3
#define FIRST_ATTACHMENT_PRIMARY_WEAPON \
Select( dvarInt( ui_multi_s ) == 0, GetItemEquippedAttachment( dvarString( ui_custom_name ), STAT_CAC_PRIMARY, 0 ), -1 )
#define SECOND_ATTACHMENT_PRIMARY_WEAPON \
Select( dvarInt( ui_multi_s ) == 0, GetItemEquippedAttachment( dvarString( ui_custom_name ), STAT_CAC_PRIMARY, 1 ), -1 )
#define FIRST_ATTACHMENT_SECONDARY_WEAPON \
Select( dvarInt( ui_multi_s ) == 0, GetItemEquippedAttachment( dvarString( ui_custom_name ), STAT_CAC_SECONDARY, 0 ), -1 )
#define SECOND_ATTACHMENT_SECONDARY_WEAPON \
Select( dvarInt( ui_multi_s ) == 0, GetItemEquippedAttachment( dvarString( ui_custom_name ), STAT_CAC_SECONDARY, 1 ), -1 )
// Frame setup
#define CAC_HEIGHT NEW_FRAME_DEFAULT_HEIGHT
#define CAC_WIDTH ( CAC_HEIGHT * FRAME_ASPECT_RATIO )
#define COMMON_ITEM_INFO_X ( -(NEW_FRAME_BUTTON_WIDTH+20) - 30 )
#define COMMON_ITEM_INFO_Y ( -CAC_HEIGHT/2 + NEW_FRAME_BG_Y_OFFSET( CAC_HEIGHT ) )
#define COMMON_ITEM_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_RIGHT
#include "ui_mp/cac_item_info.inc"
// Back button
#ifdef PC
NEW_FRAME_BACK_BUTTON_ACTION( 640, 480, ON_ESC )
#else //#ifdef PC
PREPROC_TEXT_DRAW_VIS( CHOICE_X_START -17 50 17 CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_BOTTOM, 0 0, "@PLATFORM_BACK", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1, 1 )
#endif //#ifdef PC
}
}

View File

@ -0,0 +1,620 @@
#include "ui/menudef.h"
#include "ui/framestyle.inc"
#include "ui_mp/newframe.inc"
#include "ui_mp/common_macro.inc"
#include "ui_mp/friendslist.inc"
// Pause menu background... separate menu so that it can draw behind the objective menu
menuDef
{
name "pausedbkgnd"
fullScreen 0
rect 0 0 640 480
focusColor COLOR_FOCUSED
blurWorld 4.8
visible 1
#define SINGLE_PLAYER 1
#include "ui_mp/ingamebg.inc"
}
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X 200
#define BACKGROUND_COLOR_GRAY_RGB 0.62 0.70 0.70
#ifdef PC
#undef CHOICE_X_START
#define CHOICE_X_START 30
#undef CHOICE_Y_START
#define CHOICE_Y_START -60
#define CHOICE_SEP_1 5
#else
#undef CHOICE_X_START
#define CHOICE_X_START 30
#undef CHOICE_Y_START
#define CHOICE_Y_START -30
#define CHOICE_SEP_1 3
#endif
#ifdef CONSOLE
#define CUSTOM_MATCH ( dvarbool( systemlink ) || dvarbool( xblive_privatematch ) )
#define NOT_CUSTOM_MATCH ( !dvarbool( systemlink ) && !dvarbool( xblive_privatematch ) )
#define RANKEDGAME (dvarBool( onlinegame ) && !dvarBool( xblive_privatematch ))
#define ISHOST (dvarBool( sv_running ))
#define TEAMGAME ( team( name ) != "TEAM_FREE")
#define NOTTEAMGAME ( team( name ) == "TEAM_FREE" )
#define ALLOW_VOTE ( !dvarbool( xblive_basictraining ) && !dvarbool( xblive_wagermatch ) && dvarbool( ui_allowvote ) )
#define IN_PREGAME ( dvarbool( ui_pregame ) )
#else
#define CUSTOM_MATCH ( dvarbool( systemlink ) || dvarbool( xblive_privatematch ) )
#define NOT_CUSTOM_MATCH ( !dvarbool( systemlink ) && !dvarbool( xblive_privatematch ) )
#define RANKEDGAME ( dvarbool( ui_ranked ) )
#define ISHOST ( dvarBool( sv_running ) )
#define TEAMGAME ( team( name ) != "TEAM_FREE")
#define NOTTEAMGAME ( team( name ) == "TEAM_FREE" )
#define ALLOW_VOTE ( !dvarbool( xblive_basictraining ) && !dvarbool( xblive_wagermatch ) && dvarbool( ui_allowvote ) )
#define IN_PREGAME ( dvarbool( ui_pregame ) )
#endif
// ------------------ preprocessing function definitions ------------------
#define PAD_LEFT \
execKeyInt DPAD_LEFT \
{ \
focusFirst; \
show selection_left; \
hide selection_right; \
} \
execKeyInt APAD_LEFT \
{ \
focusFirst; \
show selection_left; \
hide selection_right; \
}
#include "ui_mp/menustyle.inc"
#include "ui_mp/choices_setup_teams.menu"
#undef CHOICE_FOCUS_SOUND
#define CHOICE_FOCUS_SOUND "uin_navigation_over"
#undef CHOICE_GROUP
#define CHOICE_GROUP "class"
#undef CHOICE_HORIZONTAL_ALIGN
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_LEFT
#undef CHOICE_VERTICAL_ALIGN
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
#undef BUTTON_BG_X_START
#define BUTTON_BG_X_START 30
#undef BUTTON_BG_Y_START
#define BUTTON_BG_Y_START 42
#undef CHOICE_TEXTSTYLE
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
#define MAP_BACKGROUND_WIDTH 229
#define MAP_BACKGROUND_HEIGHT 228
#ifdef CONSOLE
#define MAP_BG_Y_START -110
#else // #ifdef CONSOLE
#define MAP_BG_Y_START -120
#endif // #else #ifdef CONSOLE
#define MAP_BG_X_START (-MAP_BACKGROUND_WIDTH - 30)
/* Grey color box which serve as the background for the map image and the contracts menu */
#define MAP_BACKGROUND \
PREPROC_SHADER_DRAW( MAP_BG_X_START MAP_BG_Y_START MAP_BACKGROUND_WIDTH MAP_BACKGROUND_HEIGHT HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_CENTER, "white", BG_BACKCOLOR )
#define CHOICE_TAB_TEXTSIZE TEXTSIZE_DEFAULT
#define TAB_1_TEXT (locString( "@MENU_TAB_MAP_CAPS" ))
#define TAB_2_TEXT (locString( "@MENU_TAB_CONTRACTS_CAPS" ))
#define TAB_BG_PAD 5
#define TAB_1_WIDTH ( getTextWidth( TAB_1_TEXT, CHOICE_TEXTFONT, CHOICE_TAB_TEXTSIZE ) + (TAB_BG_PAD*2) )
#define TAB_2_WIDTH ( getTextWidth( TAB_2_TEXT, CHOICE_TEXTFONT, CHOICE_TAB_TEXTSIZE ) + (TAB_BG_PAD*2) )
#define TAB_HEIGHT 18
#define MAP_LIST_TAB_1_X ( MAP_BG_X_START + TAB_BG_PAD )
#define MAP_LIST_TAB_2_X ( MAP_LIST_TAB_1_X + TAB_1_WIDTH )
#define MAP_LIST_TAB_Y ( MAP_BG_Y_START - TAB_HEIGHT )
#define MAP_HEADERSTEXT \
/* highlighted header */ \
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_LIST_TAB_1_X, \
MAP_LIST_TAB_Y, \
TAB_1_WIDTH, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_RIGHT, VERTICAL_ALIGN_CENTER, \
TAB_1_TEXT, CHOICE_TAB_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
1 1 1 1, \
when( dvarInt( showMap ) == 1 );, ; ) \
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_LIST_TAB_1_X, \
MAP_LIST_TAB_Y, \
TAB_1_WIDTH, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_RIGHT, VERTICAL_ALIGN_CENTER, \
TAB_1_TEXT, CHOICE_TAB_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
BACKGROUND_COLOR_GRAY_RGB .25, \
when( dvarInt( showMap ) == 0 );, ; ) \
/* non highlighted header */ \
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_LIST_TAB_2_X, \
MAP_LIST_TAB_Y, \
TAB_2_WIDTH, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_RIGHT, VERTICAL_ALIGN_CENTER, \
TAB_2_TEXT, CHOICE_TAB_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
1 1 1 1, \
when( dvarInt( showMap ) == 0 && RANKEDGAME );, ; ) \
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_LIST_TAB_2_X, \
MAP_LIST_TAB_Y, \
TAB_2_WIDTH, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_RIGHT, VERTICAL_ALIGN_CENTER, \
TAB_2_TEXT, CHOICE_TAB_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
BACKGROUND_COLOR_GRAY_RGB .25, \
when( dvarInt( showMap ) == 1 && RANKEDGAME );, ; )
#define MAP_LIST_TAB_1_ACTION \
if( RANKEDGAME ) \
{ \
setDvar showMap 1; \
}
#define MAP_LIST_TAB_2_ACTION \
if( RANKEDGAME ) \
{ \
setDvar showMap 0; \
}
#define MAP_HEADERSBUTTONS \
TAB_ACTION_BUTTON_ADV( MAP_LIST_TAB_1_X, \
MAP_LIST_TAB_Y, \
TAB_1_WIDTH, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_RIGHT, VERTICAL_ALIGN_CENTER, \
MAP_LIST_TAB_1_ACTION, when( dvarInt( showMap ) == 0 && RANKEDGAME );, ; ) \
TAB_ACTION_BUTTON_ADV( MAP_LIST_TAB_2_X, \
MAP_LIST_TAB_Y, \
TAB_2_WIDTH, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_RIGHT, VERTICAL_ALIGN_CENTER, \
MAP_LIST_TAB_2_ACTION, when( dvarInt( showMap ) == 1 && RANKEDGAME );, ; ) \
/* Tab for Map */
#define MAP_TAB_1_BG \
itemDef \
{ \
style WINDOW_STYLE_SHADER_FRAMED \
frame 5 0.5 FRAME_OPEN_BOTTOM \
rect 0 MAP_LIST_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_CENTER \
exp rect X( MAP_LIST_TAB_1_X ) \
exp rect W( TAB_1_WIDTH ) \
background "menu_mp_lobby_frame_circle" \
forecolor BG_BACKCOLOR \
visible when( dvarInt(showMap) == 1 ); \
decoration \
}
/* Tab for contracts */
#define MAP_TAB_2_BG \
itemDef \
{ \
style WINDOW_STYLE_SHADER_FRAMED \
frame 5 0.5 FRAME_OPEN_BOTTOM \
rect 0 MAP_LIST_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_CENTER \
exp rect X( MAP_LIST_TAB_2_X ) \
exp rect W( TAB_2_WIDTH ) \
background "menu_mp_lobby_frame_circle" \
forecolor BG_BACKCOLOR \
visible when( dvarInt(showMap) == 0 && RANKEDGAME ); \
decoration \
}
menuDef
{
name "class"
focuscolor COLOR_FOCUSED
style WINDOW_STYLE_EMPTY
#ifdef CONSOLE
rect 0 0 640 480
blurWorld 7.0
#else
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
#endif
#define ON_ESC scriptMenuResponse "back";
onOpen
{
if ( IsSplitscreen() )
{
close self;
open "class_splitscreen";
}
else
{
focusFirst;
hide selection_right;
setDvar showMap 1;
}
showMenu "pausedbkgnd"
}
onClose
{
hideMenu "pausedbkgnd"
}
onFocus
{
focusFirst;
}
onEsc
{
ON_ESC
}
#ifndef PC
execkeyint BUTTON_START
{
ON_ESC
}
#endif
execkeyint BUTTON_X
{
if( RANKEDGAME )
{
if( dvarInt(showMap) == 0 )
{
setDvar showMap 1;
}
else
{
setDvar showMap 0;
}
}
}
PAD_LEFT
MAP_BACKGROUND
MAP_TAB_1_BG
MAP_TAB_2_BG
#ifdef CONSOLE
#include "ui_mp/ingamebg.inc"
#endif
// -------- GAME TYPE NAME AND DESCRIPTION --------
#define MAPNAME tableLookup( "mp/mapstable.csv", 0, dvarString( mapname ), 3 )
CHOICE_MENU_TITLE_ALIGN_VIS( ( "@" + MAPNAME + "_CAPS" ), HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP, ITEM_ALIGN_MIDDLE_LEFT, 1 )
#undef BUTTON_BG_Y_START
#define BUTTON_BG_Y_START 70
CHOICE_MENU_TITLE_ALIGN_VIS( toUpper( gametypename() ), HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP, ITEM_ALIGN_MIDDLE_LEFT, 1 )
PREPROC_TEXT_DRAW_VIS_EX( BUTTON_BG_X_START (BUTTON_BG_Y_START+35) 230 60 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP, 0 0,
( gametypedescription() ),
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1,
1, autowrapped )
// Team icon
#define ICON_SIZE 92
#define ICON_X_START ( MAP_BG_X_START + MAP_BACKGROUND_WIDTH - ICON_SIZE )
#define ICON_RECT ICON_X_START 20 ICON_SIZE ICON_SIZE HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP
PREPROC_SHADER_DRAW_VIS_EX( ICON_RECT, ( dvarString( "g_TeamIcon_Allies" ) ), 1 1 1 1, when( TEAM_IS_MARINES );, ; )
PREPROC_SHADER_DRAW_VIS_EX( ICON_RECT, ( dvarString( "g_TeamIcon_Axis" ) ), 1 1 1 1, when( TEAM_IS_OPFOR );, ; )
//=========================================================
//===================== MENU SELECTION ====================
//=========================================================
#define IS_WAGER_MODE ( dvarInt( "xblive_wagermatch" ) == 1 )
#define IS_CUSTOM_MODE ( dvarInt( "custom_class_mode" ) == 1 )
#define IS_BAREBONES_MODE ( dvarInt( "barebones_class_mode" ) == 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", scriptMenuResponse "changeclass_barebones", ( IS_BAREBONES_MODE ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", scriptMenuResponse "changeclass_custom", ( IS_CUSTOM_MODE ), ; )
#ifdef CONSOLE
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", scriptMenuResponse "changeclass_wager", ( IS_WAGER_MODE && MAY_CHOOSE_CLASS && !IS_CUSTOM_MODE ), ; )
#endif // CONSOLE
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", scriptMenuResponse "changeclass_marines", ( TEAM_IS_MARINES && MAY_CHOOSE_CLASS && !IS_WAGER_MODE && !IS_CUSTOM_MODE && !IS_BAREBONES_MODE ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", scriptMenuResponse "changeclass_opfor", ( TEAM_IS_OPFOR && MAY_CHOOSE_CLASS && !IS_WAGER_MODE && !IS_CUSTOM_MODE && !IS_BAREBONES_MODE ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", scriptMenuResponse "changeclass_opfor", ( dvarInt( scr_oldschool ) == 1 && !IS_WAGER_MODE && !IS_CUSTOM_MODE && !IS_BAREBONES_MODE ), ; )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", ;, ;, ( dvarInt( scr_oldschool ) == 1 ), ; )
#ifdef CONSOLE
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CHANGE_TEAM_BUTTON_CAPS", scriptMenuResponse "changeteam", ( MAY_CHOOSE_TEAM ), ; )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 2, "@MPUI_CHANGE_TEAM_BUTTON_CAPS", ;, ;, ( MAY_NOT_CHOOSE_TEAM ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MENU_OPTIONS_CAPS", close self; open ingameoptions, 1, ; )
#define CAN_LEAVE_GAME ( !isVisibilityBitSet( BIT_ROUND_END_KILLCAM ) && !isVisibilityBitSet( BIT_FINAL_KILLCAM ) )
#ifdef PUBLIC_BETA
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_END_GAME_CAPS", open popup_endgame, ( RANKEDGAME == 0 && ISHOST && CAN_LEAVE_GAME ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_LEAVE_GAME_CAPS", open popup_leavegameandparty, ( RANKEDGAME == 0 && (ISHOST == 0) && (InPrivateParty() && !PrivatePartyHost() && PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_LEAVE_GAME_CAPS", open popup_leavegame, ( RANKEDGAME == 0 && (ISHOST == 0) && (!InPrivateParty() || PrivatePartyHost() || !PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_LEAVE_GAME_CAPS", open popup_endgame_ranked, ( RANKEDGAME && ISHOST && CAN_LEAVE_GAME && ( !HostMigrationWaitingForPlayers() ) ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_LEAVE_GAME_CAPS", open popup_leavegameandparty_ranked, ( RANKEDGAME && ISHOST == 0 && (InPrivateParty() && !PrivatePartyHost() && PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_LEAVE_GAME_CAPS", open popup_leavegame_ranked, ( RANKEDGAME && ISHOST == 0 && (!InPrivateParty() || PrivatePartyHost() || !PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
#else // #ifdef PUBLIC_BETA
//..............................................
// Dev only. Remove me prior to shipping
//FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_BADSPAWN_CAPS", open popup_badspawn, 1, ; )
//..............................................
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_END_GAME_CAPS", open popup_endgame, ( RANKEDGAME == 0 && ISHOST && CAN_LEAVE_GAME ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_LEAVE_GAME_CAPS", open popup_leavegameandparty, ( RANKEDGAME == 0 && (ISHOST == 0) && (InPrivateParty() && !PrivatePartyHost() && PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_LEAVE_GAME_CAPS", open popup_leavegame, ( RANKEDGAME == 0 && (ISHOST == 0) && (!InPrivateParty() || PrivatePartyHost() || !PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_LEAVE_GAME_CAPS", open popup_endgame_ranked, ( RANKEDGAME && ISHOST && CAN_LEAVE_GAME && ( !HostMigrationWaitingForPlayers() ) ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_LEAVE_GAME_CAPS", open popup_leavegameandparty_ranked, ( RANKEDGAME && ISHOST == 0 && (InPrivateParty() && !PrivatePartyHost() && PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_LEAVE_GAME_CAPS", open popup_leavegame_ranked, ( RANKEDGAME && ISHOST == 0 && (!InPrivateParty() || PrivatePartyHost() || !PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
#endif // #else #ifdef PUBLIC_BETA
#endif // #ifdef CONSOLE
#ifdef PC
#define SQUAD_CAP 12
#define INVITE_MEMBER 1
#define KICK_MEMBER 2
#define SQUAD_BUTTON_START_X -439
#define SQUAD_BUTTON_START_Y -65
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CHANGE_TEAM_CAPS", scriptMenuResponse "changeteam", (dvarBool( ui_allow_teamchange )), ; )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 2, "@MPUI_CHANGE_TEAM_BUTTON_CAPS", ;, ;, ( !dvarBool( ui_allow_teamchange ) ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CALL_VOTE_CAPS", open callvote; close self;, ( ALLOW_VOTE ), ; )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 3, "@MPUI_CALL_VOTE_CAPS", ;, ;, ( !ALLOW_VOTE ), ; )
// FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MPUI_MUTE_PLAYERS_CAPS", open muteplayer_menu; close self;, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_PLAYERS_CAPS", close self; open players;, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_FRIENDS_CAPS", SETUP_ACTION_INVITE, 1, ; )
CHOICE_NEWICON_VIS( 5, "menu_mp_lobby_new", when( hasinvites() || haspendingfriends() ); )
FRAME_CHOICE_BUTTON_VIS_EX( 6, "@MENU_SETTINGS_CAPS", close self; open options_new_pc; execnow "set ui_allow_graphic_change 0";, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 7, "@MENU_ADD_TO_FAVORITES_CAPS", uiscript createFavoriteIngame; open fav_message_popmenu;, ( ISHOST == 0 ), ; )
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 7, "@MENU_ADD_TO_FAVORITES_CAPS", ;, ;, ( ISHOST ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 8, "@MENU_LEAVE_GAME_CAPS", open popup_endgame, ( ( !RANKEDGAME || IN_PREGAME ) && ISHOST && CAN_LEAVE_GAME ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 8, "@MENU_LEAVE_GAME_CAPS", open popup_leavegame, ( ( !RANKEDGAME || IN_PREGAME ) && !ISHOST ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 8, "@MENU_LEAVE_GAME_CAPS", open popup_endgame_ranked, ( RANKEDGAME && !IN_PREGAME && ISHOST && CAN_LEAVE_GAME ), ; )
FRAME_CHOICE_BUTTON_VIS_EX( 8, "@MENU_LEAVE_GAME_CAPS", open popup_leavegame_ranked, ( RANKEDGAME && !IN_PREGAME && !ISHOST && CAN_LEAVE_GAME ), ; )
#endif // #ifdef PC
//Showing the ingame Xp bar.
#include "ui_mp/popup_player_info.inc"
#define SHOW_XP_BAR ( RANKEDGAME || dvarInt( xblive_basictraining ) )
#define XP_BAR_WIDTH ( Select( dvarInt( widescreen ), 592, 407 ) )
#define XP_TEXT_WIDTH 65
#define X_START (-XP_BAR_WIDTH - XP_TEXT_WIDTH - 100)
#define XP_BAR_Y_START 115
#define REQUIRED_XP int(getDStat( "PlayerStatsList", "RANKXP" )-int(tablelookup( "mp/ranktable.csv", 0, string(getDStat( "PlayerStatsList", "RANK" )), 2)))
#define REQUIRED_XP_STRING (int(tablelookup( "mp/ranktable.csv", 0, string(getDStat( "PlayerStatsList", "RANK" )), 3 ))-REQUIRED_XP)
#define NEXT_LEVEL ( tablelookup( "mp/ranktable.csv", 0, getDStat( "PlayerStatsList", "RANK" ) + 1, 14 ) )
#define BAR_FILLED XP_BAR_WIDTH*((getDStat( "PlayerStatsList", "RANKXP" )-int(tablelookup( "mp/ranktable.csv", 0, string(getDStat( "PlayerStatsList", "RANK" )), 2)))/int(tablelookup("mp/ranktable.csv",0,getDStat( "PlayerStatsList", "RANK" ),3)))
/* BACKGROUND FOR XP BAR */
PREPROC_SHADER_DRAW_ADV_VIS_EX( (X_START+XP_TEXT_WIDTH),
XP_BAR_Y_START,
XP_BAR_WIDTH,
20,
HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN,
"white", BG_BACKCOLOR,
when( CAN_RANK_UP && SHOW_XP_BAR ), ; )
PREPROC_SHADER_DRAW_ADV_VIS_EX( (X_START+XP_TEXT_WIDTH),
XP_BAR_Y_START,
XP_BAR_WIDTH,
20,
HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN,
"menu_mp_bar_shadow", 1 1 1 0.2,
when( CAN_RANK_UP && SHOW_XP_BAR ), ; )
/* XP BAR */
PREPROC_SHADER_DRAW_ADV_VIS_EX( (X_START+XP_TEXT_WIDTH),
XP_BAR_Y_START,
(BAR_FILLED),
20,
HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN,
"menu_mp_combatrecord_bar", BAR_COLOR,
when( CAN_RANK_UP && SHOW_XP_BAR ),
; )
/* Tiny arrow at xp bar end */
PREPROC_SHADER_DRAW_ADV_VIS_EX( ( -5 + (X_START+XP_TEXT_WIDTH) + BAR_FILLED),
(XP_BAR_Y_START+18),
10,
10,
HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN,
"ui_arrow_right", BAR_COLOR,
when( CAN_RANK_UP && SHOW_XP_BAR );,
rotation -90; )
/* Label for "NEXT LEVEL" */
PREPROC_TEXT_DRAW_ADV_VIS_EX( X_START,
XP_BAR_Y_START,
XP_BAR_WIDTH,
20,
HORIZONTAL_ALIGN_RIGHT, CHOICE_VERTICAL_ALIGN,
"@MPUI_NEXT_LEVEL_CAPS",
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR,
when( SHOW_XP_BAR ), ; )
/* value for XP NEEDED to next level */
PREPROC_TEXT_DRAW_ADV_VIS_EX( (X_START+XP_TEXT_WIDTH),
XP_BAR_Y_START,
XP_BAR_WIDTH,
20,
HORIZONTAL_ALIGN_RIGHT, CHOICE_VERTICAL_ALIGN,
locString( "MPUI_AAR_XP_NEEDED_CAPS", REQUIRED_XP_STRING ),
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR,
when( CAN_RANK_UP && SHOW_XP_BAR ), ; )
/* next level */
PREPROC_TEXT_DRAW_ADV_VIS_EX( (X_START+XP_BAR_WIDTH+XP_TEXT_WIDTH+3),
(XP_BAR_Y_START+2),
15,
15,
HORIZONTAL_ALIGN_RIGHT, CHOICE_VERTICAL_ALIGN,
int( NEXT_LEVEL ),
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR,
when( CAN_RANK_UP && PRESTIGE_NEXT==0 && SHOW_XP_BAR ), ; )
PREPROC_TEXT_DRAW_ADV_VIS_EX( (X_START+XP_BAR_WIDTH+XP_TEXT_WIDTH+3),
(XP_BAR_Y_START+2),
15,
15,
HORIZONTAL_ALIGN_RIGHT, CHOICE_VERTICAL_ALIGN,
"1",
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR,
when( CAN_RANK_UP && PRESTIGE_NEXT && SHOW_XP_BAR ), ; )
/* next level rank icon */
RANK_ICON_ADV( ( X_START+XP_BAR_WIDTH+XP_TEXT_WIDTH+6+getTextWidth( NEXT_LEVEL, CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) ), (XP_BAR_Y_START+2), HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_CENTER,
tablelookup( "mp/rankIconTable.csv", 0, getDStat( "PlayerStatsList", "RANK" )+1, getDStat( "PlayerStatsList", "PLEVEL" )+1 ),
when( CAN_RANK_UP && PRESTIGE_NEXT==0 && SHOW_XP_BAR ) )
RANK_ICON_ADV( ( X_START+XP_BAR_WIDTH+XP_TEXT_WIDTH+6+getTextWidth( "1", CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) ), (XP_BAR_Y_START+2), HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_CENTER,
tablelookup( "mp/rankIconTable.csv", 0, 0, getDStat( "PlayerStatsList", "PLEVEL" )+2 ),
when( CAN_RANK_UP && PRESTIGE_NEXT && SHOW_XP_BAR) )
//************************************Contracts********************************
//*****************************************************************************
//Green background
#define BACKGROUND_COLOR_COMPLETED_RGB .34 .9 .34
//Gray background
#define BACKGROUND_COLOR_PROGRESS_RGB BACKGROUND_COLOR_GRAY_RGB
//Red background
#define BACKGROUND_COLOR_EXPIRED_RGB .9 .16 .24
// Yellow Background
#define BACKGROUND_COLOR_PROGRESS_STATUS 0.97 0.85 0.03
#define CONTRACTS_Y_START ( MAP_BG_Y_START + 5 )
#define CONTRACTS_X_START ( MAP_BG_X_START + TAB_BG_PAD )
#define CONTRACTS_WIDTH ( MAP_BACKGROUND_WIDTH - (TAB_BG_PAD*2) )
#define CONTRACTS_HEIGHT ( MAP_BACKGROUND_HEIGHT - TAB_BG_PAD )
#define CONTRACT_INFO( index, visArg ) \
/* BACKGROUND FOR CONTRACT INFO if completed*/ \
PREPROC_SHADER_DRAW_VIS_EX( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index ) CONTRACTS_WIDTH (CONTRACTS_HEIGHT/3 - 5 ) HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, \
"white", BACKGROUND_COLOR_COMPLETED_RGB .1, \
when( visArg && dvarInt(showMap) == 0 && IsContractComplete( GetIndexForActiveContract( index ) ) ), \
; ) \
/* BACKGROUND FOR CONTRACT INFO if in progress*/ \
PREPROC_SHADER_DRAW_VIS_EX( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index ) CONTRACTS_WIDTH (CONTRACTS_HEIGHT/3 - 5 ) HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, \
"white", BACKGROUND_COLOR_PROGRESS_RGB .1, \
when( visArg && dvarInt(showMap) == 0 && IsContractInProgress( GetIndexForActiveContract( index ) ) ), \
; ) \
/* BACKGROUND FOR CONTRACT INFO if expired*/ \
PREPROC_SHADER_DRAW_VIS_EX( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index ) CONTRACTS_WIDTH (CONTRACTS_HEIGHT/3 - 5 ) HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, \
"white", BACKGROUND_COLOR_EXPIRED_RGB .1, \
when( visArg && dvarInt(showMap) == 0 && IsContractExpired( GetIndexForActiveContract( index ) ) ), \
; ) \
/* CONTRACT NAME */ \
PREPROC_TEXT_DRAW_VIS( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index ) CONTRACTS_WIDTH 20 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0, GetContractName( GetIndexForActiveContract( index ) ), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, CHOICE_TEXTCOLOR, when( visArg ); autowrapped ) \
/* CONTRACT DESC */ \
PREPROC_TEXT_DRAW_VIS( ( CONTRACTS_X_START+2 ) ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index + 12 ) ( CONTRACTS_WIDTH-2 ) 20 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0, GetContractDesc( GetIndexForActiveContract( index ) ),0.24, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, BACKGROUND_COLOR_PROGRESS_RGB .25, when( visArg ); autowrapped ) \
/* CONTRACT STATUS WHEN COMPLETED */ \
PREPROC_TEXT_DRAW_VIS( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index + 65 ) CONTRACTS_WIDTH 20 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0, "@MPUI_COMPLETE_CAPS", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_CENTER, NEW_FRAME_GREEN_RGB 1, when( IsContractComplete( GetIndexForActiveContract( index ) ) > 0 && visArg ) ) \
/* CONTRACT PROGRESS TEXT ( YELLOW WHEN CONTRACT IS IN PROGRESS ) */ \
PREPROC_TEXT_DRAW_VIS( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index + 65 ) CONTRACTS_WIDTH 20 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0, locString("MPUI_CONTRACT_PROGRESS_WITHBRACES", GetContractProgress( GetIndexForActiveContract( index ) ), GetContractRequiredCount( GetIndexForActiveContract( index ) ) ), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_CENTER, NEW_FRAME_ORANGE_RGB 1, when( IsContractInProgress( GetIndexForActiveContract( index ) ) > 0 && GetContractRequiredCount( GetIndexForActiveContract( index ) ) > 1 && visArg ) ) \
PREPROC_TEXT_DRAW_VIS( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index + 65 ) CONTRACTS_WIDTH 20 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0, locString("MPUI_CONTRACT_NOT_COMPLETE"), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_CENTER, NEW_FRAME_ORANGE_RGB 1, when( IsContractInProgress( GetIndexForActiveContract( index ) ) > 0 && GetContractRequiredCount( GetIndexForActiveContract( index ) ) == 1 && visArg ) ) \
/* CONTRACT STATUS WHEN EXPIRED */ \
PREPROC_TEXT_DRAW_VIS( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index + 65 ) CONTRACTS_WIDTH 20 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0, "@MPUI_CONTRACT_EXPIRED_CAPS", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_CENTER, NEW_FRAME_RED_RGB 1, when( IsContractExpired( GetIndexForActiveContract( index ) ) > 0 && visArg ) ) \
CONTRACT_INFO( 0, ( GetIndexForActiveContract(0) != -1 && RANKEDGAME && dvarInt(showMap) == 0 ) )
CONTRACT_INFO( 1, ( GetIndexForActiveContract(1) != -1 && RANKEDGAME && dvarInt(showMap) == 0 ) )
CONTRACT_INFO( 2, ( GetIndexForActiveContract(2) != -1 && RANKEDGAME && dvarInt(showMap) == 0 ) )
#define NO_ACTIVE_CONTRACTS \
(GetIndexForActiveContract(0) == -1 && GetIndexForActiveContract(1) == -1 && GetIndexForActiveContract(2) == -1)
PREPROC_TEXT_DRAW_VIS_EX( ( CONTRACTS_X_START+20 ) CONTRACTS_Y_START ( CONTRACTS_WIDTH - 40 ) 40 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0,
"@MPUI_AAR_NO_NEW_CONTRACTS",
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, CHOICE_TEXTCOLOR,
when( NO_ACTIVE_CONTRACTS && RANKEDGAME && dvarInt(showMap) == 0 );,
autowrapped )
// Tactical Map
#define SHOULD_SHOW_MAP dvarInt(showMap)
#undef RIGHTITEM_ALIGN
#define RIGHTITEM_ALIGN HORIZONTAL_ALIGN_RIGHT
#define MAP_X ( MAP_BG_X_START + 5 )
#define MAP_Y ( 101 )
#include "ui_mp/tactical_map.inc"
// ----------------- BEGIN Scroller --------------------------
#include "ui/scroller.inc"
// ----------------- END Scroller --------------------------
#define SETUP_ACTION_OPENFRIENDLIST \
open menu_friends;
// ------------------ buttons ---------------------
#ifdef PC
NEW_FRAME_BACK_BUTTON_ACTION_PC_VIS( ON_ESC , when( !dvarInt( ui_show_friends_list_bg ) ) )
#else
// Back button
PREPROC_TEXT_DRAW_VIS( CHOICE_X_START -17 50 17 CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_BOTTOM, 0 0, "@PLATFORM_BACK", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1, when( !dvarInt( ui_show_friends_list_bg ) ) )
#endif // PC
// Contracts / Map button
#ifndef PC
PREPROC_TEXT_DRAW_VIS( (MAP_BG_X_START-1) -17 50 17 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM, 0 0, "@PLATFORM_SHOW_CONTRACTS", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1, when( dvarInt( showMap ) == 1 && RANKEDGAME && !dvarInt( ui_show_friends_list_bg ) ) )
PREPROC_TEXT_DRAW_VIS( (MAP_BG_X_START-1) -17 50 17 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM, 0 0, "@PLATFORM_SHOW_MAP", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1, when( dvarInt( showMap ) == 0 && RANKEDGAME && !dvarInt( ui_show_friends_list_bg ) ) )
// Friends list button
#ifdef PS3
GAMEPAD_BUTTON( -55 -17 70 17 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM, "@PLATFORM_FRIENDLIST", BUTTON_Y { SETUP_ACTION_OPENFRIENDLIST; }, when( !dvarInt( ui_show_friends_list_bg ) && !IS_WAGER_MODE && anySignedInToLiveAndStatsFetched() && canShowContentFromUser( 0 ) ) )
#else // #ifdef PS3
GAMEPAD_BUTTON( -55 -17 70 17 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM, "@PLATFORM_FRIENDLIST", BUTTON_Y { SETUP_ACTION_OPENFRIENDLIST; }, when( !dvarInt( ui_show_friends_list_bg ) && !IS_WAGER_MODE && anySignedInToLiveAndStatsFetched() ) )
#endif // #ifdef PS3
#endif
MAP_HEADERSTEXT
MAP_HEADERSBUTTONS
itemDef
{
name friends_list_bg
style WINDOW_STYLE_FILLED
rect -400 -200 10000 10000
backcolor 0 0 0 0
visible when( IsInGame() );
decoration
state
{
name on
backcolor 0 0 0 0.7
}
}
#include "ui/safearea.menu"
}
#undef CHOICE_GROUP
#define CHOICE_GROUP "popmenu"
#include "ui_mp/popupstyle.inc"
#include "ui/choices_setup_popmenu.menu"
menuDef
{
SYSTEM_POPUP_SETUP_VIS( popup_badspawn, setfocus popup_badspawn_2, ;, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MPUI_REPORT_BADSPAWN", 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_YES", scriptMenuResponse "badspawn"; close self, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_NO", close self, 1, name popup_badspawn_2 )
}

View File

@ -0,0 +1,576 @@
#include "ui/menudef.h"
#include "ui_mp/common_macro.inc"
#include "ui/framestyle.inc"
#include "ui_mp/newframe.inc"
#include "ui_mp/serverbrowser.inc";
#include "ui_mp/menustyle.inc"
#include "ui/choices_setup_common.menu"
#include "ui_mp/item_animate.inc"
#define SERVER_BROWSER_HEIGHT 420
#define SERVER_BROWSER_WIDTH TABLE_WIDTH
#define SERVER_BROWSER_BODY_X_START ( -SERVER_BROWSER_WIDTH / 2 + 15 )
#define SERVER_BROWSER_BODY_Y_START ( -SERVER_BROWSER_HEIGHT / 2 + 15 + NEW_FRAME_HEADER_HEIGHT )
#undef CHOICE_HORIZONTAL_ALIGN
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
#undef CHOICE_VERTICAL_ALIGN
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
#define FLYOUT_NONE 0
#define FLYOUT_BROWSER 3
#undef CHOICE_TEXTSTYLE
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
#define TAB_OPEN( menuName ) \
execNow closemenuImmediate (dvarstring("ui_serverBrowserMenu")); \
execNow openMenuImmediate (menuName); \
#undef ORIGIN_TITLE
#define ORIGIN_TITLE 10 0
#define CHOICE_TAB_TEXTSIZE TEXTSIZE_DEFAULT
#define TAB_1_TEXT ( locString( "@MENU_JOIN_SERVER_RANKED_CAPS" ) )
#define TAB_2_TEXT ( locString( "@MENU_JOIN_SERVER_UNRANKED_CAPS" ) )
#define TAB_3_TEXT ( locString( "@MENU_JOIN_SERVER_WAGER_CAPS" ) )
#define TAB_4_TEXT ( locString( "@MENU_JOIN_SERVER_FRIENDS_CAPS" ) )
#define TAB_5_TEXT ( locString( "@MENU_JOIN_SERVER_FAVORITES_CAPS" ) )
#define TAB_6_TEXT ( locString( "@MENU_JOIN_SERVER_HISTORY_CAPS" ) )
#define TAB_BG_PAD 5
#define TAB_1_WIDTH ( getTextWidth( TAB_1_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
#define TAB_2_WIDTH ( getTextWidth( TAB_2_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
#define TAB_3_WIDTH ( getTextWidth( TAB_3_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
#define TAB_4_WIDTH ( getTextWidth( TAB_4_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
#define TAB_5_WIDTH ( getTextWidth( TAB_5_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
#define TAB_6_WIDTH ( getTextWidth( TAB_6_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
#define TAB_HEIGHT 15
#define SERVER_BROWSER_TAB_1_X 9
#define SERVER_BROWSER_TAB_2_X ( SERVER_BROWSER_TAB_1_X + TAB_1_WIDTH )
#define SERVER_BROWSER_TAB_3_X ( SERVER_BROWSER_TAB_2_X + TAB_2_WIDTH )
#define SERVER_BROWSER_TAB_4_X ( SERVER_BROWSER_TAB_3_X + TAB_3_WIDTH )
#define SERVER_BROWSER_TAB_5_X ( SERVER_BROWSER_TAB_4_X + TAB_4_WIDTH )
#define SERVER_BROWSER_TAB_6_X ( SERVER_BROWSER_TAB_5_X + TAB_5_WIDTH )
#define SERVER_BROWSER_TAB_Y ( ( -SERVER_BROWSER_HEIGHT / 2 ) + NEW_FRAME_HEADER_HEIGHT - TAB_HEIGHT + 1 )
#define TAB( x, tabWidth, textArg, menuName, selected ) \
PREPROC_TEXT_DRAW_ADV_VIS_EX( ( -SERVER_BROWSER_WIDTH / 2 + x ), \
SERVER_BROWSER_TAB_Y, \
tabWidth, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
textArg, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
NEW_FRAME_GRAY_TEXT_COLOR, when( !selected ), TAB_MOUSEOVER_HIGHLIGHT; ) \
PREPROC_TEXT_DRAW_ADV_VIS_EX( ( -SERVER_BROWSER_WIDTH / 2 + x ), \
SERVER_BROWSER_TAB_Y, \
tabWidth, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
textArg, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
NEW_FRAME_ORANGE_RGB 1, when( selected ), ; ) \
TAB_ACTION_BUTTON_ADV( ( -SERVER_BROWSER_WIDTH / 2 + x ), \
( -SERVER_BROWSER_HEIGHT / 2 + NEW_FRAME_HEADER_HEIGHT - TAB_HEIGHT ), \
tabWidth, \
TAB_HEIGHT, \
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
TAB_OPEN( menuName ), 1, ; ) \
#define SERVER_BROWSER_TAB_BG( px, tabWidth, selected ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
frame 16 0.2 FRAME_OPEN_BOTTOM \
rect 0 SERVER_BROWSER_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
exp rect X( ( -SERVER_BROWSER_WIDTH / 2 + px ) ) \
exp rect W( tabWidth ) \
background "menu_mp_tab_frame_inner" \
forecolor 0.5 0.5 0.5 0.5 \
visible when( selected ) \
decoration \
} \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
frame 16 0.2 FRAME_OPEN_BOTTOM \
rect 0 SERVER_BROWSER_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
exp rect X( ( -SERVER_BROWSER_WIDTH / 2 + px ) ) \
exp rect W( tabWidth ) \
background "menu_mp_tab_frame_inner" \
forecolor 1 1 1 1 \
visible when( !selected ) \
decoration \
}
#define ON_ESC \
if( menuisopen( filter_window ) ) \
{ \
close filter_window; \
} \
else \
{ \
close self; \
}
#define SERVER_BROWSER_MENU_TEMPLATE( menuName, onOpenArg, onCloseArg ) \
name menuName \
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN \
focuscolor COLOR_FOCUSED \
style WINDOW_STYLE_FILLED \
priority MENU_PRI_DEFAULT \
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 \
onFocus { \
setDvar ui_flyoutHasFocus FLYOUT_BROWSER; \
} \
onOpen { \
activateBlur; \
play uin_navigation_menu_lg_open; \
setdvar ui_serverBrowserMenu menuName; \
onOpenArg; \
uiScript PopulateServers; \
} \
onClose { \
execNow ui_animate menuName Browser "Maximized" DEFAULT_SLIDE_OUT_SPEED; \
deactivateBlur; \
onCloseArg; \
setDvar ui_flyoutHasFocus FLYOUT_NONE; \
execNow closemenuImmediate (filter_window); \
} \
onEsc { \
ON_ESC \
} \
execKeyInt 171 { \
uiScript RefreshServers; \
} \
#define GLOBAL_SERVER_COUNT \
PREPROC_TEXT_DRAW( (SERVER_BROWSER_WIDTH/2-7) (-SERVER_BROWSER_HEIGHT/2+2) 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, ( locString( "@PLATFORM_PLAYERS_ONLINE", GetPlayersRegisteredOnline() ) ), TEXTSIZE_DEFAULT, 0, 1, ITEM_ALIGN_TOP_RIGHT, 1 1 1 1 ) \
PREPROC_TEXT_DRAW( (SERVER_BROWSER_WIDTH/2-7) (-SERVER_BROWSER_HEIGHT/2+20) 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, ( locString( "@PLATFORM_ALL_SERVERS", GetDedicatedServersRegisteredOnline() ) ), TEXTSIZE_DEFAULT, 0, 1, ITEM_ALIGN_TOP_RIGHT, 1 1 1 1 )
// Don't let keys fall through to the main menu.
#define MASSIVE_HACK_KEYCATCHER \
itemDef \
{ \
style WINDOW_STYLE_EMPTY \
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN \
forecolor 1 1 1 0 \
visible 1 \
}
#define SERVER_BROWSER_TAB_COMMON_ITEMS( selectedTabIndex ) \
MASSIVE_HACK_KEYCATCHER \
NEW_FRAME( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT ) \
NEW_FRAME_TITLE( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT, "@MENU_SERVER_BROWSER_CAPS", 1 ) \
SERVER_BROWSER_TAB_BG( SERVER_BROWSER_TAB_1_X, TAB_1_WIDTH, ( selectedTabIndex == 1 ) ) \
SERVER_BROWSER_TAB_BG( SERVER_BROWSER_TAB_2_X, TAB_2_WIDTH, ( selectedTabIndex == 2 ) ) \
SERVER_BROWSER_TAB_BG( SERVER_BROWSER_TAB_3_X, TAB_3_WIDTH, ( selectedTabIndex == 3 ) ) \
SERVER_BROWSER_TAB_BG( SERVER_BROWSER_TAB_4_X, TAB_4_WIDTH, ( selectedTabIndex == 4 ) ) \
SERVER_BROWSER_TAB_BG( SERVER_BROWSER_TAB_5_X, TAB_5_WIDTH, ( selectedTabIndex == 5 ) ) \
SERVER_BROWSER_TAB_BG( SERVER_BROWSER_TAB_6_X, TAB_6_WIDTH, ( selectedTabIndex == 6 ) ) \
TAB( SERVER_BROWSER_TAB_1_X, TAB_1_WIDTH, TAB_1_TEXT, server_browser_ranked, ( selectedTabIndex == 1 ) ) \
TAB( SERVER_BROWSER_TAB_2_X, TAB_2_WIDTH, TAB_2_TEXT, server_browser_unranked, ( selectedTabIndex == 2 ) ) \
TAB( SERVER_BROWSER_TAB_3_X, TAB_3_WIDTH, TAB_3_TEXT, server_browser_wager, ( selectedTabIndex == 3 ) ) \
TAB( SERVER_BROWSER_TAB_4_X, TAB_4_WIDTH, TAB_4_TEXT, server_browser_friends, ( selectedTabIndex == 4 ) ) \
TAB( SERVER_BROWSER_TAB_5_X, TAB_5_WIDTH, TAB_5_TEXT, server_browser_favorites, ( selectedTabIndex == 5 ) ) \
TAB( SERVER_BROWSER_TAB_6_X, TAB_6_WIDTH, TAB_6_TEXT, server_browser_history, ( selectedTabIndex == 6 ) ) \
GLOBAL_SERVER_COUNT
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
// server_browser_main acts as a gateway to open the correct sub menu based upon dvar settings
menuDef
{
name server_browser_main
fullScreen 0
style WINDOW_STYLE_EMPTY
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
onFocus
{
close self;
exec openmenu (dvarString( "ui_serverBrowserMenu" ));
}
}
#define FILTER_ACTION \
if( menuisopen( filter_window ) ) \
{ \
close filter_window; \
} \
else \
{ \
open filter_window; \
}
#define BUTTON_SPACING 20
#define FILTER_BUTTON_OFFSET ( getTextWidth( locString( "@PLATFORM_BACK" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) + 8 + BUTTON_SPACING )
#define SERVER_INFO_BUTTON_OFFSET ( FILTER_BUTTON_OFFSET + getTextWidth( locString( "@MENU_FILTER_SERVERS" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) + 8 + BUTTON_SPACING )
#define JOIN_BUTTON_OFFSET ( 0 )
#define REFRESH_BUTTON_OFFSET ( -JOIN_BUTTON_OFFSET - getTextWidth( locString( "@MENU_JOIN_SERVER" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) - 8 - BUTTON_SPACING )
#define SERVER_BROWSER_BOTTOM_BUTTONS \
NEW_FRAME_BUTTON_PC_LEFT_OFFSET( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT, FILTER_BUTTON_OFFSET, "@MENU_FILTER_SERVERS", FILTER_ACTION, 1 ) \
NEW_FRAME_BUTTON_PC_LEFT_OFFSET( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT, SERVER_INFO_BUTTON_OFFSET, "@MENU_SERVER_INFO", open newframeserverinfo;, 1 ) \
NEW_FRAME_BUTTON_PC_RIGHT_OFFSET( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT, REFRESH_BUTTON_OFFSET, "@MENU_REFRESH_LIST", uiScript RefreshServers;, 1 ) \
NEW_FRAME_BUTTON_PC_RIGHT_OFFSET( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT, JOIN_BUTTON_OFFSET, "@MENU_JOIN_SERVER", JOIN_SERVER_ACTION;, 1 ) \
NEW_FRAME_BACK_BUTTON_ACTION( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT, ON_ESC )
menuDef
{
SERVER_BROWSER_MENU_TEMPLATE( server_browser_ranked, uiscript UpdateNetSource AS_RANKED;, ; )
PC_TAB_SWITCH_ACTIONS( server_browser_ranked, server_browser_history, server_browser_unranked )
SERVER_BROWSER_TAB_COMMON_ITEMS( 1 );
// buttons
SERVER_BROWSER_BOTTOM_BUTTONS
// browser
SERVER_BROWSER( browser, FEEDER_SERVERS, 1)
}
menuDef
{
SERVER_BROWSER_MENU_TEMPLATE( server_browser_unranked, uiscript UpdateNetSource AS_UNRANKED;, ; )
PC_TAB_SWITCH_ACTIONS( server_browser_unranked, server_browser_ranked, server_browser_wager )
SERVER_BROWSER_TAB_COMMON_ITEMS( 2 )
// buttons
SERVER_BROWSER_BOTTOM_BUTTONS
// browser listbox with background
SERVER_BROWSER( browser, FEEDER_SERVERS, 1)
}
menuDef
{
SERVER_BROWSER_MENU_TEMPLATE( server_browser_wager, uiscript UpdateNetSource AS_WAGER;, ; )
PC_TAB_SWITCH_ACTIONS( server_browser_wager, server_browser_unranked, server_browser_friends )
SERVER_BROWSER_TAB_COMMON_ITEMS( 3 )
// buttons
SERVER_BROWSER_BOTTOM_BUTTONS
// browser listbox with background
SERVER_BROWSER( browser, FEEDER_SERVERS, 1)
}
menuDef
{
SERVER_BROWSER_MENU_TEMPLATE( server_browser_friends, uiscript UpdateNetSource AS_FRIENDS;, ; )
PC_TAB_SWITCH_ACTIONS( server_browser_friends, server_browser_wager, server_browser_favorites )
SERVER_BROWSER_TAB_COMMON_ITEMS( 4 )
// buttons
SERVER_BROWSER_BOTTOM_BUTTONS
// browser listbox with background
SERVER_BROWSER( browser, FEEDER_SERVERS, 1)
}
menuDef
{
SERVER_BROWSER_MENU_TEMPLATE( server_browser_favorites, uiscript UpdateNetSource AS_FAVORITES;, ; )
PC_TAB_SWITCH_ACTIONS( server_browser_favorites, server_browser_friends, server_browser_history )
SERVER_BROWSER_TAB_COMMON_ITEMS( 5 )
// buttons
SERVER_BROWSER_BOTTOM_BUTTONS
// browser listbox with background
SERVER_BROWSER( browser, FEEDER_SERVERS, 1)
}
menuDef
{
SERVER_BROWSER_MENU_TEMPLATE( server_browser_history, uiscript UpdateNetSource AS_HISTORY;, ; )
PC_TAB_SWITCH_ACTIONS( server_browser_history, server_browser_favorites, server_browser_ranked )
SERVER_BROWSER_TAB_COMMON_ITEMS( 6 )
// buttons
SERVER_BROWSER_BOTTOM_BUTTONS
// browser listbox with background
SERVER_BROWSER( browser, FEEDER_SERVERS, 1)
}
#undef MENUDEF_NAME
#define MENUDEF_NAME filter_window
#undef CHOICE_BUTTON_NAME
#define CHOICE_BUTTON_NAME "filter_"
#define FILTER_WIDTH TABLE_WIDTH
#define FILTER_HEIGHT FILTER_MENU_HEIGHT
#define FILTER_X (TABLE_X - 10)
#define FILTER_Y ( TABLE_Y + (TABLE_HEIGHT - FILTER_HEIGHT) - 2 )
#undef CHOICE_TEXT_COLOR_NO_HL
#undef CHOICE_TEXT_COLOR_HL
#undef CHOICE_CAPTION_TEXT_COLOR_NO_HL
#undef CHOICE_CAPTION_TEXT_COLOR_HL
#define CHOICE_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
#define CHOICE_TEXT_COLOR_HL 1 1 1 1
#define CHOICE_CAPTION_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
#define CHOICE_CAPTION_TEXT_COLOR_HL 0 0 0 1
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X 120
#undef CHOICE_Y_START
#define CHOICE_Y_START 0
#undef CHOICE_X_START
#define CHOICE_X_START 0
#undef CHOICE_TEXTSIZE
#define CHOICE_TEXTSIZE TEXTSIZE_SMALL
#undef CHOICE_DVAR_EXTRA_WIDTH
#define CHOICE_DVAR_EXTRA_WIDTH 60
menuDef
{
name filter_window
rect FILTER_X FILTER_Y FILTER_WIDTH FILTER_HEIGHT CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN
focuscolor COLOR_FOCUSED
style WINDOW_STYLE_FILLED
priority MENU_PRI_ONTOP
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
closeSlideSpeed (DEFAULT_SLIDE_OUT_SPEED*2)
openSlideDirection MENU_SLIDE_DIRECTION_BOTTOM_TO_TOP
closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
visible 1
onOpen
{
play uin_navigation_menu_lg_open;
execNow ui_animate (dvarString( "ui_serverBrowserMenu" )) Browser "Reduced" DEFAULT_SLIDE_IN_SPEED;
}
onClose
{
execNow ui_animate (dvarString( "ui_serverBrowserMenu" )) Browser "Maximized" DEFAULT_SLIDE_OUT_SPEED;
}
onEsc
{
close self;
}
leaveFocus
{
close self;
}
itemDef
{
style WINDOW_STYLE_SHADER_FRAMED
rect -10 -10 ( FILTER_WIDTH + 20 ) ( FILTER_HEIGHT + 20 ) HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
background "menu_mp_lobby_frame_outer"
forecolor 1 1 1 1
visible when( 1 );
decoration
frame 26 0.1 FRAME_SIDE_ALL
}
itemDef
{
style WINDOW_STYLE_SHADER_FRAMED
rect 0 0 FILTER_WIDTH FILTER_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
background "menu_mp_lobby_frame_inner"
forecolor 1 1 1 1
visible when( 1 );
decoration
frame 26 0.1 FRAME_OPEN_TOP
}
// View empty.
FRAME_CHOICE_DVARFLOATLIST( 1, "@MENU_VIEW_EMPTY", ui_browserShowEmpty, { "@MENU_NO" 0 "@MENU_YES" 1 }, uiScript RefreshFilter; )
// View full.
FRAME_CHOICE_DVARFLOATLIST( 2, "@MENU_VIEW_FULL", ui_browserShowFull, { "@MENU_NO" 0 "@MENU_YES" 1 }, uiScript RefreshFilter; )
// With password.
FRAME_CHOICE_DVARFLOATLIST( 3, "@MENU_VIEW_PASSWORD", ui_browserShowPassword, { "@MENU_ALL" -1 "@MENU_NO" 0 "@MENU_YES" 1 }, uiScript RefreshFilter; )
// mods
FRAME_CHOICE_DVARLIST_VIS( 4, "@MENU_MODS", "", ITEM_TYPE_OD_TEXT_BUTTON, ownerdraw UI_JOINMOD, uiScript RefreshFilter;, 1 )
#undef CHOICE_X_START
#define CHOICE_X_START 180
#undef CHOICE_Y_START
#define CHOICE_Y_START -76
// Voice chat.
FRAME_CHOICE_DVARFLOATLIST( 5, "@MENU_VOICECHAT", ui_browserVoiceChat, { "@MENU_ALL" -1 "@MENU_NO" 0 "@MENU_YES" 1 }, uiScript RefreshFilter; )
// Hardcore.
FRAME_CHOICE_DVARFLOATLIST( 6, "@MPUI_HARDCORE_PRE", ui_browserHardcore, { "@MENU_ALL" -1 "@MENU_NO" 0 "@MENU_YES" 1 }, uiScript RefreshFilter; )
// Friendly fire.
FRAME_CHOICE_DVARFLOATLIST( 7, "@MENU_VIEW_FRIENDLY_FIRE", ui_browserFriendlyfire, { "@MENU_ALL" -1 "@MENU_OFF" 0 "@MENU_ON" 1 "@MENU_REFLECT" 2 "@MENU_SHARED" 3 }, uiScript RefreshFilter; )
#undef CHOICE_X_START
#define CHOICE_X_START 360
#undef CHOICE_Y_START
#define CHOICE_Y_START -152
// Map
FRAME_CHOICE_DVARENUMLIST_VIS( 9, "@MPUI_CHANGE_MAP_LOWER", ui_browserMap, ui_browserMap, uiScript RefreshFilter;, 1 )
// Game Mode
#define MODE_LIST { "@MENU_ALL"; 0; "@MPUI_TDM_SHORT_CAPS"; "tdm"; "@MPUI_DM_SHORT_CAPS"; "dm"; "@MPUI_SD_SHORT_CAPS"; "sd"; "@MPUI_DOM_SHORT_CAPS"; "dom"; "@MPUI_KOTH_SHORT_CAPS"; "koth"; "@MPUI_DEM_SHORT_CAPS"; "dem"; "@MPUI_CTF_SHORT_CAPS"; "ctf"; "@MPUI_SAB_SHORT_CAPS"; "sab"; }
FRAME_CHOICE_DVARSTRINGLIST( 10, "@MENU_GAME_MODE_PRE", ui_browserGameMode, MODE_LIST;, uiScript RefreshFilter;)
// Hide Dlc.
FRAME_CHOICE_DVARFLOATLIST( 11, "@MPUI_DLC_CONTENT", ui_browserHideDlc, { "@MENU_ALL" 0 "@MPUI_PURCHASED" 1 }, uiScript RefreshFilter; )
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X 98
#undef CHOICE_X_START
#define CHOICE_X_START 480
#undef CHOICE_TEXT_COLOR_NO_HL
#undef CHOICE_TEXT_COLOR_HL
#undef CHOICE_CAPTION_TEXT_COLOR_NO_HL
#undef CHOICE_CAPTION_TEXT_COLOR_HL
#define CHOICE_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
#define CHOICE_TEXT_COLOR_HL 0 0 0 1
#define CHOICE_CAPTION_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
#define CHOICE_CAPTION_TEXT_COLOR_HL 0 0 0 1
// Reset
FRAME_CHOICE_BUTTON( 12, "@MENU_RESET", exec "exec default_filter.cfg"; )
// Apply
//FRAME_CHOICE_BUTTON( 14, "@MENU_APPLY", uiScript RefreshFilter; )
}
}
#undef CHOICE_TEXTSIZE
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
#include "ui_mp/popupstyle.inc"
#include "ui/choices_setup_popmenu.menu"
#include "ui_mp/popup_player_info.inc"
#undef CHOICE_FOCUS_SOUND
#define CHOICE_FOCUS_SOUND "uin_navigation_over"
// Redefinitions for MEDIUM_POPUP_SETUP popups
#undef POPUP_WIDTH
#define POPUP_WIDTH MEDIUM_POPUP_WIDTH
#undef POPUP_HEIGHT
#define POPUP_HEIGHT MEDIUM_POPUP_HEIGHT
#undef CHOICE_SIZE_X
#define CHOICE_SIZE_X CONFIRM_PURCHASE_SIZE_X
#undef CHOICE_Y_START
#define CHOICE_Y_START POPUP_Y_START_TOP
#undef PLAYER_INFO_ALIGN
#define PLAYER_INFO_ALIGN // Purposely set to nothing. The popup setup macro sets the alignment. If items within it set their own aligment, they end up offset incorrectly.
#undef PLAYER_INFO_X_START
#define PLAYER_INFO_X_START( frameWidth ) ( frameWidth - PLAYER_INFO_WIDTH - PLAYER_INFO_PAD )
#undef PLAYER_INFO_Y_START
#define PLAYER_INFO_Y_START( frameHeight ) ( PLAYER_INFO_PAD * 2 )
#undef BG_BACKCOLOR
#define BG_BACKCOLOR POPUP_BACKCOLOR
#define PURCHASE_CONFIRMATION_RIGHT_X ( MEDIUM_POPUP_WIDTH / 2 )
#define PURCHASE_INFO_WIDTH ( ( MEDIUM_POPUP_WIDTH / 2 ) - POPUP_SIDE_PAD )
#define PURCHASE_CONFIRMATION_ITEM_INFO( itemName, itemCost ) \
CONFIRMATION_ITEM_INFO_VIS( itemName, itemCost, "@MPUI_BALANCE_AFTER_PURCHASE", locString( "@MENU_POINTS", GetStatByName( "CODPOINTS" ) - itemCost ), 1 )
#define CONFIRMATION_ITEM_INFO_VIS( itemName, itemCost, balanceHeader, balanceAfter, visArg ) \
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 1 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, locString( itemName, itemCost ), TEXTSIZE_LARGE, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, NEW_FRAME_GREEN_RGB 1, visArg, ; ) \ /* Name */
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 7 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, "@MPUI_YOUR_BANK", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, MEDIUM_POPUP_GRAY, visArg, ; ) \ /* Currency Available Header */
PREPROC_TEXT_DRAW_VIS_EX( (MEDIUM_POPUP_WIDTH-75) CHOICE_Y( 7 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, locString( "@MENU_POINTS", GetStatByName( "CODPOINTS" ) ), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, visArg, ; ) \ /* Currency Available */
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 8 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, balanceHeader, TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, MEDIUM_POPUP_GRAY, visArg, ; ) \ /* Balance After Purchase Header */
PREPROC_TEXT_DRAW_VIS_EX( (MEDIUM_POPUP_WIDTH-75) CHOICE_Y( 8 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, balanceAfter, TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, visArg, ; ) /* Balance After Purchase */
#define WAGER_ONFOCUS \
;
#define WAGER_ONESC \
setDvar ui_joiningwagerfrominvite "0"; \
close self;
#define WAGER_ACTION \
play CHOICE_FOCUS_SOUND; \
uiScript JoinServer; \
WAGER_ONESC
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "WagerConfirmation", setfocus "WagerConfirmation_2";, ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@PLATFORM_CONFIRM_WAGER_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( "@PLATFORM_WAGER_BET", dvarInt("ui_wagerbet") )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_JOIN_GAME_CAPS", WAGER_ACTION, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_CANCEL_CAPS", WAGER_ONESC, 1, name WagerConfirmation_2 )
}
#define WAGER_ACTION2 \
play CHOICE_FOCUS_SOUND; \
execNow quickmatchconnect; \
WAGER_ONESC
menuDef
{
MEDIUM_POPUP_SETUP_VIS( "QuickWagerConfirmation", setfocus "QuickWagerConfirmation_2";, ;, POPUP_GLOW_GREEN, 1, 1 )
MEDIUM_POPUP_TITLE_VIS( "@PLATFORM_CONFIRM_WAGER_CAPS", 1 )
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
PURCHASE_CONFIRMATION_ITEM_INFO( "@PLATFORM_WAGER_BET", dvarInt("ui_wagerbet") )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_JOIN_GAME_CAPS", WAGER_ACTION2, 1, ; )
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_CANCEL_CAPS", close self, 1, name QuickWagerConfirmation_2 )
}
#undef CHOICE_Y_START
#define CHOICE_Y_START POPUP_Y_START_CENTER
#undef POPUP_BUTTON_COUNT
#define POPUP_BUTTON_COUNT 1
menuDef
{
SYSTEM_POPUP_SETUP_VIS( WagerDeadBeat, WAGER_ONFOCUS, WAGER_ONESC, 1 )
SYSTEM_POPUP_TITLE_VIS( "@PLATFORM_WAGER_DEADBEAT_TITLE", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( locString( "@PLATFORM_WAGER_DEADBEAT_DESC", dvarInt( "ui_wagerbet" ) ), 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", WAGER_ONESC, 1, ; )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( WagerPlaylistIsOld, WAGER_ONFOCUS, WAGER_ONESC, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_ERROR_CAPS", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( locString( "@PATCH_PLAYLISTISOLD" ), 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", WAGER_ONESC, 1, ; )
}
menuDef
{
SYSTEM_POPUP_SETUP_VIS( WagerPlaylistIsNew, WAGER_ONFOCUS, WAGER_ONESC, 1 )
SYSTEM_POPUP_TITLE_VIS( "@MENU_ERROR_CAPS", 1 )
SYSTEM_POPUP_SUBTITLE_VIS( locString( "@PATCH_PLAYLISTISNEW" ), 1 )
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", WAGER_ONESC, 1, ; )
}

1
z_dev.bat Normal file
View File

@ -0,0 +1 @@
start BlackOpsMP.exe +set r_fullscreen 0 +set drawlagometer 1 +set developer 1 +set developer_script 1 +set logfile 2 +set cg_drawfps 3 +set cg_drawsnapshot 1 +set scr_game_spectatetype 2 +set r_mode 1024x768 +set sv_cheats 1 +set fs_game "mods/mp_dev" +devmap mp_nuked

1
z_devserver.bat Normal file
View File

@ -0,0 +1 @@
start BlackOpsMP.exe +set r_fullscreen 0 +set drawlagometer 1 +set developer 1 +set developer_script 1 +set logfile 2 +set cg_drawfps 3 +set cg_drawsnapshot 1 +set scr_game_spectatetype 2 +set r_mode 1024x768 +set sv_cheats 1 +connect 127.0.0.1

1
z_serverdev.bat Normal file
View File

@ -0,0 +1 @@
start BlackOpsMP.exe +set dedicated 1 +set developer 1 +set developer_script 1 +set logfile 2 +set scr_game_spectatetype 2 +set sv_cheats 1 +set sv_maxclients 32 +set sv_licensenum 0 +set net_port 28960 +set sv_ranked 0 +set scr_tdm_scorelimit 0 +set scr_bots_managed_spawn 1 +set scr_bots_managed_all 7 +devmap mp_nuked