Files
IL-GSC/BO1/PC/ZM/maps/_menus.gsc
2024-02-18 17:32:07 -05:00

768 lines
23 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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();
description.display = &"MENU_1ST_PASS";
description.xPos = 240;
description.yPos = 100;
levelMenu addItem( &"MENU_CQB_TEST", action, "loadmap", description );
action = setupAction(::loadMap, "descent");
description = spawnStruct();
description.display = &"MENU_1ST_PASS";
description.xPos = 240;
description.yPos = 100;
levelMenu addItem( &"MENU_BUNKER", action, "loadmap", description );
action = setupAction(::loadMap, "aftermath");
description = spawnStruct();
description.display = &"MENU_100_INITIAL_GEO";
description.xPos = 240;
description.yPos = 100;
levelMenu addItem( &"MENU_AFTERMATH", action, "loadmap", description );
action = setupAction(::loadMap, "chechnya_escape");
description = spawnStruct();
description.display = &"MENU_40_INITIAL_GEO";
description.xPos = 240;
description.yPos = 100;
levelMenu addItem( &"MENU_CHECHNYA_ESCAPE", action, "loadmap", description );
action = setupAction(::loadMap, "marksman");
description = spawnStruct();
description.display = &"MENU_25_SCRIPTED";
description.xPos = 240;
description.yPos = 100;
levelMenu addItem( &"MENU_MARKSMAN", action, "loadmap", description );
action = setupAction(::loadMap, "seaknight_defend");
description = spawnStruct();
description.display = &"MENU_PROTOTYPE_LEVEL_30_SCRIPTED";
description.xPos = 240;
description.yPos = 100;
levelMenu addItem( &"MENU_SEAKNIGHT_DEFEND", action, "loadmap", description );
action = setupAction(::loadMap, "wetwork");
description = spawnStruct();
description.display = &"MENU_100_INITIAL_GEO";
description.xPos = 240;
description.yPos = 100;
levelMenu addItem( &"MENU_WETWORK", action, "loadmap", description );
action = setupAction(::loadMap, "cargoship");
description = spawnStruct();
description.display = &"MENU_10_SCRIPTED";
description.xPos = 240;
description.yPos = 100;
levelMenu addItem( &"MENU_CARGOSHIP", action, "loadmap", description );
action = setupAction(::loadMap, "bog");
description = spawnStruct();
description.display = &"MENU_35_INITIAL_GEO";
description.xPos = 240;
description.yPos = 100;
levelMenu addItem( &"MENU_BOG", action, "loadmap", description );
action = setupAction(::loadMap, "training");
description = spawnStruct();
description.display = &"MENU_5_SCRIPTED";
description.xPos = 240;
description.yPos = 100;
levelMenu addItem( &"MENU_TRAINING1", action, "loadmap", description );
action = setupAction(::loadMap, "ac130");
description = spawnStruct();
description.display = &"MENU_30";
description.xPos = 240;
description.yPos = 100;
levelMenu addItem( &"MENU_AC130", action, "loadmap", description );
action = setupAction(::loadMap, "seaknight_assault");
description = spawnStruct();
description.display = &"MENU_INITIAL_GEO_IN_PROGRESS";
description.xPos = 240;
description.yPos = 100;
levelMenu addItem( &"MENU_SEAKNIGHT_ASSAULT", action, "loadmap", description );
action = setupAction(::loadMap, "pilotcobra");
description = spawnStruct();
description.display = &"MENU_INITIAL_GEO_IN_PROGRESS";
description.xPos = 240;
description.yPos = 100;
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";
controlsMenu addItemSetting( &"PLATFORM_THUMBSTICK_LAYOUT", undefined, undefined, undefined, setting );
setting = spawnStruct();
setting.index = 0;
setting.dvar = "controls_buttonConfig";
setting.value[0] = "buttons_default";
setting.value[1] = "buttons_experimental";
setting.value[2] = "buttons_lefty";
setting.value[3] = "buttons_finesthour";
setting.display[0] = "Default";
setting.display[1] = "Experimental";
setting.display[2] = "Lefty";
setting.display[3] = "Finest Hour";
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";
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";
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";
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";
controlsMenu addItemSetting( &"MENU_CONTROLLER_VIBRATION", undefined, undefined, undefined, setting );
mainMenu = createMenu( "main" );
action = setupAction(::pushMenu, levelMenu);
mainMenu addItem( &"MENU_SELECT_LEVEL", action, "openmenu_levels" );
subMenu = mainMenu addSubMenu( "options", &"MENU_OPTIONS" );
action = setupAction(::pushMenu, controlsMenu);
subMenu addItem( &"MENU_CONTROLS", action );
subMenu addItem( &"MENU_SUBTITLES" );
subMenu addItem( &"MENU_SAVE_DEVICE" );
mainMenu addItem( &"MENU_CREDITS" );
action = setupAction(::loadMultiplayer);
mainMenu addItem( &"MENU_MULTIPLAYER", action );
pushMenu( mainMenu );
getEnt( "player", "classname" ) thread menuResponse();
}
void()
{
}
loadMap( map )
{
changelevel( map );
}
loadMultiplayer()
{
level.player openMenu( "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();
}
}
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();
}
}
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 );
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;
}
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" )
{
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()
{
setdvar( "controls_sticksConfig", "thumbstick_default" );
}
initButtonLayout()
{
setdvar( "controls_buttonConfig", "buttons_default" );
}
initSensitivity()
{
setdvar( "controls_sensitivityConfig", "sensitivity_medium" );
}
initInversion()
{
setdvar( "controls_inversionConfig", "inversion_disabled" );
}
initAutoAim()
{
setdvar( "controls_autoaimConfig", "autoaim_enabled" );
}
initVibration()
{
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" ));
level.camera thread maps\_vehicle::gopath();
}
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;
}
if ( menu = game["menu_changeclass"] )
{
self closeMenu();
self closeInGameMenu();
self.selectedClass = true;
self [[level.class]](response);
}
}