IW4-Dump-Files/maps/_menus.gsc

1043 lines
24 KiB
Plaintext
Raw Normal View History

2017-07-08 11:47:21 -07:00
// Need to seperate layout from functionality more for more flexibility
// Create a thread which processes left and right. This will be passed to addItemSetting so it can be different per itemDef
// This should attempt to change the dvar value if in range
// Should also automatically update the associated hud elem
#include maps\_utility;
#include maps\_hud_util;
init()
{
precacheMenu( "uiScript_startMultiplayer" );
precacheShader( "black" );
precacheShader( "white" );
precacheShader( "menu_button" );
precacheShader( "menu_button_selected" );
precacheShader( "menu_button_fade" );
precacheShader( "menu_button_fade_selected" );
precacheShader( "menu_button_faderight" );
precacheShader( "menu_button_faderight_selected" );
precacheShader( "menu_caret_open" );
precacheShader( "menu_caret_closed" );
thread initThumbstickLayout();
thread initButtonLayout();
thread initSensitivity();
thread initInversion();
thread initAutoaim();
thread initVibration();
level.menuStack = [];
levelMenu = createMenu( "levels" );
action = setupAction( ::loadMap, "cqb_1" );
description = spawnStruct();
// 1st pass
description.display = &"MENU_1ST_PASS";
description.xPos = 240;
description.yPos = 100;
// CQB Test
levelMenu addItem( &"MENU_CQB_TEST", action, "loadmap", description );
action = setupAction( ::loadMap, "descent" );
description = spawnStruct();
// 1st pass
description.display = &"MENU_1ST_PASS";
description.xPos = 240;
description.yPos = 100;
// Bunker
levelMenu addItem( &"MENU_BUNKER", action, "loadmap", description );
action = setupAction( ::loadMap, "aftermath" );
description = spawnStruct();
// 100% initial geo
description.display = &"MENU_100_INITIAL_GEO";
description.xPos = 240;
description.yPos = 100;
// Aftermath
levelMenu addItem( &"MENU_AFTERMATH", action, "loadmap", description );
action = setupAction( ::loadMap, "chechnya_escape" );
description = spawnStruct();
// 40% initial geo
description.display = &"MENU_40_INITIAL_GEO";
description.xPos = 240;
description.yPos = 100;
// Chechnya Escape
levelMenu addItem( &"MENU_CHECHNYA_ESCAPE", action, "loadmap", description );
action = setupAction( ::loadMap, "marksman" );
description = spawnStruct();
// 25% scripted
description.display = &"MENU_25_SCRIPTED";
description.xPos = 240;
description.yPos = 100;
// Marksman
levelMenu addItem( &"MENU_MARKSMAN", action, "loadmap", description );
action = setupAction( ::loadMap, "seaknight_defend" );
description = spawnStruct();
// Prototype Level, 30% scripted
description.display = &"MENU_PROTOTYPE_LEVEL_30_SCRIPTED";
description.xPos = 240;
description.yPos = 100;
// Seaknight Defend
levelMenu addItem( &"MENU_SEAKNIGHT_DEFEND", action, "loadmap", description );
action = setupAction( ::loadMap, "wetwork" );
description = spawnStruct();
// 100% initial geo
description.display = &"MENU_100_INITIAL_GEO";
description.xPos = 240;
description.yPos = 100;
// Wetwork
levelMenu addItem( &"MENU_WETWORK", action, "loadmap", description );
action = setupAction( ::loadMap, "cargoship" );
description = spawnStruct();
// 10% scripted
description.display = &"MENU_10_SCRIPTED";
description.xPos = 240;
description.yPos = 100;
// Cargoship
levelMenu addItem( &"MENU_CARGOSHIP", action, "loadmap", description );
action = setupAction( ::loadMap, "bog" );
description = spawnStruct();
// 35% initial geo
description.display = &"MENU_35_INITIAL_GEO";
description.xPos = 240;
description.yPos = 100;
// Bog
levelMenu addItem( &"MENU_BOG", action, "loadmap", description );
action = setupAction( ::loadMap, "training" );
description = spawnStruct();
// 5% scripted
description.display = &"MENU_5_SCRIPTED";
description.xPos = 240;
description.yPos = 100;
// Training
levelMenu addItem( &"MENU_TRAINING1", action, "loadmap", description );
action = setupAction( ::loadMap, "ac130" );
description = spawnStruct();
// 30%
description.display = &"MENU_30";
description.xPos = 240;
description.yPos = 100;
// AC130
levelMenu addItem( &"MENU_AC130", action, "loadmap", description );
action = setupAction( ::loadMap, "seaknight_assault" );
description = spawnStruct();
// Initial geo in progress
description.display = &"MENU_INITIAL_GEO_IN_PROGRESS";
description.xPos = 240;
description.yPos = 100;
// Seaknight Assault
levelMenu addItem( &"MENU_SEAKNIGHT_ASSAULT", action, "loadmap", description );
action = setupAction( ::loadMap, "pilotcobra" );
description = spawnStruct();
// Initial geo in progress
description.display = &"MENU_INITIAL_GEO_IN_PROGRESS";
description.xPos = 240;
description.yPos = 100;
// Pilot Cobra
levelMenu addItem( &"MENU_PILOT_COBRA", action, "loadmap", description );
controlsMenu = createMenu_Controls( "controls" );
setting = spawnStruct();
setting.index = 0;
setting.dvar = "controls_sticksConfig";
setting.value[ 0 ] = "thumbstick_default";
setting.value[ 1 ] = "thumbstick_southpaw";
setting.value[ 2 ] = "thumbstick_legacy";
setting.value[ 3 ] = "thumbstick_legacysouthpaw";
setting.display[ 0 ] = "Default";
setting.display[ 1 ] = "Southpaw";
setting.display[ 2 ] = "Legacy";
setting.display[ 3 ] = "Legacy Southpaw";
// Stick Layout
controlsMenu addItemSetting( &"MENU_THUMBSTICK_LAYOUT", undefined, undefined, undefined, setting );
setting = spawnStruct();
setting.index = 0;
setting.dvar = "controls_buttonConfig";
setting.value[ 0 ] = "buttons_default";
setting.value[ 1 ] = "buttons_tactical";
setting.value[ 2 ] = "buttons_lefty";
setting.value[ 3 ] = "buttons_finesthour";
setting.display[ 0 ] = "Default";
setting.display[ 1 ] = "Tactical";
setting.display[ 2 ] = "Lefty";
setting.display[ 3 ] = "Finest Hour";
// Button Layout
controlsMenu addItemSetting( &"MENU_BUTTON_LAYOUT", undefined, undefined, undefined, setting );
setting = spawnStruct();
setting.index = 1;
setting.dvar = "controls_sensitivityConfig";
setting.value[ 0 ] = "sensitivity_low";
setting.value[ 1 ] = "sensitivity_medium";
setting.value[ 2 ] = "sensitivity_high";
setting.value[ 3 ] = "sensitivity_veryhigh";
setting.display[ 0 ] = "Low";
setting.display[ 1 ] = "Medium";
setting.display[ 2 ] = "High";
setting.display[ 3 ] = "Very High";
// Sensitivity
controlsMenu addItemSetting( &"MENU_LOOK_SENSITIVITY", undefined, undefined, undefined, setting );
setting = spawnStruct();
setting.index = 0;
setting.dvar = "controls_inversionConfig";
setting.value[ 0 ] = "inversion_disabled";
setting.value[ 1 ] = "inversion_enabled";
setting.display[ 0 ] = "Disabled";
setting.display[ 1 ] = "Enabled";
// Look Inversion
controlsMenu addItemSetting( &"MENU_LOOK_INVERSION", undefined, undefined, undefined, setting );
setting = spawnStruct();
setting.index = 1;
setting.dvar = "controls_autoaimConfig";
setting.value[ 0 ] = "autoaim_disabled";
setting.value[ 1 ] = "autoaim_enabled";
setting.display[ 0 ] = "Disabled";
setting.display[ 1 ] = "Enabled";
// Auto-aim
controlsMenu addItemSetting( &"MENU_AUTOAIM", undefined, undefined, undefined, setting );
setting = spawnStruct();
setting.index = 1;
setting.dvar = "controls_vibrationConfig";
setting.value[ 0 ] = "vibration_disabled";
setting.value[ 1 ] = "vibration_enabled";
setting.display[ 0 ] = "Disabled";
setting.display[ 1 ] = "Enabled";
// Vibration
controlsMenu addItemSetting( &"MENU_CONTROLLER_VIBRATION", undefined, undefined, undefined, setting );
// Controls
// Subtitles
// Save Device
//optionsMenu addItem( &"MENU_SAVE_DEVICE", ::void );
mainMenu = createMenu( "main" );
action = setupAction( ::pushMenu, levelMenu );
// Select Level
mainMenu addItem( &"MENU_SELECT_LEVEL", action, "openmenu_levels" );
// Options
subMenu = mainMenu addSubMenu( "options", &"MENU_OPTIONS" );
action = setupAction( ::pushMenu, controlsMenu );
// Controls
subMenu addItem( &"MENU_CONTROLS", action );
// Subtitles
subMenu addItem( &"MENU_SUBTITLES" );
// Save Device
subMenu addItem( &"MENU_SAVE_DEVICE" );
// Credits
mainMenu addItem( &"MENU_CREDITS" );
action = setupAction( ::loadMultiplayer );
// Multiplayer
mainMenu addItem( &"MENU_MULTIPLAYER", action );
pushMenu( mainMenu );
level.player thread menuResponse();
}
void()
{
}
loadMap( map )
{
changelevel( map );
}
loadMultiplayer()
{
level.player openpopupMenu( "uiScript_startMultiplayer" );
}
pushMenu( menuDef )
{
level.menuStack[ level.menuStack.size ] = menuDef;
oldMenu = level.curMenu;
level.curMenu = menuDef;
if ( menuDef.menuType == "fullScreen" )
{
if ( isDefined( oldMenu ) )
oldMenu thread hideMenu( 0.2, true );
menuDef thread showMenu( 0.2, true );
level notify( "open_menu", level.curMenu.name );
}
else
{
menuDef thread expandMenu( 0.2 );
}
level.player playsound( "mouse_click" );
}
popMenu()
{
if ( level.menuStack.size == 1 )
return;
level.menuStack[ level.menuStack.size - 1 ] = undefined;
oldMenu = level.curMenu;
level.curMenu = level.menuStack[ level.menuStack.size - 1 ];
if ( oldMenu.menuType == "subMenu" )
{
oldMenu thread collapseMenu( 0.2 );
level.curMenu updateMenu( 0.2, true );
}
else
{
oldMenu thread hideMenu( 0.2, false );
level.curMenu thread showMenu( 0.2, false );
level notify( "close_menu", level.menuStack.size );
}
level.player playsound( "mouse_click" );
}
createMenu( name )
{
menuDef = spawnStruct();
menuDef.name = name;
menuDef.menuType = "fullScreen";
menuDef.itemDefs = [];
menuDef.itemWidth = 120;
menuDef.itemHeight = 20;
menuDef.itemPadding = 0;
menuDef.selectedIndex = 0;
menuDef.xPos = 80;
menuDef.yPos = 100;
menuDef.xOffset = 0;
menuDef.yOffset = 0;
return menuDef;
}
createMenu_Controls( name )
{
menuDef = spawnStruct();
menuDef.name = name;
menuDef.menuType = "fullScreen";
menuDef.itemDefs = [];
menuDef.itemWidth = 420;
menuDef.itemHeight = 20;
menuDef.itemPadding = 0;
menuDef.selectedIndex = 0;
menuDef.xPos = 80;
menuDef.yPos = 100;
menuDef.xOffset = 0;
menuDef.yOffset = 0;
return menuDef;
}
createSubMenu( name )
{
subMenuDef = spawnStruct();
subMenuDef.name = name;
subMenuDef.menuType = "subMenu";
subMenuDef.itemDefs = [];
subMenuDef.itemWidth = 120;
subMenuDef.itemHeight = 20;
subMenuDef.itemPadding = 0;
subMenuDef.selectedIndex = 0;
subMenuDef.isExpanded = false;
return subMenuDef;
}
addItem( text, action, event, description )
{
precacheString( text );
itemDef = spawnStruct();
itemDef.itemType = "item";
itemDef.bgShader = "menu_button_selected";
itemDef.fgText = text;
itemDef.xPos = 0;
itemDef.yPos = 0;
itemDef.xOffset = 0;
itemDef.yOffset = 0;
itemDef.action = action;
itemDef.event = event;
itemDef.description = description;
itemDef.parentDef = self;
itemDef.index = self.itemDefs.size;
self.itemDefs[ self.itemDefs.size ] = itemDef;
}
addItemSetting( text, action, event, description, setting )
{
precacheString( text );
itemDef = spawnStruct();
itemDef.itemType = "settingMenu";
itemDef.bgShader = "menu_button_selected";
itemDef.fgText = text;
itemDef.xPos = 0;
itemDef.yPos = 0;
itemDef.xOffset = 0;
itemDef.yOffset = 0;
itemDef.action = action;
itemDef.event = event;
itemDef.description = description;
itemDef.setting = setting;
itemDef.parentDef = self;
itemDef.index = self.itemDefs.size;
self.itemDefs[ self.itemDefs.size ] = itemDef;
}
addSubMenu( name, text )
{
itemDef = createSubMenu( name );
itemDef.itemType = "subMenu";
itemDef.bgShader = "menu_button_selected";
itemDef.fgText = text;
itemDef.xPos = 0;
itemDef.yPos = 0;
itemDef.xOffset = 20;
itemDef.yOffset = ( self.itemHeight + self.itemPadding ) ;
itemDef.parentDef = self;
itemDef.index = self.itemDefs.size;
self.itemDefs[ self.itemDefs.size ] = itemDef;
return itemDef;
}
createItemElems()
{
self.bgIcon = createIcon( self.bgShader, self.parentDef.itemWidth, self.parentDef.itemHeight );
self.bgIcon.alpha = 0;
self.bgIcon.sort = 0;
self.fontString = createFontString( "default", 1.5 );
self.fontString.alpha = 0;
self.fontString.sort = 100;
self.fontString setText( self.fgText );
if ( self.itemType == "settingMenu" )
{
self.settingValue = createFontString( "default", 1.5 );
self.settingValue.alpha = 0;
self.settingValue.sort = 100;
self updateDisplayValue();
}
if ( self.itemType == "subMenu" )
{
self.caretIcon = createIcon( "menu_caret_closed", self.parentDef.itemHeight, self.parentDef.itemHeight );
self.caretIcon.alpha = 0;
self.caretIcon.sort = 100;
}
if ( isdefined( self.description ) )
{
self.descriptionValue = createFontString( "default", 1.5 );
self.descriptionValue.alpha = 0;
self.descriptionValue.sort = 100;
self.descriptionValue setText( self.description.display );
}
}
destroyItemElems()
{
if ( self.itemType == "subMenu" )
self.caretIcon destroyElem();
if ( self.itemType == "settingMenu" )
self.settingValue destroyElem();
if ( isdefined( self.descriptionValue ) )
self.descriptionValue destroyElem();
self.bgIcon destroyElem();
self.fontString destroyElem();
}
setElemPoints( point, relativePoint, xPos, yPos, transTime )
{
xOffset = 3;
self.bgIcon setPoint( point, relativePoint, xPos, yPos, transTime );
if ( self.itemType == "subMenu" )
{
self.caretIcon setPoint( point, relativePoint, xPos, yPos, transTime );
xOffset += 16;
}
if ( self.itemType == "settingMenu" )
{
self.settingValue setPoint( "TOPRIGHT", relativePoint, xPos + xOffset + 400, yPos, transTime );
}
if ( isdefined( self.descriptionValue ) )
{
self.descriptionValue setPoint( "TOPLEFT", relativePoint, self.description.xPos, self.description.yPos, transTime );
}
self.fontString setPoint( point, relativePoint, xPos + xOffset, yPos, transTime );
}
showMenu( transTime, isNew )
{
yOffset = 0;
for ( index = 0; index < self.itemDefs.size; index++ )
{
itemDef = self.itemDefs[ index ];
itemDef createItemElems();
if ( isNew )
{
itemDef setElemPoints( "TOPLEFT", "TOPRIGHT", self.xPos, self.yPos + yOffset );
}
else
{
itemDef setElemPoints( "TOPRIGHT", "TOPLEFT", self.xPos, self.yPos + yOffset );
}
itemDef.xPos = self.xPos;
itemDef.yPos = self.yPos + yOffset;
yOffset += ( self.itemHeight + self.itemPadding );
if ( itemDef.itemType == "subMenu" && itemDef.isExpanded )
{
yOffset += itemDef getMenuHeight();
// itemDef thread showMenu( transTime, isNew );
}
}
if ( self.menuType == "subMenu" )
self.parentDef showMenu( transTime, isNew );
self updateMenu( transTime, true );
}
hideMenu( transTime, isNew )
{
yOffset = 0;
for ( index = 0; index < self.itemDefs.size; index++ )
{
itemDef = self.itemDefs[ index ];
xOffset = -1 * self.itemWidth;
if ( isNew )
{
itemDef setElemPoints( "TOPRIGHT", "TOPLEFT", self.xPos, self.yPos + yOffset, transTime );
itemDef.bgIcon fadeOverTime( transTime );
itemDef.bgIcon.alpha = 0;
itemDef.fontString fadeOverTime( transTime );
itemDef.fontString.alpha = 0;
if ( itemDef.itemType == "settingMenu" )
{
itemDef.settingValue fadeOverTime( transTime );
itemDef.settingValue.alpha = 0;
}
if ( itemDef.itemType == "subMenu" )
{
itemDef.caretIcon fadeOverTime( transTime );
itemDef.caretIcon.alpha = 0;
}
}
else
{
itemDef setElemPoints( "TOPLEFT", "TOPRIGHT", self.xPos, self.yPos + yOffset, transTime );
itemDef.bgIcon fadeOverTime( transTime );
itemDef.bgIcon.alpha = 0;
itemDef.fontString fadeOverTime( transTime );
itemDef.fontString.alpha = 0;
if ( itemDef.itemType == "settingMenu" )
{
itemDef.settingValue fadeOverTime( transTime );
itemDef.settingValue.alpha = 0;
}
if ( itemDef.itemType == "subMenu" )
{
itemDef.caretIcon fadeOverTime( transTime );
itemDef.caretIcon.alpha = 0;
}
}
itemDef.xPos = self.xPos;
itemDef.yPos = self.yPos + yOffset;
yOffset += ( self.itemHeight + self.itemPadding );
if ( itemDef.itemType == "subMenu" && itemDef.isExpanded )
{
yOffset += itemDef getMenuHeight();
// itemDef thread hideMenu( transTime, isNew );
}
}
if ( self.menuType == "subMenu" )
self.parentDef thread hideMenu( transTime, isNew );
wait transTime;
for ( index = 0; index < self.itemDefs.size; index++ )
{
itemDef = self.itemDefs[ index ];
itemDef destroyItemElems();
}
}
collapseMenu( transTime )
{
self.isExpanded = false;
self.caretIcon setShader( "menu_caret_closed", self.parentDef.itemHeight, self.parentDef.itemHeight );
yOffset = 0;
for ( index = 0; index < self.itemDefs.size; index++ )
{
itemDef = self.itemDefs[ index ];
itemDef setElemPoints( "TOPLEFT", "TOPLEFT", self.xPos, self.yPos, transTime );
itemDef.bgIcon fadeOverTime( transTime );
itemDef.bgIcon.alpha = 0;
itemDef.fontString fadeOverTime( transTime );
itemDef.fontString.alpha = 0;
if ( itemDef.itemType == "subMenu" )
{
itemDef.caretIcon fadeOverTime( transTime );
itemDef.caretIcon.alpha = 0;
}
itemDef.xPos = self.xPos;
itemDef.yPos = self.yPos;
}
wait transTime;
for ( index = 0; index < self.itemDefs.size; index++ )
{
itemDef = self.itemDefs[ index ];
itemDef.bgIcon destroyElem();
itemDef.fontString destroyElem();
if ( itemDef.itemType == "subMenu" )
itemDef.caretIcon destroyElem();
}
}
expandMenu( transTime )
{
self.isExpanded = true;
self.caretIcon setShader( "menu_caret_open", self.parentDef.itemHeight, self.parentDef.itemHeight );
for ( index = 0; index < self.itemDefs.size; index++ )
{
itemDef = self.itemDefs[ index ];
itemDef createItemElems();
itemDef setElemPoints( "TOPLEFT", "TOPLEFT", self.xPos + self.xOffset, self.yPos + self.yOffset );
itemDef.xPos = self.xPos + self.xOffset;
itemDef.yPos = self.yPos + self.yOffset;
}
self updateMenu( transTime, true );
}
updateMenu( transTime, forceRedraw )
{
xOffset = self.xOffset;
yOffset = self.yOffset;
for ( index = 0; index < self.itemDefs.size; index++ )
{
itemDef = self.itemDefs[ index ];
itemDef setSelected( transTime, index == self.selectedIndex );
lastXPos = itemDef.xPos;
lastYPos = itemDef.yPos;
if ( forceRedraw || ( self.xPos + xOffset != lastXPos ) || ( self.yPos + yOffset != lastYPos ) )
{
itemDef setElemPoints( "TOPLEFT", "TOPLEFT", self.xPos + xOffset, self.yPos + yOffset, transTime );
itemDef.xPos = self.xPos + xOffset;
itemDef.yPos = self.yPos + yOffset;
}
yOffset += ( self.itemHeight + self.itemPadding );
if ( itemDef.itemType == "subMenu" && itemDef.isExpanded )
{
assert( level.curMenu != self );
yOffset += itemDef getMenuHeight();
}
}
if ( isDefined( self.parentDef ) )
self.parentDef thread updateMenu( transTime, forceRedraw );
}
setSelected( transTime, isSelected )
{
self.bgIcon fadeOverTime( transTime );
self.fontString fadeOverTime( transTime );
if ( isdefined( self.settingValue ) )
self.settingValue fadeOverTime( transTime );
if ( isdefined( self.descriptionValue ) )
self.descriptionValue fadeOverTime( transTime );
/*
self setElemAlpha( 0.85 );
if ( isSelected )
{
if ( self.parentDef == level.curMenu )
self setElemColor( (1,1,1) );
else
self setElemColor( (0.85,0.85,0.85) );
}
else
{
if ( self.parentDef == level.curMenu )
self setElemColor( (0.75,0.75,0.75) );
else
self setElemColor( (0.5,0.5,0.5) );
}
*/
if ( isSelected )
{
if ( self.parentDef == level.curMenu )
self setElemAlpha( 1 );
else
self setElemAlpha( 0.5 );
if ( isdefined( self.descriptionValue ) )
self.descriptionValue.alpha = 1;
}
else
{
if ( self.parentDef == level.curMenu )
self setElemAlpha( 0.5 );
else
self setElemAlpha( 0.25 );
if ( isdefined( self.descriptionValue ) )
self.descriptionValue.alpha = 0;
}
}
setElemAlpha( alpha )
{
self.bgIcon.alpha = alpha;
self.fontString.alpha = alpha;
if ( self.itemType == "settingMenu" )
self.settingValue.alpha = alpha;
if ( self.itemType == "subMenu" )
self.caretIcon.alpha = alpha;
// if ( isdefined ( self.descriptionValue ) )
// self.descriptionValue.alpha = alpha;
}
setElemColor( color )
{
self.fontString.color = color;
}
getMenuHeight()
{
menuHeight = 0;
for ( index = 0; index < self.itemDefs.size; index++ )
{
itemDef = self.itemDefs[ index ];
menuHeight += ( self.itemHeight + self.itemPadding );
if ( itemDef.itemType == "subMenu" && itemDef.isExpanded )
menuHeight += itemDef getMenuHeight();
}
return menuHeight;
}
onDPadUp()
{
self.selectedIndex -- ;
if ( self.selectedIndex < 0 )
self.selectedIndex = self.itemDefs.size - 1;
self updateMenu( 0.1, false );
level.player playsound( "mouse_over" );
}
onDPadDown()
{
self.selectedIndex++ ;
if ( self.selectedIndex >= self.itemDefs.size )
self.selectedIndex = 0;
self updateMenu( 0.1, false );
level.player playsound( "mouse_over" );
}
onButtonB()
{
popMenu();
}
onButtonA()
{
focusedItem = self.itemDefs[ self.selectedIndex ];
if ( focusedItem.itemType == "subMenu" )
pushMenu( focusedItem );
else if ( focusedItem.itemType == "item" )
{
/* if ( isdefined( focusedItem.argument ) )
level thread [[focusedItem.callback]]( focusedItem.argument );
else
level thread [[focusedItem.callback]]();*/
focusedItem thread runAction();
}
}
onDPadLeft()
{
focusedItem = self.itemDefs[ self.selectedIndex ];
if ( focusedItem.itemType == "settingMenu" )
{
dvarCurrent = getdvar( focusedItem.setting.dvar );
dvarValues = focusedItem.setting.value;
indexNew = 0;
for ( i = 0; i < dvarValues.size; i++ )
{
dvarValue = dvarValues[ i ];
if ( dvarValue != dvarCurrent )
continue;
indexNew = i - 1;
if ( indexNew >= 0 )
{
focusedItem.setting.index = indexNew;
setdvar( focusedItem.setting.dvar, dvarValues[ indexNew ] );
focusedItem updateDisplayValue();
println( "Setting: " + focusedItem.setting.dvar + " to " + dvarValues[ indexNew ] );
level.player playsound( "mouse_over" );
}
break;
}
}
}
onDPadRight()
{
focusedItem = self.itemDefs[ self.selectedIndex ];
if ( focusedItem.itemType == "settingMenu" )
{
dvarCurrent = getdvar( focusedItem.setting.dvar );
dvarValues = focusedItem.setting.value;
indexNew = 0;
for ( i = 0; i < dvarValues.size; i++ )
{
dvarValue = dvarValues[ i ];
if ( dvarValue != dvarCurrent )
continue;
indexNew = i + 1;
if ( indexNew <= focusedItem.setting.value.size - 1 )
{
focusedItem.setting.index = indexNew;
setdvar( focusedItem.setting.dvar, dvarValues[ indexNew ] );
focusedItem updateDisplayValue();
level.player playsound( "mouse_over" );
println( "Setting: " + focusedItem.setting.dvar + " to " + dvarValues[ indexNew ] );
}
break;
}
}
}
initThumbstickLayout()
{
// update to use the real dvars when code will allow it
setdvar( "controls_sticksConfig", "thumbstick_default" );
}
initButtonLayout()
{
// update to use the real dvars when code will allow it
setdvar( "controls_buttonConfig", "buttons_default" );
}
initSensitivity()
{
// update to use the real dvars when code will allow it
setdvar( "controls_sensitivityConfig", "sensitivity_medium" );
}
initInversion()
{
// update to use the real dvars when code will allow it
setdvar( "controls_inversionConfig", "inversion_disabled" );
}
initAutoAim()
{
// update to use the real dvars when code will allow it
setdvar( "controls_autoaimConfig", "autoaim_enabled" );
}
initVibration()
{
// update to use the real dvars when code will allow it
setdvar( "controls_vibrationConfig", "vibration_enabled" );
}
updateDisplayValue()
{
self.settingValue setText( self.setting.display[ self.setting.index ] );
}
setupAction( name, arg1, arg2 )
{
action = spawnStruct();
action.name = name;
if ( isdefined( arg1 ) )
action.arg1 = arg1;
if ( isdefined( arg2 ) )
action.arg2 = arg2;
return action;
}
runAction()
{
if ( isdefined( self.action ) )
{
if ( isdefined( self.action.arg1 ) )
thread [[ self.action.name ]]( self.action.arg1 );
else
thread [[ self.action.name ]]();
}
if ( isdefined( self.event ) )
level notify( self.event );
}
testAction()
{
level.marine setgoalnode( getnode( "node2", "targetname" ) );
level.camera attachpath( getvehiclenode( "path2", "targetname" ) );
thread maps\_vehicle::gopath( level.camera );
}
menuResponse()
{
for ( ;; )
{
self waittill( "menuresponse", menu, response );
println( response );
switch( response )
{
case "DPAD_UP":
level.curMenu onDPadUp();
break;
case "DPAD_DOWN":
level.curMenu onDPadDown();
break;
case "DPAD_LEFT":
level.curMenu onDPadLeft();
break;
case "DPAD_RIGHT":
level.curMenu onDPadRight();
break;
case "BUTTON_A":
level.curMenu onButtonA();
break;
case "BUTTON_B":
level.curMenu onButtonB();
break;
}
}
}