mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-11 22:54:34 +00:00
Ongoing wipwork of the BaseUI update. Some bugfixes pending
This commit is contained in:
parent
616d974212
commit
ce4c8dabc9
53 changed files with 2033 additions and 3892 deletions
|
|
@ -83,6 +83,8 @@ IMPLEMENT_CALLBACK( GuiButtonBaseCtrl, onMouseDragged, void, (), (),
|
||||||
"pressed the left mouse button on the control and then moves the mouse over a certain distance threshold with "
|
"pressed the left mouse button on the control and then moves the mouse over a certain distance threshold with "
|
||||||
"the mouse button still pressed." );
|
"the mouse button still pressed." );
|
||||||
|
|
||||||
|
IMPLEMENT_CALLBACK(GuiButtonBaseCtrl, onHighlighted, void, (bool highlighted), (highlighted),
|
||||||
|
"Called when the status of the button being highlighted changes.");
|
||||||
|
|
||||||
ImplementEnumType( GuiButtonType,
|
ImplementEnumType( GuiButtonType,
|
||||||
"Type of button control.\n\n"
|
"Type of button control.\n\n"
|
||||||
|
|
@ -290,6 +292,7 @@ void GuiButtonBaseCtrl::onMouseEnter(const GuiEvent &event)
|
||||||
{
|
{
|
||||||
mDepressed = true;
|
mDepressed = true;
|
||||||
mHighlighted = true;
|
mHighlighted = true;
|
||||||
|
onHighlighted_callback(true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -297,6 +300,7 @@ void GuiButtonBaseCtrl::onMouseEnter(const GuiEvent &event)
|
||||||
SFX->playOnce(mProfile->getSoundButtonOverProfile());
|
SFX->playOnce(mProfile->getSoundButtonOverProfile());
|
||||||
|
|
||||||
mHighlighted = true;
|
mHighlighted = true;
|
||||||
|
onHighlighted_callback(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -311,6 +315,7 @@ void GuiButtonBaseCtrl::onMouseLeave(const GuiEvent &)
|
||||||
if( isMouseLocked() )
|
if( isMouseLocked() )
|
||||||
mDepressed = false;
|
mDepressed = false;
|
||||||
mHighlighted = false;
|
mHighlighted = false;
|
||||||
|
onHighlighted_callback(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ class GuiButtonBaseCtrl : public GuiControl
|
||||||
DECLARE_CALLBACK( void, onMouseEnter, () );
|
DECLARE_CALLBACK( void, onMouseEnter, () );
|
||||||
DECLARE_CALLBACK( void, onMouseLeave, () );
|
DECLARE_CALLBACK( void, onMouseLeave, () );
|
||||||
DECLARE_CALLBACK( void, onMouseDragged, () );
|
DECLARE_CALLBACK( void, onMouseDragged, () );
|
||||||
|
DECLARE_CALLBACK( void, onHighlighted, (bool));
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
@ -95,9 +96,18 @@ class GuiButtonBaseCtrl : public GuiControl
|
||||||
bool getStateOn() const { return mStateOn; }
|
bool getStateOn() const { return mStateOn; }
|
||||||
|
|
||||||
void setDepressed( bool depressed ) { mDepressed = depressed; }
|
void setDepressed( bool depressed ) { mDepressed = depressed; }
|
||||||
void resetState() {mDepressed = false; mHighlighted = false;}
|
void resetState()
|
||||||
|
{
|
||||||
|
mDepressed = false;
|
||||||
|
mHighlighted = false;
|
||||||
|
onHighlighted_callback(false);
|
||||||
|
}
|
||||||
|
|
||||||
void setHighlighted(bool highlighted) { mHighlighted = highlighted; }
|
void setHighlighted(bool highlighted)
|
||||||
|
{
|
||||||
|
mHighlighted = highlighted;
|
||||||
|
onHighlighted_callback(highlighted);
|
||||||
|
}
|
||||||
bool isHighlighted() { return mHighlighted; }
|
bool isHighlighted() { return mHighlighted; }
|
||||||
|
|
||||||
void acceleratorKeyPress(U32 index);
|
void acceleratorKeyPress(U32 index);
|
||||||
|
|
|
||||||
|
|
@ -253,7 +253,7 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
|
||||||
if (mProfile->mBorder != 0)
|
if (mProfile->mBorder != 0)
|
||||||
renderFilledBorder(boundsRect, borderColor, fillColor, mProfile->mBorderThickness);
|
renderFilledBorder(boundsRect, borderColor, fillColor, mProfile->mBorderThickness);
|
||||||
else
|
else
|
||||||
GFX->getDrawUtil()->drawRectFill(boundsRect, mProfile->mFillColor);
|
GFX->getDrawUtil()->drawRectFill(boundsRect, fillColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(mHighlighted && mActive)
|
else if(mHighlighted && mActive)
|
||||||
|
|
@ -269,7 +269,7 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
|
||||||
if (mProfile->mBorder != 0)
|
if (mProfile->mBorder != 0)
|
||||||
renderFilledBorder(boundsRect, borderColor, fillColor, mProfile->mBorderThickness);
|
renderFilledBorder(boundsRect, borderColor, fillColor, mProfile->mBorderThickness);
|
||||||
else
|
else
|
||||||
GFX->getDrawUtil()->drawRectFill(boundsRect, mProfile->mFillColor);
|
GFX->getDrawUtil()->drawRectFill(boundsRect, fillColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -388,6 +388,7 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
|
||||||
start.x = iconRect.extent.x + mButtonMargin.x + mTextMargin;
|
start.x = iconRect.extent.x + mButtonMargin.x + mTextMargin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
drawer->setBitmapModulation(fontColor);
|
||||||
drawer->drawText( mProfile->mFont, start + offset, text, mProfile->mFontColors );
|
drawer->drawText( mProfile->mFont, start + offset, text, mProfile->mFontColors );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -395,6 +396,7 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
|
||||||
{
|
{
|
||||||
Point2I start( mTextMargin, ( getHeight() - mProfile->mFont->getHeight() ) / 2 );
|
Point2I start( mTextMargin, ( getHeight() - mProfile->mFont->getHeight() ) / 2 );
|
||||||
|
|
||||||
|
drawer->setBitmapModulation(fontColor);
|
||||||
drawer->drawText( mProfile->mFont, start + offset, text, mProfile->mFontColors );
|
drawer->drawText( mProfile->mFont, start + offset, text, mProfile->mFontColors );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -408,6 +410,7 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
start.set( ( getWidth() - textWidth ) / 2, ( getHeight() - mProfile->mFont->getHeight() ) / 2 );
|
start.set( ( getWidth() - textWidth ) / 2, ( getHeight() - mProfile->mFont->getHeight() ) / 2 );
|
||||||
|
|
||||||
drawer->setBitmapModulation( fontColor );
|
drawer->setBitmapModulation( fontColor );
|
||||||
drawer->drawText( mProfile->mFont, start + offset, text, mProfile->mFontColors );
|
drawer->drawText( mProfile->mFont, start + offset, text, mProfile->mFontColors );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -218,7 +218,8 @@ GuiControl::GuiControl() : mAddGroup( NULL ),
|
||||||
mLangTable(NULL),
|
mLangTable(NULL),
|
||||||
mFirstResponder(NULL),
|
mFirstResponder(NULL),
|
||||||
mHorizSizing(horizResizeRight),
|
mHorizSizing(horizResizeRight),
|
||||||
mVertSizing(vertResizeBottom)
|
mVertSizing(vertResizeBottom),
|
||||||
|
mCategory(StringTable->EmptyString())
|
||||||
{
|
{
|
||||||
mConsoleVariable = StringTable->EmptyString();
|
mConsoleVariable = StringTable->EmptyString();
|
||||||
mAcceleratorKey = StringTable->EmptyString();
|
mAcceleratorKey = StringTable->EmptyString();
|
||||||
|
|
@ -294,6 +295,10 @@ void GuiControl::initPersistFields()
|
||||||
addField("accelerator", TypeString, Offset(mAcceleratorKey, GuiControl),
|
addField("accelerator", TypeString, Offset(mAcceleratorKey, GuiControl),
|
||||||
"Key combination that triggers the control's primary action when the control is on the canvas." );
|
"Key combination that triggers the control's primary action when the control is on the canvas." );
|
||||||
|
|
||||||
|
addField("category", TypeString, Offset(mCategory, GuiControl),
|
||||||
|
"Name of the category this gui control should be grouped into for organizational purposes. Primarily for tooling.");
|
||||||
|
|
||||||
|
|
||||||
endGroup( "Control" );
|
endGroup( "Control" );
|
||||||
|
|
||||||
addGroup( "ToolTip" );
|
addGroup( "ToolTip" );
|
||||||
|
|
|
||||||
|
|
@ -218,6 +218,8 @@ class GuiControl : public SimGroup
|
||||||
String mAltConsoleCommand;
|
String mAltConsoleCommand;
|
||||||
|
|
||||||
String mTooltip;
|
String mTooltip;
|
||||||
|
|
||||||
|
StringTableEntry mCategory;
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -729,7 +729,8 @@ bool ActionMap::nextBoundNode( const char* function, U32 &devMapIndex, U32 &node
|
||||||
for ( U32 j = nodeIndex; j < dvcMap->nodeMap.size(); j++ )
|
for ( U32 j = nodeIndex; j < dvcMap->nodeMap.size(); j++ )
|
||||||
{
|
{
|
||||||
const Node* node = &dvcMap->nodeMap[j];
|
const Node* node = &dvcMap->nodeMap[j];
|
||||||
if ( !( node->flags & Node::BindCmd ) && ( dStricmp( function, node->consoleFunction ) == 0 ) )
|
if ( ( (node->flags & Node::BindCmd) && (dStricmp(function, node->makeConsoleCommand) == 0 || dStricmp(function, node->breakConsoleCommand) == 0) )
|
||||||
|
|| (!(node->flags & Node::BindCmd) && dStricmp( function, node->consoleFunction ) == 0 ) )
|
||||||
{
|
{
|
||||||
devMapIndex = i;
|
devMapIndex = i;
|
||||||
nodeIndex = j;
|
nodeIndex = j;
|
||||||
|
|
@ -1805,6 +1806,7 @@ bool ActionMap::handleEvent(const InputEventInfo* pEvent)
|
||||||
for (SimSet::iterator itr = pActionMapSet->end() - 1;
|
for (SimSet::iterator itr = pActionMapSet->end() - 1;
|
||||||
itr > pActionMapSet->begin(); itr--) {
|
itr > pActionMapSet->begin(); itr--) {
|
||||||
ActionMap* pMap = static_cast<ActionMap*>(*itr);
|
ActionMap* pMap = static_cast<ActionMap*>(*itr);
|
||||||
|
|
||||||
if (pMap->processAction(pEvent) == true)
|
if (pMap->processAction(pEvent) == true)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -147,25 +147,31 @@ new GuiControlProfile(GuiTextEditProfile)
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if(!isObject(GuiMenuScrollProfile))
|
if(!isObject(GuiScrollProfile))
|
||||||
new GuiControlProfile(GuiMenuScrollProfile)
|
new GuiControlProfile(GuiScrollProfile)
|
||||||
{
|
{
|
||||||
opaque = true;
|
opaque = "0";
|
||||||
fontColor = $TextMediumEmphasisColor;
|
fontColor = "200 200 200 255";
|
||||||
fontColorHL = $TextMediumEmphasisColor;
|
fontColorHL = "200 200 200 255";
|
||||||
fontColorNA = $TextDisabledColor;
|
fontColorNA = "108 108 108 255";
|
||||||
fontColorSEL = $TextMediumEmphasisColor;
|
fontColorSEL = "200 200 200 255";
|
||||||
fillColor = "40 40 40";
|
fillColor = "0 0 0 0";
|
||||||
fillColorHL = "56 56 56";
|
fillColorHL = "56 56 56";
|
||||||
fillColorNA = "40 40 40";
|
fillColorNA = "40 40 40";
|
||||||
borderColor = "87 87 87";
|
borderColor = "87 87 87";
|
||||||
borderColorNA = "0 0 0";
|
borderColorNA = "0 0 0";
|
||||||
borderColorHL = "255 255 255";
|
borderColorHL = "255 255 255";
|
||||||
border = true;
|
border = "0";
|
||||||
bitmapAsset = "Core_GUI:scrollBar_image";
|
bitmapAsset = "Core_GUI:scrollBar_image";
|
||||||
hasBitmapArray = true;
|
hasBitmapArray = true;
|
||||||
category = "Core";
|
category = "Core";
|
||||||
fontSize = 15;
|
fontSize = 15;
|
||||||
|
fontColors[0] = "200 200 200 255";
|
||||||
|
fontColors[1] = "200 200 200 255";
|
||||||
|
fontColors[2] = "108 108 108 255";
|
||||||
|
fontColors[3] = "200 200 200 255";
|
||||||
|
fontColors[8] = "Fuchsia";
|
||||||
|
fontColors[9] = "255 0 255 255";
|
||||||
};
|
};
|
||||||
|
|
||||||
if(!isObject(GuiOverlayProfile))
|
if(!isObject(GuiOverlayProfile))
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,21 @@ new SimGroup(VideoSettingsGroup)
|
||||||
OptionName = "Graphical Quality";
|
OptionName = "Graphical Quality";
|
||||||
Description = "Controls the general graphical quality";
|
Description = "Controls the general graphical quality";
|
||||||
|
|
||||||
|
new ArrayObject()
|
||||||
|
{
|
||||||
|
class = "OptionsQualityLevel";
|
||||||
|
caseSensitive = true;
|
||||||
|
|
||||||
|
displayName = "Medium";
|
||||||
|
|
||||||
|
key["$pref::TS::detailAdjust"] = 1.0;
|
||||||
|
key["$pref::TS::skipRenderDLs"] = 0;
|
||||||
|
key["$pref::useStaticObjectFade"] = true;
|
||||||
|
key["$pref::staticObjectFadeStart"] = 75;
|
||||||
|
key["$pref::staticObjectFadeEnd"] = 100;
|
||||||
|
key["$pref::staticObjectUnfadeableSize"] = 75;
|
||||||
|
};
|
||||||
|
|
||||||
new ArrayObject()
|
new ArrayObject()
|
||||||
{
|
{
|
||||||
class = "OptionsQualityLevel";
|
class = "OptionsQualityLevel";
|
||||||
|
|
@ -89,6 +104,54 @@ new SimGroup(VideoSettingsGroup)
|
||||||
key["$pref::staticObjectUnfadeableSize"] = 75;
|
key["$pref::staticObjectUnfadeableSize"] = 75;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
new SimGroup()
|
||||||
|
{
|
||||||
|
class = "OptionsSettings";
|
||||||
|
|
||||||
|
OptionName = "Lighting Quality";
|
||||||
|
Description = "Controls the lighting and shadows quality";
|
||||||
|
|
||||||
|
new ArrayObject()
|
||||||
|
{
|
||||||
|
class = "OptionsQualityLevel";
|
||||||
|
caseSensitive = true;
|
||||||
|
|
||||||
|
displayName = "High";
|
||||||
|
|
||||||
|
key["$pref::lightManager"] = "Advanced Lighting";
|
||||||
|
key["$pref::Shadows::disable"] = false;
|
||||||
|
key["$pref::Shadows::textureScalar"] = 1.0;
|
||||||
|
key["$pref::PSSM::detailAdjustScale"] = 1.0;
|
||||||
|
key["$pref::allowLocalLightShadows"] = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
new SimGroup(AdvancedVideoSettingsGroup)
|
||||||
|
{
|
||||||
|
class = "SubOptionsGroup";
|
||||||
|
displayName = "Advanced";
|
||||||
|
|
||||||
|
new SimGroup()
|
||||||
|
{
|
||||||
|
class = "OptionsSettings";
|
||||||
|
|
||||||
|
OptionName = "Mesh Detail";
|
||||||
|
Description = "Controls the max quality of mesh objects";
|
||||||
|
|
||||||
|
new ArrayObject()
|
||||||
|
{
|
||||||
|
class = "OptionsQualityLevel";
|
||||||
|
caseSensitive = true;
|
||||||
|
|
||||||
|
displayName = "High";
|
||||||
|
|
||||||
|
key["$pref::TS::detailAdjust"] = 1.5;
|
||||||
|
key["$pref::TS::skipRenderDLs"] = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/*new SimGroup(AdvancedVideoSettingsGroup)
|
/*new SimGroup(AdvancedVideoSettingsGroup)
|
||||||
|
|
|
||||||
|
|
@ -39,21 +39,12 @@ function UI::initClient(%this)
|
||||||
//Load UI stuff
|
//Load UI stuff
|
||||||
//Profiles
|
//Profiles
|
||||||
%this.queueExec("./scripts/profiles");
|
%this.queueExec("./scripts/profiles");
|
||||||
|
|
||||||
//Navigation Utility Scripts
|
|
||||||
//%this.queueExec("./scripts/menuNavigation");
|
|
||||||
|
|
||||||
//Now gui files
|
|
||||||
%this.queueExec("./scripts/menuInputHandling");
|
|
||||||
|
|
||||||
%this.queueExec("./guis/mainMenu");
|
%this.queueExec("./guis/mainMenu");
|
||||||
%this.queueExec("./guis/mainMenu.gui");
|
%this.queueExec("./guis/mainMenu.gui");
|
||||||
|
|
||||||
//%this.queueExec("./guis/mainMenuButtons");
|
%this.queueExec("./guis/ChooseLevelMenu");
|
||||||
//%this.queueExec("./guis/mainMenuButtons.gui");
|
%this.queueExec("./guis/ChooseLevelMenu.gui");
|
||||||
|
|
||||||
%this.queueExec("./guis/chooseLevelDlg");
|
|
||||||
%this.queueExec("./guis/chooseLevelDlg.gui");
|
|
||||||
|
|
||||||
%this.queueExec("./guis/joinServerMenu");
|
%this.queueExec("./guis/joinServerMenu");
|
||||||
%this.queueExec("./guis/joinServerMenu.gui");
|
%this.queueExec("./guis/joinServerMenu.gui");
|
||||||
|
|
@ -63,8 +54,8 @@ function UI::initClient(%this)
|
||||||
%this.queueExec("./guis/optionsMenu");
|
%this.queueExec("./guis/optionsMenu");
|
||||||
%this.queueExec("./guis/optionsMenu.gui");
|
%this.queueExec("./guis/optionsMenu.gui");
|
||||||
|
|
||||||
%this.queueExec("./guis/pauseMenu");
|
%this.queueExec("./guis/GameMenu");
|
||||||
%this.queueExec("./guis/pauseMenu.gui");
|
%this.queueExec("./guis/GameMenu.gui");
|
||||||
|
|
||||||
%this.queueExec("./guis/remapDlg.gui");
|
%this.queueExec("./guis/remapDlg.gui");
|
||||||
%this.queueExec("./guis/remapConfirmDlg.gui");
|
%this.queueExec("./guis/remapConfirmDlg.gui");
|
||||||
|
|
@ -73,21 +64,18 @@ function UI::initClient(%this)
|
||||||
%this.queueExec("./guis/profiler.gui");
|
%this.queueExec("./guis/profiler.gui");
|
||||||
|
|
||||||
%this.queueExec("./guis/netGraphGui.gui");
|
%this.queueExec("./guis/netGraphGui.gui");
|
||||||
%this.queueExec("./guis/RecordingsDlg.gui");
|
|
||||||
|
|
||||||
%this.queueExec("./guis/guiMusicPlayer");
|
|
||||||
%this.queueExec("./guis/guiMusicPlayer.gui");
|
|
||||||
|
|
||||||
%this.queueExec("./guis/startupGui");
|
%this.queueExec("./guis/startupGui");
|
||||||
%this.queueExec("./guis/startupGui.gui");
|
%this.queueExec("./guis/startupGui.gui");
|
||||||
|
|
||||||
// Load Editor Dialogs
|
%this.queueExec("./guis/messageBoxDlg");
|
||||||
%this.queueExec("./guis/messageBoxDlg.gui");
|
%this.queueExec("./guis/messageBoxDlg.gui");
|
||||||
|
|
||||||
|
%this.queueExec("./guis/SystemMenu");
|
||||||
|
%this.queueExec("./guis/SystemMenu.gui");
|
||||||
|
|
||||||
//Load scripts
|
//Load scripts
|
||||||
%this.queueExec("./scripts/controlsMenu");
|
%this.queueExec("./scripts/controlsMenu");
|
||||||
%this.queueExec("./scripts/messageBoxes");
|
|
||||||
%this.queueExec("./scripts/help");
|
|
||||||
%this.queueExec("./scripts/cursors");
|
%this.queueExec("./scripts/cursors");
|
||||||
|
|
||||||
if(isToolBuild())
|
if(isToolBuild())
|
||||||
|
|
@ -97,3 +85,8 @@ function UI::initClient(%this)
|
||||||
function UI::onCreateClientConnection(%this){}
|
function UI::onCreateClientConnection(%this){}
|
||||||
|
|
||||||
function UI::onDestroyClientConnection(%this){}
|
function UI::onDestroyClientConnection(%this){}
|
||||||
|
|
||||||
|
function UI::registerGameMenus(%this, %menusArrayObj)
|
||||||
|
{
|
||||||
|
%menusArrayObj.add("System", SystemMenu);
|
||||||
|
}
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
<GUIAsset
|
|
||||||
AssetName="ChooseLevelDlg"
|
|
||||||
scriptFile="@assetFile=chooseLevelDlg"
|
|
||||||
GUIFile="@assetFile=chooseLevelDlg.gui"
|
|
||||||
VersionId="1"/>
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
<GUIAsset
|
||||||
|
AssetName="ChooseLevelMenu"
|
||||||
|
scriptFile="@assetFile=ChooseLevelMenu"
|
||||||
|
GUIFile="@assetFile=ChooseLevelMenu.gui"
|
||||||
|
VersionId="1"/>
|
||||||
97
Templates/BaseGame/game/data/UI/guis/ChooseLevelMenu.gui
Normal file
97
Templates/BaseGame/game/data/UI/guis/ChooseLevelMenu.gui
Normal file
|
|
@ -0,0 +1,97 @@
|
||||||
|
//--- OBJECT WRITE BEGIN ---
|
||||||
|
$guiContent = new GuiChunkedBitmapCtrl(ChooseLevelMenu) {
|
||||||
|
BitmapAsset = "UI:backgrounddark_image";
|
||||||
|
extent = "1280 720";
|
||||||
|
minExtent = "8 8";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiNonModalDefaultProfile";
|
||||||
|
category = "BaseUI";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
isContainer = "1";
|
||||||
|
canSaveDynamicFields = "1";
|
||||||
|
launchInEditor = "0";
|
||||||
|
|
||||||
|
new GuiInputCtrl(ChooseLevelInputHandler) {
|
||||||
|
ignoreMouseEvents = "1";
|
||||||
|
ActionMap = "ChooseLevelActionMap";
|
||||||
|
position = "-50 0";
|
||||||
|
extent = "2186 851";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiInputCtrlProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
|
||||||
|
new GuiPanel(ChooseLevelTitlePanel) {
|
||||||
|
extent = "1281 80";
|
||||||
|
horizSizing = "width";
|
||||||
|
profile = "GuiMenuPanelProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
||||||
|
new GuiTextCtrl(ChooseLevelTitleText) {
|
||||||
|
text = "SINGLE PLAYER";
|
||||||
|
position = "22 23";
|
||||||
|
extent = "220 28";
|
||||||
|
profile = "MenuHeaderText";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
new GuiPanel(ChooseLevelButtonPanel) {
|
||||||
|
position = "0 683";
|
||||||
|
extent = "1281 40";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "top";
|
||||||
|
profile = "GuiMenuPanelProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
||||||
|
new GuiIconButtonCtrl(ChooseLevelStartBtn) {
|
||||||
|
BitmapAsset = "UI:Keyboard_Black_Return_image";
|
||||||
|
sizeIconToButton = "1";
|
||||||
|
makeIconSquare = "1";
|
||||||
|
textLocation = "Center";
|
||||||
|
text = "Start";
|
||||||
|
position = "1115 0";
|
||||||
|
extent = "140 40";
|
||||||
|
horizSizing = "left";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "OptionsMenu.applySettings();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiIconButtonCtrl(ChooseLevelBackBtn) {
|
||||||
|
BitmapAsset = "UI:Keyboard_Black_Escape_image";
|
||||||
|
sizeIconToButton = "1";
|
||||||
|
makeIconSquare = "1";
|
||||||
|
textLocation = "Center";
|
||||||
|
text = "Back";
|
||||||
|
position = "16 0";
|
||||||
|
extent = "140 40";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "Canvas.popDialog();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
new GuiScrollCtrl(LevelPreviewScroll) {
|
||||||
|
hScrollBar = "dynamic";
|
||||||
|
vScrollBar = "alwaysOff";
|
||||||
|
position = "0 118";
|
||||||
|
extent = "1283 500";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuScrollProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
||||||
|
new GuiStackControl(LevelPreviewArray) {
|
||||||
|
position = "1 1";
|
||||||
|
extent = "1280 480";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuDefaultProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
padding = "5";
|
||||||
|
stackingType = "Horizontal";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
//--- OBJECT WRITE END ---
|
||||||
211
Templates/BaseGame/game/data/UI/guis/ChooseLevelMenu.tscript
Normal file
211
Templates/BaseGame/game/data/UI/guis/ChooseLevelMenu.tscript
Normal file
|
|
@ -0,0 +1,211 @@
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Copyright (c) 2012 GarageGames, LLC
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to
|
||||||
|
// deal in the Software without restriction, including without limitation the
|
||||||
|
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
// sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in
|
||||||
|
// all copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
// IN THE SOFTWARE.
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
//----------------------------------------
|
||||||
|
function ChooseLevelMenu::onAdd( %this )
|
||||||
|
{
|
||||||
|
if(!isObject(ChooseLevelAssetQuery))
|
||||||
|
new AssetQuery(ChooseLevelAssetQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ChooseLevelMenu::onWake(%this)
|
||||||
|
{
|
||||||
|
LevelPreviewArray.clear();
|
||||||
|
|
||||||
|
ChooseLevelAssetQuery.clear();
|
||||||
|
AssetDatabase.findAssetType(ChooseLevelAssetQuery, "LevelAsset");
|
||||||
|
|
||||||
|
%count = ChooseLevelAssetQuery.getCount();
|
||||||
|
|
||||||
|
if(%count == 0 && !IsDirectory("tools"))
|
||||||
|
{
|
||||||
|
//We have no levels found. Prompt the user to open the editor to the default level if the tools are present
|
||||||
|
MessageBoxOK("Error", "No levels were found in any modules. Please ensure you have modules loaded that contain gameplay code and level files.",
|
||||||
|
"Canvas.popDialog(ChooseLevelMenu); if(isObject(ChooseLevelMenu.returnGui) && ChooseLevelMenu.returnGui.isMethod(\"onReturnTo\")) ChooseLevelMenu.returnGui.onReturnTo();");
|
||||||
|
|
||||||
|
ChooseLevelAssetQuery.delete();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(%i=0; %i < %count; %i++)
|
||||||
|
{
|
||||||
|
%assetId = ChooseLevelAssetQuery.getAsset(%i);
|
||||||
|
|
||||||
|
if(AssetDatabase.getAssetModule(%assetId).ModuleId $= "ToolsModule")
|
||||||
|
continue;
|
||||||
|
|
||||||
|
%levelAsset = AssetDatabase.acquireAsset(%assetId);
|
||||||
|
|
||||||
|
%file = %levelAsset.getLevelPath();
|
||||||
|
|
||||||
|
if ( !isFile(%file) )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
%levelPreviewImg = %levelAsset.getPreviewImagePath();
|
||||||
|
|
||||||
|
if (!isFile(%levelPreviewImg))
|
||||||
|
%levelPreviewImg = "UI:no_preview_image";
|
||||||
|
|
||||||
|
%preview = new GuiContainer() {
|
||||||
|
extent = "480 480";
|
||||||
|
levelAssetId = %assetId;
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
position = "0 0";
|
||||||
|
extent = "480 480";
|
||||||
|
buttonType = "ToggleButton";
|
||||||
|
profile = LevelPreviewButtonProfile;
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
internalName = "button";
|
||||||
|
class = "LevelPreviewButton";
|
||||||
|
command = "$selectedLevelAsset = " @ %assetId @ ";";
|
||||||
|
altCommand = "ChooseLevelBegin(1);"; //allow doubleclick to quick action it
|
||||||
|
};
|
||||||
|
|
||||||
|
new GuiBitmapCtrl() {
|
||||||
|
position = "20 0";
|
||||||
|
extent = "440 440";
|
||||||
|
BitmapAsset = %levelPreviewImg;
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "bottom";
|
||||||
|
profile = GuiNonModalDefaultProfile;
|
||||||
|
};
|
||||||
|
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
position = "20 445";
|
||||||
|
extent = "440 15";
|
||||||
|
text = %levelAsset.levelName;
|
||||||
|
profile = MenuSubHeaderText;
|
||||||
|
internalName = "levelNameTxt";
|
||||||
|
};
|
||||||
|
|
||||||
|
new GuiMLTextCtrl() {
|
||||||
|
position = "20 465";
|
||||||
|
extent = "440 15";
|
||||||
|
text = %levelAsset.levelDescription;
|
||||||
|
profile = GuiMLTextProfile;
|
||||||
|
internalName = "levelDescTxt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
LevelPreviewArray.add(%preview);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Also add the new level mission as defined in the world editor settings
|
||||||
|
// if we are choosing a level to launch in the editor.
|
||||||
|
if ( %this.launchInEditor )
|
||||||
|
{
|
||||||
|
%this.addMissionFile( "tools/levels/DefaultEditorLevel.mis" );
|
||||||
|
}
|
||||||
|
|
||||||
|
//LevelList.setSelected(0);
|
||||||
|
|
||||||
|
if(!$pref::HostMultiPlayer)
|
||||||
|
ChooseLevelTitleText.setText("SINGLE PLAYER");
|
||||||
|
else
|
||||||
|
ChooseLevelTitleText.setText("CREATE SERVER");
|
||||||
|
|
||||||
|
$MenuList = LevelPreviewArray;
|
||||||
|
$MenuList.listPosition = 0;
|
||||||
|
$MenuList.syncGui();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isObject( ChooseLevelActionMap ) )
|
||||||
|
{
|
||||||
|
new ActionMap(ChooseLevelActionMap){};
|
||||||
|
|
||||||
|
//Null the up/down nav so we can swap in left/right nav
|
||||||
|
ChooseLevelActionMap.bindCmd( keyboard, w, "" );
|
||||||
|
ChooseLevelActionMap.bindCmd( keyboard, s, "" );
|
||||||
|
ChooseLevelActionMap.bindCmd( gamepad, yaxis, "" );
|
||||||
|
ChooseLevelActionMap.bindCmd( gamepad, upov, "" );
|
||||||
|
ChooseLevelActionMap.bindCmd( gamepad, dpov, "" );
|
||||||
|
|
||||||
|
ChooseLevelActionMap.bind( keyboard, a, BaseUINavigatePrev );
|
||||||
|
ChooseLevelActionMap.bind( keyboard, d, BaseUINavigateNext );
|
||||||
|
ChooseLevelActionMap.bind( gamepad, xaxis, "D", "-0.23 0.23", BaseUIStickNavigate );
|
||||||
|
ChooseLevelActionMap.bind( gamepad, lpov, BaseUINavigatePrev );
|
||||||
|
ChooseLevelActionMap.bind( gamepad, rpov, BaseUINavigateNext );
|
||||||
|
|
||||||
|
ChooseLevelActionMap.bind( keyboard, Enter, ChooseLevelBegin );
|
||||||
|
ChooseLevelActionMap.bind( gamepad, btn_a, ChooseLevelBegin );
|
||||||
|
}
|
||||||
|
|
||||||
|
function LevelPreviewArray::syncGUI(%this)
|
||||||
|
{
|
||||||
|
%this.callOnChildren("setHighlighted", false);
|
||||||
|
|
||||||
|
%btn = %this.getObject(%this.listPosition);
|
||||||
|
%btn-->button.setHighlighted(true);
|
||||||
|
|
||||||
|
$selectedLevelAsset = %btn.levelAssetId;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ChooseLevelBegin(%val)
|
||||||
|
{
|
||||||
|
if(%val)
|
||||||
|
{
|
||||||
|
// So we can't fire the button when loading is in progress.
|
||||||
|
if ( isObject( ServerGroup ) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
Canvas.popDialog();
|
||||||
|
|
||||||
|
%entry = LevelPreviewArray.getObject(LevelPreviewArray.listPosition);
|
||||||
|
|
||||||
|
if(!AssetDatabase.isDeclaredAsset(%entry.levelAssetId))
|
||||||
|
{
|
||||||
|
MessageBoxOK("Error", "Selected level preview does not have a valid level asset!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Launch the chosen level with the editor open?
|
||||||
|
if ( ChooseLevelMenu.launchInEditor )
|
||||||
|
{
|
||||||
|
activatePackage( "BootEditor" );
|
||||||
|
ChooseLevelMenu.launchInEditor = false;
|
||||||
|
StartGame(%entry.levelAssetId, "SinglePlayer");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StartGame(%entry.levelAssetId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ChooseLevelMenu::onSleep( %this )
|
||||||
|
{
|
||||||
|
// This is set from the outside, only stays true for a single wake/sleep
|
||||||
|
// cycle.
|
||||||
|
%this.launchInEditor = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function LevelPreviewButton::onHighlighted(%this, %highlighted)
|
||||||
|
{
|
||||||
|
%container = %this.getParent();
|
||||||
|
|
||||||
|
%container-->levelNameTxt.profile = %highlighted ? MenuSubHeaderTextHighlighted : MenuSubHeaderText;
|
||||||
|
%container-->levelDescTxt.profile = %highlighted ? GuiMLTextProfileHighlighted : GuiMLTextProfile;
|
||||||
|
|
||||||
|
LevelPreviewScroll.scrollToObject(%this);
|
||||||
|
}
|
||||||
5
Templates/BaseGame/game/data/UI/guis/GameMenu.asset.taml
Normal file
5
Templates/BaseGame/game/data/UI/guis/GameMenu.asset.taml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
<GUIAsset
|
||||||
|
AssetName="GameMenu"
|
||||||
|
scriptFile="@assetFile=GameMenu"
|
||||||
|
GUIFile="@assetFile=GameMenu.gui"
|
||||||
|
VersionId="1"/>
|
||||||
97
Templates/BaseGame/game/data/UI/guis/GameMenu.gui
Normal file
97
Templates/BaseGame/game/data/UI/guis/GameMenu.gui
Normal file
|
|
@ -0,0 +1,97 @@
|
||||||
|
//--- OBJECT WRITE BEGIN ---
|
||||||
|
$guiContent = new GuiControl(GameMenu) {
|
||||||
|
extent = "1280 720";
|
||||||
|
profile = "GuiDefaultProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
isContainer = "1";
|
||||||
|
superClass = "UINavigation";
|
||||||
|
canSaveDynamicFields = "1";
|
||||||
|
currentMenu = "SystemMenu";
|
||||||
|
gameMenusArray = "17288";
|
||||||
|
resizePages = "1";
|
||||||
|
|
||||||
|
new GuiInputCtrl(GameMenuInputHandler) {
|
||||||
|
ignoreMouseEvents = "1";
|
||||||
|
ActionMap = "GameMenuActionMap";
|
||||||
|
position = "-50 0";
|
||||||
|
extent = "50 50";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiInputCtrlProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiChunkedBitmapCtrl(GameMenuBG) {
|
||||||
|
BitmapAsset = "UI:hudfill_image";
|
||||||
|
extent = "1280 720";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiDefaultProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
isContainer = "1";
|
||||||
|
canSaveDynamicFields = "1";
|
||||||
|
|
||||||
|
new GuiPanel(GameMenuTitlePanel) {
|
||||||
|
extent = "1281 60";
|
||||||
|
horizSizing = "width";
|
||||||
|
profile = "GuiMenuPanelProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
||||||
|
new GuiStackControl(GameMenuButtonList){
|
||||||
|
position = "40 0";
|
||||||
|
extent = "1240 60";
|
||||||
|
profile = GuiDefaultProfile;
|
||||||
|
stackingType = "Horizontal";
|
||||||
|
padding = "10";
|
||||||
|
horizSizing = "center";
|
||||||
|
vertSizing = "center";
|
||||||
|
};
|
||||||
|
|
||||||
|
new GuiControl(GameMenuNavButtonOverlay) {
|
||||||
|
extent = "1281 60";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = GuiNonModalDefaultProfile;
|
||||||
|
|
||||||
|
new GuiBitmapCtrl(GameMenuPrevNavIcon) {
|
||||||
|
BitmapAsset = "UI:Keyboard_Black_Q_image";
|
||||||
|
position = "0 24";
|
||||||
|
extent = "40 40";
|
||||||
|
profile = GuiNonModalDefaultProfile;
|
||||||
|
vertSizing = "top";
|
||||||
|
};
|
||||||
|
|
||||||
|
new GuiBitmapCtrl(GameMenuNextNavIcon) {
|
||||||
|
BitmapAsset = "UI:Keyboard_Black_E_image";
|
||||||
|
position = "0 24";
|
||||||
|
extent = "40 40";
|
||||||
|
profile = GuiNonModalDefaultProfile;
|
||||||
|
vertSizing = "top";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
new GuiPanel(GameMenuButtonPanel) {
|
||||||
|
position = "0 683";
|
||||||
|
extent = "1281 40";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "top";
|
||||||
|
profile = "GuiMenuPanelProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
||||||
|
new GuiIconButtonCtrl(GameMenuBackBtn) {
|
||||||
|
BitmapAsset = "UI:Keyboard_Black_Escape_image";
|
||||||
|
sizeIconToButton = "1";
|
||||||
|
makeIconSquare = "1";
|
||||||
|
textLocation = "Center";
|
||||||
|
text = "Back";
|
||||||
|
position = "16 0";
|
||||||
|
extent = "140 40";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "Canvas.popDialog(GameMenu);";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
class = "MenuInputButton";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
//--- OBJECT WRITE END ---
|
||||||
186
Templates/BaseGame/game/data/UI/guis/GameMenu.tscript
Normal file
186
Templates/BaseGame/game/data/UI/guis/GameMenu.tscript
Normal file
|
|
@ -0,0 +1,186 @@
|
||||||
|
function GameMenu::onAdd(%this)
|
||||||
|
{
|
||||||
|
%this.gameMenusArray = new ArrayObject(){};
|
||||||
|
}
|
||||||
|
|
||||||
|
function GameMenu::onWake(%this)
|
||||||
|
{
|
||||||
|
if($Server::ServerType $= "SinglePlayer")
|
||||||
|
{
|
||||||
|
$timescale = 0;
|
||||||
|
|
||||||
|
sfxSetChannelVolume( $SimAudioType, $pref::SFX::channelVolume[ 0 ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
callOnModules("registerGameMenus", "", %this.gameMenusArray);
|
||||||
|
|
||||||
|
//Remove duplicates as needed
|
||||||
|
%this.gameMenusArray.uniqueKey();
|
||||||
|
|
||||||
|
GameMenuButtonList.clear();
|
||||||
|
|
||||||
|
%stackWidth = 0;
|
||||||
|
//process the entries and give 'em buttons on the button array
|
||||||
|
for(%i=0; %i < %this.gameMenusArray.count(); %i++)
|
||||||
|
{
|
||||||
|
%buttonText = %this.gameMenusArray.getKey(%i);
|
||||||
|
|
||||||
|
%textWidth = GuiMenuButtonProfile.getStringWidth(%buttonText);
|
||||||
|
|
||||||
|
%btn = new GuiButtonCtrl() {
|
||||||
|
extent = %textWidth + 80 SPC 40;
|
||||||
|
profile = GuiMenuButtonProfile;
|
||||||
|
text = %buttonText;
|
||||||
|
class = "GameMenuButton";
|
||||||
|
command = "GameMenu.openGameMenu(\"" @ %buttonText @ "\");";
|
||||||
|
};
|
||||||
|
|
||||||
|
%stackWidth += %textWidth + 40;
|
||||||
|
|
||||||
|
GameMenuButtonList.add(%btn);
|
||||||
|
}
|
||||||
|
|
||||||
|
GameMenuButtonList.resize(GameMenuTitlePanel.extent.x/2 - %stackWidth/2, 0, %stackWidth, GameMenuTitlePanel.extent.y);
|
||||||
|
|
||||||
|
%this.openGameMenu("System");
|
||||||
|
|
||||||
|
//give a slight delay for the canvas to be fully refreshed before we sync things
|
||||||
|
%this.schedule(500, "syncGUI");
|
||||||
|
}
|
||||||
|
|
||||||
|
function GameMenu::onSleep(%this)
|
||||||
|
{
|
||||||
|
if($Server::ServerType $= "SinglePlayer")
|
||||||
|
{
|
||||||
|
$timescale = 1;
|
||||||
|
sfxSetChannelVolume( $SimAudioType, $pref::SFX::channelVolume[ $SimAudioType ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isObject(%this.currentMenu))
|
||||||
|
{
|
||||||
|
Canvas.popDialog(%this.currentMenu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isObject( GameMenuActionMap ) )
|
||||||
|
{
|
||||||
|
new ActionMap(GameMenuActionMap){};
|
||||||
|
|
||||||
|
//We'll just use the existing BaseUI nav functions because it'd be the same logic anyways
|
||||||
|
GameMenuActionMap.bind( keyboard, w, BaseUINavigatePrev );
|
||||||
|
GameMenuActionMap.bind( keyboard, s, BaseUINavigateNext );
|
||||||
|
GameMenuActionMap.bind( gamepad, yaxis, "D", "-0.23 0.23", BaseUIStickNavigate );
|
||||||
|
GameMenuActionMap.bind( gamepad, upov, BaseUINavigatePrev );
|
||||||
|
GameMenuActionMap.bind( gamepad, dpov, BaseUINavigateNext );
|
||||||
|
|
||||||
|
GameMenuActionMap.bind( keyboard, Enter, BaseUIActivateSelected );
|
||||||
|
GameMenuActionMap.bind( gamepad, btn_a, BaseUIActivateSelected );
|
||||||
|
|
||||||
|
GameMenuActionMap.bindCmd( keyboard, Escape, "Canvas.popDialog(GameMenu);", "" );
|
||||||
|
GameMenuActionMap.bindCmd( gamepad, btn_b, "Canvas.popDialog(GameMenu);", "" );
|
||||||
|
GameMenuActionMap.bindCmd( gamepad, btn_start, "Canvas.popDialog(GameMenu);", "" );
|
||||||
|
|
||||||
|
GameMenuActionMap.bind( keyboard, q, GameMenuPrevMenu );
|
||||||
|
GameMenuActionMap.bind( gamepad, btn_l, GameMenuPrevMenu );
|
||||||
|
|
||||||
|
GameMenuActionMap.bind( keyboard, e, GameMenuNextMenu );
|
||||||
|
GameMenuActionMap.bind( gamepad, btn_r, GameMenuNextMenu );
|
||||||
|
}
|
||||||
|
|
||||||
|
function GameMenu::openGameMenu(%this, %menuName)
|
||||||
|
{
|
||||||
|
%menuIdx = %this.gameMenusArray.getIndexFromKey(%menuName);
|
||||||
|
if(%menuIdx != -1)
|
||||||
|
{
|
||||||
|
%newMenu = %this.gameMenusArray.getValue(%menuIdx);
|
||||||
|
|
||||||
|
if(isObject(%this.currentMenu))
|
||||||
|
Canvas.popDialog(%this.currentMenu);
|
||||||
|
|
||||||
|
Canvas.pushDialog(%newMenu);
|
||||||
|
%this.currentMenu = %newMenu;
|
||||||
|
%this.currentMenuIdx = %menuIdx;
|
||||||
|
}
|
||||||
|
|
||||||
|
%this.syncGui();
|
||||||
|
}
|
||||||
|
|
||||||
|
function openPauseMenuOptions()
|
||||||
|
{
|
||||||
|
GameMenu.pushPage(OptionsMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
function pauseMenuExitToMenu()
|
||||||
|
{
|
||||||
|
MessageBoxOKCancel("Exit?", "Do you wish to exit to the Main Menu?", "escapeFromGame();", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
function pauseMenuExitToDesktop()
|
||||||
|
{
|
||||||
|
MessageBoxOKCancel("Exit?", "Do you wish to exit to the desktop?", "quit();", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
function GameMenuPrevMenu(%val)
|
||||||
|
{
|
||||||
|
if(%val)
|
||||||
|
{
|
||||||
|
%currentIdx = GameMenu.currentMenuIdx;
|
||||||
|
GameMenu.currentMenuIdx -= 1;
|
||||||
|
if(GameMenu.currentMenuIdx < 0)
|
||||||
|
GameMenu.currentMenuIdx = 0;
|
||||||
|
|
||||||
|
if(%currentIdx == GameMenu.currentMenuIdx)
|
||||||
|
return;
|
||||||
|
|
||||||
|
%menuName = GameMenu.gameMenusArray.getKey(GameMenu.currentMenuIdx);
|
||||||
|
|
||||||
|
GameMenu.openGameMenu(%menuName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function GameMenuNextMenu(%val)
|
||||||
|
{
|
||||||
|
if(%val)
|
||||||
|
{
|
||||||
|
%currentIdx = GameMenu.currentMenuIdx;
|
||||||
|
GameMenu.currentMenuIdx += 1;
|
||||||
|
if(GameMenu.currentMenuIdx >= GameMenu.gameMenusArray.count())
|
||||||
|
GameMenu.currentMenuIdx = GameMenu.gameMenusArray.count()-1;
|
||||||
|
|
||||||
|
if(%currentIdx == GameMenu.currentMenuIdx)
|
||||||
|
return;
|
||||||
|
|
||||||
|
%menuName = GameMenu.gameMenusArray.getKey(GameMenu.currentMenuIdx);
|
||||||
|
|
||||||
|
GameMenu.openGameMenu(%menuName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function GameMenu::syncGui(%this)
|
||||||
|
{
|
||||||
|
GameMenuButtonList.callOnChildren("setHighlighted", false);
|
||||||
|
|
||||||
|
%btn = GameMenuButtonList.getObject(%this.currentMenuIdx);
|
||||||
|
%btn.setHighlighted(true);
|
||||||
|
|
||||||
|
%buttonPosX = %btn.position.x + GameMenuButtonList.position.x;
|
||||||
|
|
||||||
|
GameMenuPrevNavIcon.position.x = %buttonPosX;
|
||||||
|
GameMenuNextNavIcon.position.x = %buttonPosX + %btn.extent.x - 40;
|
||||||
|
|
||||||
|
//Update the button imagery to comply to the last input device we'd used
|
||||||
|
%device = Canvas.getLastInputDevice();
|
||||||
|
if(%device $= "mouse")
|
||||||
|
%device = "keyboard";
|
||||||
|
|
||||||
|
GameMenuBackBtn.setBitmap(BaseUIActionMap.getCommandButtonBitmap(%device, "BaseUIBackOut"));
|
||||||
|
|
||||||
|
GameMenuPrevNavIcon.setBitmap(GameMenuActionMap.getCommandButtonBitmap(%device, "GameMenuPrevMenu"));
|
||||||
|
GameMenuNextNavIcon.setBitmap(GameMenuActionMap.getCommandButtonBitmap(%device, "GameMenuNextMenu"));
|
||||||
|
|
||||||
|
%this.schedule(500, "syncGUI");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
<GUIAsset
|
|
||||||
AssetName="GuiMusicPlayer"
|
|
||||||
scriptFile="@assetFile=guiMusicPlayer"
|
|
||||||
GUIFile="@assetFile=guiMusicPlayer.gui"
|
|
||||||
VersionId="1"/>
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
<GUIAsset
|
|
||||||
AssetName="IODropdownDlg"
|
|
||||||
GUIFile="@assetFile=IODropdownDlg.ed.gui"
|
|
||||||
VersionId="1"/>
|
|
||||||
|
|
@ -1,159 +0,0 @@
|
||||||
//--- OBJECT WRITE BEGIN ---
|
|
||||||
$guiContent = new GuiControl(IODropdownDlg) {
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
horizSizing = "width";
|
|
||||||
vertSizing = "height";
|
|
||||||
position = "0 0";
|
|
||||||
extent = "640 480";
|
|
||||||
minExtent = "8 8";
|
|
||||||
visible = "1";
|
|
||||||
helpTag = "0";
|
|
||||||
new GuiWindowCtrl(IODropdownFrame) {
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
Profile = "GuiWindowProfile";
|
|
||||||
horizSizing = "center";
|
|
||||||
vertSizing = "center";
|
|
||||||
position = "272 77";
|
|
||||||
extent = "256 117";
|
|
||||||
minExtent = "256 8";
|
|
||||||
canSave = "1";
|
|
||||||
Visible = "1";
|
|
||||||
hovertime = "1000";
|
|
||||||
maxLength = "255";
|
|
||||||
resizeWidth = "1";
|
|
||||||
resizeHeight = "1";
|
|
||||||
canMove = "1";
|
|
||||||
canClose = "1";
|
|
||||||
canMinimize = "0";
|
|
||||||
canMaximize = "0";
|
|
||||||
minSize = "50 50";
|
|
||||||
text = "";
|
|
||||||
closeCommand="IOCallback(IODropdownDlg,IODropdownDlg.cancelCallback);";
|
|
||||||
|
|
||||||
new GuiMLTextCtrl(IODropdownText) {
|
|
||||||
text = "";
|
|
||||||
maxLength = "1024";
|
|
||||||
margin = "0 0 0 0";
|
|
||||||
padding = "0 0 0 0";
|
|
||||||
anchorTop = "1";
|
|
||||||
anchorBottom = "0";
|
|
||||||
anchorLeft = "1";
|
|
||||||
anchorRight = "0";
|
|
||||||
isContainer = "0";
|
|
||||||
profile = "GuiMLTextProfile";
|
|
||||||
horizSizing = "center";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
position = "9 26";
|
|
||||||
extent = "237 16";
|
|
||||||
minExtent = "8 8";
|
|
||||||
canSave = "1";
|
|
||||||
visible = "1";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiBitmapBorderCtrl() {
|
|
||||||
isContainer = "0";
|
|
||||||
profile = "GuiGroupBorderProfile";
|
|
||||||
horizSizing = "width";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
position = "7 51";
|
|
||||||
extent = "243 28";
|
|
||||||
minExtent = "0 0";
|
|
||||||
canSave = "1";
|
|
||||||
visible = "1";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
|
|
||||||
new GuiTextCtrl(IOInputText) {
|
|
||||||
text = "Decal Datablock";
|
|
||||||
maxLength = "1024";
|
|
||||||
margin = "0 0 0 0";
|
|
||||||
padding = "0 0 0 0";
|
|
||||||
anchorTop = "1";
|
|
||||||
anchorBottom = "0";
|
|
||||||
anchorLeft = "1";
|
|
||||||
anchorRight = "0";
|
|
||||||
isContainer = "0";
|
|
||||||
profile = "GuiTextRightProfile";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
position = "5 5";
|
|
||||||
extent = "105 18";
|
|
||||||
minExtent = "8 2";
|
|
||||||
canSave = "1";
|
|
||||||
visible = "1";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiPopUpMenuCtrl(IODropdownMenu) {
|
|
||||||
maxPopupHeight = "200";
|
|
||||||
sbUsesNAColor = "0";
|
|
||||||
reverseTextList = "0";
|
|
||||||
bitmapBounds = "16 16";
|
|
||||||
maxLength = "1024";
|
|
||||||
margin = "0 0 0 0";
|
|
||||||
padding = "0 0 0 0";
|
|
||||||
anchorTop = "1";
|
|
||||||
anchorBottom = "0";
|
|
||||||
anchorLeft = "1";
|
|
||||||
anchorRight = "0";
|
|
||||||
isContainer = "0";
|
|
||||||
profile = "GuiPopUpMenuProfile";
|
|
||||||
horizSizing = "width";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
position = "115 5";
|
|
||||||
extent = "122 18";
|
|
||||||
minExtent = "8 2";
|
|
||||||
canSave = "1";
|
|
||||||
visible = "1";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl() {
|
|
||||||
text = "OK";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
isContainer = "0";
|
|
||||||
profile = "GuiButtonProfile";
|
|
||||||
horizSizing = "width";
|
|
||||||
vertSizing = "top";
|
|
||||||
position = "7 85";
|
|
||||||
extent = "156 24";
|
|
||||||
minExtent = "8 8";
|
|
||||||
canSave = "1";
|
|
||||||
visible = "1";
|
|
||||||
accelerator = "return";
|
|
||||||
command = "IOCallback(IODropdownDlg,IODropdownDlg.callback);";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl() {
|
|
||||||
text = "Cancel";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
isContainer = "0";
|
|
||||||
profile = "GuiButtonProfile";
|
|
||||||
horizSizing = "left";
|
|
||||||
vertSizing = "top";
|
|
||||||
position = "170 85";
|
|
||||||
extent = "80 24";
|
|
||||||
minExtent = "8 8";
|
|
||||||
canSave = "1";
|
|
||||||
visible = "1";
|
|
||||||
accelerator = "escape";
|
|
||||||
command = "IOCallback(IODropdownDlg,IODropdownDlg.cancelCallback);";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
//--- OBJECT WRITE END ---
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
<GUIAsset
|
|
||||||
AssetName="MainMenuButtons"
|
|
||||||
scriptFile="@assetFile=MainMenuButtons.tscript"
|
|
||||||
GUIFile="@assetFile=MainMenuButtons.gui"
|
|
||||||
VersionId="1"/>
|
|
||||||
|
|
@ -1,84 +0,0 @@
|
||||||
//--- OBJECT WRITE BEGIN ---
|
|
||||||
$guiContent = new GuiControl(MainMenuButtons) {
|
|
||||||
extent = "1024 768";
|
|
||||||
horizSizing = "width";
|
|
||||||
vertSizing = "height";
|
|
||||||
profile = "GuiNonModalDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "1";
|
|
||||||
canSaveDynamicFields = "1";
|
|
||||||
originalAssetName = "MainMenuButtons";
|
|
||||||
|
|
||||||
new GuiStackControl(MainMenuButtonList) {
|
|
||||||
padding = "15";
|
|
||||||
dynamicSize = "0";
|
|
||||||
position = "312 145";
|
|
||||||
extent = "400 477";
|
|
||||||
horizSizing = "center";
|
|
||||||
vertSizing = "center";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
superClass = "MenuList";
|
|
||||||
|
|
||||||
new GuiButtonCtrl(MainMenuSinglePlayerBtn) {
|
|
||||||
text = "Single Player";
|
|
||||||
extent = "400 55";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "openSinglePlayerMenu();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(MainMenuCreateSrvrBtn) {
|
|
||||||
text = "Create Server";
|
|
||||||
position = "0 70";
|
|
||||||
extent = "400 55";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "openMultiPlayerMenu();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(MainMenuJoinSrvrBtn) {
|
|
||||||
text = "Join Server";
|
|
||||||
position = "0 140";
|
|
||||||
extent = "400 55";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "openJoinServerMenu();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(MainMenuOptionBtn) {
|
|
||||||
text = "Options";
|
|
||||||
position = "0 210";
|
|
||||||
extent = "400 55";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "openOptionsMenu();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(MainMenuWorldEditBtn) {
|
|
||||||
text = "Open World Editor (F11)";
|
|
||||||
position = "0 280";
|
|
||||||
extent = "400 55";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "openWorldEditorBtn();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
enabled = (ModuleDatabase.findModule("ToolsModule") !$= "");
|
|
||||||
visible = (ModuleDatabase.findModule("ToolsModule") !$= "");
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(MainMenuGuiEditBtn) {
|
|
||||||
text = "Open GUI Editor (F10)";
|
|
||||||
position = "0 350";
|
|
||||||
extent = "400 55";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "openGUIEditorBtn();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
enabled = (ModuleDatabase.findModule("ToolsModule") !$= "");
|
|
||||||
visible = (ModuleDatabase.findModule("ToolsModule") !$= "");
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(MainMenuExitBtn) {
|
|
||||||
text = "Exit";
|
|
||||||
position = "0 420";
|
|
||||||
extent = "400 55";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "quit();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
//--- OBJECT WRITE END ---
|
|
||||||
|
|
@ -1,107 +0,0 @@
|
||||||
function MainMenuButtons::onWake(%this)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
function MainMenuButtons::onSleep(%this)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
// This gets called by the MainMenuGUI beacuse it, being a UINavigation classed control
|
|
||||||
// set MainMenuButtonList as it's root page.
|
|
||||||
// This is an optional function, but is called as part of the validation that the page
|
|
||||||
// CAN be opened, so it's shown here as an example
|
|
||||||
function MainMenuButtons::canOpen(%this)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
// This gets called by the MainMenuGUI beacuse it, being a UINavigation classed control
|
|
||||||
// set MainMenuButtonList as it's root page.
|
|
||||||
// Once the page is added to the MainMenuGUI's UINavigation page stack, onOpen here is called
|
|
||||||
// Which allows us to actually do the work we need to do for display
|
|
||||||
function MainMenuButtons::onOpen(%this)
|
|
||||||
{
|
|
||||||
//Here, we set the MainMenuButtonList - a GuiStackControl with the MenuList class
|
|
||||||
// to be the active menu list.
|
|
||||||
// This means that when the MainMenuGUI's MainMenuInputHandler receives an input
|
|
||||||
// or we have one of the buttons in the MainMenuButtonHolder be actioned, we know
|
|
||||||
// we're working/navigating this list of buttons specifically
|
|
||||||
// In practice, it sets the $activeMenuList global variable so the various menu class code
|
|
||||||
// can reference it consistently
|
|
||||||
MainMenuButtonList.setAsActiveMenuList();
|
|
||||||
|
|
||||||
//Because MainMenuGUI set it's MainMenuButtonHolder as the active button container, we can reference it
|
|
||||||
//by $activeMenuButtonContainer and set the menu button/accelerator prompts we need for the MainMenuButtonList
|
|
||||||
//specifically.
|
|
||||||
//In particular, being a simple list of buttons, the only one we NEED is a simple activate, so we'll
|
|
||||||
//disable all the other ones to keep them clear in case they were set by other pages at some point
|
|
||||||
$activeMenuButtonContainer-->button1.disable();
|
|
||||||
$activeMenuButtonContainer-->button2.disable();
|
|
||||||
$activeMenuButtonContainer-->button3.disable();
|
|
||||||
|
|
||||||
//Here we set the 4th button in the container
|
|
||||||
//All the buttons have the MenuInputButton class, which, like the other classes
|
|
||||||
//help keep things accessible and consistent. Here we use that class's set function to
|
|
||||||
//configure the accelerator behavior
|
|
||||||
//The first parameter sets the gamepad button to the 'A' button
|
|
||||||
//The second sets the keyboard button to Enter or Return
|
|
||||||
//Third is what the displayed text will be
|
|
||||||
//And finally we set the command when the button is clicked, or either key inputs are caught by
|
|
||||||
//our MenuInputHandler
|
|
||||||
//The menu buttons automatically detect which input device you're using and swap the display between
|
|
||||||
//gamepad or keyboard for consistent behavior
|
|
||||||
$activeMenuButtonContainer-->button4.set("btn_a", "Return", "Go", "MainMenuButtonList.activate();");
|
|
||||||
$activeMenuButtonContainer-->button5.disable();
|
|
||||||
}
|
|
||||||
|
|
||||||
//Optional, as the check defaults to true, but here as an example case
|
|
||||||
function MainMenuButtons::canClose(%this)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function MainMenuButtons::onClose(%this)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//Our actual commands when we activate the buttons
|
|
||||||
function openSinglePlayerMenu()
|
|
||||||
{
|
|
||||||
$pref::HostMultiPlayer=false;
|
|
||||||
MainMenuGui.pushPage(ChooseLevelDlg);
|
|
||||||
}
|
|
||||||
|
|
||||||
function openMultiPlayerMenu()
|
|
||||||
{
|
|
||||||
$pref::HostMultiPlayer=true;
|
|
||||||
|
|
||||||
//Here, like the other commands, we add a new page onto the stack
|
|
||||||
//In this case, we'll push the ChooseLevelDlg control onto the stack. This will
|
|
||||||
//invoke the canClose() and then onClose() functions for MainMenuButtonList
|
|
||||||
//before calling the onOpen() for ChooseLevelDlg then displaying.
|
|
||||||
MainMenuGui.pushPage(ChooseLevelDlg);
|
|
||||||
}
|
|
||||||
|
|
||||||
function openJoinServerMenu()
|
|
||||||
{
|
|
||||||
//Here, like the other commands, we add a new page onto the stack
|
|
||||||
//In this case, we'll push the JoinServerMenu control onto the stack. This will
|
|
||||||
//invoke the canClose() and then onClose() functions for MainMenuButtonList
|
|
||||||
//before calling the onOpen() for JoinServerMenu then displaying.
|
|
||||||
MainMenuGui.pushPage(JoinServerMenu);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function openWorldEditorBtn()
|
|
||||||
{
|
|
||||||
fastLoadWorldEdit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
function openGUIEditorBtn()
|
|
||||||
{
|
|
||||||
fastLoadGUIEdit(1);
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
<GUIAsset
|
|
||||||
AssetName="PauseMenu"
|
|
||||||
scriptFile="@assetFile=pauseMenu"
|
|
||||||
GUIFile="@assetFile=pauseMenu.gui"
|
|
||||||
VersionId="1"/>
|
|
||||||
|
|
@ -1,230 +0,0 @@
|
||||||
//--- OBJECT WRITE BEGIN ---
|
|
||||||
$guiContent = new GuiControl(recordingsDlg) {
|
|
||||||
position = "0 0";
|
|
||||||
extent = "1024 768";
|
|
||||||
minExtent = "8 8";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "1";
|
|
||||||
helpTag = "0";
|
|
||||||
|
|
||||||
new GuiWindowCtrl() {
|
|
||||||
text = "Demo Recordings";
|
|
||||||
resizeWidth = "0";
|
|
||||||
resizeHeight = "0";
|
|
||||||
canMove = "1";
|
|
||||||
canClose = "1";
|
|
||||||
canMinimize = "0";
|
|
||||||
canMaximize = "0";
|
|
||||||
canCollapse = "0";
|
|
||||||
closeCommand = "Canvas.popDialog(recordingsDlg);";
|
|
||||||
edgeSnap = "1";
|
|
||||||
margin = "0 0 0 0";
|
|
||||||
padding = "0 0 0 0";
|
|
||||||
anchorTop = "1";
|
|
||||||
anchorBottom = "0";
|
|
||||||
anchorLeft = "1";
|
|
||||||
anchorRight = "0";
|
|
||||||
position = "247 215";
|
|
||||||
extent = "530 338";
|
|
||||||
minExtent = "48 92";
|
|
||||||
horizSizing = "center";
|
|
||||||
vertSizing = "center";
|
|
||||||
profile = "GuiWindowProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
|
|
||||||
new GuiScrollCtrl() {
|
|
||||||
willFirstRespond = "1";
|
|
||||||
hScrollBar = "dynamic";
|
|
||||||
vScrollBar = "alwaysOn";
|
|
||||||
lockHorizScroll = "0";
|
|
||||||
lockVertScroll = "0";
|
|
||||||
constantThumbHeight = "0";
|
|
||||||
childMargin = "0 0";
|
|
||||||
mouseWheelScrollSpeed = "-1";
|
|
||||||
margin = "0 0 0 0";
|
|
||||||
padding = "0 0 0 0";
|
|
||||||
anchorTop = "1";
|
|
||||||
anchorBottom = "0";
|
|
||||||
anchorLeft = "1";
|
|
||||||
anchorRight = "0";
|
|
||||||
position = "23 60";
|
|
||||||
extent = "484 237";
|
|
||||||
minExtent = "32 32";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiScrollProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
|
|
||||||
new GuiTextListCtrl(RecordingsDlgList) {
|
|
||||||
columns = "0";
|
|
||||||
fitParentWidth = "1";
|
|
||||||
clipColumnText = "0";
|
|
||||||
position = "1 1";
|
|
||||||
extent = "469 32";
|
|
||||||
minExtent = "8 20";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiTextArrayProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(DR_CancelBtn) {
|
|
||||||
text = "Cancel";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "396 306";
|
|
||||||
extent = "110 20";
|
|
||||||
minExtent = "8 8";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "top";
|
|
||||||
profile = "GuiButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "Canvas.popDialog(recordingsDlg);";
|
|
||||||
accelerator = "escape";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(DR_StartDemoBtn) {
|
|
||||||
text = "Play";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "25 305";
|
|
||||||
extent = "110 20";
|
|
||||||
minExtent = "8 8";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "top";
|
|
||||||
profile = "GuiButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "StartSelectedDemo();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiTextCtrl() {
|
|
||||||
text = "During gameplay press the following keys:";
|
|
||||||
maxLength = "1024";
|
|
||||||
margin = "0 0 0 0";
|
|
||||||
padding = "0 0 0 0";
|
|
||||||
anchorTop = "1";
|
|
||||||
anchorBottom = "0";
|
|
||||||
anchorLeft = "1";
|
|
||||||
anchorRight = "0";
|
|
||||||
position = "23 30";
|
|
||||||
extent = "206 18";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiTextProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiTextCtrl() {
|
|
||||||
text = "Start = F3";
|
|
||||||
maxLength = "1024";
|
|
||||||
margin = "0 0 0 0";
|
|
||||||
padding = "0 0 0 0";
|
|
||||||
anchorTop = "1";
|
|
||||||
anchorBottom = "0";
|
|
||||||
anchorLeft = "1";
|
|
||||||
anchorRight = "0";
|
|
||||||
position = "253 32";
|
|
||||||
extent = "50 15";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiTextProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiTextCtrl() {
|
|
||||||
text = "Stop = F4";
|
|
||||||
maxLength = "1024";
|
|
||||||
margin = "0 0 0 0";
|
|
||||||
padding = "0 0 0 0";
|
|
||||||
anchorTop = "1";
|
|
||||||
anchorBottom = "0";
|
|
||||||
anchorLeft = "1";
|
|
||||||
anchorRight = "0";
|
|
||||||
position = "320 32";
|
|
||||||
extent = "49 13";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiTextProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(DR_DelDemoBtn) {
|
|
||||||
text = "Delete";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "210 305";
|
|
||||||
extent = "110 20";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "deleteDemoRecord();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
//--- OBJECT WRITE END ---
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
<GUIAsset
|
||||||
|
AssetName="SystemMenu"
|
||||||
|
ScriptFile="@assetFile=SystemMenu.tscript"
|
||||||
|
GUIFile="@assetFile=SystemMenu.gui"
|
||||||
|
VersionId="1"/>
|
||||||
53
Templates/BaseGame/game/data/UI/guis/SystemMenu.gui
Normal file
53
Templates/BaseGame/game/data/UI/guis/SystemMenu.gui
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
//--- OBJECT WRITE BEGIN ---
|
||||||
|
$guiContent = new GuiControl(SystemMenu) {
|
||||||
|
extent = "1280 720";
|
||||||
|
profile = "GuiNonModalDefaultProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
isContainer = "1";
|
||||||
|
canSaveDynamicFields = "1";
|
||||||
|
|
||||||
|
new GuiStackControl(SystemMenuButtonList) {
|
||||||
|
padding = "5";
|
||||||
|
dynamicSize = "0";
|
||||||
|
position = "440 263";
|
||||||
|
extent = "400 189";
|
||||||
|
horizSizing = "center";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiDefaultProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
superClass = "MenuList";
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = "Return to Game";
|
||||||
|
extent = "400 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "Canvas.popDialog(GameMenu);";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = "Options";
|
||||||
|
position = "0 45";
|
||||||
|
extent = "400 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "Canvas.pushDialog(OptionsMenu);";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = "Exit to Menu";
|
||||||
|
position = "0 90";
|
||||||
|
extent = "400 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "systemMenuExitToMenu();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = "Exit to Desktop";
|
||||||
|
position = "0 135";
|
||||||
|
extent = "400 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "systemMenuExitToDesktop();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
//--- OBJECT WRITE END ---
|
||||||
37
Templates/BaseGame/game/data/UI/guis/SystemMenu.tscript
Normal file
37
Templates/BaseGame/game/data/UI/guis/SystemMenu.tscript
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
function SystemMenu::onWake(%this)
|
||||||
|
{
|
||||||
|
$MenuList = SystemMenuButtonList;
|
||||||
|
$MenuList.listPosition = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SystemMenu::onSleep(%this)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function systemMenuExitToMenu()
|
||||||
|
{
|
||||||
|
MessageBoxOKCancel("Exit?", "Do you wish to exit to the Main Menu?", "escapeFromGame();", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
function systemMenuExitToDesktop()
|
||||||
|
{
|
||||||
|
MessageBoxOKCancel("Exit?", "Do you wish to exit to the desktop?", "quit();", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
function SystemMenuButtonList::syncGUI(%this)
|
||||||
|
{
|
||||||
|
%this.callOnChildren("setHighlighted", false);
|
||||||
|
|
||||||
|
%btn = %this.getObject(%this.listPosition);
|
||||||
|
%btn.setHighlighted(true);
|
||||||
|
|
||||||
|
//
|
||||||
|
//Update the button imagery to comply to the last input device we'd used
|
||||||
|
%device = Canvas.getLastInputDevice();
|
||||||
|
if(%device $= "mouse")
|
||||||
|
%device = "keyboard";
|
||||||
|
|
||||||
|
//We'll call back to the GameMenu parent just to be sure everything's on the same page
|
||||||
|
GameMenu.syncGui();
|
||||||
|
}
|
||||||
|
|
@ -1,106 +0,0 @@
|
||||||
//--- OBJECT WRITE BEGIN ---
|
|
||||||
$guiContent = new GuiControl(ChooseLevelDlg) {
|
|
||||||
extent = "1024 768";
|
|
||||||
minExtent = "8 8";
|
|
||||||
horizSizing = "width";
|
|
||||||
vertSizing = "height";
|
|
||||||
profile = "GuiNonModalDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "1";
|
|
||||||
canSaveDynamicFields = "1";
|
|
||||||
Enabled = "1";
|
|
||||||
launchInEditor = "0";
|
|
||||||
returnGui = "MainMenuGui";
|
|
||||||
|
|
||||||
new GuiControl(ChooseLevelWindow) {
|
|
||||||
position = "48 56";
|
|
||||||
extent = "928 655";
|
|
||||||
horizSizing = "center";
|
|
||||||
vertSizing = "center";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "1";
|
|
||||||
|
|
||||||
new GuiBitmapBarCtrl() {
|
|
||||||
BitmapAsset = "UI:panel_image";
|
|
||||||
extent = "927 40";
|
|
||||||
horizSizing = "width";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
new GuiTextCtrl(LevelSelectTitle) {
|
|
||||||
text = "SINGLE PLAYER";
|
|
||||||
position = "22 10";
|
|
||||||
extent = "307 28";
|
|
||||||
profile = "MenuHeaderText";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
new GuiBitmapBarCtrl() {
|
|
||||||
BitmapAsset = "UI:panel_low_image";
|
|
||||||
position = "0 40";
|
|
||||||
extent = "927 618";
|
|
||||||
horizSizing = "width";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
new GuiBitmapCtrl() {
|
|
||||||
BitmapAsset = "Core_Rendering:missingTexture_image";
|
|
||||||
position = "513 71";
|
|
||||||
extent = "400 300";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
internalName = "CurrentPreview";
|
|
||||||
canSaveDynamicFields = "1";
|
|
||||||
Enabled = "1";
|
|
||||||
};
|
|
||||||
new GuiTextCtrl() {
|
|
||||||
text = "Example Level";
|
|
||||||
maxLength = "255";
|
|
||||||
position = "514 375";
|
|
||||||
extent = "398 27";
|
|
||||||
minExtent = "8 8";
|
|
||||||
profile = "MenuHeaderText";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "0";
|
|
||||||
internalName = "LevelName";
|
|
||||||
};
|
|
||||||
new GuiTextCtrl() {
|
|
||||||
text = "Description:";
|
|
||||||
maxLength = "255";
|
|
||||||
position = "522 410";
|
|
||||||
extent = "91 18";
|
|
||||||
minExtent = "8 8";
|
|
||||||
profile = "MenuSubHeaderText";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "0";
|
|
||||||
internalName = "LevelDescriptionLabel";
|
|
||||||
};
|
|
||||||
new GuiMLTextCtrl() {
|
|
||||||
text = "This is placeholder text";
|
|
||||||
position = "522 436";
|
|
||||||
extent = "391 14";
|
|
||||||
minExtent = "8 8";
|
|
||||||
profile = "GuiMLWhiteTextProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
internalName = "LevelDescription";
|
|
||||||
};
|
|
||||||
new GuiScrollCtrl() {
|
|
||||||
hScrollBar = "dynamic";
|
|
||||||
vScrollBar = "dynamic";
|
|
||||||
position = "0 40";
|
|
||||||
extent = "450 580";
|
|
||||||
profile = "GuiMenuScrollProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
|
|
||||||
new GuiGameListMenuCtrl(LevelList) {
|
|
||||||
callbackOnInputs = "1";
|
|
||||||
position = "1 1";
|
|
||||||
extent = "450 90";
|
|
||||||
profile = "DefaultListMenuProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
class = "UIMenuButtonList";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
//--- OBJECT WRITE END ---
|
|
||||||
|
|
@ -1,210 +0,0 @@
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// Copyright (c) 2012 GarageGames, LLC
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
// of this software and associated documentation files (the "Software"), to
|
|
||||||
// deal in the Software without restriction, including without limitation the
|
|
||||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
// sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
// furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
// IN THE SOFTWARE.
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
//----------------------------------------
|
|
||||||
function ChooseLevelDlg::onWake( %this )
|
|
||||||
{
|
|
||||||
if(!isObject(LevelListEntries))
|
|
||||||
new ArrayObject(LevelListEntries){};
|
|
||||||
|
|
||||||
if(!isObject(ChooseLevelAssetQuery))
|
|
||||||
new AssetQuery(ChooseLevelAssetQuery);
|
|
||||||
}
|
|
||||||
|
|
||||||
function ChooseLevelDlg::onOpen(%this)
|
|
||||||
{
|
|
||||||
LevelList.clearRows();
|
|
||||||
LevelListEntries.empty();
|
|
||||||
|
|
||||||
ChooseLevelWindow->CurrentPreview.setBitmap("UI:no_preview_image");
|
|
||||||
ChooseLevelWindow->LevelDescriptionLabel.visible = false;
|
|
||||||
ChooseLevelWindow->LevelDescription.visible = false;
|
|
||||||
|
|
||||||
ChooseLevelAssetQuery.clear();
|
|
||||||
AssetDatabase.findAssetType(ChooseLevelAssetQuery, "LevelAsset");
|
|
||||||
|
|
||||||
%count = ChooseLevelAssetQuery.getCount();
|
|
||||||
|
|
||||||
if(%count == 0 && !IsDirectory("tools"))
|
|
||||||
{
|
|
||||||
//We have no levels found. Prompt the user to open the editor to the default level if the tools are present
|
|
||||||
MessageBoxOK("Error", "No levels were found in any modules. Please ensure you have modules loaded that contain gameplay code and level files.",
|
|
||||||
"Canvas.popDialog(ChooseLevelDlg); if(isObject(ChooseLevelDlg.returnGui) && ChooseLevelDlg.returnGui.isMethod(\"onReturnTo\")) ChooseLevelDlg.returnGui.onReturnTo();");
|
|
||||||
|
|
||||||
ChooseLevelAssetQuery.delete();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(%i=0; %i < %count; %i++)
|
|
||||||
{
|
|
||||||
%assetId = ChooseLevelAssetQuery.getAsset(%i);
|
|
||||||
|
|
||||||
if(AssetDatabase.getAssetModule(%assetId).ModuleId $= "ToolsModule")
|
|
||||||
continue;
|
|
||||||
|
|
||||||
%levelAsset = AssetDatabase.acquireAsset(%assetId);
|
|
||||||
|
|
||||||
%file = %levelAsset.getLevelPath();
|
|
||||||
|
|
||||||
if ( !isFile(%file @ ".mis") && !isFile(%file @ ".mis.dso") &&!isFile(%file) )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// Skip our new level/mission if we arent choosing a level
|
|
||||||
// to launch in the editor.
|
|
||||||
if ( !%this.launchInEditor )
|
|
||||||
{
|
|
||||||
%fileName = fileName(%file);
|
|
||||||
if (strstr(%fileName, "newMission.mis") > -1 || strstr(%fileName, "newLevel.mis") > -1)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
%this.addLevelAsset( %levelAsset );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Also add the new level mission as defined in the world editor settings
|
|
||||||
// if we are choosing a level to launch in the editor.
|
|
||||||
if ( %this.launchInEditor )
|
|
||||||
{
|
|
||||||
%this.addMissionFile( "tools/levels/DefaultEditorLevel.mis" );
|
|
||||||
}
|
|
||||||
|
|
||||||
for(%i=0; %i < LevelListEntries.count(); %i++)
|
|
||||||
{
|
|
||||||
%levelAsset = LevelListEntries.getKey(%i);
|
|
||||||
|
|
||||||
LevelList.addRow(%levelAsset.LevelName, "", -1, -30);
|
|
||||||
}
|
|
||||||
|
|
||||||
LevelList.setSelected(0);
|
|
||||||
LevelList.onChange();
|
|
||||||
|
|
||||||
if(!$pref::HostMultiPlayer)
|
|
||||||
LevelSelectTitle.setText("SINGLE PLAYER");
|
|
||||||
else
|
|
||||||
LevelSelectTitle.setText("CREATE SERVER");
|
|
||||||
|
|
||||||
$activeMenuButtonContainer-->button1.disable();
|
|
||||||
$activeMenuButtonContainer-->button2.disable();
|
|
||||||
$activeMenuButtonContainer-->button3.disable();
|
|
||||||
$activeMenuButtonContainer-->button4.set("btn_a", "Return", "Start Level", "ChooseLevelDlg.beginLevel();");
|
|
||||||
$activeMenuButtonContainer-->button5.set("btn_b", "Escape", "Back", %this @ ".navigation.popPage();");
|
|
||||||
}
|
|
||||||
|
|
||||||
function ChooseLevelDlg::onSleep( %this )
|
|
||||||
{
|
|
||||||
// This is set from the outside, only stays true for a single wake/sleep
|
|
||||||
// cycle.
|
|
||||||
%this.launchInEditor = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function ChooseLevelDlg::addMissionFile( %this, %file )
|
|
||||||
{
|
|
||||||
%levelName = fileBase(%file);
|
|
||||||
%levelDesc = "A Torque level";
|
|
||||||
|
|
||||||
%LevelInfoObject = getLevelInfo(%file);
|
|
||||||
|
|
||||||
if (%LevelInfoObject != 0)
|
|
||||||
{
|
|
||||||
if(%LevelInfoObject.levelName !$= "")
|
|
||||||
%levelName = %LevelInfoObject.levelName;
|
|
||||||
else if(%LevelInfoObject.name !$= "")
|
|
||||||
%levelName = %LevelInfoObject.name;
|
|
||||||
|
|
||||||
if (%LevelInfoObject.desc0 !$= "")
|
|
||||||
%levelDesc = %LevelInfoObject.desc0;
|
|
||||||
|
|
||||||
if (%LevelInfoObject.preview !$= "")
|
|
||||||
%levelPreview = %LevelInfoObject.preview;
|
|
||||||
|
|
||||||
%LevelInfoObject.delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
LevelListEntries.add( %levelName TAB %file TAB %levelDesc TAB %levelPreview );
|
|
||||||
}
|
|
||||||
|
|
||||||
function ChooseLevelDlg::addLevelAsset( %this, %levelAsset )
|
|
||||||
{
|
|
||||||
LevelListEntries.add( %levelAsset );
|
|
||||||
}
|
|
||||||
|
|
||||||
function LevelList::onChange(%this)
|
|
||||||
{
|
|
||||||
%index = %this.getSelectedRow();
|
|
||||||
|
|
||||||
%levelAsset = LevelListEntries.getKey(%index);
|
|
||||||
|
|
||||||
// Get the name
|
|
||||||
ChooseLevelWindow->LevelName.text = %levelAsset.LevelName;
|
|
||||||
|
|
||||||
// Get the level id
|
|
||||||
$selectedLevelAsset = %levelAsset.getAssetId();
|
|
||||||
|
|
||||||
// Find the preview image
|
|
||||||
%levelPreview = %levelAsset.getPreviewImagePath();
|
|
||||||
|
|
||||||
// Test against all of the different image formats
|
|
||||||
// This should probably be moved into an engine function
|
|
||||||
if (isFile(%levelPreview))
|
|
||||||
ChooseLevelWindow->CurrentPreview.setBitmap(%levelPreview);
|
|
||||||
else
|
|
||||||
ChooseLevelWindow->CurrentPreview.setBitmap("UI:no_preview_image");
|
|
||||||
|
|
||||||
// Get the description
|
|
||||||
%levelDesc = %levelAsset.description;
|
|
||||||
|
|
||||||
if(%levelDesc !$= "")
|
|
||||||
{
|
|
||||||
ChooseLevelWindow->LevelDescriptionLabel.setVisible(true);
|
|
||||||
ChooseLevelWindow->LevelDescription.setVisible(true);
|
|
||||||
ChooseLevelWindow->LevelDescription.setText(%levelDesc);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ChooseLevelWindow->LevelDescriptionLabel.setVisible(false);
|
|
||||||
ChooseLevelWindow->LevelDescription.setVisible(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do this onMouseUp not via Command which occurs onMouseDown so we do
|
|
||||||
// not have a lingering mouseUp event lingering in the ether.
|
|
||||||
function ChooseLevelDlg::beginLevel(%this)
|
|
||||||
{
|
|
||||||
// So we can't fire the button when loading is in progress.
|
|
||||||
if ( isObject( ServerGroup ) )
|
|
||||||
return;
|
|
||||||
|
|
||||||
%this.navigation.popPage();
|
|
||||||
|
|
||||||
// Launch the chosen level with the editor open?
|
|
||||||
if ( ChooseLevelDlg.launchInEditor )
|
|
||||||
{
|
|
||||||
activatePackage( "BootEditor" );
|
|
||||||
ChooseLevelDlg.launchInEditor = false;
|
|
||||||
StartGame("", "SinglePlayer");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
StartGame();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,192 +0,0 @@
|
||||||
//--- OBJECT WRITE BEGIN ---
|
|
||||||
$guiContent = new GuiControl(GuiMusicPlayer) {
|
|
||||||
isContainer = "1";
|
|
||||||
Profile = "GuiWindowProfile";
|
|
||||||
HorizSizing = "right";
|
|
||||||
VertSizing = "bottom";
|
|
||||||
position = "0 0";
|
|
||||||
Extent = "1024 768";
|
|
||||||
MinExtent = "8 2";
|
|
||||||
canSave = "1";
|
|
||||||
Visible = "1";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "1";
|
|
||||||
superClass = "GuiMusicPlayerClass";
|
|
||||||
|
|
||||||
new GuiWindowCtrl() {
|
|
||||||
resizeWidth = "0";
|
|
||||||
resizeHeight = "0";
|
|
||||||
canMove = "1";
|
|
||||||
canClose = "1";
|
|
||||||
canMinimize = "1";
|
|
||||||
canMaximize = "1";
|
|
||||||
minSize = "50 50";
|
|
||||||
EdgeSnap = "1";
|
|
||||||
text = "Torque Music Player";
|
|
||||||
Margin = "0 0 0 0";
|
|
||||||
Padding = "0 0 0 0";
|
|
||||||
AnchorTop = "1";
|
|
||||||
AnchorBottom = "0";
|
|
||||||
AnchorLeft = "1";
|
|
||||||
AnchorRight = "0";
|
|
||||||
isContainer = "1";
|
|
||||||
Profile = "GuiWindowProfile";
|
|
||||||
HorizSizing = "right";
|
|
||||||
VertSizing = "bottom";
|
|
||||||
position = "29 35";
|
|
||||||
Extent = "518 377";
|
|
||||||
MinExtent = "8 2";
|
|
||||||
canSave = "1";
|
|
||||||
Visible = "1";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
closeCommand = "toggleMusicPlayer();";
|
|
||||||
|
|
||||||
new GuiCheckBoxCtrl(GuiMusicPlayerFadeCheckBox) {
|
|
||||||
useInactiveState = "0";
|
|
||||||
text = "Fade";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "ToggleButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
isContainer = "0";
|
|
||||||
Profile = "GuiCheckBoxProfile";
|
|
||||||
HorizSizing = "right";
|
|
||||||
VertSizing = "bottom";
|
|
||||||
position = "457 347";
|
|
||||||
Extent = "53 30";
|
|
||||||
MinExtent = "8 2";
|
|
||||||
canSave = "1";
|
|
||||||
Visible = "1";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiCheckBoxCtrl(GuiMusicPlayerLoopCheckBox) {
|
|
||||||
useInactiveState = "0";
|
|
||||||
text = "Loop";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "ToggleButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
isContainer = "0";
|
|
||||||
Profile = "GuiCheckBoxProfile";
|
|
||||||
HorizSizing = "right";
|
|
||||||
VertSizing = "bottom";
|
|
||||||
position = "457 330";
|
|
||||||
Extent = "44 30";
|
|
||||||
MinExtent = "8 2";
|
|
||||||
canSave = "1";
|
|
||||||
Visible = "1";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiScrollCtrl() {
|
|
||||||
willFirstRespond = "1";
|
|
||||||
hScrollBar = "dynamic";
|
|
||||||
vScrollBar = "alwaysOn";
|
|
||||||
lockHorizScroll = "0";
|
|
||||||
lockVertScroll = "0";
|
|
||||||
constantThumbHeight = "0";
|
|
||||||
childMargin = "0 0";
|
|
||||||
mouseWheelScrollSpeed = "-1";
|
|
||||||
Margin = "0 0 0 0";
|
|
||||||
Padding = "0 0 0 0";
|
|
||||||
AnchorTop = "1";
|
|
||||||
AnchorBottom = "0";
|
|
||||||
AnchorLeft = "1";
|
|
||||||
AnchorRight = "0";
|
|
||||||
isContainer = "1";
|
|
||||||
Profile = "GuiScrollProfile";
|
|
||||||
HorizSizing = "right";
|
|
||||||
VertSizing = "bottom";
|
|
||||||
position = "9 31";
|
|
||||||
Extent = "500 298";
|
|
||||||
MinExtent = "8 2";
|
|
||||||
canSave = "1";
|
|
||||||
Visible = "1";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
|
|
||||||
new GuiListBoxCtrl(GuiMusicPlayerMusicList) {
|
|
||||||
AllowMultipleSelections = "1";
|
|
||||||
fitParentWidth = "1";
|
|
||||||
isContainer = "0";
|
|
||||||
Profile = "GuiListBoxProfile";
|
|
||||||
HorizSizing = "right";
|
|
||||||
VertSizing = "bottom";
|
|
||||||
position = "1 1";
|
|
||||||
Extent = "485 2";
|
|
||||||
MinExtent = "8 2";
|
|
||||||
canSave = "1";
|
|
||||||
Visible = "1";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
superClass = "GuiMusicPlayerMusicListClass";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
new GuiSliderCtrl(GuiMusicPlayerScrubber) {
|
|
||||||
range = "0 1";
|
|
||||||
ticks = "10";
|
|
||||||
value = "0";
|
|
||||||
snap = "false";
|
|
||||||
isContainer = "0";
|
|
||||||
Profile = "GuiSliderProfile";
|
|
||||||
HorizSizing = "right";
|
|
||||||
VertSizing = "bottom";
|
|
||||||
position = "114 343";
|
|
||||||
Extent = "331 23";
|
|
||||||
MinExtent = "8 2";
|
|
||||||
canSave = "1";
|
|
||||||
Visible = "1";
|
|
||||||
Command = "$thisControl.onDragComplete();";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
class = "GuiMusicPlayerScrubberClass";
|
|
||||||
className = "GuiMusicPlayerScrubberClass";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(GuiMusicPlayerStopButton) {
|
|
||||||
text = "Stop";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
isContainer = "0";
|
|
||||||
Profile = "GuiButtonProfile";
|
|
||||||
HorizSizing = "right";
|
|
||||||
VertSizing = "bottom";
|
|
||||||
position = "57 338";
|
|
||||||
Extent = "40 30";
|
|
||||||
MinExtent = "8 2";
|
|
||||||
canSave = "1";
|
|
||||||
Visible = "1";
|
|
||||||
Command = "GuiMusicPlayer.stop();";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(GuiMusicPlayerPlayButton) {
|
|
||||||
text = "Play";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
isContainer = "0";
|
|
||||||
Profile = "GuiButtonProfile";
|
|
||||||
HorizSizing = "right";
|
|
||||||
VertSizing = "bottom";
|
|
||||||
position = "13 338";
|
|
||||||
Extent = "40 30";
|
|
||||||
MinExtent = "8 2";
|
|
||||||
canSave = "1";
|
|
||||||
Visible = "1";
|
|
||||||
Command = "GuiMusicPlayer.play();";
|
|
||||||
tooltipprofile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
//--- OBJECT WRITE END ---
|
|
||||||
|
|
@ -1,236 +0,0 @@
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// Copyright (c) 2012 GarageGames, LLC
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
// of this software and associated documentation files (the "Software"), to
|
|
||||||
// deal in the Software without restriction, including without limitation the
|
|
||||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
// sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
// furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
// IN THE SOFTWARE.
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// A very simple music player.
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
// Preferences.
|
|
||||||
|
|
||||||
$pref::GuiMusicPlayer::filePattern = "*.ogg\t*.wav";
|
|
||||||
$pref::GuiMusicPlayer::fadeTime = "3.0";
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
// Datablocks.
|
|
||||||
|
|
||||||
singleton SFXDescription( GuiMusicPlayerStream : AudioMusic2D )
|
|
||||||
{
|
|
||||||
volume = 1.0;
|
|
||||||
isLooping = false;
|
|
||||||
isStreaming = true;
|
|
||||||
is3D = false;
|
|
||||||
};
|
|
||||||
singleton SFXDescription( GuiMusicPlayerLoopingStream : AudioMusic2D )
|
|
||||||
{
|
|
||||||
volume = 1.0;
|
|
||||||
isLooping = true;
|
|
||||||
isStreaming = true;
|
|
||||||
is3D = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
// Functions.
|
|
||||||
|
|
||||||
function toggleMusicPlayer()
|
|
||||||
{
|
|
||||||
if( !GuiMusicPlayer.isAwake() )
|
|
||||||
{
|
|
||||||
GuiMusicPlayer.setExtent( Canvas.getExtent() );
|
|
||||||
GuiMusicPlayer.setPosition( 0, 0 );
|
|
||||||
|
|
||||||
Canvas.pushDialog( GuiMusicPlayer );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Canvas.popDialog( GuiMusicPlayer );
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
// Methods.
|
|
||||||
|
|
||||||
function GuiMusicPlayer_onSFXSourceStatusChange( %id, %status )
|
|
||||||
{
|
|
||||||
if( %status $= "Stopped" )
|
|
||||||
GuiMusicPlayer.onStop();
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMusicPlayerClass::play( %this )
|
|
||||||
{
|
|
||||||
if( %this.status $= "Stopped"
|
|
||||||
|| %this.status $= "Paused"
|
|
||||||
|| %this.status $= "" )
|
|
||||||
{
|
|
||||||
%isPlaying = true;
|
|
||||||
if( %this.status $= "Paused" && isObject( %this.sfxSource ) )
|
|
||||||
%this.sfxSource.play();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
%sel = GuiMusicPlayerMusicList.getSelectedItem();
|
|
||||||
if( %sel == -1 )
|
|
||||||
%isPlaying = false;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
%desc = GuiMusicPlayerStream;
|
|
||||||
if( GuiMusicPlayerLoopCheckBox.getValue() )
|
|
||||||
%desc = GuiMusicPlayerLoopingStream;
|
|
||||||
|
|
||||||
if( GuiMusicPlayerFadeCheckBox.getValue() )
|
|
||||||
{
|
|
||||||
%desc.fadeInTime = $pref::GuiMusicPlayer::fadeTime;
|
|
||||||
%desc.fadeOutTime = $pref::GuiMusicPlayer::fadeTime;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
%desc.fadeInTime = 0;
|
|
||||||
%desc.fadeOutTime = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
%file = GuiMusicPlayerMusicList.getItemText( %sel );
|
|
||||||
%this.sfxSource = sfxPlayOnce( %desc, %file );
|
|
||||||
if( !%this.sfxSource )
|
|
||||||
%isPlaying = false;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
%this.sfxSource.statusCallback = "GuiMusicPlayer_onSFXSourceStatusChange";
|
|
||||||
GuiMusicPlayer.status = "Playing";
|
|
||||||
|
|
||||||
GuiMusicPlayerScrubber.setActive( true );
|
|
||||||
GuiMusicPlayerScrubber.setup( %this.sfxSource.getDuration() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( %isPlaying )
|
|
||||||
{
|
|
||||||
GuiMusicPlayerPlayButton.setText( "Pause" );
|
|
||||||
GuiMusicPlayerPlayButton.command = "GuiMusicPlayer.pause();";
|
|
||||||
GuiMusicPlayerLoopCheckBox.setActive( false );
|
|
||||||
GuiMusicPlayerFadeCheckBox.setActive( false );
|
|
||||||
%this.status = "Playing";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMusicPlayerClass::stop( %this )
|
|
||||||
{
|
|
||||||
if( %this.status $= "Playing"
|
|
||||||
|| %this.status $= "Paused" )
|
|
||||||
{
|
|
||||||
if( isObject( %this.sfxSource ) )
|
|
||||||
%this.sfxSource.stop( 0 ); // Stop immediately.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMusicPlayerClass::onStop( %this )
|
|
||||||
{
|
|
||||||
%this.sfxSource = 0;
|
|
||||||
|
|
||||||
GuiMusicPlayerLoopCheckBox.setActive( true );
|
|
||||||
GuiMusicPlayerFadeCheckBox.setActive( true );
|
|
||||||
GuiMusicPlayerScrubber.setActive( false );
|
|
||||||
GuiMusicPlayerPlayButton.setText( "Play" );
|
|
||||||
GuiMusicPlayerPlayButton.Command = "GuiMusicPlayer.play();";
|
|
||||||
%this.status = "Stopped";
|
|
||||||
|
|
||||||
GuiMusicPlayerScrubber.setValue( 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMusicPlayerClass::pause( %this )
|
|
||||||
{
|
|
||||||
if( %this.status $= "Playing" )
|
|
||||||
{
|
|
||||||
if( isObject( %this.sfxSource ) )
|
|
||||||
%this.sfxSource.pause( 0 );
|
|
||||||
|
|
||||||
GuiMusicPlayerPlayButton.setText( "Play" );
|
|
||||||
GuiMusicPlayerPlayButton.command = "GuiMusicPlayer.play();";
|
|
||||||
%this.status = "Paused";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMusicPlayerClass::seek( %this, %playtime )
|
|
||||||
{
|
|
||||||
if( ( %this.status $= "Playing"
|
|
||||||
|| %this.status $= "Paused" )
|
|
||||||
&& isObject( %this.sfxSource ) )
|
|
||||||
%this.sfxSource.setPosition( %playtime );
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMusicPlayer::onWake( %this )
|
|
||||||
{
|
|
||||||
GuiMusicPlayerMusicList.load();
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMusicPlayerMusicListClass::load( %this )
|
|
||||||
{
|
|
||||||
// Remove all the files currently in the list.
|
|
||||||
|
|
||||||
%this.clearItems();
|
|
||||||
|
|
||||||
// Find the file matching pattern we should use.
|
|
||||||
|
|
||||||
%filePattern = $pref::GuiMusicPlayer::filePattern;
|
|
||||||
%sfxProvider = getWord( sfxGetDeviceInfo(), 0 );
|
|
||||||
%filePatternVarName = "$pref::GuiMusicPlayer::filePattern" @ %sfxProvider;
|
|
||||||
if( isDefined( %filePatternVarName ) )
|
|
||||||
eval( "%filePattern = " @ %filePatternVarName @ ";" );
|
|
||||||
|
|
||||||
// Find all files matching the pattern.
|
|
||||||
|
|
||||||
for( %file = findFirstFileMultiExpr( %filePattern );
|
|
||||||
%file !$= "";
|
|
||||||
%file = findNextFileMultiExpr( %filePattern ) )
|
|
||||||
%this.addItem( makeRelativePath( %file, getMainDotCsDir() ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMusicPlayerMusicList::onDoubleClick( %this )
|
|
||||||
{
|
|
||||||
GuiMusicPlayer.stop();
|
|
||||||
GuiMusicPlayer.play();
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMusicPlayerScrubber::onMouseDragged( %this )
|
|
||||||
{
|
|
||||||
%this.isBeingDragged = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMusicPlayerScrubberClass::setup( %this, %totalPlaytime )
|
|
||||||
{
|
|
||||||
%this.range = "0 " @ %totalPlaytime;
|
|
||||||
%this.ticks = %totalPlaytime / 5; // One tick per five seconds.
|
|
||||||
|
|
||||||
%this.update();
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMusicPlayerScrubberClass::update( %this )
|
|
||||||
{
|
|
||||||
if( GuiMusicPlayer.status $= "Playing"
|
|
||||||
&& !%this.isBeingDragged )
|
|
||||||
%this.setValue( GuiMusicPlayer.sfxSource.getPosition() );
|
|
||||||
|
|
||||||
if( GuiMusicPlayer.status $= "Playing"
|
|
||||||
|| GuiMusicPlayer.status $= "Paused" )
|
|
||||||
%this.schedule( 5, "update" );
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMusicPlayerScrubberClass::onDragComplete( %this )
|
|
||||||
{
|
|
||||||
GuiMusicPlayer.seek( %this.getValue() );
|
|
||||||
%this.isBeingDragged = false;
|
|
||||||
}
|
|
||||||
|
|
@ -1,159 +1,161 @@
|
||||||
//--- OBJECT WRITE BEGIN ---
|
//--- OBJECT WRITE BEGIN ---
|
||||||
$guiContent = new GuiControl(JoinServerMenu) {
|
$guiContent = new GuiControl(JoinServerMenu) {
|
||||||
extent = "1024 768";
|
extent = "1280 720";
|
||||||
profile = "GuiNonModalDefaultProfile";
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiMenuBackgroundProfile";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
isContainer = "1";
|
isContainer = "1";
|
||||||
|
canSaveDynamicFields = "1";
|
||||||
|
|
||||||
|
new GuiInputCtrl(JoinServerInputHandler) {
|
||||||
|
ignoreMouseEvents = "1";
|
||||||
|
ActionMap = "JoinServerActionMap";
|
||||||
|
position = "-50 0";
|
||||||
|
extent = "50 50";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
canSaveDynamicFields = "0";
|
profile = "GuiInputCtrlProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
new GuiControl(JoinServerWindow) {
|
};
|
||||||
position = "48 56";
|
|
||||||
extent = "928 655";
|
new GuiPanel(JoinServerTitlePanel) {
|
||||||
horizSizing = "center";
|
extent = "1281 80";
|
||||||
vertSizing = "center";
|
horizSizing = "width";
|
||||||
profile = "GuiDefaultProfile";
|
profile = "GuiMenuPanelProfile";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
isContainer = "1";
|
|
||||||
|
|
||||||
new GuiBitmapBarCtrl() {
|
|
||||||
BitmapAsset = "UI:panel_image";
|
|
||||||
extent = "927 40";
|
|
||||||
horizSizing = "width";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
new GuiTextCtrl() {
|
new GuiTextCtrl() {
|
||||||
text = "JOIN SERVER";
|
text = "JOIN SERVER";
|
||||||
position = "22 10";
|
position = "22 23";
|
||||||
extent = "207 28";
|
extent = "220 28";
|
||||||
profile = "MenuHeaderText";
|
profile = "MenuHeaderText";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
};
|
};
|
||||||
new GuiBitmapBarCtrl() {
|
};
|
||||||
BitmapAsset = "UI:panel_low_image";
|
new GuiContainer() {
|
||||||
position = "0 40";
|
position = "203 81";
|
||||||
extent = "927 618";
|
extent = "900 30";
|
||||||
horizSizing = "width";
|
profile = GuiMenuPanelProfile;
|
||||||
profile = "GuiDefaultProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
horizSizing = "center";
|
||||||
};
|
vertSizing = "bottom";
|
||||||
new GuiTextCtrl(JS_status) {
|
|
||||||
text = "No servers found.";
|
new GuiTextCtrl() {
|
||||||
maxLength = "255";
|
text = "Server Details";
|
||||||
position = "392 47";
|
position = "0 0";
|
||||||
extent = "148 18";
|
extent = "730 30";
|
||||||
minExtent = "8 8";
|
horizSizing = "right";
|
||||||
|
vertSizing = "center";
|
||||||
profile = "MenuSubHeaderText";
|
profile = "MenuSubHeaderText";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
};
|
};
|
||||||
new GuiTextCtrl() {
|
|
||||||
text = "Players";
|
|
||||||
maxLength = "255";
|
|
||||||
position = "269 67";
|
|
||||||
extent = "36 18";
|
|
||||||
minExtent = "8 8";
|
|
||||||
profile = "GuiMLWhiteTextProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "0";
|
|
||||||
};
|
|
||||||
new GuiTextCtrl() {
|
|
||||||
text = "Version";
|
|
||||||
maxLength = "255";
|
|
||||||
position = "335 67";
|
|
||||||
extent = "38 18";
|
|
||||||
minExtent = "8 8";
|
|
||||||
profile = "GuiMLWhiteTextProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "0";
|
|
||||||
};
|
|
||||||
new GuiTextCtrl() {
|
|
||||||
text = "Game";
|
|
||||||
maxLength = "255";
|
|
||||||
position = "412 67";
|
|
||||||
extent = "28 18";
|
|
||||||
minExtent = "8 8";
|
|
||||||
profile = "GuiMLWhiteTextProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "0";
|
|
||||||
};
|
|
||||||
new GuiTextCtrl() {
|
new GuiTextCtrl() {
|
||||||
text = "Ping";
|
text = "Ping";
|
||||||
maxLength = "255";
|
position = "730 0";
|
||||||
position = "212 67";
|
extent = "50 30";
|
||||||
extent = "20 18";
|
horizSizing = "left";
|
||||||
minExtent = "8 8";
|
vertSizing = "center";
|
||||||
profile = "GuiMLWhiteTextProfile";
|
profile = "MenuSubHeaderText";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
isContainer = "0";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
new GuiTextCtrl() {
|
new GuiTextCtrl() {
|
||||||
text = "Server Name";
|
text = "Player Count";
|
||||||
maxLength = "255";
|
position = "780 0";
|
||||||
position = "12 67";
|
extent = "120 30";
|
||||||
extent = "63 18";
|
horizSizing = "left";
|
||||||
minExtent = "8 8";
|
vertSizing = "center";
|
||||||
profile = "GuiMLWhiteTextProfile";
|
profile = "MenuSubHeaderText";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
isContainer = "0";
|
|
||||||
};
|
};
|
||||||
new GuiScrollCtrl() {
|
};
|
||||||
hScrollBar = "dynamic";
|
new GuiScrollCtrl() {
|
||||||
vScrollBar = "dynamic";
|
hScrollBar = "alwaysOff";
|
||||||
position = "19 98";
|
vScrollBar = "dynamic";
|
||||||
extent = "890 501";
|
position = "203 111";
|
||||||
minExtent = "8 8";
|
extent = "900 601";
|
||||||
profile = "GuiMenuScrollProfile";
|
minExtent = "8 8";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
horizSizing = "center";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiMenuScrollProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
||||||
new GuiStackControl(JoinServerList) {
|
new GuiStackControl(JoinServerList) {
|
||||||
padding = "10";
|
padding = "10";
|
||||||
changeChildSizeToFit = "0";
|
changeChildSizeToFit = "0";
|
||||||
position = "1 1";
|
position = "1 1";
|
||||||
extent = "888 16";
|
extent = "888 16";
|
||||||
horizSizing = "center";
|
horizSizing = "center";
|
||||||
vertSizing = "center";
|
vertSizing = "center";
|
||||||
profile = "GuiDefaultProfile";
|
profile = "GuiMenuDefaultProfile";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
superClass = "MenuList";
|
superClass = "MenuList";
|
||||||
};
|
|
||||||
};
|
};
|
||||||
new GuiControl(JS_queryStatus) {
|
|
||||||
position = "16 615";
|
|
||||||
extent = "900 35";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
visible = "0";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "1";
|
|
||||||
hidden = "1";
|
|
||||||
|
|
||||||
new GuiProgressCtrl(JS_statusBar) {
|
|
||||||
position = "84 0";
|
|
||||||
extent = "695 35";
|
|
||||||
minExtent = "8 8";
|
|
||||||
profile = "GuiProgressProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "0";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl(JS_cancelQuery) {
|
|
||||||
text = "Cancel!";
|
|
||||||
extent = "84 35";
|
|
||||||
minExtent = "8 8";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "JoinServerDlg.cancel();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
new GuiTextCtrl(JS_statusText) {
|
|
||||||
text = "Querying master server";
|
|
||||||
maxLength = "255";
|
|
||||||
position = "84 0";
|
|
||||||
extent = "695 35";
|
|
||||||
minExtent = "8 8";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "0";
|
|
||||||
};
|
};
|
||||||
|
new GuiPanel(JoinServerButtonPanel) {
|
||||||
|
position = "0 683";
|
||||||
|
extent = "1281 40";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "top";
|
||||||
|
profile = "GuiMenuPanelProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
||||||
|
new GuiIconButtonCtrl(JoinServerJoinBtn) {
|
||||||
|
BitmapAsset = "UI:Keyboard_Black_Return_image";
|
||||||
|
sizeIconToButton = "1";
|
||||||
|
makeIconSquare = "1";
|
||||||
|
textLocation = "Center";
|
||||||
|
text = "Join";
|
||||||
|
position = "1115 0";
|
||||||
|
extent = "140 40";
|
||||||
|
horizSizing = "left";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "JoinServerMenu.query();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiIconButtonCtrl(JoinServerQLanBtn) {
|
||||||
|
BitmapAsset = "UI:Keyboard_Black_Escape_image";
|
||||||
|
sizeIconToButton = "1";
|
||||||
|
makeIconSquare = "1";
|
||||||
|
textLocation = "Center";
|
||||||
|
text = "Query Lan";
|
||||||
|
position = "965 0";
|
||||||
|
extent = "140 40";
|
||||||
|
horizSizing = "left";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "JoinServerMenu.queryLan();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiIconButtonCtrl(JoinServerQServerBtn) {
|
||||||
|
BitmapAsset = "UI:Keyboard_Black_Escape_image";
|
||||||
|
sizeIconToButton = "1";
|
||||||
|
makeIconSquare = "1";
|
||||||
|
textLocation = "Center";
|
||||||
|
text = "Query Server";
|
||||||
|
position = "817 0";
|
||||||
|
extent = "140 40";
|
||||||
|
horizSizing = "left";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "JoinServerMenu.join();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiIconButtonCtrl(JoinServerBackBtn) {
|
||||||
|
BitmapAsset = "UI:Keyboard_Black_Escape_image";
|
||||||
|
sizeIconToButton = "1";
|
||||||
|
makeIconSquare = "1";
|
||||||
|
textLocation = "Center";
|
||||||
|
text = "Back";
|
||||||
|
position = "16 0";
|
||||||
|
extent = "140 40";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "Canvas.popDialog();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,19 @@
|
||||||
|
|
||||||
function JoinServerMenu::onWake(%this)
|
function JoinServerMenu::onWake(%this)
|
||||||
{
|
{
|
||||||
|
$MenuList = JoinServerList;
|
||||||
|
JoinServerList.listPosition = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function JoinServerMenu::onOpen(%this)
|
if(!isObject( JoinServerActionMap ) )
|
||||||
{
|
{
|
||||||
JoinServerList.setAsActiveMenuList();
|
new ActionMap(JoinServerActionMap){};
|
||||||
|
|
||||||
$activeMenuButtonContainer-->button1.set("btn_y", "R", "Refresh", "JoinServerMenu.refresh();");
|
JoinServerActionMap.bindCmd( keyboard, q, "JoinServerMenu.query();" );
|
||||||
$activeMenuButtonContainer-->button2.set("btn_a", "Q", "Query LAN", "JoinServerMenu.queryLan();");
|
JoinServerActionMap.bindCmd( gamepad, btn_x, "JoinServerMenu.query();" );
|
||||||
$activeMenuButtonContainer-->button3.set("btn_x", "E", "Query Online", "JoinServerMenu.query();");
|
|
||||||
$activeMenuButtonContainer-->button4.set("btn_start", "Return", "Join", "JoinServerMenu.join();");
|
JoinServerActionMap.bindCmd( keyboard, e, "JoinServerMenu.queryLan();" );
|
||||||
$activeMenuButtonContainer-->button5.set("btn_b", "Escape", "Back", "cancelServerQuery(); " @ %this @ ".navigation.popPage();");
|
JoinServerActionMap.bindCmd( gamepad, btn_y, "JoinServerMenu.queryLan();" );
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------
|
//----------------------------------------
|
||||||
|
|
@ -93,19 +95,17 @@ function JoinServerMenu::update(%this)
|
||||||
%sc = getServerCount();
|
%sc = getServerCount();
|
||||||
for( %i = 0; %i < %sc; %i ++ ) {
|
for( %i = 0; %i < %sc; %i ++ ) {
|
||||||
setServerInfo(%i);
|
setServerInfo(%i);
|
||||||
%serverBtn = new GuiButtonCtrl(){
|
|
||||||
text = $ServerInfo::Name TAB
|
%serverEntry = %this.addServerEntry();
|
||||||
$ServerInfo::Ping TAB
|
%serverEntry-->serverNameTxt.text = $ServerInfo::Name;
|
||||||
$ServerInfo::PlayerCount @ "/" @ $ServerInfo::MaxPlayers TAB
|
%serverEntry-->serverDetailsTxt.text = $ServerInfo::Version @ " | " @ $ServerInfo::MissionName @ " | " @ $ServerInfo::MissionType;
|
||||||
$ServerInfo::Version TAB
|
%serverEntry-->pingTxt.text = $ServerInfo::Ping @ " ms";
|
||||||
$ServerInfo::MissionName;
|
%serverEntry-->playerCountTxt.text = $ServerInfo::PlayerCount @ "|" @ $ServerInfo::MaxPlayers;
|
||||||
profile = GuiJoinServerButtonProfile;
|
|
||||||
extent = JoinServerList.extent.x SPC 30;
|
%serverEntry.resize(0, 0, JoinServerList.extent.x, %serverEntry.extent.y);
|
||||||
};
|
|
||||||
JoinServerList.add(%serverBtn);
|
JoinServerList.add(%serverEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
$activeMenuButtonContainer-->button4.setActive(JoinServerList.getCount() > 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------
|
//----------------------------------------
|
||||||
|
|
@ -138,3 +138,109 @@ function onServerQueryStatus(%status, %msg, %value)
|
||||||
JoinServerMenu.update();
|
JoinServerMenu.update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function JoinServerMenu::addServerEntry(%this)
|
||||||
|
{
|
||||||
|
%entry = new GuiContainer() {
|
||||||
|
position = "0 0";
|
||||||
|
extent = "900 40";
|
||||||
|
profile = GuiMenuDefaultProfile;
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "bottom";
|
||||||
|
class = "JoinServerServerEntry";
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
profile = GuiMenuButtonProfile;
|
||||||
|
position = "0 0";
|
||||||
|
extent = "900 40";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
internalName = "button";
|
||||||
|
};
|
||||||
|
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
position = "0 0";
|
||||||
|
extent = "730 20";
|
||||||
|
profile = "MenuSubHeaderText";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "serverNameTxt";
|
||||||
|
};
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
position = $optionsEntryPad SPC 17;
|
||||||
|
extent = "730 18";
|
||||||
|
profile = "GuiMLTextProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "serverDetailsTxt";
|
||||||
|
};
|
||||||
|
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
position = "730 0";
|
||||||
|
extent = "50 40";
|
||||||
|
horizSizing = "left";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "MenuSubHeaderText";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "pingTxt";
|
||||||
|
};
|
||||||
|
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
position = "780 0";
|
||||||
|
extent = "120 40";
|
||||||
|
horizSizing = "left";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "MenuSubHeaderText";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "playerCountTxt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
return %entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
function JoinServerMenu::addStatusEntry(%this)
|
||||||
|
{
|
||||||
|
%entry = new GuiContainer() {
|
||||||
|
position = "0 0";
|
||||||
|
extent = "900 40";
|
||||||
|
profile = GuiMenuDefaultProfile;
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "bottom";
|
||||||
|
class = "JoinServerStatusEntry";
|
||||||
|
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
position = "0 0";
|
||||||
|
extent = "730 20";
|
||||||
|
profile = "MenuSubHeaderCenteredText";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "statusTxt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
return %entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
function JoinServerList::syncGui(%this)
|
||||||
|
{
|
||||||
|
%this.callOnChildren("setHighlighted", false);
|
||||||
|
|
||||||
|
if(%this.listPosition < %this.getCount())
|
||||||
|
{
|
||||||
|
%btn = %this.getObject(%this.listPosition);
|
||||||
|
%btn-->button.setHighlighted(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
//Update the button imagery to comply to the last input device we'd used
|
||||||
|
%device = Canvas.getLastInputDevice();
|
||||||
|
if(%device $= "mouse")
|
||||||
|
%device = "keyboard";
|
||||||
|
|
||||||
|
JoinServerBackBtn.setBitmap(BaseUIActionMap.getCommandButtonBitmap(%device, "BaseUIBackOut"));
|
||||||
|
JoinServerJoinBtn.setBitmap(BaseUIActionMap.getCommandButtonBitmap(%device, "BaseUIActivateSelected"));
|
||||||
|
JoinServerQLanBtn.setBitmap(JoinServerActionMap.getCommandButtonBitmap(%device, "JoinServerMenu.queryLan();"));
|
||||||
|
JoinServerQServerBtn.setBitmap(JoinServerActionMap.getCommandButtonBitmap(%device, "JoinServerMenu.query();"));
|
||||||
|
|
||||||
|
//JoinServerJoinBtn.setActive($selectedLevelAsset !$= "");
|
||||||
|
}
|
||||||
|
|
@ -6,22 +6,20 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "GuiDefaultProfile";
|
profile = "GuiDefaultProfile";
|
||||||
|
category = "BaseUI";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
isContainer = "1";
|
isContainer = "1";
|
||||||
canSaveDynamicFields = "1";
|
canSaveDynamicFields = "1";
|
||||||
|
|
||||||
new GuiInputCtrl(MainMenuInputHandler) {
|
new GuiInputCtrl(MainMenuInputHandler) {
|
||||||
sendAxisEvents = "0";
|
|
||||||
sendBreakEvents = "0";
|
|
||||||
ignoreMouseEvents = "1";
|
ignoreMouseEvents = "1";
|
||||||
|
ActionMap = "BaseUIActionMap";
|
||||||
position = "-50 0";
|
position = "-50 0";
|
||||||
extent = "2186 851";
|
extent = "2186 851";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "GuiInputCtrlProfile";
|
profile = "GuiInputCtrlProfile";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
//class = "MenuInputHandler";
|
|
||||||
actionMap = MainMenuActionMap;
|
|
||||||
};
|
};
|
||||||
new GuiBitmapCtrl(SideBackgroundImage) {
|
new GuiBitmapCtrl(SideBackgroundImage) {
|
||||||
BitmapAsset = "UI:menu_side_background_image";
|
BitmapAsset = "UI:menu_side_background_image";
|
||||||
|
|
@ -33,7 +31,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
||||||
};
|
};
|
||||||
new GuiBitmapCtrl(MainMenuAppLogo) {
|
new GuiBitmapCtrl(MainMenuAppLogo) {
|
||||||
BitmapAsset = "UI:Torque_3D_logo_image";
|
BitmapAsset = "UI:Torque_3D_logo_image";
|
||||||
position = "462 30";
|
position = "460 78";
|
||||||
extent = "360 100";
|
extent = "360 100";
|
||||||
horizSizing = "center";
|
horizSizing = "center";
|
||||||
profile = "GuiDefaultProfile";
|
profile = "GuiDefaultProfile";
|
||||||
|
|
@ -73,7 +71,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
||||||
new GuiStackControl(MainMenuButtonList) {
|
new GuiStackControl(MainMenuButtonList) {
|
||||||
padding = "5";
|
padding = "5";
|
||||||
dynamicSize = "0";
|
dynamicSize = "0";
|
||||||
position = "440 185";
|
position = "440 199";
|
||||||
extent = "400 322";
|
extent = "400 322";
|
||||||
horizSizing = "center";
|
horizSizing = "center";
|
||||||
vertSizing = "center";
|
vertSizing = "center";
|
||||||
|
|
@ -85,7 +83,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
||||||
text = "Single Player";
|
text = "Single Player";
|
||||||
extent = "400 40";
|
extent = "400 40";
|
||||||
profile = "GuiMenuButtonProfile";
|
profile = "GuiMenuButtonProfile";
|
||||||
command = "openSinglePlayerMenu();";
|
command = "$pref::HostMultiPlayer=false;\nCanvas.pushDialog(ChooseLevelMenu);";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
};
|
};
|
||||||
new GuiButtonCtrl(MainMenuCreateSrvrBtn) {
|
new GuiButtonCtrl(MainMenuCreateSrvrBtn) {
|
||||||
|
|
@ -93,7 +91,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
||||||
position = "0 45";
|
position = "0 45";
|
||||||
extent = "400 40";
|
extent = "400 40";
|
||||||
profile = "GuiMenuButtonProfile";
|
profile = "GuiMenuButtonProfile";
|
||||||
command = "openMultiPlayerMenu();";
|
command = "$pref::HostMultiPlayer=true;Canvas.pushDialog(ChooseLevelMenu);";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
};
|
};
|
||||||
new GuiButtonCtrl(MainMenuJoinSrvrBtn) {
|
new GuiButtonCtrl(MainMenuJoinSrvrBtn) {
|
||||||
|
|
@ -101,7 +99,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
||||||
position = "0 90";
|
position = "0 90";
|
||||||
extent = "400 40";
|
extent = "400 40";
|
||||||
profile = "GuiMenuButtonProfile";
|
profile = "GuiMenuButtonProfile";
|
||||||
command = "openJoinServerMenu();";
|
command = "Canvas.pushDialog(JoinServerMenu);";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
};
|
};
|
||||||
new GuiButtonCtrl(MainMenuOptionBtn) {
|
new GuiButtonCtrl(MainMenuOptionBtn) {
|
||||||
|
|
@ -117,7 +115,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
||||||
position = "0 180";
|
position = "0 180";
|
||||||
extent = "400 40";
|
extent = "400 40";
|
||||||
profile = "GuiMenuButtonProfile";
|
profile = "GuiMenuButtonProfile";
|
||||||
command = "openWorldEditorBtn();";
|
command = "fastLoadWorldEdit(1);";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
};
|
};
|
||||||
new GuiButtonCtrl(MainMenuGuiEditBtn) {
|
new GuiButtonCtrl(MainMenuGuiEditBtn) {
|
||||||
|
|
@ -125,7 +123,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
||||||
position = "0 225";
|
position = "0 225";
|
||||||
extent = "400 40";
|
extent = "400 40";
|
||||||
profile = "GuiMenuButtonProfile";
|
profile = "GuiMenuButtonProfile";
|
||||||
command = "openGUIEditorBtn();";
|
command = "fastLoadGUIEdit(1);";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
};
|
};
|
||||||
new GuiButtonCtrl(MainMenuExitBtn) {
|
new GuiButtonCtrl(MainMenuExitBtn) {
|
||||||
|
|
|
||||||
|
|
@ -4,60 +4,84 @@ function MainMenuGui::onAdd(%this)
|
||||||
|
|
||||||
function MainMenuGui::onWake(%this)
|
function MainMenuGui::onWake(%this)
|
||||||
{
|
{
|
||||||
MainMenuButtonList.listPosition = 0;
|
$MenuList = MainMenuButtonList;
|
||||||
|
$MenuList.listPosition = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!isObject( MainMenuActionMap ) )
|
function MainMenuGui::onSleep(%this)
|
||||||
{
|
{
|
||||||
new ActionMap(MainMenuActionMap){};
|
|
||||||
|
|
||||||
MainMenuActionMap.bind( keyboard, w, mainMenuNavigateUp );
|
|
||||||
MainMenuActionMap.bind( keyboard, s, mainMenuNavigateDown );
|
|
||||||
MainMenuActionMap.bind( gamepad, yaxis, "D", "-0.23 0.23", mainMenuStickNavigate );
|
|
||||||
MainMenuActionMap.bind( gamepad, upov, mainMenuNavigateUp );
|
|
||||||
MainMenuActionMap.bind( gamepad, dpov, mainMenuNavigateDown );
|
|
||||||
|
|
||||||
MainMenuActionMap.bind( keyboard, Enter, activateSelected );
|
|
||||||
MainMenuActionMap.bind( gamepad, btn_a, activateSelected );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function mainMenuNavigateUp(%val)
|
if(!isObject( BaseUIActionMap ) )
|
||||||
|
{
|
||||||
|
new ActionMap(BaseUIActionMap){};
|
||||||
|
|
||||||
|
BaseUIActionMap.bind( keyboard, w, BaseUINavigatePrev );
|
||||||
|
BaseUIActionMap.bind( keyboard, s, BaseUINavigateNext );
|
||||||
|
BaseUIActionMap.bind( gamepad, yaxis, "D", "-0.23 0.23", BaseUIStickNavigate );
|
||||||
|
BaseUIActionMap.bind( gamepad, upov, BaseUINavigatePrev );
|
||||||
|
BaseUIActionMap.bind( gamepad, dpov, BaseUINavigateNext );
|
||||||
|
|
||||||
|
BaseUIActionMap.bind( keyboard, Enter, BaseUIActivateSelected );
|
||||||
|
BaseUIActionMap.bind( gamepad, btn_a, BaseUIActivateSelected );
|
||||||
|
|
||||||
|
BaseUIActionMap.bind( keyboard, Escape, BaseUIBackOut );
|
||||||
|
BaseUIActionMap.bind( gamepad, btn_b, BaseUIBackOut );
|
||||||
|
}
|
||||||
|
|
||||||
|
function BaseUINavigatePrev(%val)
|
||||||
{
|
{
|
||||||
if(%val)
|
if(%val)
|
||||||
{
|
{
|
||||||
MainMenuButtonList.listPosition -= 1;
|
$MenuList.listPosition -= 1;
|
||||||
if(MainMenuButtonList.listPosition < 0)
|
if($MenuList.listPosition < 0)
|
||||||
MainMenuButtonList.listPosition = 0;
|
$MenuList.listPosition = 0;
|
||||||
|
|
||||||
MainMenuGUI.syncGUI();
|
$MenuList.syncGUI();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function mainMenuNavigateDown(%val)
|
function BaseUINavigateNext(%val)
|
||||||
{
|
{
|
||||||
if(%val)
|
if(%val)
|
||||||
{
|
{
|
||||||
MainMenuButtonList.listPosition += 1;
|
$MenuList.listPosition += 1;
|
||||||
if(MainMenuButtonList.listPosition >= MainMenuButtonList.getCount())
|
if($MenuList.listPosition >= $MenuList.getCount())
|
||||||
MainMenuButtonList.listPosition = MainMenuButtonList.getCount()-1;
|
$MenuList.listPosition = $MenuList.getCount()-1;
|
||||||
|
|
||||||
MainMenuGUI.syncGUI();
|
$MenuList.syncGUI();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function mainMenuStickNavigate(%val)
|
function BaseUIStickNavigate(%val)
|
||||||
{
|
{
|
||||||
if(%val == -1)
|
if(%val == -1)
|
||||||
mainMenuNavigateUp(1);
|
BaseUINavigateNext(1);
|
||||||
else if(%val == 1)
|
else if(%val == 1)
|
||||||
mainMenuNavigateDown(1);
|
mainMenuNavigateDown(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function MainMenuGUI::syncGUI(%this)
|
function BaseUIBackOut(%val)
|
||||||
{
|
{
|
||||||
MainMenuButtonList.callOnChildren("setHighlighted", false);
|
//we can't navigate further back than the MainMenuGui
|
||||||
|
if(%val && Canvas.getObject(Canvas.getCount()-1) != MainMenuGui)
|
||||||
|
{
|
||||||
|
Canvas.popDialog();
|
||||||
|
%topMenu = Canvas.getObject(Canvas.getCount()-1);
|
||||||
|
if(isObject(%topMenu))
|
||||||
|
{
|
||||||
|
//re-kick the on-wake so we can be fully up to date and relevently
|
||||||
|
//contexted
|
||||||
|
%topMenu.onWake();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function MainMenuButtonList::syncGUI(%this)
|
||||||
|
{
|
||||||
|
%this.callOnChildren("setHighlighted", false);
|
||||||
|
|
||||||
%btn = MainMenuButtonList.getObject(MainMenuButtonList.listPosition);
|
%btn = %this.getObject(%this.listPosition);
|
||||||
%btn.setHighlighted(true);
|
%btn.setHighlighted(true);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -66,25 +90,13 @@ function MainMenuGUI::syncGUI(%this)
|
||||||
if(%device $= "mouse")
|
if(%device $= "mouse")
|
||||||
%device = "keyboard";
|
%device = "keyboard";
|
||||||
|
|
||||||
%binding = MainMenuActionMap.getBinding("activateSelected");
|
MainMenuGoButton.setBitmap(BaseUIActionMap.getCommandButtonBitmap(%device, "BaseUIActivateSelected"));
|
||||||
|
|
||||||
%bindingCount = getFieldCount(%binding);
|
|
||||||
for(%i=0; %i < %bindingCount; %i+=2)
|
|
||||||
{
|
|
||||||
%mapDevice = stripTrailingNumber(getField(%binding, %i));
|
|
||||||
if(%mapDevice $= %device)
|
|
||||||
{
|
|
||||||
%button = getField(%binding, %i+1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
%assetId = getButtonBitmap(%device, %button);
|
|
||||||
MainMenuGoButton.setBitmap(%assetId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function activateSelected()
|
function BaseUIActivateSelected()
|
||||||
{
|
{
|
||||||
%btn = MainMenuButtonList.getObject(MainMenuButtonList.listPosition);
|
%btn = $MenuList.getObject($MenuList.listPosition);
|
||||||
%btn.performClick();
|
|
||||||
|
if(%btn.isMethod("performClick"))
|
||||||
|
%btn.performClick();
|
||||||
}
|
}
|
||||||
|
|
@ -1,347 +1,75 @@
|
||||||
//--- OBJECT WRITE BEGIN ---
|
//--- OBJECT WRITE BEGIN ---
|
||||||
$guiContent = new GuiControl(MessageBoxDlg) {
|
$guiContent = new GuiControl(MessageBoxDlg) {
|
||||||
position = "0 0";
|
extent = "1280 720";
|
||||||
extent = "1024 768";
|
|
||||||
minExtent = "8 8";
|
minExtent = "8 8";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "GuiOverlayProfile";
|
profile = "GuiOverlayProfile";
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
isContainer = "1";
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "1";
|
canSaveDynamicFields = "1";
|
||||||
helpTag = "0";
|
helpTag = "0";
|
||||||
|
|
||||||
new GuiControl(MessageBoxCtrl) {
|
new GuiInputCtrl(MessageBoxInputHandler) {
|
||||||
position = "192 197";
|
ignoreMouseEvents = "1";
|
||||||
extent = "641 381";
|
ActionMap = "MessageBoxActionMap";
|
||||||
minExtent = "8 2";
|
position = "-50 0";
|
||||||
|
extent = "2186 851";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiInputCtrlProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
|
||||||
|
new GuiBitmapCtrl() {
|
||||||
|
BitmapAsset = "UI:backdrop_image";
|
||||||
|
position = "272 128";
|
||||||
|
extent = "735 463";
|
||||||
|
horizSizing = "center";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiDefaultProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiControl(MessageBoxCtrl) {
|
||||||
|
position = "319 169";
|
||||||
|
extent = "641 381";
|
||||||
horizSizing = "center";
|
horizSizing = "center";
|
||||||
vertSizing = "center";
|
vertSizing = "center";
|
||||||
profile = "GuiDefaultProfile";
|
profile = "GuiDefaultProfile";
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
isContainer = "1";
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
|
|
||||||
new GuiBitmapBarCtrl() {
|
new GuiPanel() {
|
||||||
percent = "100";
|
extent = "641 381";
|
||||||
vertical = "0";
|
|
||||||
flipClip = "0";
|
|
||||||
bitmapAsset = "UI:panel_image";
|
|
||||||
color = "255 255 255 255";
|
|
||||||
position = "0 0";
|
|
||||||
extent = "641 40";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "bottom";
|
vertSizing = "height";
|
||||||
profile = "GuiDefaultProfile";
|
profile = "GuiMenuBasePanelProfile";
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
};
|
||||||
new GuiTextCtrl(MessageBoxTitleText) {
|
new GuiTextCtrl(MessageBoxTitleText) {
|
||||||
text = "OPTIONS";
|
|
||||||
maxLength = "1024";
|
|
||||||
margin = "0 0 0 0";
|
|
||||||
padding = "0 0 0 0";
|
|
||||||
anchorTop = "1";
|
|
||||||
anchorBottom = "0";
|
|
||||||
anchorLeft = "1";
|
|
||||||
anchorRight = "0";
|
|
||||||
position = "32 7";
|
position = "32 7";
|
||||||
extent = "577 28";
|
extent = "577 28";
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "MenuHeaderText";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiBitmapBarCtrl() {
|
|
||||||
percent = "100";
|
|
||||||
vertical = "0";
|
|
||||||
flipClip = "0";
|
|
||||||
bitmapAsset = "UI:panel_low_image";
|
|
||||||
color = "255 255 255 255";
|
|
||||||
position = "0 40";
|
|
||||||
extent = "641 341";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "bottom";
|
profile = "MenuHeaderText";
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
};
|
||||||
new GuiMLTextCtrl(MessageBoxText) {
|
new GuiMLTextCtrl(MessageBoxText) {
|
||||||
lineSpacing = "2";
|
|
||||||
allowColorChars = "0";
|
|
||||||
maxChars = "-1";
|
|
||||||
useURLMouseCursor = "0";
|
|
||||||
position = "81 83";
|
position = "81 83";
|
||||||
extent = "481 19";
|
extent = "481 19";
|
||||||
minExtent = "8 8";
|
minExtent = "8 8";
|
||||||
horizSizing = "center";
|
horizSizing = "center";
|
||||||
vertSizing = "center";
|
vertSizing = "center";
|
||||||
profile = "MenuMLSubHeaderText";
|
profile = "MenuMLSubHeaderText";
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
};
|
||||||
new GuiControl(MessageBoxOKButtonHolder) {
|
new GuiStackControl(MessageBoxButtonHolder) {
|
||||||
position = "0 285";
|
stackingType = "Horizontal";
|
||||||
extent = "642 40";
|
position = "250 285";
|
||||||
minExtent = "8 2";
|
extent = "140 40";
|
||||||
horizSizing = "center";
|
horizSizing = "width";
|
||||||
vertSizing = "top";
|
vertSizing = "top";
|
||||||
profile = "GuiDefaultProfile";
|
profile = "GuiDefaultProfile";
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
class = "MenuInputButtonContainer";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
|
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
buttonMargin = "4 4";
|
|
||||||
iconBitmap = "data/ui/images/Inputs/Keyboard & Mouse/Keyboard_Black_Enter";
|
|
||||||
iconLocation = "Left";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
textLocation = "Right";
|
|
||||||
textMargin = "4";
|
|
||||||
autoSize = "0";
|
|
||||||
text = "Go";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "251 0";
|
|
||||||
extent = "140 40";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "MainMenuButtonList.activateRow();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
internalName = "OKButton";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
new GuiControl(MessageBoxOCButtonHolder) {
|
|
||||||
position = "0 285";
|
|
||||||
extent = "642 40";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "center";
|
|
||||||
vertSizing = "top";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
class = "MenuInputButtonContainer";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
|
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
buttonMargin = "4 4";
|
|
||||||
iconBitmap = "data/ui/images/Inputs/Keyboard & Mouse/Keyboard_Black_Enter";
|
|
||||||
iconLocation = "Left";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
textLocation = "Right";
|
|
||||||
textMargin = "4";
|
|
||||||
autoSize = "0";
|
|
||||||
text = "Go";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "171 0";
|
|
||||||
extent = "140 40";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "MainMenuButtonList.activateRow();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
internalName = "OKButton";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
buttonMargin = "4 4";
|
|
||||||
iconBitmap = "data/ui/images/Inputs/Keyboard & Mouse/Keyboard_Black_Enter";
|
|
||||||
iconLocation = "Left";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
textLocation = "Right";
|
|
||||||
textMargin = "4";
|
|
||||||
autoSize = "0";
|
|
||||||
text = "Go";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "323 0";
|
|
||||||
extent = "140 40";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "MainMenuButtonList.activateRow();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
internalName = "CancelButton";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
new GuiControl(MessageBoxYNCButtonHolder) {
|
|
||||||
position = "0 285";
|
|
||||||
extent = "642 40";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "center";
|
|
||||||
vertSizing = "top";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
class = "MenuInputButtonContainer";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
|
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
buttonMargin = "4 4";
|
|
||||||
iconBitmap = "data/ui/images/Inputs/Keyboard & Mouse/Keyboard_Black_Enter";
|
|
||||||
iconLocation = "Left";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
textLocation = "Right";
|
|
||||||
textMargin = "4";
|
|
||||||
autoSize = "0";
|
|
||||||
text = "Go";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "99 0";
|
|
||||||
extent = "140 40";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "MainMenuButtonList.activateRow();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
internalName = "yesButton";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
buttonMargin = "4 4";
|
|
||||||
iconBitmap = "data/ui/images/Inputs/Keyboard & Mouse/Keyboard_Black_Enter";
|
|
||||||
iconLocation = "Left";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
textLocation = "Right";
|
|
||||||
textMargin = "4";
|
|
||||||
autoSize = "0";
|
|
||||||
text = "Go";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "251 0";
|
|
||||||
extent = "140 40";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "MainMenuButtonList.activateRow();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
internalName = "noButton";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
buttonMargin = "4 4";
|
|
||||||
iconBitmap = "data/ui/images/Inputs/Keyboard & Mouse/Keyboard_Black_Enter";
|
|
||||||
iconLocation = "Left";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
textLocation = "Right";
|
|
||||||
textMargin = "4";
|
|
||||||
autoSize = "0";
|
|
||||||
text = "Go";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "403 0";
|
|
||||||
extent = "140 40";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "MainMenuButtonList.activateRow();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
internalName = "CancelButton";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
218
Templates/BaseGame/game/data/UI/guis/messageBoxDlg.tscript
Normal file
218
Templates/BaseGame/game/data/UI/guis/messageBoxDlg.tscript
Normal file
|
|
@ -0,0 +1,218 @@
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Copyright (c) 2012 GarageGames, LLC
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to
|
||||||
|
// deal in the Software without restriction, including without limitation the
|
||||||
|
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
// sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in
|
||||||
|
// all copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
// IN THE SOFTWARE.
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------
|
||||||
|
// Message Sound
|
||||||
|
// --------------------------------------------------------------------
|
||||||
|
/*new SFXDescription(MessageBoxAudioDescription)
|
||||||
|
{
|
||||||
|
volume = 1.0;
|
||||||
|
isLooping = false;
|
||||||
|
is3D = false;
|
||||||
|
channel = $GuiAudioType;
|
||||||
|
};
|
||||||
|
|
||||||
|
new SFXProfile(messageBoxBeep)
|
||||||
|
{
|
||||||
|
filename = "./messageBoxSound";
|
||||||
|
description = MessageBoxAudioDescription;
|
||||||
|
preload = true;
|
||||||
|
};*/
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------
|
||||||
|
// messageCallback
|
||||||
|
// Calls a callback passed to a message box.
|
||||||
|
//---------------------------------------------------------------------------------------------
|
||||||
|
function messageCallback(%dlg, %callback)
|
||||||
|
{
|
||||||
|
Canvas.popDialog(%dlg);
|
||||||
|
eval(%callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------
|
||||||
|
// MBSetText
|
||||||
|
// Sets the text of a message box and resizes it to accomodate the new string.
|
||||||
|
//---------------------------------------------------------------------------------------------
|
||||||
|
function MBSetText(%text, %frame, %msg)
|
||||||
|
{
|
||||||
|
// Get the extent of the text box.
|
||||||
|
%ext = %text.getExtent();
|
||||||
|
// Set the text in the center of the text box.
|
||||||
|
%text.setText("<just:center>" @ %msg);
|
||||||
|
// Force the textbox to resize itself vertically.
|
||||||
|
%text.forceReflow();
|
||||||
|
// Grab the new extent of the text box.
|
||||||
|
%newExtent = %text.getExtent();
|
||||||
|
|
||||||
|
// Get the vertical change in extent.
|
||||||
|
%deltaY = getWord(%newExtent, 1) - getWord(%ext, 1);
|
||||||
|
|
||||||
|
// Resize the window housing the text box.
|
||||||
|
%windowPos = %frame.getPosition();
|
||||||
|
%windowExt = %frame.getExtent();
|
||||||
|
%frame.resize(getWord(%windowPos, 0), getWord(%windowPos, 1) - (%deltaY / 2),
|
||||||
|
getWord(%windowExt, 0), getWord(%windowExt, 1) + %deltaY);
|
||||||
|
|
||||||
|
%frame.canMove = "0";
|
||||||
|
//%frame.canClose = "0";
|
||||||
|
%frame.resizeWidth = "0";
|
||||||
|
%frame.resizeHeight = "0";
|
||||||
|
%frame.canMinimize = "0";
|
||||||
|
%frame.canMaximize = "0";
|
||||||
|
|
||||||
|
//sfxPlayOnce( messageBoxBeep );
|
||||||
|
}
|
||||||
|
|
||||||
|
function MessageBoxCtrl::onWake(%this)
|
||||||
|
{
|
||||||
|
%this.callback = "";
|
||||||
|
%this.cancelCallback = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------
|
||||||
|
// Various message box display functions. Each one takes a window title, a message, and a
|
||||||
|
// callback for each button.
|
||||||
|
//---------------------------------------------------------------------------------------------
|
||||||
|
function MessageBoxCtrl::createButton(%this, %text, %command, %bitmap)
|
||||||
|
{
|
||||||
|
%btn = new GuiIconButtonCtrl() {
|
||||||
|
BitmapAsset = %bitmap;
|
||||||
|
sizeIconToButton = "1";
|
||||||
|
makeIconSquare = "1";
|
||||||
|
textLocation = "Center";
|
||||||
|
iconLocation = "Left";
|
||||||
|
text = %text;
|
||||||
|
position = "251 0";
|
||||||
|
extent = "140 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = %command;
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
|
||||||
|
MessageBoxButtonHolder.add(%btn);
|
||||||
|
|
||||||
|
//update positioning of the holder to be centered
|
||||||
|
MessageBoxButtonHolder.position.x = MessageBoxCtrl.extent.x/2 - MessageBoxButtonHolder.extent.x/2;
|
||||||
|
|
||||||
|
return %btn;
|
||||||
|
}
|
||||||
|
|
||||||
|
function MessageBoxDlg::onWake(%this)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isObject( MessageBoxActionMap ) )
|
||||||
|
{
|
||||||
|
new ActionMap(MessageBoxActionMap){};
|
||||||
|
|
||||||
|
MessageBoxActionMap.bind( keyboard, Enter, messageBoxYesClicked );
|
||||||
|
MessageBoxActionMap.bind( gamepad, btn_a, messageBoxYesClicked );
|
||||||
|
|
||||||
|
MessageBoxActionMap.bind( keyboard, Escape, messageBoxNoClicked );
|
||||||
|
MessageBoxActionMap.bind( gamepad, btn_b, messageBoxNoClicked );
|
||||||
|
}
|
||||||
|
|
||||||
|
function MessageBoxCtrl::syncGui(%this)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function messageBoxYesClicked(%this)
|
||||||
|
{
|
||||||
|
MessageCallback(MessageBoxDlg, MessageBoxDlg.callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
function messageBoxNoClicked(%this)
|
||||||
|
{
|
||||||
|
MessageCallback(MessageBoxDlg,MessageBoxDlg.cancelCallback);
|
||||||
|
}
|
||||||
|
|
||||||
|
//MessageBoxOK("Test", "This is a test message box", "echo(\"Uhhhhhawhat?\"");
|
||||||
|
function MessageBoxOK(%title, %message, %callback)
|
||||||
|
{
|
||||||
|
MessageBoxButtonHolder.clear();
|
||||||
|
|
||||||
|
Canvas.pushDialog(MessageBoxDlg);
|
||||||
|
MessageBoxTitleText.text = %title;
|
||||||
|
|
||||||
|
%okButton = MessageBoxCtrl.createButton("OK", "messageBoxYesClicked();");
|
||||||
|
%bitmapAssetId = MessageBoxActionMap.getCommandButtonBitmap(Canvas.getLastInputDevice(), "messageBoxYesClicked");
|
||||||
|
%okButton.setBitmap(%bitmapAssetId);
|
||||||
|
|
||||||
|
MBSetText(MessageBoxText, MessageBoxCtrl, %message);
|
||||||
|
MessageBoxDlg.callback = %callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
function MessageBoxOKCancel(%title, %message, %callback, %cancelCallback, %okLabelOverride, %cancelLabelOverride)
|
||||||
|
{
|
||||||
|
MessageBoxButtonHolder.clear();
|
||||||
|
|
||||||
|
Canvas.pushDialog(MessageBoxDlg);
|
||||||
|
MessageBoxTitleText.text = %title;
|
||||||
|
|
||||||
|
if(%okLabelOverride $= "")
|
||||||
|
%okLabel = "OK";
|
||||||
|
else
|
||||||
|
%okLabel = %okLabelOverride;
|
||||||
|
|
||||||
|
if(%cancelLabelOverride $= "")
|
||||||
|
%cancelLabel = "Cancel";
|
||||||
|
else
|
||||||
|
%cancelLabel = %cancelLabelOverride;
|
||||||
|
|
||||||
|
%okButton = MessageBoxCtrl.createButton(%okLabel, "messageBoxYesClicked();");
|
||||||
|
%bitmapAssetId = MessageBoxActionMap.getCommandButtonBitmap(Canvas.getLastInputDevice(), "messageBoxYesClicked");
|
||||||
|
%okButton.setBitmap(%bitmapAssetId);
|
||||||
|
|
||||||
|
%cancelButton = MessageBoxCtrl.createButton(%cancelLabel, "messageBoxNoClicked();");
|
||||||
|
%bitmapAssetId = MessageBoxActionMap.getCommandButtonBitmap(Canvas.getLastInputDevice(), "messageBoxNoClicked");
|
||||||
|
%cancelButton.setBitmap(%bitmapAssetId);
|
||||||
|
|
||||||
|
MBSetText(MessageBoxText, MessageBoxCtrl, %message);
|
||||||
|
MessageBoxDlg.callback = %callback;
|
||||||
|
MessageBoxDlg.cancelCallback = %cancelCallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
function MessageBoxYesNo(%title, %message, %yesCallback, %noCallback)
|
||||||
|
{
|
||||||
|
MessageBoxOKCancel(%title, %message, %yesCallback, %noCallback, "Yes", "No");
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------
|
||||||
|
// MessagePopup
|
||||||
|
// Displays a message box with no buttons. Disappears after %delay milliseconds.
|
||||||
|
//---------------------------------------------------------------------------------------------
|
||||||
|
function MessagePopup(%title, %message, %delay)
|
||||||
|
{
|
||||||
|
Canvas.pushDialog(MessageBoxDlg);
|
||||||
|
MessageBoxTitleText.text = %title;
|
||||||
|
MBSetText(MessageBoxText, MessageBoxCtrl, %message);
|
||||||
|
|
||||||
|
if (%delay !$= "")
|
||||||
|
schedule(%delay, 0, CloseMessagePopup);
|
||||||
|
}
|
||||||
|
|
||||||
|
function CloseMessagePopup()
|
||||||
|
{
|
||||||
|
Canvas.popDialog(MessageBoxDlg);
|
||||||
|
}
|
||||||
|
|
@ -6,73 +6,94 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "GuiDefaultProfile";
|
profile = "GuiDefaultProfile";
|
||||||
|
category = "BaseUI";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
isContainer = "1";
|
isContainer = "1";
|
||||||
canSaveDynamicFields = "1";
|
canSaveDynamicFields = "1";
|
||||||
currentCategory = "Graphics";
|
optionsCategories = "17237";
|
||||||
optionsCategories = "17233";
|
unappliedChanges = "17238";
|
||||||
unappliedChanges = "17234";
|
|
||||||
|
|
||||||
new GuiControl(OptionsMenuContainer) {
|
new GuiInputCtrl(OptionsMenuInputHandler) {
|
||||||
position = "208 32";
|
|
||||||
extent = "870 655";
|
|
||||||
horizSizing = "aspectCenter";
|
|
||||||
vertSizing = "center";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "1";
|
|
||||||
};
|
|
||||||
new GuiInputCtrl(MainMenuInputHandler) {
|
|
||||||
ignoreMouseEvents = "1";
|
ignoreMouseEvents = "1";
|
||||||
ActionMap = "MainMenuActionMap";
|
ActionMap = "OptionsMenuActionMap";
|
||||||
position = "-49 0";
|
position = "-50 0";
|
||||||
extent = "2186 851";
|
extent = "2186 851";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "GuiInputCtrlProfile";
|
profile = "GuiInputCtrlProfile";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
};
|
};
|
||||||
new GuiStackControl(OptionsMenuCategoryList) {
|
new GuiControl(OptionsMenuCategoryContainer) {
|
||||||
stackingType = "Horizontal";
|
position = "332 80";
|
||||||
padding = "10";
|
extent = "617 49";
|
||||||
dynamicSize = "0";
|
|
||||||
position = "398 80";
|
|
||||||
extent = "471 40";
|
|
||||||
horizSizing = "center";
|
horizSizing = "center";
|
||||||
profile = "GuiDefaultProfile";
|
profile = "GuiDefaultProfile";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
superClass = "MenuList";
|
isContainer = "1";
|
||||||
|
|
||||||
new GuiButtonCtrl() {
|
new GuiIconButtonCtrl(OptionsMenuCatPrevBtn) {
|
||||||
text = "Video";
|
BitmapAsset = "UI:Keyboard_Black_Q_image";
|
||||||
extent = "100 40";
|
iconLocation = "Center";
|
||||||
|
makeIconSquare = "1";
|
||||||
|
textLocation = "Center";
|
||||||
|
bitmapMargin = "30";
|
||||||
|
position = "1 4";
|
||||||
|
extent = "50 40";
|
||||||
|
vertSizing = "center";
|
||||||
profile = "GuiMenuButtonProfile";
|
profile = "GuiMenuButtonProfile";
|
||||||
command = "populateDisplaySettingsList();";
|
command = "OptionsMenuCategoryPrev();";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
class = "MenuInputButton";
|
||||||
};
|
};
|
||||||
new GuiButtonCtrl() {
|
new GuiIconButtonCtrl(OptionsMenuCatNextBtn) {
|
||||||
text = "Audio";
|
BitmapAsset = "UI:Keyboard_Black_E_image";
|
||||||
position = "110 0";
|
iconLocation = "Center";
|
||||||
extent = "100 40";
|
makeIconSquare = "1";
|
||||||
|
bitmapMargin = "30";
|
||||||
|
position = "568 4";
|
||||||
|
extent = "50 40";
|
||||||
|
horizSizing = "left";
|
||||||
|
vertSizing = "center";
|
||||||
profile = "GuiMenuButtonProfile";
|
profile = "GuiMenuButtonProfile";
|
||||||
command = "populateAudioSettingsList();";
|
command = "OptionsMenuCategoryNext();";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
class = "MenuInputButton";
|
||||||
};
|
};
|
||||||
new GuiButtonCtrl() {
|
new GuiStackControl(OptionsMenuCategoryList) {
|
||||||
text = "Keyboard & Mouse";
|
stackingType = "Horizontal";
|
||||||
position = "220 0";
|
padding = "10";
|
||||||
extent = "140 40";
|
dynamicSize = "0";
|
||||||
profile = "GuiMenuButtonProfile";
|
position = "137 3";
|
||||||
command = "populateKeyboardMouseSettingsList();";
|
extent = "358 40";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
horizSizing = "center";
|
||||||
};
|
vertSizing = "center";
|
||||||
new GuiButtonCtrl() {
|
profile = "GuiDefaultProfile";
|
||||||
text = "Gamepad";
|
|
||||||
position = "370 0";
|
|
||||||
extent = "100 40";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "populateGamepadSettingsList();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
superClass = "MenuList";
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = "Video";
|
||||||
|
extent = "100 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "populateDisplaySettingsList();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = "Audio";
|
||||||
|
position = "110 0";
|
||||||
|
extent = "100 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "populateAudioSettingsList();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = "Controls";
|
||||||
|
position = "220 0";
|
||||||
|
extent = "140 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "populateKeyboardMouseSettingsList();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
new GuiScrollCtrl(OptionsMenuSettingsScroll) {
|
new GuiScrollCtrl(OptionsMenuSettingsScroll) {
|
||||||
|
|
@ -89,13 +110,227 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
||||||
padding = "5";
|
padding = "5";
|
||||||
changeChildSizeToFit = "0";
|
changeChildSizeToFit = "0";
|
||||||
position = "1 1";
|
position = "1 1";
|
||||||
extent = "603 245";
|
extent = "603 200";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "GuiDefaultProfile";
|
profile = "GuiDefaultProfile";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
superClass = "MenuList";
|
superClass = "MenuList";
|
||||||
visible = true;
|
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
text = "Basic";
|
||||||
|
extent = "500 30";
|
||||||
|
profile = "MenuHeaderText";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiContainer() {
|
||||||
|
position = "0 35";
|
||||||
|
extent = "603 40";
|
||||||
|
horizSizing = "width";
|
||||||
|
profile = "GuiMenuDefaultProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
class = "OptionsListEntry";
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
extent = "603 40";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "Button";
|
||||||
|
class = "optionsMenuButton";
|
||||||
|
};
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
text = "Graphical Quality";
|
||||||
|
position = "10 -1";
|
||||||
|
extent = "250 20";
|
||||||
|
profile = "MenuSubHeaderText";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "OptionName";
|
||||||
|
};
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
text = "Controls the general graphical quality";
|
||||||
|
position = "10 17";
|
||||||
|
extent = "178 18";
|
||||||
|
profile = "GuiMLTextProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "OptionDescription";
|
||||||
|
};
|
||||||
|
new GuiContainer() {
|
||||||
|
position = "353 0";
|
||||||
|
extent = "250 40";
|
||||||
|
horizSizing = "left";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiModelessDialogProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "valuesContainer";
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = "<";
|
||||||
|
position = "160 0";
|
||||||
|
extent = "20 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
text = "High";
|
||||||
|
position = "180 0";
|
||||||
|
extent = "50 40";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuTextProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "optionValue";
|
||||||
|
};
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = ">";
|
||||||
|
position = "230 0";
|
||||||
|
extent = "20 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
new GuiContainer() {
|
||||||
|
position = "0 80";
|
||||||
|
extent = "603 40";
|
||||||
|
horizSizing = "width";
|
||||||
|
profile = "GuiMenuDefaultProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
class = "OptionsListEntry";
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
extent = "603 40";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "Button";
|
||||||
|
class = "optionsMenuButton";
|
||||||
|
};
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
text = "Lighting Quality";
|
||||||
|
position = "10 -1";
|
||||||
|
extent = "250 20";
|
||||||
|
profile = "MenuSubHeaderText";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "OptionName";
|
||||||
|
};
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
text = "Controls the lighting and shadows quality";
|
||||||
|
position = "10 17";
|
||||||
|
extent = "198 18";
|
||||||
|
profile = "GuiMLTextProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "OptionDescription";
|
||||||
|
};
|
||||||
|
new GuiContainer() {
|
||||||
|
position = "353 0";
|
||||||
|
extent = "250 40";
|
||||||
|
horizSizing = "left";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiModelessDialogProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "valuesContainer";
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = "<";
|
||||||
|
position = "160 0";
|
||||||
|
extent = "20 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
text = "High";
|
||||||
|
position = "180 0";
|
||||||
|
extent = "50 40";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuTextProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "optionValue";
|
||||||
|
};
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = ">";
|
||||||
|
position = "230 0";
|
||||||
|
extent = "20 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
text = "Advanced";
|
||||||
|
position = "0 125";
|
||||||
|
extent = "500 30";
|
||||||
|
profile = "MenuHeaderText";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiContainer() {
|
||||||
|
position = "0 160";
|
||||||
|
extent = "603 40";
|
||||||
|
horizSizing = "width";
|
||||||
|
profile = "GuiMenuDefaultProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
class = "OptionsListEntry";
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
extent = "603 40";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "Button";
|
||||||
|
class = "optionsMenuButton";
|
||||||
|
};
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
text = "Mesh Detail";
|
||||||
|
position = "10 -1";
|
||||||
|
extent = "250 20";
|
||||||
|
profile = "MenuSubHeaderText";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "OptionName";
|
||||||
|
};
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
text = "Controls the max quality of mesh objects";
|
||||||
|
position = "10 17";
|
||||||
|
extent = "195 18";
|
||||||
|
profile = "GuiMLTextProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "OptionDescription";
|
||||||
|
};
|
||||||
|
new GuiContainer() {
|
||||||
|
position = "353 0";
|
||||||
|
extent = "250 40";
|
||||||
|
horizSizing = "left";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiModelessDialogProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "valuesContainer";
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = "<";
|
||||||
|
position = "160 0";
|
||||||
|
extent = "20 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
new GuiTextCtrl() {
|
||||||
|
text = "High";
|
||||||
|
position = "180 0";
|
||||||
|
extent = "50 40";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuTextProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
internalName = "optionValue";
|
||||||
|
};
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
text = ">";
|
||||||
|
position = "230 0";
|
||||||
|
extent = "20 40";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
new GuiStackControl(AudioSettingsList) {
|
new GuiStackControl(AudioSettingsList) {
|
||||||
padding = "5";
|
padding = "5";
|
||||||
|
|
@ -105,9 +340,10 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "GuiDefaultProfile";
|
profile = "GuiDefaultProfile";
|
||||||
|
visible = "0";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
superClass = "MenuList";
|
superClass = "MenuList";
|
||||||
visible = false;
|
hidden = "1";
|
||||||
};
|
};
|
||||||
new GuiStackControl(ControlSettingsList) {
|
new GuiStackControl(ControlSettingsList) {
|
||||||
padding = "5";
|
padding = "5";
|
||||||
|
|
@ -117,9 +353,10 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "GuiDefaultProfile";
|
profile = "GuiDefaultProfile";
|
||||||
|
visible = "0";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
superClass = "MenuList";
|
superClass = "MenuList";
|
||||||
visible = false;
|
hidden = "1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
new GuiPanel(OptionMenuTitlePanel) {
|
new GuiPanel(OptionMenuTitlePanel) {
|
||||||
|
|
@ -136,7 +373,7 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
new GuiPanel(MainMenuButtonPanel) {
|
new GuiPanel(OptionsMenuButtonPanel) {
|
||||||
position = "0 683";
|
position = "0 683";
|
||||||
extent = "1281 40";
|
extent = "1281 40";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
|
|
@ -144,7 +381,7 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
||||||
profile = "GuiMenuPanelProfile";
|
profile = "GuiMenuPanelProfile";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
||||||
new GuiIconButtonCtrl() {
|
new GuiIconButtonCtrl(OptionsMenuApplyBtn) {
|
||||||
BitmapAsset = "UI:Keyboard_Black_Return_image";
|
BitmapAsset = "UI:Keyboard_Black_Return_image";
|
||||||
sizeIconToButton = "1";
|
sizeIconToButton = "1";
|
||||||
makeIconSquare = "1";
|
makeIconSquare = "1";
|
||||||
|
|
@ -155,12 +392,11 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
||||||
horizSizing = "left";
|
horizSizing = "left";
|
||||||
vertSizing = "center";
|
vertSizing = "center";
|
||||||
profile = "GuiMenuButtonProfile";
|
profile = "GuiMenuButtonProfile";
|
||||||
command = "MainMenuSelectButton(1);";
|
command = "OptionsMenu.applySettings();";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
internalName = "button4";
|
|
||||||
class = "MenuInputButton";
|
class = "MenuInputButton";
|
||||||
};
|
};
|
||||||
new GuiIconButtonCtrl() {
|
new GuiIconButtonCtrl(OptionsMenuBackBtn) {
|
||||||
BitmapAsset = "UI:Keyboard_Black_Escape_image";
|
BitmapAsset = "UI:Keyboard_Black_Escape_image";
|
||||||
sizeIconToButton = "1";
|
sizeIconToButton = "1";
|
||||||
makeIconSquare = "1";
|
makeIconSquare = "1";
|
||||||
|
|
@ -168,44 +404,27 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
||||||
text = "Back";
|
text = "Back";
|
||||||
position = "16 0";
|
position = "16 0";
|
||||||
extent = "140 40";
|
extent = "140 40";
|
||||||
|
vertSizing = "center";
|
||||||
|
profile = "GuiMenuButtonProfile";
|
||||||
|
command = "Canvas.popDialog();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
class = "MenuInputButton";
|
||||||
|
};
|
||||||
|
new GuiIconButtonCtrl(OptionsMenuResetBtn) {
|
||||||
|
BitmapAsset = "UI:Keyboard_Black_Return_image";
|
||||||
|
sizeIconToButton = "1";
|
||||||
|
makeIconSquare = "1";
|
||||||
|
textLocation = "Center";
|
||||||
|
text = "Reset";
|
||||||
|
position = "947 0";
|
||||||
|
extent = "140 40";
|
||||||
horizSizing = "left";
|
horizSizing = "left";
|
||||||
vertSizing = "center";
|
vertSizing = "center";
|
||||||
profile = "GuiMenuButtonProfile";
|
profile = "GuiMenuButtonProfile";
|
||||||
command = "MainMenuSelectButton(1);";
|
command = "OptionsMenu.resetSettings();";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
internalName = "button4";
|
|
||||||
class = "MenuInputButton";
|
class = "MenuInputButton";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
BitmapAsset = "UI:Keyboard_Black_E_image";
|
|
||||||
iconLocation = "Center";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
position = "899 80";
|
|
||||||
extent = "50 40";
|
|
||||||
horizSizing = "left";
|
|
||||||
vertSizing = "center";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "MainMenuSelectButton(1);";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
internalName = "button4";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
};
|
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
BitmapAsset = "UI:Keyboard_Black_Q_image";
|
|
||||||
iconLocation = "Center";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
position = "331 80";
|
|
||||||
extent = "50 40";
|
|
||||||
horizSizing = "left";
|
|
||||||
vertSizing = "center";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "MainMenuSelectButton(1);";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
internalName = "button4";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
//--- OBJECT WRITE END ---
|
//--- OBJECT WRITE END ---
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@
|
||||||
|
|
||||||
$yesNoList = "No\tYes";
|
$yesNoList = "No\tYes";
|
||||||
$onOffList = "Off\tOn";
|
$onOffList = "Off\tOn";
|
||||||
|
$optionsEntryPad = 10;
|
||||||
|
|
||||||
function OptionsMenu::onAdd(%this)
|
function OptionsMenu::onAdd(%this)
|
||||||
{
|
{
|
||||||
|
|
@ -63,12 +64,6 @@ function OptionsMenu::onAdd(%this)
|
||||||
|
|
||||||
%this.currentCategory = "";
|
%this.currentCategory = "";
|
||||||
|
|
||||||
addOptionsMenuCategory("Display", "populateDisplaySettingsList();");
|
|
||||||
addOptionsMenuCategory("Graphics", "populateGraphicsSettingsList();");
|
|
||||||
addOptionsMenuCategory("Audio", "populateAudioSettingsList();");
|
|
||||||
addOptionsMenuCategory("Keyboard & Mouse", "populateKeyboardMouseSettingsList();");
|
|
||||||
addOptionsMenuCategory("Gamepad", "populateGamepadSettingsList();");
|
|
||||||
|
|
||||||
callOnModules("populateOptionsMenuCategories", "Game");
|
callOnModules("populateOptionsMenuCategories", "Game");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -93,28 +88,147 @@ function OptionsMenu::onWake(%this)
|
||||||
{
|
{
|
||||||
%option = %setting.getObject(%s);
|
%option = %setting.getObject(%s);
|
||||||
|
|
||||||
%optionsEntry = addOptionEntry();
|
%optionsEntry = addOptionEntry(%option);
|
||||||
%optionsEntry-->optionName.text = %option.OptionName;
|
|
||||||
%optionsEntry-->optionDescription.text = %option.Description;
|
|
||||||
%optionsEntry-->optionValue.text = %option.getObject(0).displayName;
|
|
||||||
|
|
||||||
if(isObject(%optionsEntry))
|
if(isObject(%optionsEntry))
|
||||||
|
{
|
||||||
|
%optionsEntry.resize(0, 0, VideoSettingsList.extent.x, %optionsEntry.extent.y);
|
||||||
|
|
||||||
VideoSettingsList.add(%optionsEntry);
|
VideoSettingsList.add(%optionsEntry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(%setting.class $= "OptionsSettings")
|
else if(%setting.class $= "OptionsSettings")
|
||||||
{
|
{
|
||||||
%entry = addOptionEntry();
|
%optionsEntry = addOptionEntry(%option);
|
||||||
%entry-->optionName.text = %setting.displayName;
|
|
||||||
%entry-->optionDescription.text = %setting.description;
|
if(isObject(%optionsEntry))
|
||||||
%entry-->optionValue.text = %setting.getObject(0).displayName;
|
{
|
||||||
|
%optionsEntry.resize(0, 0, VideoSettingsList.extent.x, %optionsEntry.extent.y);
|
||||||
if(isObject(%entry))
|
|
||||||
VideoSettingsList.add(%entry);
|
VideoSettingsList.add(%optionsEntry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$MenuList = VideoSettingsList;
|
||||||
|
|
||||||
|
//Find our first non-group entry
|
||||||
|
while($MenuList.getObject($MenuList.listPosition).class !$= OptionsListEntry && $MenuList.listPosition < $MenuList.getCount())
|
||||||
|
{
|
||||||
|
$MenuList.listPosition += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!isObject( OptionsMenuActionMap ) )
|
||||||
|
{
|
||||||
|
new ActionMap(OptionsMenuActionMap){};
|
||||||
|
|
||||||
|
OptionsMenuActionMap.bind( keyboard, w, OptionMenuNavigatePrev );
|
||||||
|
OptionsMenuActionMap.bind( keyboard, s, OptionMenuNavigateNext );
|
||||||
|
OptionsMenuActionMap.bind( gamepad, yaxis, "D", "-0.23 0.23", OptionMenuStickNavigate );
|
||||||
|
OptionsMenuActionMap.bind( gamepad, upov, OptionMenuNavigatePrev );
|
||||||
|
OptionsMenuActionMap.bind( gamepad, dpov, OptionMenuNavigateNext );
|
||||||
|
|
||||||
|
OptionsMenuActionMap.bind( keyboard, a, OptionMenuPrevSetting );
|
||||||
|
OptionsMenuActionMap.bind( keyboard, d, OptionMenuNextSetting );
|
||||||
|
OptionsMenuActionMap.bind( gamepad, xaxis, "D", "-0.23 0.23", OptionMenuStickChangeSetting );
|
||||||
|
OptionsMenuActionMap.bind( gamepad, lpov, OptionMenuPrevSetting );
|
||||||
|
OptionsMenuActionMap.bind( gamepad, lpov, OptionMenuNextSetting );
|
||||||
|
|
||||||
|
//OptionsMenuActionMap.bind( keyboard, Enter, BaseUIActivateSelected );
|
||||||
|
//OptionsMenuActionMap.bind( gamepad, btn_a, BaseUIActivateSelected );
|
||||||
|
}
|
||||||
|
|
||||||
|
function VideoSettingsList::syncGui(%this)
|
||||||
|
{
|
||||||
|
%this.callOnChildren("setHighlighted", false);
|
||||||
|
|
||||||
|
%btn = %this.getObject(%this.listPosition);
|
||||||
|
if(%btn.class $= "OptionsListEntry")
|
||||||
|
%btn-->button.setHighlighted(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
function OptionMenuNavigatePrev(%val)
|
||||||
|
{
|
||||||
|
if(%val)
|
||||||
|
{
|
||||||
|
$MenuList.listPosition -= 1;
|
||||||
|
while( $MenuList.listPosition >= 0 && $MenuList.getObject($MenuList.listPosition).class !$= OptionsListEntry)
|
||||||
|
{
|
||||||
|
$MenuList.listPosition -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($MenuList.listPosition < 0)
|
||||||
|
$MenuList.listPosition = 0;
|
||||||
|
|
||||||
|
$MenuList.syncGUI();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function OptionMenuNavigateNext(%val)
|
||||||
|
{
|
||||||
|
if(%val)
|
||||||
|
{
|
||||||
|
$MenuList.listPosition += 1;
|
||||||
|
while($MenuList.listPosition < $MenuList.getCount() && $MenuList.getObject($MenuList.listPosition).class !$= OptionsListEntry)
|
||||||
|
{
|
||||||
|
$MenuList.listPosition += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($MenuList.listPosition >= $MenuList.getCount())
|
||||||
|
$MenuList.listPosition = $MenuList.getCount()-1;
|
||||||
|
|
||||||
|
$MenuList.syncGUI();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function OptionMenuStickNavigate(%val)
|
||||||
|
{
|
||||||
|
if(%val == -1)
|
||||||
|
BaseUINavigateNext(1);
|
||||||
|
else if(%val == 1)
|
||||||
|
mainMenuNavigateDown(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function OptionMenuPrevSetting(%val)
|
||||||
|
{
|
||||||
|
%option = $MenuList.getObject($MenuList.listPosition);
|
||||||
|
echo("Option: " @ %option.className);
|
||||||
|
%optionObject = %option.optionsObject;
|
||||||
|
%currentOptionLevel = %optionObject.getObject(%option.currentOptionIndex);
|
||||||
|
|
||||||
|
echo("Changed option: " @ %optionObject.optionName @ " to level: " @ %currentOptionLevel.displayName);
|
||||||
|
/*$MenuList.listPosition -= 1;
|
||||||
|
|
||||||
|
if($MenuList.listPosition < 0)
|
||||||
|
$MenuList.listPosition = 0;*/
|
||||||
|
|
||||||
|
$MenuList.syncGUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
function OptionMenuNextSetting(%val)
|
||||||
|
{
|
||||||
|
%option = $MenuList.getObject($MenuList.listPosition);
|
||||||
|
%optionObject = %option.optionsObject;
|
||||||
|
%currentOptionLevel = %optionObject.getObject(%option.currentOptionIndex);
|
||||||
|
|
||||||
|
echo("Changed option: " @ %optionObject.optionName @ " to level: " @ %currentOptionLevel.displayName);
|
||||||
|
|
||||||
|
/*$MenuList.listPosition += 1;
|
||||||
|
|
||||||
|
if($MenuList.listPosition >= $MenuList.getCount())
|
||||||
|
$MenuList.listPosition = $MenuList.getCount()-1;*/
|
||||||
|
|
||||||
|
$MenuList.syncGUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
function OptionMenuStickChangeSetting(%val)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
//
|
||||||
function OptionsMenu::onOpen(%this)
|
function OptionsMenu::onOpen(%this)
|
||||||
{
|
{
|
||||||
OptionsMenuCategoryList.clear();
|
OptionsMenuCategoryList.clear();
|
||||||
|
|
@ -173,7 +287,7 @@ function OptionsMenu::canClose(%this)
|
||||||
//UINavigation to not close the page
|
//UINavigation to not close the page
|
||||||
if(OptionsMenuSettingsList.isActiveMenuList())
|
if(OptionsMenuSettingsList.isActiveMenuList())
|
||||||
{
|
{
|
||||||
OptionsMenuCategoryList.setAsActiveMenuList();
|
OptionsMenuCategoryList.setAsActiveMenuList();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -1238,28 +1352,66 @@ function addOptionGroup()
|
||||||
};
|
};
|
||||||
|
|
||||||
return %group;
|
return %group;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function addOptionEntry()
|
function optionsMenuButton::onHighlighted(%this, %highlighted)
|
||||||
{
|
{
|
||||||
|
%container = %this.getParent();
|
||||||
|
|
||||||
|
%container-->optionName.profile = %highlighted ? MenuSubHeaderTextHighlighted : MenuSubHeaderText;
|
||||||
|
%container-->optionDescription.profile = %highlighted ? GuiMLTextProfileHighlighted : GuiMLTextProfile;
|
||||||
|
|
||||||
|
%valuesContainer = %container-->valuesContainer;
|
||||||
|
%valuesContainer-->optionValue.profile = %highlighted ? GuiMenuTextProfileHighlighted : GuiMenuTextProfile;
|
||||||
|
}
|
||||||
|
|
||||||
|
function optionsMenuButton::onMouseDown(%this)
|
||||||
|
{
|
||||||
|
//check if we're clicking on the left or right of the value and adjust it accordingly
|
||||||
|
}
|
||||||
|
|
||||||
|
function addOptionEntry(%optionObj)
|
||||||
|
{
|
||||||
|
if(!isObject(%optionObj) || %optionObj.class !$= "OptionsSettings")
|
||||||
|
{
|
||||||
|
error("addOptionsEntry() - attempting to create a new options entry, but was provided an invalid options object");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
%qualityLevel = %optionObj.getObject(0);
|
||||||
|
|
||||||
%entry = new GuiContainer() {
|
%entry = new GuiContainer() {
|
||||||
position = "0 0";
|
position = "0 0";
|
||||||
extent = "500 40";
|
extent = "500 40";
|
||||||
profile = "GuiMenuPanelProfile";
|
profile = GuiMenuDefaultProfile;
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "bottom";
|
||||||
|
class = "OptionsListEntry";
|
||||||
|
optionsObject = %optionObj;
|
||||||
|
currentOptionIndex = 0;
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
profile = GuiMenuButtonProfile;
|
||||||
|
position = "0 0";
|
||||||
|
extent = "500 40";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
internalName = "button";
|
||||||
|
class = "optionsMenuButton";
|
||||||
|
};
|
||||||
|
|
||||||
new GuiTextCtrl() {
|
new GuiTextCtrl() {
|
||||||
text = "";
|
text = %optionObj.OptionName;
|
||||||
position = "1 -1";
|
position = $optionsEntryPad SPC -1;
|
||||||
extent = "250 20";
|
extent = "250 20";
|
||||||
profile = "MenuSubHeaderText";
|
profile = "MenuSubHeaderText";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
internalName = "optionName";
|
internalName = "optionName";
|
||||||
};
|
};
|
||||||
new GuiTextCtrl() {
|
new GuiTextCtrl() {
|
||||||
text = "Sets the resolution and detail of shadows";
|
text = %optionObj.Description;
|
||||||
position = "1 17";
|
position = $optionsEntryPad SPC 17;
|
||||||
extent = "250 18";
|
extent = "250 18";
|
||||||
profile = "GuiMLTextProfile";
|
profile = "GuiMLTextProfile";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
@ -1273,17 +1425,32 @@ function addOptionEntry()
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
horizSizing = "left";
|
horizSizing = "left";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
|
internalName = "valuesContainer";
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
position = "160 0";
|
||||||
|
extent = "20 40";
|
||||||
|
text = "<";
|
||||||
|
profile = GuiMenuButtonProfile;
|
||||||
|
};
|
||||||
|
|
||||||
new GuiTextCtrl() {
|
new GuiTextCtrl() {
|
||||||
text = "< High >";
|
text = %qualityLevel.displayName;
|
||||||
position = "180 0";
|
position = "180 0";
|
||||||
extent = "70 40";
|
extent = "50 40";
|
||||||
profile = "GuiMenuTextProfile";
|
profile = "GuiMenuTextProfile";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
horizSizing = "left";
|
horizSizing = "right";
|
||||||
vertSizing = "center";
|
vertSizing = "center";
|
||||||
internalName = "optionValue";
|
internalName = "optionValue";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
new GuiButtonCtrl() {
|
||||||
|
position = "230 0";
|
||||||
|
extent = "20 40";
|
||||||
|
text = ">";
|
||||||
|
profile = GuiMenuButtonProfile;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,163 +0,0 @@
|
||||||
//--- OBJECT WRITE BEGIN ---
|
|
||||||
$guiContent = new GuiControl(PauseMenu) {
|
|
||||||
extent = "1024 768";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "1";
|
|
||||||
superClass = "UINavigation";
|
|
||||||
canSaveDynamicFields = "1";
|
|
||||||
|
|
||||||
new GuiChunkedBitmapCtrl(PauseMenuBG) {
|
|
||||||
BitmapAsset = "UI:hudfill_image";
|
|
||||||
extent = "1024 768";
|
|
||||||
horizSizing = "width";
|
|
||||||
vertSizing = "height";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "1";
|
|
||||||
canSaveDynamicFields = "1";
|
|
||||||
};
|
|
||||||
new GuiInputCtrl(PauseMenuInputHandler) {
|
|
||||||
sendAxisEvents = "1";
|
|
||||||
sendBreakEvents = "1";
|
|
||||||
ignoreMouseEvents = "1";
|
|
||||||
position = "-50 0";
|
|
||||||
extent = "10 10";
|
|
||||||
horizSizing = "width";
|
|
||||||
vertSizing = "height";
|
|
||||||
profile = "GuiInputCtrlProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
class = "MenuInputHandler";
|
|
||||||
};
|
|
||||||
new GuiControl(PauseMenuButtons) {
|
|
||||||
position = "162 125";
|
|
||||||
extent = "700 518";
|
|
||||||
horizSizing = "center";
|
|
||||||
vertSizing = "center";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "1";
|
|
||||||
|
|
||||||
new GuiStackControl(PauseMenuList) {
|
|
||||||
padding = "15";
|
|
||||||
dynamicSize = "0";
|
|
||||||
extent = "700 320";
|
|
||||||
horizSizing = "center";
|
|
||||||
vertSizing = "center";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
superClass = "MenuList";
|
|
||||||
|
|
||||||
new GuiButtonCtrl() {
|
|
||||||
text = "Options";
|
|
||||||
extent = "700 55";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "openPauseMenuOptions();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl() {
|
|
||||||
text = "Exit to Menu";
|
|
||||||
position = "0 70";
|
|
||||||
extent = "700 55";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "pauseMenuExitToMenu();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
new GuiButtonCtrl() {
|
|
||||||
text = "Exit to Desktop";
|
|
||||||
position = "0 140";
|
|
||||||
extent = "700 55";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
command = "pauseMenuExitToDesktop();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
new GuiControl(PauseButtonHolder) {
|
|
||||||
position = "144 711";
|
|
||||||
extent = "736 40";
|
|
||||||
horizSizing = "center";
|
|
||||||
vertSizing = "top";
|
|
||||||
profile = "GuiDefaultProfile";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
isContainer = "1";
|
|
||||||
class = "MenuInputButtonContainer";
|
|
||||||
|
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
BitmapAsset = "UI:Keyboard_Black_Return_image";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
textLocation = "Right";
|
|
||||||
position = "11 0";
|
|
||||||
extent = "140 40";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "0";
|
|
||||||
active = "0";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
internalName = "button1";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
hidden = "1";
|
|
||||||
};
|
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
BitmapAsset = "UI:Keyboard_Black_Return_image";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
textLocation = "Right";
|
|
||||||
position = "155 0";
|
|
||||||
extent = "140 40";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "0";
|
|
||||||
active = "0";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
internalName = "button2";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
hidden = "1";
|
|
||||||
};
|
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
BitmapAsset = "UI:Keyboard_Black_Return_image";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
textLocation = "Right";
|
|
||||||
position = "299 0";
|
|
||||||
extent = "140 40";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "0";
|
|
||||||
active = "0";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
internalName = "button3";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
hidden = "1";
|
|
||||||
};
|
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
BitmapAsset = "UI:Keyboard_Black_Return_image";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
textLocation = "Right";
|
|
||||||
position = "443 0";
|
|
||||||
extent = "140 40";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "0";
|
|
||||||
active = "0";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
internalName = "button4";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
hidden = "1";
|
|
||||||
};
|
|
||||||
new GuiIconButtonCtrl() {
|
|
||||||
BitmapAsset = "UI:Keyboard_Black_Return_image";
|
|
||||||
sizeIconToButton = "1";
|
|
||||||
makeIconSquare = "1";
|
|
||||||
textLocation = "Right";
|
|
||||||
position = "587 0";
|
|
||||||
extent = "140 40";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "0";
|
|
||||||
active = "0";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
internalName = "button5";
|
|
||||||
class = "MenuInputButton";
|
|
||||||
hidden = "1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
//--- OBJECT WRITE END ---
|
|
||||||
|
|
@ -1,93 +0,0 @@
|
||||||
function PauseMenu::onWake(%this)
|
|
||||||
{
|
|
||||||
if($Server::ServerType $= "SinglePlayer")
|
|
||||||
{
|
|
||||||
$timescale = 0;
|
|
||||||
|
|
||||||
sfxSetChannelVolume( $SimAudioType, $pref::SFX::channelVolume[ 0 ] );
|
|
||||||
}
|
|
||||||
|
|
||||||
PauseButtonHolder.setActive();
|
|
||||||
PauseMenuInputHandler.setFirstResponder();
|
|
||||||
|
|
||||||
%this.resizePages = true;
|
|
||||||
|
|
||||||
%this.setRootPage(PauseMenuButtons);
|
|
||||||
}
|
|
||||||
|
|
||||||
function PauseMenuButtons::onOpen(%this)
|
|
||||||
{
|
|
||||||
PauseMenuList.clear();
|
|
||||||
|
|
||||||
if($Tools::loaded && EditorIsActive())
|
|
||||||
{
|
|
||||||
%this.addPauseMenuButton("Exit Editor", "fastLoadWorldEdit();");
|
|
||||||
}
|
|
||||||
|
|
||||||
%this.addPauseMenuButton("Options", "openPauseMenuOptions();");
|
|
||||||
%this.addPauseMenuButton("Exit to Menu", "pauseMenuExitToMenu();");
|
|
||||||
%this.addPauseMenuButton("Exit to Desktop", "pauseMenuExitToDesktop();");
|
|
||||||
|
|
||||||
PauseMenuList.setAsActiveMenuList();
|
|
||||||
|
|
||||||
$activeMenuButtonContainer-->button1.disable();
|
|
||||||
$activeMenuButtonContainer-->button2.disable();
|
|
||||||
$activeMenuButtonContainer-->button3.disable();
|
|
||||||
$activeMenuButtonContainer-->button4.set("btn_a", "", "OK", "PauseMenuList.activate();");
|
|
||||||
$activeMenuButtonContainer-->button5.set("btn_b", "Escape", "Back", "Canvas.popDialog();");
|
|
||||||
}
|
|
||||||
|
|
||||||
function PauseMenuButtons::addPauseMenuButton(%this, %buttonText, %buttonCallback)
|
|
||||||
{
|
|
||||||
%newButton = new GuiButtonCtrl() {
|
|
||||||
text = %buttonText;
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "0 0";
|
|
||||||
extent = "400 55";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "GuiMenuButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = %buttonCallback;
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
|
|
||||||
PauseMenuList.add(%newButton);
|
|
||||||
}
|
|
||||||
function PauseMenu::onSleep(%this)
|
|
||||||
{
|
|
||||||
if($Server::ServerType $= "SinglePlayer")
|
|
||||||
{
|
|
||||||
$timescale = 1;
|
|
||||||
sfxSetChannelVolume( $SimAudioType, $pref::SFX::channelVolume[ $SimAudioType ] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function openPauseMenuOptions()
|
|
||||||
{
|
|
||||||
PauseMenu.pushPage(OptionsMenu);
|
|
||||||
}
|
|
||||||
|
|
||||||
function pauseMenuExitToMenu()
|
|
||||||
{
|
|
||||||
MessageBoxOKCancel("Exit?", "Do you wish to exit to the Main Menu?", "escapeFromGame();", "");
|
|
||||||
}
|
|
||||||
|
|
||||||
function pauseMenuExitToDesktop()
|
|
||||||
{
|
|
||||||
MessageBoxOKCancel("Exit?", "Do you wish to exit to the desktop?", "quit();", "");
|
|
||||||
}
|
|
||||||
|
|
||||||
function PauseButtonHolder::onWake(%this)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
<GUIAsset
|
|
||||||
AssetName="recordingsDlg"
|
|
||||||
GUIFile="@assetFile=RecordingsDlg.gui"
|
|
||||||
VersionId="1"/>
|
|
||||||
BIN
Templates/BaseGame/game/data/UI/images/backdrop.png
Normal file
BIN
Templates/BaseGame/game/data/UI/images/backdrop.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.2 KiB |
|
|
@ -0,0 +1,3 @@
|
||||||
|
<ImageAsset
|
||||||
|
AssetName="backdrop_image"
|
||||||
|
imageFile="@assetFile=backdrop.png"/>
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
<ImageAsset
|
||||||
|
AssetName="textEditFrame_image"
|
||||||
|
imageFile="@assetFile=textEditFrame.png"/>
|
||||||
|
|
@ -1,50 +0,0 @@
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// Copyright (c) 2012 GarageGames, LLC
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
// of this software and associated documentation files (the "Software"), to
|
|
||||||
// deal in the Software without restriction, including without limitation the
|
|
||||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
// sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
// furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
// IN THE SOFTWARE.
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
function GuiTreeViewCtrl::onDefineIcons( %this )
|
|
||||||
{
|
|
||||||
%icons = "core/art/gui/images/treeview/default:" @
|
|
||||||
"core/art/gui/images/treeview/simgroup:" @
|
|
||||||
"core/art/gui/images/treeview/simgroup_closed:" @
|
|
||||||
"core/art/gui/images/treeview/simgroup_selected:" @
|
|
||||||
"core/art/gui/images/treeview/simgroup_selected_closed:" @
|
|
||||||
"core/art/gui/images/treeview/hidden:" @
|
|
||||||
"core/art/gui/images/treeview/shll_icon_passworded_hi:" @
|
|
||||||
"core/art/gui/images/treeview/shll_icon_passworded:" @
|
|
||||||
"core/art/gui/images/treeview/default";
|
|
||||||
|
|
||||||
%this.buildIconTable(%icons);
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiTreeViewCtrl::handleRenameObject( %this, %name, %obj )
|
|
||||||
{
|
|
||||||
%inspector = GuiInspector::findByObject( %obj );
|
|
||||||
|
|
||||||
if( isObject( %inspector ) )
|
|
||||||
{
|
|
||||||
%field = ( %this.renameInternal ) ? "internalName" : "name";
|
|
||||||
%inspector.setObjectField( %field, %name );
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
@ -1,90 +0,0 @@
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// Copyright (c) 2012 GarageGames, LLC
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
// of this software and associated documentation files (the "Software"), to
|
|
||||||
// deal in the Software without restriction, including without limitation the
|
|
||||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
// sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
// furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
// IN THE SOFTWARE.
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
function HelpDlg::onWake(%this)
|
|
||||||
{
|
|
||||||
HelpFileList.entryCount = 0;
|
|
||||||
HelpFileList.clear();
|
|
||||||
for(%file = findFirstFile("*.hfl"); %file !$= ""; %file = findNextFile("*.hfl"))
|
|
||||||
{
|
|
||||||
HelpFileList.fileName[HelpFileList.entryCount] = %file;
|
|
||||||
HelpFileList.addRow(HelpFileList.entryCount, fileBase(%file));
|
|
||||||
HelpFileList.entryCount++;
|
|
||||||
}
|
|
||||||
HelpFileList.sortNumerical(0);
|
|
||||||
for(%i = 0; %i < HelpFileList.entryCount; %i++)
|
|
||||||
{
|
|
||||||
%rowId = HelpFileList.getRowId(%i);
|
|
||||||
%text = HelpFileList.getRowTextById(%rowId);
|
|
||||||
%text = %i + 1 @ ". " @ restWords(%text);
|
|
||||||
HelpFileList.setRowById(%rowId, %text);
|
|
||||||
}
|
|
||||||
HelpFileList.setSelectedRow(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
function HelpFileList::onSelect(%this, %row)
|
|
||||||
{
|
|
||||||
%fo = new FileObject();
|
|
||||||
%fo.openForRead(%this.fileName[%row]);
|
|
||||||
%text = "";
|
|
||||||
while(!%fo.isEOF())
|
|
||||||
%text = %text @ %fo.readLine() @ "\n";
|
|
||||||
|
|
||||||
%fo.delete();
|
|
||||||
HelpText.setText(%text);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getHelp(%helpName)
|
|
||||||
{
|
|
||||||
Canvas.pushDialog(HelpDlg);
|
|
||||||
if(%helpName !$= "")
|
|
||||||
{
|
|
||||||
%index = HelpFileList.findTextIndex(%helpName);
|
|
||||||
HelpFileList.setSelectedRow(%index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function contextHelp()
|
|
||||||
{
|
|
||||||
for(%i = 0; %i < Canvas.getCount(); %i++)
|
|
||||||
{
|
|
||||||
if(Canvas.getObject(%i).getName() $= HelpDlg)
|
|
||||||
{
|
|
||||||
Canvas.popDialog(HelpDlg);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
%content = Canvas.getContent();
|
|
||||||
%helpPage = %content.getHelpPage();
|
|
||||||
getHelp(%helpPage);
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiControl::getHelpPage(%this)
|
|
||||||
{
|
|
||||||
return %this.helpPage;
|
|
||||||
}
|
|
||||||
|
|
||||||
function GuiMLTextCtrl::onURL(%this, %url)
|
|
||||||
{
|
|
||||||
gotoWebPage( %url );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,729 +0,0 @@
|
||||||
//==============================================================================
|
|
||||||
// Menu Input Buttons
|
|
||||||
// This file manages the Menu Input Buttons stuff
|
|
||||||
// Any time you have a GUI button that should be clickable AND map to a key input
|
|
||||||
// such as a gamepad button, or enter, etc, this stuff can be used
|
|
||||||
//==============================================================================
|
|
||||||
/*
|
|
||||||
Gamepad input reference for 360 controller
|
|
||||||
btn_a = A
|
|
||||||
btn_b = B
|
|
||||||
btn_x = X
|
|
||||||
btn_y = Y
|
|
||||||
btn_r = Right Bumper
|
|
||||||
btn_l = Right Bumper
|
|
||||||
upov = Dpad Up
|
|
||||||
dpov = Dpad Down
|
|
||||||
lpov = Dpad Left
|
|
||||||
rpov = Dpad Right
|
|
||||||
xaxis = Left Stick | + values = up, - values = down
|
|
||||||
yaxis = Left Stick | + values = up, - values = down
|
|
||||||
rxaxis = Right Stick | + values = up, - values = down
|
|
||||||
ryaxis = Right Stick | + values = up, - values = down
|
|
||||||
zaxis = Left Trigger
|
|
||||||
rzaxis = Right Trigger
|
|
||||||
btn_start = Start
|
|
||||||
btn_back = Back/Select
|
|
||||||
*/
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// This is used with the main UI menu lists, when a non-axis input event is called
|
|
||||||
/// such as pressing a button
|
|
||||||
/// It is called from the engine
|
|
||||||
///
|
|
||||||
/// \param %device (string) The name of the device the input event is coming fromt
|
|
||||||
/// \param %action (string) The specific key/input action
|
|
||||||
/// \param %state (bool) The down/up state of the event sent
|
|
||||||
function UIMenuButtonList::onInputEvent(%this, %device, %action, %state)
|
|
||||||
{
|
|
||||||
if(%state)
|
|
||||||
$activeMenuButtonContainer.processInputs(%device, %action);
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// This is used with the main UI menu lists, when an axis input event is called
|
|
||||||
/// such as moving a joystick
|
|
||||||
/// It is called from the engine
|
|
||||||
///
|
|
||||||
/// \param %device (string) The name of the device the input event is coming fromt
|
|
||||||
/// \param %action (string) The specific key/input action
|
|
||||||
/// \param %axisVal (float) The float value of the axis event
|
|
||||||
function UIMenuButtonList::onAxisEvent(%this, %device, %action, %axisVal)
|
|
||||||
{
|
|
||||||
//Skip out of the value is too low as it could just be noise or miscalibrated defaults
|
|
||||||
if(%axisVal < 0.02)
|
|
||||||
return;
|
|
||||||
|
|
||||||
$activeMenuButtonContainer.processAxisEvent(%device, %action);
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Sets the command and text for the specified button. If %text and %command
|
|
||||||
/// are left empty, the button will be disabled and hidden.
|
|
||||||
///
|
|
||||||
/// \param %gamepadButton (string) The button to set for when using gamepad input. See the input map reference comment at the top of the file
|
|
||||||
/// \param %keyboardButton (string) The button to set for when using keyboard/mouse input.
|
|
||||||
/// \param %text (string) The text to display next to the A button graphic.
|
|
||||||
/// \param %command (string) The command executed when the A button is pressed.
|
|
||||||
function MenuInputButton::set(%this, %gamepadButton, %keyboardButton, %text, %command)
|
|
||||||
{
|
|
||||||
%this.setHidden(false);
|
|
||||||
|
|
||||||
%set = (! ((%text $= "") && (%command $= "")));
|
|
||||||
|
|
||||||
%this.gamepadButton = %gamepadButton;
|
|
||||||
%this.keyboardButton = %keyboardButton;
|
|
||||||
|
|
||||||
if(%gamepadButton $= "")
|
|
||||||
%this.gamepadValid = false;
|
|
||||||
else
|
|
||||||
%this.gamepadValid = true;
|
|
||||||
|
|
||||||
if(%keyboardButton $= "")
|
|
||||||
%this.kbmValid = false;
|
|
||||||
else
|
|
||||||
%this.kbmValid = true;
|
|
||||||
|
|
||||||
if((!%this.kbmValid && $activeControllerType !$= "gamepad") ||
|
|
||||||
(!%this.gamepadValid && $activeControllerType $= "gamepad"))
|
|
||||||
%set = false;
|
|
||||||
|
|
||||||
%this.setText(%text);
|
|
||||||
%this.Command = %command;
|
|
||||||
|
|
||||||
%this.refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Disables the MenuInputButton, marking it as not to consume inputs or display
|
|
||||||
function MenuInputButton::disable(%this)
|
|
||||||
{
|
|
||||||
%this.setText("");
|
|
||||||
%this.Command = "";
|
|
||||||
%this.setActive(false);
|
|
||||||
%this.setVisible(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Refreshes the specific button, updating it's visbility status and the displayed input image
|
|
||||||
function MenuInputButton::refresh(%this)
|
|
||||||
{
|
|
||||||
%set = (! ((%this.text $= "") && (%this.command $= "")));
|
|
||||||
|
|
||||||
//Do a check so if a MenuInput is selectively bound and we're not using the
|
|
||||||
//matched input type, then we skip
|
|
||||||
if((!%this.kbmValid && $activeControllerType !$= "gamepad") ||
|
|
||||||
(!%this.gamepadValid && $activeControllerType $= "gamepad"))
|
|
||||||
%set = false;
|
|
||||||
|
|
||||||
%this.setActive(%set);
|
|
||||||
%this.setVisible(%set);
|
|
||||||
|
|
||||||
if(!%this.isActive())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if($activeControllerType $= "gamepad")
|
|
||||||
{
|
|
||||||
if(%this.gamepadButton !$= "")
|
|
||||||
{
|
|
||||||
%assetId = "";
|
|
||||||
if($activeControllerName $= "PS4 Controller")
|
|
||||||
{
|
|
||||||
%assetId = "UI:PS4_";
|
|
||||||
|
|
||||||
if(%this.gamepadButton $= "btn_a")
|
|
||||||
%assetId = %assetId @ "Cross";
|
|
||||||
else if(%this.gamepadButton $= "btn_b")
|
|
||||||
%assetId = %assetId @ "Circle";
|
|
||||||
else if(%this.gamepadButton $= "btn_x")
|
|
||||||
%assetId = %assetId @ "Square";
|
|
||||||
else if(%this.gamepadButton $= "btn_y")
|
|
||||||
%assetId = %assetId @ "Triangle";
|
|
||||||
else if(%this.gamepadButton $= "btn_l")
|
|
||||||
%assetId = %assetId @ "L1";
|
|
||||||
else if(%this.gamepadButton $= "zaxis")
|
|
||||||
%assetId = %assetId @ "L2";
|
|
||||||
else if(%this.gamepadButton $= "btn_r")
|
|
||||||
%assetId = %assetId @ "R1";
|
|
||||||
else if(%this.gamepadButton $= "rzaxis")
|
|
||||||
%assetId = %assetId @ "R2";
|
|
||||||
else if(%this.gamepadButton $= "btn_start")
|
|
||||||
%assetId = %assetId @ "Options";
|
|
||||||
else if(%this.gamepadButton $= "btn_back")
|
|
||||||
%assetId = %assetId @ "Share";
|
|
||||||
}
|
|
||||||
else if($activeControllerName $= "Nintendo Switch Pro Controller")
|
|
||||||
{
|
|
||||||
%assetId = "UI:Switch_";
|
|
||||||
|
|
||||||
if(%this.gamepadButton $= "btn_a")
|
|
||||||
%assetId = %assetId @ "B";
|
|
||||||
else if(%this.gamepadButton $= "btn_b")
|
|
||||||
%assetId = %assetId @ "A";
|
|
||||||
else if(%this.gamepadButton $= "btn_x")
|
|
||||||
%assetId = %assetId @ "Y";
|
|
||||||
else if(%this.gamepadButton $= "btn_y")
|
|
||||||
%assetId = %assetId @ "X";
|
|
||||||
else if(%this.gamepadButton $= "btn_l")
|
|
||||||
%assetId = %assetId @ "LB";
|
|
||||||
else if(%this.gamepadButton $= "zaxis")
|
|
||||||
%assetId = %assetId @ "LT";
|
|
||||||
else if(%this.gamepadButton $= "btn_r")
|
|
||||||
%assetId = %assetId @ "RB";
|
|
||||||
else if(%this.gamepadButton $= "rzaxis")
|
|
||||||
%assetId = %assetId @ "RT";
|
|
||||||
else if(%this.gamepadButton $= "btn_start")
|
|
||||||
%assetId = %assetId @ "Plus";
|
|
||||||
else if(%this.gamepadButton $= "btn_back")
|
|
||||||
%assetId = %assetId @ "Minus";
|
|
||||||
}
|
|
||||||
else if($activeControllerName !$= "")
|
|
||||||
{
|
|
||||||
%assetId = "UI:Xbox_";
|
|
||||||
|
|
||||||
if(%this.gamepadButton $= "btn_a")
|
|
||||||
%assetId = %assetId @ "A";
|
|
||||||
else if(%this.gamepadButton $= "btn_b")
|
|
||||||
%assetId = %assetId @ "B";
|
|
||||||
else if(%this.gamepadButton $= "btn_x")
|
|
||||||
%assetId = %assetId @ "X";
|
|
||||||
else if(%this.gamepadButton $= "btn_y")
|
|
||||||
%assetId = %assetId @ "Y";
|
|
||||||
else if(%this.gamepadButton $= "btn_l")
|
|
||||||
%assetId = %assetId @ "LB";
|
|
||||||
else if(%this.gamepadButton $= "zaxis")
|
|
||||||
%assetId = %assetId @ "LT";
|
|
||||||
else if(%this.gamepadButton $= "btn_r")
|
|
||||||
%assetId = %assetId @ "RB";
|
|
||||||
else if(%this.gamepadButton $= "rzaxis")
|
|
||||||
%assetId = %assetId @ "RT";
|
|
||||||
else if(%this.gamepadButton $= "btn_start")
|
|
||||||
%assetId = %assetId @ "Menu";
|
|
||||||
else if(%this.gamepadButton $= "btn_back")
|
|
||||||
%assetId = %assetId @ "Windows";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(%this.keyboardButton !$= "")
|
|
||||||
{
|
|
||||||
%assetId = "UI:Keyboard_Black_" @ %this.keyboardButton;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
%this.setBitmap(%assetId @ "_image");
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Refreshes a menu input container, updating the buttons inside it
|
|
||||||
function MenuInputButtonContainer::refresh(%this)
|
|
||||||
{
|
|
||||||
%count = %this.getCount();
|
|
||||||
for(%i=0; %i < %count; %i++)
|
|
||||||
{
|
|
||||||
%btn = %this.getObject(%i);
|
|
||||||
|
|
||||||
%btn.refresh();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Sets the given MenuInputButtonContainer as the active one. This directs input events
|
|
||||||
/// to it's buttons, ensures it's visible, and auto-hides the old active container if it was set
|
|
||||||
function MenuInputButtonContainer::setActive(%this)
|
|
||||||
{
|
|
||||||
if(isObject($activeMenuButtonContainer))
|
|
||||||
$activeMenuButtonContainer.hidden = true;
|
|
||||||
|
|
||||||
$activeMenuButtonContainer = %this;
|
|
||||||
$activeMenuButtonContainer.hidden = false;
|
|
||||||
$activeMenuButtonContainer.refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Checks the input manager for if we have a gamepad active and gets it's name
|
|
||||||
/// If we have one, also sets the active input type to gamepad
|
|
||||||
function MenuInputButtonContainer::checkGamepad(%this)
|
|
||||||
{
|
|
||||||
%controllerName = SDLInputManager::JoystickNameForIndex(0);
|
|
||||||
|
|
||||||
$activeControllerName = %controllerName;
|
|
||||||
|
|
||||||
if($activeControllerName $= "")
|
|
||||||
$activeControllerType = "K&M";
|
|
||||||
else
|
|
||||||
$activeControllerType = "gamepad";
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// This is called by the earlier inputs callback that comes from the menu list
|
|
||||||
/// this allows us to first check what the input type is, and if the device is different
|
|
||||||
/// (such as going from keyboard and mouse to gamepad) we can refresh the buttons to update
|
|
||||||
/// the display
|
|
||||||
/// Then we process the input to see if it matches to any of the button maps for our
|
|
||||||
/// MenuInputButtons. If we have a match, we execute it's command.
|
|
||||||
///
|
|
||||||
/// \param %device (string) The device that is causing the input event
|
|
||||||
/// \param %action (string) The name of the input action
|
|
||||||
function MenuInputButtonContainer::processInputs(%this, %device, %action)
|
|
||||||
{
|
|
||||||
//check to see if our status has changed
|
|
||||||
%changed = false;
|
|
||||||
|
|
||||||
%oldDevice = $activeControllerName;
|
|
||||||
|
|
||||||
%deviceName = stripTrailingNumber(%device);
|
|
||||||
|
|
||||||
if(%deviceName $= "keyboard" || %deviceName $= "mouse")
|
|
||||||
{
|
|
||||||
if($activeControllerName !$= "K&M")
|
|
||||||
%changed = true;
|
|
||||||
|
|
||||||
$activeControllerName = "K&M";
|
|
||||||
$activeControllerType = "K&M";
|
|
||||||
Canvas.showCursor();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(%this.checkGamepad())
|
|
||||||
{
|
|
||||||
Canvas.hideCursor();
|
|
||||||
}
|
|
||||||
|
|
||||||
if($activeControllerType !$= %oldDevice)
|
|
||||||
%changed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(%changed)
|
|
||||||
%this.refresh();
|
|
||||||
|
|
||||||
//Now process the input for the button accelerator, if applicable
|
|
||||||
//Set up our basic buttons
|
|
||||||
for(%i=0; %i < %this.getCount(); %i++)
|
|
||||||
{
|
|
||||||
%btn = %this.getObject(%i);
|
|
||||||
|
|
||||||
if(!%btn.isActive())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if($activeControllerType !$= "K&M")
|
|
||||||
{
|
|
||||||
if(%btn.gamepadButton $= %action)
|
|
||||||
{
|
|
||||||
eval(%btn.command);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(%btn.keyboardButton $= %action)
|
|
||||||
{
|
|
||||||
eval(%btn.command);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// This is called by the earlier inputs callback that comes from the menu list
|
|
||||||
/// this allows us to first check what the input type is, and if the device is different
|
|
||||||
/// (such as going from keyboard and mouse to gamepad) we can refresh the buttons to update
|
|
||||||
/// the display
|
|
||||||
///
|
|
||||||
/// \param %device (string) The name of the device the input event is coming fromt
|
|
||||||
/// \param %action (string) The specific key/input action
|
|
||||||
/// \param %axisVal (float) The float value of the axis event
|
|
||||||
function MenuInputButtonContainer::processAxisEvent(%this, %device, %action, %axisVal)
|
|
||||||
{
|
|
||||||
//check to see if our status has changed
|
|
||||||
%changed = false;
|
|
||||||
|
|
||||||
%oldDevice = $activeControllerName;
|
|
||||||
|
|
||||||
%deviceName = stripTrailingNumber(%device);
|
|
||||||
|
|
||||||
if(%deviceName $= "mouse")
|
|
||||||
{
|
|
||||||
if($activeControllerName !$= "K&M")
|
|
||||||
%changed = true;
|
|
||||||
|
|
||||||
$activeControllerName = "K&M";
|
|
||||||
$activeControllerType = "K&M";
|
|
||||||
Canvas.showCursor();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(%this.checkGamepad())
|
|
||||||
{
|
|
||||||
Canvas.hideCursor();
|
|
||||||
}
|
|
||||||
|
|
||||||
if($activeControllerType !$= %oldDevice)
|
|
||||||
%changed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(%changed)
|
|
||||||
%this.refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
//
|
|
||||||
function onSDLDeviceConnected(%sdlIndex, %deviceName, %deviceType)
|
|
||||||
{
|
|
||||||
/*if(GamepadButtonsGui.checkGamepad())
|
|
||||||
{
|
|
||||||
GamepadButtonsGui.hidden = false;
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
function onSDLDeviceDisconnected(%sdlIndex)
|
|
||||||
{
|
|
||||||
/*if(!GamepadButtonsGui.checkGamepad())
|
|
||||||
{
|
|
||||||
GamepadButtonsGui.hidden = true;
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
// Menu Input processing
|
|
||||||
// These functions manage the Menu input processing in general
|
|
||||||
// Whenever a MenuInputHandler consumes an input event, it'll process them here
|
|
||||||
// This'll let the active menu list be navigated, as well as buttons be processed
|
|
||||||
// and ultimately handled by the Input Buttons above
|
|
||||||
//==============================================================================
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// This is used with the main UI menu lists, when an axis input event is called
|
|
||||||
/// such as moving a joystick
|
|
||||||
/// It is called from the engine
|
|
||||||
///
|
|
||||||
/// \param %device (string) The name of the device the input event is coming fromt
|
|
||||||
/// \param %action (string) The specific key/input action
|
|
||||||
/// \param %axisVal (float) The float value of the axis event
|
|
||||||
function MenuInputHandler::onAxisEvent(%this, %device, %action, %value)
|
|
||||||
{
|
|
||||||
//this is to force a refresh of the menu
|
|
||||||
if(%value == 1 || %value == -1)
|
|
||||||
$activeMenuButtonContainer.processInputs(%device, %action);
|
|
||||||
|
|
||||||
if(startsWith(%device, "mouse"))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if((%action $= "upov" && %value > 0) || (%action $= "yaxis" && %value == -1))
|
|
||||||
{
|
|
||||||
$activeMenuList.navigateUp();
|
|
||||||
}
|
|
||||||
|
|
||||||
if((%action $= "dpov" && %value > 0) || (%action $= "yaxis" && %value == 1))
|
|
||||||
{
|
|
||||||
$activeMenuList.navigateDown();
|
|
||||||
}
|
|
||||||
|
|
||||||
//How we deal with the left and right navigation is dependant on the mode of the
|
|
||||||
//menu list
|
|
||||||
if($activeMenuListMode $= "Settings")
|
|
||||||
{
|
|
||||||
if((%action $= "lpov" && %value > 0) || (%action $= "xaxis" && %value == -1))
|
|
||||||
{
|
|
||||||
echo("Options menu nudged left!");
|
|
||||||
//$activeMenuList.navigateLeft();
|
|
||||||
}
|
|
||||||
|
|
||||||
if((%action $= "rpov" && %value > 0) || (%action $= "xaxis" && %value == -1))
|
|
||||||
{
|
|
||||||
echo("Options menu nudged right!");
|
|
||||||
//$activeMenuList.navigateRight();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if((%action $= "lpov" && %value > 0) || (%action $= "xaxis" && %value == -1))
|
|
||||||
{
|
|
||||||
$activeMenuList.navigateLeft();
|
|
||||||
}
|
|
||||||
|
|
||||||
if((%action $= "rpov" && %value > 0) || (%action $= "xaxis" && %value == -1))
|
|
||||||
{
|
|
||||||
$activeMenuList.navigateRight();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// This is used with the main UI menu lists, when a non-axis input event is called
|
|
||||||
/// such as pressing a button
|
|
||||||
/// It is called from the engine
|
|
||||||
///
|
|
||||||
/// \param %device (string) The name of the device the input event is coming fromt
|
|
||||||
/// \param %action (string) The specific key/input action
|
|
||||||
/// \param %state (bool) The down/up state of the event sent
|
|
||||||
function MenuInputHandler::onInputEvent(%this, %device, %action, %state)
|
|
||||||
{
|
|
||||||
if(%action $= "upov" || %action $= "dpov" || %action $= "lpov" || %action $= "rpov")
|
|
||||||
{
|
|
||||||
%this.onAxisEvent(%device, %action, %state);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(%state)
|
|
||||||
$activeMenuButtonContainer.processInputs(%device, %action);
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
// Menu List processing
|
|
||||||
// These functions manage the navigation and activation of the Menu Lists
|
|
||||||
//==============================================================================
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Is the GUIContainer with this MenuList namespace the 'active' menulist as far
|
|
||||||
/// as UI interfaces is concerned?
|
|
||||||
function MenuList::isActiveMenuList(%this)
|
|
||||||
{
|
|
||||||
if($activeMenuList == %this)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Sets the GUIContainer with this MenuList namespace as the active menulist.
|
|
||||||
/// This means that any input events caught in MenuInputHandlers is directed at
|
|
||||||
/// this menu list to navigate it
|
|
||||||
///
|
|
||||||
/// \param %startPosition (Point2F) The X and Y starting positions of the selection for this menuList
|
|
||||||
/// \param %menuMode (string) Indicates the mode/type of menuList, allowing for special behaviors depending on type
|
|
||||||
function MenuList::setAsActiveMenuList(%this, %startPosition, %menuMode)
|
|
||||||
{
|
|
||||||
if(%startPosition $= "")
|
|
||||||
%startPosition = "0 0";
|
|
||||||
|
|
||||||
if(%menuMode $= "")
|
|
||||||
%menuMode = "Menu";
|
|
||||||
|
|
||||||
$activeMenuList = %this;
|
|
||||||
$activeMenuList.hidden = false;
|
|
||||||
$activeMenuList.ListPosition = %startPosition;
|
|
||||||
$activeMenuListMode = %menuMode;
|
|
||||||
|
|
||||||
%this.refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Activates the currently highlighted child object
|
|
||||||
function MenuList::activate(%this)
|
|
||||||
{
|
|
||||||
//check for a highlighted element
|
|
||||||
if($activeMenuList.ListPosition.y > -1 && $activeMenuList.ListPosition < $activeMenuList.getCount())
|
|
||||||
{
|
|
||||||
%btn = $activeMenuList.getObject($activeMenuList.ListPosition.y);
|
|
||||||
%btn.performClick();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// refreshes the menuList, updating children highlight status and if there is
|
|
||||||
/// a button pointer control defined on our list, we update it's position as
|
|
||||||
/// needed
|
|
||||||
function MenuList::refresh(%this)
|
|
||||||
{
|
|
||||||
%selectedObject = -1;
|
|
||||||
for(%i=0; %i < $activeMenuList.getCount(); %i++)
|
|
||||||
{
|
|
||||||
%btn = $activeMenuList.getObject(%i);
|
|
||||||
|
|
||||||
%isSelected = %i == $activeMenuList.ListPosition.y;
|
|
||||||
|
|
||||||
%btn.setHighlighted(%isSelected);
|
|
||||||
|
|
||||||
if(%isSelected)
|
|
||||||
%selectedObject = %i;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isObject(%this.buttonPointerCtrl))
|
|
||||||
{
|
|
||||||
if(%selectedObject != -1)
|
|
||||||
{
|
|
||||||
%this.buttonPointerCtrl.setHidden(false);
|
|
||||||
|
|
||||||
%buttonCenter = $activeMenuList.getObject(%selectedObject).getGlobalCenter();
|
|
||||||
|
|
||||||
if(%this.centerButtonPointerCtrl)
|
|
||||||
{
|
|
||||||
%this.buttonPointerCtrl.setCenter(%buttonCenter.x, %buttonCenter.y);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//if we're not centering, then left-justify
|
|
||||||
%this.buttonPointerCtrl.setCenter(%buttonCenter.x - $activeMenuList.getObject(%selectedObject).extent.x / 2, %buttonCenter.y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
%this.buttonPointerCtrl.setHidden(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if($activeMenuList.isMethod("onNavigate"))
|
|
||||||
$activeMenuList.onNavigate($activeMenuList.ListPosition.y);
|
|
||||||
|
|
||||||
%parent = $activeMenuList.getParent();
|
|
||||||
if(%parent.getClassName() $= "GuiScrollCtrl")
|
|
||||||
{
|
|
||||||
%parent.scrollToObject(%selectedObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Selects the next 'up' child item in the menuList. If the current is the topmost
|
|
||||||
/// then nothing happens
|
|
||||||
function MenuList::navigateUp(%this)
|
|
||||||
{
|
|
||||||
$activeMenuList.ListPosition.y -= 1;
|
|
||||||
if($activeMenuList.ListPosition.y < 0)
|
|
||||||
$activeMenuList.ListPosition.y = 0;
|
|
||||||
|
|
||||||
%this.refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Selects the next 'down' child item in the menuList. If the current is the bottommost
|
|
||||||
/// then nothing happens
|
|
||||||
function MenuList::navigateDown(%this)
|
|
||||||
{
|
|
||||||
$activeMenuList.ListPosition.y += 1;
|
|
||||||
if($activeMenuList.ListPosition.y >= $activeMenuList.getCount())
|
|
||||||
$activeMenuList.ListPosition.y = $activeMenuList.getCount()-1;
|
|
||||||
|
|
||||||
%this.refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Selects the next 'left' child item in the menuList. If the current item is the leftmost
|
|
||||||
/// then nothing happens
|
|
||||||
function MenuList::navigateLeft()
|
|
||||||
{
|
|
||||||
//Atm, we're only handling specific control types, namely options entries, but
|
|
||||||
//this could readily be expanded upon to handle grids like for inventory screens
|
|
||||||
//or the like
|
|
||||||
|
|
||||||
%btn = $activeMenuList.getObject($activeMenuList.ListPosition.y);
|
|
||||||
if(%btn.getClassName() $= "GuiGameSettingsCtrl" && %btn.isEnabled())
|
|
||||||
{
|
|
||||||
%mode = %btn.getMode();
|
|
||||||
if(%mode == 0) //options list
|
|
||||||
{
|
|
||||||
%optionId = %btn.getCurrentOptionIndex() - 1;
|
|
||||||
%btn.selectOptionByIndex(%optionId);
|
|
||||||
%btn.onChange();
|
|
||||||
}
|
|
||||||
else if(%mode == 1) //slider
|
|
||||||
{
|
|
||||||
%value = %btn.getValue();
|
|
||||||
%adjustedValue = %value - %btn.getIncrement();
|
|
||||||
%minValue = %btn.getRange().x;
|
|
||||||
if(%adjustedValue < %minValue)
|
|
||||||
%adjustedValue = %minValue;
|
|
||||||
|
|
||||||
%btn.setValue(%adjustedValue);
|
|
||||||
%btn.onChange();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Selects the next 'right' child item in the menuList. If the current item is the rightmost
|
|
||||||
/// then nothing happens
|
|
||||||
function MenuList::navigateRight()
|
|
||||||
{
|
|
||||||
%btn = $activeMenuList.getObject($activeMenuList.ListPosition.y);
|
|
||||||
if(%btn.getClassName() $= "GuiGameSettingsCtrl" && %btn.isEnabled())
|
|
||||||
{
|
|
||||||
%mode = %btn.getMode();
|
|
||||||
if(%mode == 0) //options list
|
|
||||||
{
|
|
||||||
%optionId = %btn.getCurrentOptionIndex() + 1;
|
|
||||||
%btn.selectOptionByIndex(%optionId);
|
|
||||||
%btn.onChange();
|
|
||||||
}
|
|
||||||
else if(%mode == 1) //slider
|
|
||||||
{
|
|
||||||
%value = %btn.getValue();
|
|
||||||
%adjustedValue = %value + %btn.getIncrement();
|
|
||||||
%maxValue = %btn.getRange().y;
|
|
||||||
if(%adjustedValue > %maxValue)
|
|
||||||
%adjustedValue = %maxValue;
|
|
||||||
|
|
||||||
%btn.setValue(%adjustedValue);
|
|
||||||
%btn.onChange();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Gets the current vertical positionally selected child object
|
|
||||||
function MenuList::getActiveRow(%this)
|
|
||||||
{
|
|
||||||
return $activeMenuList.ListPosition.y;
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Called from the engine when a GUIButtonBase-derived class with MenuListButton namespace class
|
|
||||||
/// has its highlighting status changed. Allows us to react to this change of state and trigger refreshse
|
|
||||||
/// or other events to keep the navigation tracking up to date
|
|
||||||
///
|
|
||||||
/// \param %state (bool) The on/off state of the button being highlighted
|
|
||||||
function MenuListButton::onHighlighted(%this, %state)
|
|
||||||
{
|
|
||||||
echo("MenuListButton::onHighlighted() - " @ %this.internalName @ " was " @ %state @ " highlighted");
|
|
||||||
%parentContainer = %this.getParent();
|
|
||||||
if(%parentContainer.class $= "MenuList" || %parentContainer.superClass $= "MenuList")
|
|
||||||
{
|
|
||||||
if(isObject(%parentContainer.buttonPointerCtrl))
|
|
||||||
{
|
|
||||||
if(%state)
|
|
||||||
{
|
|
||||||
%parentContainer.buttonPointerCtrl.setHidden(false);
|
|
||||||
|
|
||||||
%buttonCenter = %this.getGlobalCenter();
|
|
||||||
echo(" - button center:" @ %buttonCenter);
|
|
||||||
|
|
||||||
if(%parentContainer.centerButtonPointerCtrl)
|
|
||||||
{
|
|
||||||
%parentContainer.buttonPointerCtrl.setGlobalCenter(%buttonCenter.x, %buttonCenter.y);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//if we're not centering, then left-justify
|
|
||||||
%parentContainer.buttonPointerCtrl.setGlobalCenter(%buttonCenter.x - %this.extent.x / 2, %buttonCenter.y);
|
|
||||||
}
|
|
||||||
echo(" - pointer position:" @ %parentContainer.buttonPointerCtrl.getPosition());
|
|
||||||
}
|
|
||||||
/*else
|
|
||||||
{
|
|
||||||
%parentContainer.buttonPointerCtrl.setHidden(true);
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,308 +0,0 @@
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// This function sets the root page for the navigation stack. The root page is 'below'
|
|
||||||
/// all other normal pages and cannot be popped like a normal page.
|
|
||||||
/// When we set a new root page, we first check if we have an existing root page.
|
|
||||||
/// If we do, we run the usual canClose() then onClose() function pair, then we
|
|
||||||
/// set it and call the onOpen() for the new root page.
|
|
||||||
///
|
|
||||||
/// \param %rootPage (guiControl) The new guiControl that is being set as the root page of the navigation stack
|
|
||||||
function UINavigation::setRootPage(%this, %rootPage)
|
|
||||||
{
|
|
||||||
if(!isObject(%this.pageStack))
|
|
||||||
{
|
|
||||||
%this.pageStack = new ArrayObject();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(%this.rootPage $= %rootPage)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(isObject(%this.rootPage))
|
|
||||||
{
|
|
||||||
%canClose = true;
|
|
||||||
if(%this.rootPage.isMethod("canClose"))
|
|
||||||
%canClose = %this.rootPage.call("canClose");
|
|
||||||
|
|
||||||
if(!%canClose)
|
|
||||||
return; //if we're not allowed to close, just bail out wholesale because clearly
|
|
||||||
//something is blocking changes to pages
|
|
||||||
|
|
||||||
%this.remove(%this.rootPage);
|
|
||||||
if(%this.rootPage.isMethod("onClose"))
|
|
||||||
%this.rootPage.call("onClose");
|
|
||||||
|
|
||||||
%this.rootPage.navigation = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
%this.rootPage = %rootPage;
|
|
||||||
|
|
||||||
%this.add(%rootPage);
|
|
||||||
if(%this.resizePages)
|
|
||||||
{
|
|
||||||
%rootPage.resize(%this.position.x, %this.position.y,
|
|
||||||
%this.extent.x, %this.extent.y);
|
|
||||||
}
|
|
||||||
%rootPage.navigation = %this;
|
|
||||||
|
|
||||||
if(%rootPage.isMethod("onOpen"))
|
|
||||||
%rootPage.call("onOpen");
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// This function pushes a page onto the given UINavigation-classed GUIContainer's stack
|
|
||||||
/// The order of operations is thus:
|
|
||||||
/// 1) check to see if the new page being pushed says it can open via the canOpen() function.
|
|
||||||
/// If this method is not defined, it defaults to true, as there's no impediment to continuing
|
|
||||||
/// If this check returns false, the pushPage event cancels.
|
|
||||||
/// 2) check to see if the current page on the stack says it can close. Similar to
|
|
||||||
/// the canOpen() check on the new page, we default to true
|
|
||||||
/// If this check returns false, the pushPage event cancels.
|
|
||||||
/// 3) Call - if defined - onClose() on the current top page of the stack
|
|
||||||
/// 4) Add the new page onto the stack
|
|
||||||
/// 5) Call - if defined - onOpen() on the new page
|
|
||||||
/// 6) Finally, if we defined a callback, call that.
|
|
||||||
/// With this all run, the previous top page has done any cleanup work it needed to
|
|
||||||
/// and the new top page has been opened successfully.
|
|
||||||
///
|
|
||||||
/// \param %newPage (guiControl) The new guiControl that is being added onto the page stack
|
|
||||||
/// \param %callback[optional]: (Evaluable string) A evalable statement to invoke when the push has been completed
|
|
||||||
function UINavigation::pushPage(%this, %newPage, %callback)
|
|
||||||
{
|
|
||||||
if(!isObject(%this.pageStack))
|
|
||||||
{
|
|
||||||
%this.pageStack = new ArrayObject();
|
|
||||||
}
|
|
||||||
|
|
||||||
//don't re-add pages
|
|
||||||
if(%this.getPageCount() != 0 &&
|
|
||||||
%this.pageStack.getIndexFromKey(%newPage) != -1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
%canChange = true;
|
|
||||||
if(%newPage.isMethod("canOpen"))
|
|
||||||
%canChange = %newPage.call("canOpen");
|
|
||||||
|
|
||||||
if(!%canChange)
|
|
||||||
return;
|
|
||||||
|
|
||||||
%currentPage = %this.getCurrentPage();
|
|
||||||
if(isObject(%currentPage))
|
|
||||||
{
|
|
||||||
if(%currentPage.isMethod("canClose"))
|
|
||||||
%canChange = %currentPage.call("canClose");
|
|
||||||
|
|
||||||
if(!%canChange)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(%currentPage.isMethod("onClose"))
|
|
||||||
%currentPage.call("onClose");
|
|
||||||
}
|
|
||||||
|
|
||||||
%this.pageStack.push_back(%newPage);
|
|
||||||
%this.add(%newPage);
|
|
||||||
if(%this.resizePages)
|
|
||||||
{
|
|
||||||
%newPage.resize(%this.position.x, %this.position.y,
|
|
||||||
%this.extent.x, %this.extent.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(%newPage.isMethod("onOpen"))
|
|
||||||
%newPage.call("onOpen");
|
|
||||||
|
|
||||||
%newPage.navigation = %this;
|
|
||||||
|
|
||||||
if(%callback !$= "")
|
|
||||||
eval(%callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// This function pops the topmost page off the given UINavigation-classed GUIContainer's stack
|
|
||||||
/// The order of operations is thus:
|
|
||||||
/// 1) check to see if the top page being popped says it can close via the canClose() function.
|
|
||||||
/// If this method is not defined, it defaults to true, as there's no impediment to continuing
|
|
||||||
/// If this check returns false, the popPage event cancels.
|
|
||||||
/// 2) check to see if the previous page on the stack says it can open. Similar to
|
|
||||||
/// the canClose() check on the new page, we default to true
|
|
||||||
/// If this check returns false, the popPage event cancels.
|
|
||||||
/// 3) Call - if defined - onClose() on the current top page of the stack
|
|
||||||
/// 4) Remove the top page
|
|
||||||
/// 5) Call - if defined - onOpen() on the now topmost page
|
|
||||||
/// 6) Finally, if we defined a callback, call that.
|
|
||||||
/// With this all run, the previous top page has done any cleanup work it needed to
|
|
||||||
/// and the new top page has been opened successfully.
|
|
||||||
///
|
|
||||||
/// \param %callback[optional] (Evaluable string) A evalable statement to invoke when the pop has been completed
|
|
||||||
function UINavigation::popPage(%this, %callback)
|
|
||||||
{
|
|
||||||
if(%this.pageStack.count() == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
%currentPage = %this.getCurrentPage();
|
|
||||||
if(isObject(%currentPage))
|
|
||||||
{
|
|
||||||
%canChange = true;
|
|
||||||
if(%currentPage.isMethod("canClose"))
|
|
||||||
%canChange = %currentPage.call("canClose");
|
|
||||||
|
|
||||||
if(!%canChange)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
%prevPage = %this.getPreviousPage();
|
|
||||||
if(isObject(%prevPage))
|
|
||||||
{
|
|
||||||
%canChange = true;
|
|
||||||
if(%prevPage.isMethod("canOpen"))
|
|
||||||
%canChange = %prevPage.call("canOpen");
|
|
||||||
|
|
||||||
if(!%canChange)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isObject(%currentPage))
|
|
||||||
{
|
|
||||||
if(%currentPage.isMethod("onClose"))
|
|
||||||
{
|
|
||||||
%currentPage.call("onClose");
|
|
||||||
}
|
|
||||||
|
|
||||||
%this.pageStack.pop_back();
|
|
||||||
%this.remove(%currentPage);
|
|
||||||
|
|
||||||
%currentPage.navigation = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
%newTopPage = %this.getCurrentPage();
|
|
||||||
if(isObject(%newTopPage))
|
|
||||||
{
|
|
||||||
if(%newTopPage.isMethod("onOpen"))
|
|
||||||
%newTopPage.call("onOpen");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(%callback !$= "")
|
|
||||||
eval(%callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// In order tops the topmost page in a loop until it has closed the entire stack,
|
|
||||||
/// leaving only the root page
|
|
||||||
///
|
|
||||||
/// \param %callback[optional] (Evaluable String) A evalable statement to invoke when the pop has been completed
|
|
||||||
function UINavigation::popToRoot(%this, %callback)
|
|
||||||
{
|
|
||||||
%pageChanged = false;
|
|
||||||
while(%this.getPageCount() != 0)
|
|
||||||
{
|
|
||||||
%currentPage = %this.getCurrentPage();
|
|
||||||
if(isObject(%currentPage))
|
|
||||||
{
|
|
||||||
if(%currentPage.isMethod("canClose"))
|
|
||||||
%canChange = %currentPage.call("canClose");
|
|
||||||
|
|
||||||
if(!%canChange)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
%prevPage = %this.getPreviousPage();
|
|
||||||
if(isObject(%prevPage))
|
|
||||||
{
|
|
||||||
if(%prevPage.isMethod("canOpen"))
|
|
||||||
%canChange = %prevPage.call("canOpen");
|
|
||||||
|
|
||||||
if(!%canChange)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isObject(%currentPage))
|
|
||||||
{
|
|
||||||
if(%currentPage.isMethod("onClose"))
|
|
||||||
{
|
|
||||||
%currentPage.call("onClose");
|
|
||||||
}
|
|
||||||
|
|
||||||
%this.pageStack.pop_back();
|
|
||||||
%this.remove(%currentPage);
|
|
||||||
|
|
||||||
%currentPage.navigation = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
%newTopPage = %this.getCurrentPage();
|
|
||||||
if(%newTopPage.isMethod("onOpen"))
|
|
||||||
%newTopPage.call("onOpen");
|
|
||||||
|
|
||||||
%pageChanged = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(%pageChanged && %callback !$= "")
|
|
||||||
eval(%callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Gets the current, topmost page on the stack. If no non-root pages are on the stack
|
|
||||||
/// the root page is returned
|
|
||||||
function UINavigation::getCurrentPage(%this)
|
|
||||||
{
|
|
||||||
if(isObject(%this.pageStack) && %this.pageStack.count() != 0)
|
|
||||||
{
|
|
||||||
return %this.pageStack.getKey(%this.pageStack.count()-1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(isObject(%this.rootPage))
|
|
||||||
return %this.rootPage;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Gets the page just under the topmost page in the stack. If there is no previous page
|
|
||||||
/// then the root page is returned
|
|
||||||
function UINavigation::getPreviousPage(%this)
|
|
||||||
{
|
|
||||||
if(isObject(%this.pageStack) && %this.pageStack.count() > 1)
|
|
||||||
{
|
|
||||||
return %this.pageStack.getKey(%this.pageStack.count()-2);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(isObject(%this.rootPage))
|
|
||||||
return %this.rootPage;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Gets the number of pages on the stack.
|
|
||||||
function UINavigation::getPageCount(%this)
|
|
||||||
{
|
|
||||||
%count = 0;
|
|
||||||
if(isObject(%this.pageStack))
|
|
||||||
%count = %this.pageStack.count();
|
|
||||||
|
|
||||||
if(isObject(%this.rootPage))
|
|
||||||
%count++;
|
|
||||||
|
|
||||||
return %count;
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
/// Summary:
|
|
||||||
/// Force the page to reprocess to ensure it's status is up to date
|
|
||||||
function UINavigation::refreshPage(%this)
|
|
||||||
{
|
|
||||||
%page = %this.getCurrentPage();
|
|
||||||
if(!isObject(%page))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(%page.isMethod("onOpen"))
|
|
||||||
%page.call("onOpen");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,341 +0,0 @@
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// Copyright (c) 2012 GarageGames, LLC
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
// of this software and associated documentation files (the "Software"), to
|
|
||||||
// deal in the Software without restriction, including without limitation the
|
|
||||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
// sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
// furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
// IN THE SOFTWARE.
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------
|
|
||||||
// Message Sound
|
|
||||||
// --------------------------------------------------------------------
|
|
||||||
/*new SFXDescription(MessageBoxAudioDescription)
|
|
||||||
{
|
|
||||||
volume = 1.0;
|
|
||||||
isLooping = false;
|
|
||||||
is3D = false;
|
|
||||||
channel = $GuiAudioType;
|
|
||||||
};
|
|
||||||
|
|
||||||
new SFXProfile(messageBoxBeep)
|
|
||||||
{
|
|
||||||
filename = "./messageBoxSound";
|
|
||||||
description = MessageBoxAudioDescription;
|
|
||||||
preload = true;
|
|
||||||
};*/
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
// messageCallback
|
|
||||||
// Calls a callback passed to a message box.
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
function messageCallback(%dlg, %callback)
|
|
||||||
{
|
|
||||||
Canvas.popDialog(%dlg);
|
|
||||||
eval(%callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
// MBSetText
|
|
||||||
// Sets the text of a message box and resizes it to accomodate the new string.
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
function MBSetText(%text, %frame, %msg)
|
|
||||||
{
|
|
||||||
// Get the extent of the text box.
|
|
||||||
%ext = %text.getExtent();
|
|
||||||
// Set the text in the center of the text box.
|
|
||||||
%text.setText("<just:center>" @ %msg);
|
|
||||||
// Force the textbox to resize itself vertically.
|
|
||||||
%text.forceReflow();
|
|
||||||
// Grab the new extent of the text box.
|
|
||||||
%newExtent = %text.getExtent();
|
|
||||||
|
|
||||||
// Get the vertical change in extent.
|
|
||||||
%deltaY = getWord(%newExtent, 1) - getWord(%ext, 1);
|
|
||||||
|
|
||||||
// Resize the window housing the text box.
|
|
||||||
%windowPos = %frame.getPosition();
|
|
||||||
%windowExt = %frame.getExtent();
|
|
||||||
%frame.resize(getWord(%windowPos, 0), getWord(%windowPos, 1) - (%deltaY / 2),
|
|
||||||
getWord(%windowExt, 0), getWord(%windowExt, 1) + %deltaY);
|
|
||||||
|
|
||||||
%frame.canMove = "0";
|
|
||||||
//%frame.canClose = "0";
|
|
||||||
%frame.resizeWidth = "0";
|
|
||||||
%frame.resizeHeight = "0";
|
|
||||||
%frame.canMinimize = "0";
|
|
||||||
%frame.canMaximize = "0";
|
|
||||||
|
|
||||||
//sfxPlayOnce( messageBoxBeep );
|
|
||||||
}
|
|
||||||
|
|
||||||
function MessageBoxCtrl::onWake(%this)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
// Various message box display functions. Each one takes a window title, a message, and a
|
|
||||||
// callback for each button.
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
//MessageBoxOK("Test", "This is a test message box", "echo(\"Uhhhhhawhat?\"");
|
|
||||||
function MessageBoxOK(%title, %message, %callback)
|
|
||||||
{
|
|
||||||
Canvas.pushDialog(MessageBoxDlg);
|
|
||||||
MessageBoxTitleText.text = %title;
|
|
||||||
|
|
||||||
MessageBoxOCButtonHolder.hidden = true;
|
|
||||||
MessageBoxYNCButtonHolder.hidden = true;
|
|
||||||
MessageBoxOKButtonHolder.hidden = false;
|
|
||||||
|
|
||||||
MessageBoxOKButtonHolder-->OKButton.set("btn_a", "Return", "OK", "MessageCallback(MessageBoxDlg,MessageBoxDlg.callback);");
|
|
||||||
|
|
||||||
MessageBoxCtrl.originalMenuInputContainer = $activeMenuButtonContainer;
|
|
||||||
MessageBoxOKButtonHolder.setActive();
|
|
||||||
|
|
||||||
MBSetText(MessageBoxText, MessageBoxCtrl, %message);
|
|
||||||
MessageBoxDlg.callback = %callback;
|
|
||||||
}
|
|
||||||
|
|
||||||
function MessageBoxOKDlg::onSleep( %this )
|
|
||||||
{
|
|
||||||
%this.callback = "";
|
|
||||||
MessageBoxCtrl.originalMenuInputContainer.setActive();
|
|
||||||
}
|
|
||||||
|
|
||||||
function MessageBoxOKCancel(%title, %message, %callback, %cancelCallback, %okLabelOverride, %cancelLabelOverride)
|
|
||||||
{
|
|
||||||
Canvas.pushDialog(MessageBoxDlg);
|
|
||||||
MessageBoxTitleText.text = %title;
|
|
||||||
|
|
||||||
MessageBoxOCButtonHolder.hidden = false;
|
|
||||||
MessageBoxYNCButtonHolder.hidden = true;
|
|
||||||
MessageBoxOKButtonHolder.hidden = true;
|
|
||||||
|
|
||||||
if(%okLabelOverride $= "")
|
|
||||||
%okLabel = "OK";
|
|
||||||
else
|
|
||||||
%okLabel = %okLabelOverride;
|
|
||||||
|
|
||||||
if(%cancelLabelOverride $= "")
|
|
||||||
%cancelLabel = "Cancel";
|
|
||||||
else
|
|
||||||
%cancelLabel = %cancelLabelOverride;
|
|
||||||
|
|
||||||
MessageBoxOCButtonHolder-->OKButton.set("btn_a", "Return", %okLabel, "MessageCallback(MessageBoxDlg,MessageBoxDlg.callback);");
|
|
||||||
MessageBoxOCButtonHolder-->CancelButton.set("btn_b", "Escape", %cancelLabel, "MessageCallback(MessageBoxDlg,MessageBoxDlg.cancelCallback);");
|
|
||||||
|
|
||||||
MessageBoxCtrl.originalMenuInputContainer = $activeMenuButtonContainer;
|
|
||||||
MessageBoxOCButtonHolder.setActive();
|
|
||||||
|
|
||||||
MBSetText(MessageBoxText, MessageBoxCtrl, %message);
|
|
||||||
MessageBoxDlg.callback = %callback;
|
|
||||||
MessageBoxDlg.cancelCallback = %cancelCallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
function MessageBoxOKCancelDlg::onSleep( %this )
|
|
||||||
{
|
|
||||||
%this.callback = "";
|
|
||||||
MessageBoxCtrl.originalMenuInputContainer.setActive();
|
|
||||||
}
|
|
||||||
|
|
||||||
function MessageBoxOKCancelDetails(%title, %message, %details, %callback, %cancelCallback)
|
|
||||||
{
|
|
||||||
if(%details $= "")
|
|
||||||
{
|
|
||||||
MBOKCancelDetailsButton.setVisible(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
MBOKCancelDetailsScroll.setVisible(false);
|
|
||||||
|
|
||||||
MBOKCancelDetailsFrame.setText( %title );
|
|
||||||
|
|
||||||
Canvas.pushDialog(MessageBoxOKCancelDetailsDlg);
|
|
||||||
MBSetText(MBOKCancelDetailsText, MBOKCancelDetailsFrame, %message);
|
|
||||||
MBOKCancelDetailsInfoText.setText(%details);
|
|
||||||
|
|
||||||
%textExtent = MBOKCancelDetailsText.getExtent();
|
|
||||||
%textExtentY = getWord(%textExtent, 1);
|
|
||||||
%textPos = MBOKCancelDetailsText.getPosition();
|
|
||||||
%textPosY = getWord(%textPos, 1);
|
|
||||||
|
|
||||||
%extentY = %textPosY + %textExtentY + 65;
|
|
||||||
|
|
||||||
MBOKCancelDetailsInfoText.setExtent(285, 128);
|
|
||||||
|
|
||||||
MBOKCancelDetailsFrame.setExtent(300, %extentY);
|
|
||||||
|
|
||||||
MessageBoxOKCancelDetailsDlg.callback = %callback;
|
|
||||||
MessageBoxOKCancelDetailsDlg.cancelCallback = %cancelCallback;
|
|
||||||
|
|
||||||
MBOKCancelDetailsFrame.defaultExtent = MBOKCancelDetailsFrame.getExtent();
|
|
||||||
}
|
|
||||||
|
|
||||||
function MBOKCancelDetailsToggleInfoFrame()
|
|
||||||
{
|
|
||||||
if(!MBOKCancelDetailsScroll.isVisible())
|
|
||||||
{
|
|
||||||
MBOKCancelDetailsScroll.setVisible(true);
|
|
||||||
MBOKCancelDetailsText.forceReflow();
|
|
||||||
%textExtent = MBOKCancelDetailsText.getExtent();
|
|
||||||
%textExtentY = getWord(%textExtent, 1);
|
|
||||||
%textPos = MBOKCancelDetailsText.getPosition();
|
|
||||||
%textPosY = getWord(%textPos, 1);
|
|
||||||
|
|
||||||
%verticalStretch = %textExtentY;
|
|
||||||
|
|
||||||
if((%verticalStretch > 260) || (%verticalStretch < 0))
|
|
||||||
%verticalStretch = 260;
|
|
||||||
|
|
||||||
%extent = MBOKCancelDetailsFrame.defaultExtent;
|
|
||||||
%height = getWord(%extent, 1);
|
|
||||||
|
|
||||||
%posY = %textPosY + %textExtentY + 10;
|
|
||||||
%posX = getWord(MBOKCancelDetailsScroll.getPosition(), 0);
|
|
||||||
MBOKCancelDetailsScroll.setPosition(%posX, %posY);
|
|
||||||
MBOKCancelDetailsScroll.setExtent(getWord(MBOKCancelDetailsScroll.getExtent(), 0), %verticalStretch);
|
|
||||||
MBOKCancelDetailsFrame.setExtent(300, %height + %verticalStretch + 10);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
%extent = MBOKCancelDetailsFrame.defaultExtent;
|
|
||||||
%width = getWord(%extent, 0);
|
|
||||||
%height = getWord(%extent, 1);
|
|
||||||
MBOKCancelDetailsFrame.setExtent(%width, %height);
|
|
||||||
MBOKCancelDetailsScroll.setVisible(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function MessageBoxOKCancelDetailsDlg::onSleep( %this )
|
|
||||||
{
|
|
||||||
%this.callback = "";
|
|
||||||
MessageBoxCtrl.originalMenuInputContainer.setActive();
|
|
||||||
}
|
|
||||||
|
|
||||||
function MessageBoxYesNo(%title, %message, %yesCallback, %noCallback)
|
|
||||||
{
|
|
||||||
Canvas.pushDialog(MessageBoxDlg);
|
|
||||||
MessageBoxTitleText.text = %title;
|
|
||||||
|
|
||||||
MessageBoxOCButtonHolder.hidden = false;
|
|
||||||
MessageBoxYNCButtonHolder.hidden = true;
|
|
||||||
MessageBoxOKButtonHolder.hidden = true;
|
|
||||||
|
|
||||||
MessageBoxOCButtonHolder-->OKButton.set("btn_a", "Return", "Yes", "MessageCallback(MessageBoxDlg,MessageBoxDlg.yesCallBack);");
|
|
||||||
MessageBoxOCButtonHolder-->CancelButton.set("btn_b", "Escape", "No", "MessageCallback(MessageBoxDlg,MessageBoxDlg.noCallback);");
|
|
||||||
|
|
||||||
MessageBoxCtrl.originalMenuInputContainer = $activeMenuButtonContainer;
|
|
||||||
MessageBoxOCButtonHolder.setActive();
|
|
||||||
|
|
||||||
MBSetText(MessageBoxText, MessageBoxCtrl, %message);
|
|
||||||
MessageBoxDlg.yesCallBack = %yesCallback;
|
|
||||||
MessageBoxDlg.noCallback = %noCallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
function MessageBoxYesNoCancel(%title, %message, %yesCallback, %noCallback, %cancelCallback)
|
|
||||||
{
|
|
||||||
Canvas.pushDialog(MessageBoxDlg);
|
|
||||||
MessageBoxTitleText.text = %title;
|
|
||||||
|
|
||||||
MessageBoxOCButtonHolder.hidden = true;
|
|
||||||
MessageBoxYNCButtonHolder.hidden = false;
|
|
||||||
MessageBoxOKButtonHolder.hidden = true;
|
|
||||||
|
|
||||||
MessageBoxYNCButtonHolder-->yesButton.set("btn_a", "Return", "Yes", "MessageCallback(MessageBoxDlg,MessageBoxDlg.yesCallBack);");
|
|
||||||
MessageBoxYNCButtonHolder-->noButton.set("btn_x", "backspace", "No", "MessageCallback(MessageBoxDlg,MessageBoxDlg.noCallback);");
|
|
||||||
MessageBoxYNCButtonHolder-->cancelButton.set("btn_b", "Escape", "No", "MessageCallback(MessageBoxDlg,MessageBoxDlg.cancelCallback);");
|
|
||||||
|
|
||||||
MessageBoxCtrl.originalMenuInputContainer = $activeMenuButtonContainer;
|
|
||||||
MessageBoxYNCButtonHolder.setActive();
|
|
||||||
|
|
||||||
MBSetText(MessageBoxText, MessageBoxCtrl, %message);
|
|
||||||
MessageBoxDlg.yesCallBack = %yesCallback;
|
|
||||||
MessageBoxDlg.noCallback = %noCallback;
|
|
||||||
MessageBoxDlg.cancelCallback = %cancelCallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
function MessageBoxDlg::onSleep( %this )
|
|
||||||
{
|
|
||||||
%this.callback = "";
|
|
||||||
%this.cancelCallback = "";
|
|
||||||
%this.yesCallback = "";
|
|
||||||
%this.noCallback = "";
|
|
||||||
%this.cancelCallback = "";
|
|
||||||
MessageBoxCtrl.originalMenuInputContainer.setActive();
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
// MessagePopup
|
|
||||||
// Displays a message box with no buttons. Disappears after %delay milliseconds.
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
function MessagePopup(%title, %message, %delay)
|
|
||||||
{
|
|
||||||
Canvas.pushDialog(MessageBoxDlg);
|
|
||||||
MessageBoxTitleText.text = %title;
|
|
||||||
MBSetText(MessageBoxText, MessageBoxCtrl, %message);
|
|
||||||
|
|
||||||
if (%delay !$= "")
|
|
||||||
schedule(%delay, 0, CloseMessagePopup);
|
|
||||||
}
|
|
||||||
|
|
||||||
function CloseMessagePopup()
|
|
||||||
{
|
|
||||||
Canvas.popDialog(MessageBoxDlg);
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
// IODropdown
|
|
||||||
// By passing in a simgroup or simset, the user will be able to choose a child of that group
|
|
||||||
// through a guiPopupMenuCtrl
|
|
||||||
//---------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
function IODropdown(%title, %message, %simgroup, %callback, %cancelCallback)
|
|
||||||
{
|
|
||||||
IODropdownFrame.text = %title;
|
|
||||||
Canvas.pushDialog(IODropdownDlg);
|
|
||||||
MBSetText(IODropdownText, IODropdownFrame, %message);
|
|
||||||
|
|
||||||
if(isObject(%simgroup))
|
|
||||||
{
|
|
||||||
for(%i = 0; %i < %simgroup.getCount(); %i++)
|
|
||||||
IODropdownMenu.add(%simgroup.getObject(%i).getName());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
IODropdownMenu.sort();
|
|
||||||
IODropdownMenu.setFirstSelected(0);
|
|
||||||
|
|
||||||
IODropdownDlg.callback = %callback;
|
|
||||||
IODropdownDlg.cancelCallback = %cancelCallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
function IODropdownDlg::onSleep( %this )
|
|
||||||
{
|
|
||||||
%this.callback = "";
|
|
||||||
%this.cancelCallback = "";
|
|
||||||
IODropdownMenu.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
//The # in the function passed replaced with the output
|
|
||||||
//of the preset menu.
|
|
||||||
function IOCallback(%dlg, %callback)
|
|
||||||
{
|
|
||||||
%id = IODropdownMenu.getSelected();
|
|
||||||
%text = IODropdownMenu.getTextById(%id);
|
|
||||||
%callback = strreplace(%callback, "#", %text);
|
|
||||||
eval(%callback);
|
|
||||||
|
|
||||||
Canvas.popDialog(%dlg);
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
$TextMediumEmphasisColor = "200 200 200";
|
$TextMediumEmphasisColor = "200 200 200";
|
||||||
|
$TextMediumEmphasisColorHL = "0 0 0";
|
||||||
$TextHighEmphasisColor = "224 224 224";
|
$TextHighEmphasisColor = "224 224 224";
|
||||||
|
$TextHighEmphasisColorHL = "0 0 0";
|
||||||
$TextDisabledColor = "108 108 108";
|
$TextDisabledColor = "108 108 108";
|
||||||
|
|
||||||
new GuiGameListMenuProfile(DefaultListMenuProfile)
|
singleton GuiGameListMenuProfile(DefaultListMenuProfile)
|
||||||
{
|
{
|
||||||
fontType = "Arial Bold";
|
fontType = "Arial Bold";
|
||||||
fontSize = 20;
|
fontSize = 20;
|
||||||
|
|
@ -26,12 +28,12 @@ new GuiGameListMenuProfile(DefaultListMenuProfile)
|
||||||
canKeyFocus = true;
|
canKeyFocus = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
new GuiControlProfile(GamepadDefaultProfile)
|
singleton GuiControlProfile(GamepadDefaultProfile)
|
||||||
{
|
{
|
||||||
border = 0;
|
border = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
new GuiControlProfile(GamepadButtonTextLeft)
|
singleton GuiControlProfile(GamepadButtonTextLeft)
|
||||||
{
|
{
|
||||||
fontType = "Arial Bold";
|
fontType = "Arial Bold";
|
||||||
fontSize = 20;
|
fontSize = 20;
|
||||||
|
|
@ -39,20 +41,26 @@ new GuiControlProfile(GamepadButtonTextLeft)
|
||||||
justify = "left";
|
justify = "left";
|
||||||
};
|
};
|
||||||
|
|
||||||
new GuiControlProfile(GamepadButtonTextRight : GamepadButtonTextLeft)
|
singleton GuiControlProfile(GamepadButtonTextRight : GamepadButtonTextLeft)
|
||||||
{
|
{
|
||||||
justify = "right";
|
justify = "right";
|
||||||
};
|
};
|
||||||
|
|
||||||
new GuiControlProfile(MenuHeaderText)
|
singleton GuiControlProfile(MenuHeaderText)
|
||||||
{
|
{
|
||||||
fontType = "Arial Bold";
|
fontType = "Arial Bold";
|
||||||
fontSize = 30;
|
fontSize = 30;
|
||||||
fontColor = $TextHighEmphasisColor;
|
fontColor = $TextHighEmphasisColor;
|
||||||
justify = "left";
|
justify = "left";
|
||||||
|
modal = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
new GuiControlProfile(MenuHeaderTextCenter)
|
singleton GuiControlProfile(MenuHeaderTextHighlighted : MenuHeaderText)
|
||||||
|
{
|
||||||
|
fontColor = $TextHighEmphasisColorHL;
|
||||||
|
};
|
||||||
|
|
||||||
|
singleton GuiControlProfile(MenuHeaderTextCenter)
|
||||||
{
|
{
|
||||||
fontType = "Arial Bold";
|
fontType = "Arial Bold";
|
||||||
fontSize = 30;
|
fontSize = 30;
|
||||||
|
|
@ -60,15 +68,26 @@ new GuiControlProfile(MenuHeaderTextCenter)
|
||||||
justify = "center";
|
justify = "center";
|
||||||
};
|
};
|
||||||
|
|
||||||
new GuiControlProfile(MenuSubHeaderText)
|
singleton GuiControlProfile(MenuSubHeaderText)
|
||||||
{
|
{
|
||||||
fontType = "Arial Bold";
|
fontType = "Arial Bold";
|
||||||
fontSize = 20;
|
fontSize = 20;
|
||||||
fontColor = $TextMediumEmphasisColor;
|
fontColor = $TextMediumEmphasisColor;
|
||||||
justify = "left";
|
justify = "left";
|
||||||
|
modal = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
new GuiControlProfile(MenuMLSubHeaderText)
|
singleton GuiControlProfile(MenuSubHeaderTextHighlighted : MenuSubHeaderText)
|
||||||
|
{
|
||||||
|
fontColor = $TextMediumEmphasisColorHL;
|
||||||
|
};
|
||||||
|
|
||||||
|
singleton GuiControlProfile(MenuSubHeaderCenteredText : MenuSubHeaderText)
|
||||||
|
{
|
||||||
|
justify = "center";
|
||||||
|
};
|
||||||
|
|
||||||
|
singleton GuiControlProfile(MenuMLSubHeaderText)
|
||||||
{
|
{
|
||||||
fontType = "Arial Bold";
|
fontType = "Arial Bold";
|
||||||
fontSize = 20;
|
fontSize = 20;
|
||||||
|
|
@ -76,15 +95,21 @@ new GuiControlProfile(MenuMLSubHeaderText)
|
||||||
justify = "left";
|
justify = "left";
|
||||||
autoSizeWidth = true;
|
autoSizeWidth = true;
|
||||||
autoSizeHeight = true;
|
autoSizeHeight = true;
|
||||||
|
modal = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
new GuiControlProfile(MenuMLSubHeaderTextCenter : MenuMLSubHeaderText)
|
singleton GuiControlProfile(MenuMLSubHeaderTextCenter : MenuMLSubHeaderText)
|
||||||
{
|
{
|
||||||
justify = "center";
|
justify = "center";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiMenuButtonProfile ) )
|
singleton GuiControlProfile( GuiMenuDefaultProfile )
|
||||||
new GuiControlProfile( GuiMenuButtonProfile )
|
{
|
||||||
|
opaque = false;
|
||||||
|
fillColor = "0 0 0 0";
|
||||||
|
};
|
||||||
|
|
||||||
|
singleton GuiControlProfile( GuiMenuButtonProfile )
|
||||||
{
|
{
|
||||||
opaque = true;
|
opaque = true;
|
||||||
border = false;
|
border = false;
|
||||||
|
|
@ -115,8 +140,13 @@ new GuiControlProfile( GuiMenuButtonProfile )
|
||||||
fontColorLinkHL = "Magenta";
|
fontColorLinkHL = "Magenta";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiHighlightMenuButtonProfile ) )
|
singleton GuiControlProfile( LevelPreviewButtonProfile : GuiMenuButtonProfile )
|
||||||
new GuiControlProfile( GuiHighlightMenuButtonProfile )
|
{
|
||||||
|
fontSize = 22;
|
||||||
|
justify = "Left";
|
||||||
|
};
|
||||||
|
|
||||||
|
singleton GuiControlProfile( GuiHighlightMenuButtonProfile )
|
||||||
{
|
{
|
||||||
opaque = true;
|
opaque = true;
|
||||||
border = false;
|
border = false;
|
||||||
|
|
@ -134,8 +164,7 @@ new GuiControlProfile( GuiHighlightMenuButtonProfile )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiBlankMenuButtonProfile ) )
|
singleton GuiControlProfile( GuiBlankMenuButtonProfile )
|
||||||
new GuiControlProfile( GuiBlankMenuButtonProfile )
|
|
||||||
{
|
{
|
||||||
opaque = true;
|
opaque = true;
|
||||||
border = false;
|
border = false;
|
||||||
|
|
@ -155,14 +184,12 @@ new GuiControlProfile( GuiBlankMenuButtonProfile )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiJoinServerButtonProfile ) )
|
singleton GuiControlProfile( GuiJoinServerButtonProfile : GuiMenuButtonProfile )
|
||||||
new GuiControlProfile( GuiJoinServerButtonProfile : GuiMenuButtonProfile )
|
|
||||||
{
|
{
|
||||||
justify = "left";
|
justify = "left";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiMenuTextProfile ) )
|
singleton GuiControlProfile( GuiMenuTextProfile )
|
||||||
new GuiControlProfile( GuiMenuTextProfile )
|
|
||||||
{
|
{
|
||||||
opaque = true;
|
opaque = true;
|
||||||
border = false;
|
border = false;
|
||||||
|
|
@ -173,27 +200,30 @@ new GuiControlProfile( GuiMenuTextProfile )
|
||||||
fontColorNA = "125 125 125";
|
fontColorNA = "125 125 125";
|
||||||
fixedExtent = false;
|
fixedExtent = false;
|
||||||
justify = "center";
|
justify = "center";
|
||||||
category = "Core";
|
category = "BaseUI";
|
||||||
|
modal = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiSolidDefaultProfile ) )
|
singleton GuiControlProfile( GuiMenuTextProfileHighlighted : GuiMenuTextProfile )
|
||||||
new GuiControlProfile (GuiSolidDefaultProfile)
|
{
|
||||||
|
fontColor = "0 0 0";
|
||||||
|
};
|
||||||
|
|
||||||
|
singleton GuiControlProfile (GuiSolidDefaultProfile)
|
||||||
{
|
{
|
||||||
opaque = true;
|
opaque = true;
|
||||||
border = true;
|
border = true;
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiTransparentProfile ) )
|
singleton GuiControlProfile (GuiTransparentProfile)
|
||||||
new GuiControlProfile (GuiTransparentProfile)
|
|
||||||
{
|
{
|
||||||
opaque = false;
|
opaque = false;
|
||||||
border = false;
|
border = false;
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiGroupBorderProfile ) )
|
singleton GuiControlProfile( GuiGroupBorderProfile )
|
||||||
new GuiControlProfile( GuiGroupBorderProfile )
|
|
||||||
{
|
{
|
||||||
border = false;
|
border = false;
|
||||||
opaque = false;
|
opaque = false;
|
||||||
|
|
@ -202,8 +232,7 @@ new GuiControlProfile( GuiGroupBorderProfile )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiTabBorderProfile ) )
|
singleton GuiControlProfile( GuiTabBorderProfile )
|
||||||
new GuiControlProfile( GuiTabBorderProfile )
|
|
||||||
{
|
{
|
||||||
border = false;
|
border = false;
|
||||||
opaque = false;
|
opaque = false;
|
||||||
|
|
@ -212,15 +241,13 @@ new GuiControlProfile( GuiTabBorderProfile )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiModelessDialogProfile ) )
|
singleton GuiControlProfile( GuiModelessDialogProfile )
|
||||||
new GuiControlProfile( GuiModelessDialogProfile )
|
|
||||||
{
|
{
|
||||||
modal = false;
|
modal = false;
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiFrameSetProfile ) )
|
singleton GuiControlProfile (GuiFrameSetProfile)
|
||||||
new GuiControlProfile (GuiFrameSetProfile)
|
|
||||||
{
|
{
|
||||||
fillcolor = "255 255 255";
|
fillcolor = "255 255 255";
|
||||||
borderColor = "246 245 244";
|
borderColor = "246 245 244";
|
||||||
|
|
@ -230,31 +257,27 @@ new GuiControlProfile (GuiFrameSetProfile)
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiInputCtrlProfile ) )
|
singleton GuiControlProfile( GuiInputCtrlProfile )
|
||||||
new GuiControlProfile( GuiInputCtrlProfile )
|
|
||||||
{
|
{
|
||||||
tab = true;
|
tab = true;
|
||||||
canKeyFocus = true;
|
canKeyFocus = true;
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiTextProfile ) )
|
singleton GuiControlProfile (GuiTextProfile)
|
||||||
new GuiControlProfile (GuiTextProfile)
|
|
||||||
{
|
{
|
||||||
justify = "left";
|
justify = "left";
|
||||||
fontColor = "20 20 20";
|
fontColor = "20 20 20";
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiTextRightProfile ) )
|
singleton GuiControlProfile (GuiTextRightProfile : GuiTextProfile)
|
||||||
new GuiControlProfile (GuiTextRightProfile : GuiTextProfile)
|
|
||||||
{
|
{
|
||||||
justify = "right";
|
justify = "right";
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiAutoSizeTextProfile ) )
|
singleton GuiControlProfile (GuiAutoSizeTextProfile)
|
||||||
new GuiControlProfile (GuiAutoSizeTextProfile)
|
|
||||||
{
|
{
|
||||||
fontColor = "0 0 0";
|
fontColor = "0 0 0";
|
||||||
autoSizeWidth = true;
|
autoSizeWidth = true;
|
||||||
|
|
@ -262,22 +285,19 @@ new GuiControlProfile (GuiAutoSizeTextProfile)
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiMediumTextProfile ) )
|
singleton GuiControlProfile( GuiMediumTextProfile : GuiTextProfile )
|
||||||
new GuiControlProfile( GuiMediumTextProfile : GuiTextProfile )
|
|
||||||
{
|
{
|
||||||
fontSize = 24;
|
fontSize = 24;
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiBigTextProfile ) )
|
singleton GuiControlProfile( GuiBigTextProfile : GuiTextProfile )
|
||||||
new GuiControlProfile( GuiBigTextProfile : GuiTextProfile )
|
|
||||||
{
|
{
|
||||||
fontSize = 36;
|
fontSize = 36;
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiMLTextProfile ) )
|
singleton GuiControlProfile( GuiMLTextProfile )
|
||||||
new GuiControlProfile( GuiMLTextProfile )
|
|
||||||
{
|
{
|
||||||
fontColor = $TextMediumEmphasisColor;
|
fontColor = $TextMediumEmphasisColor;
|
||||||
fontColorHL = $TextMediumEmphasisColor;
|
fontColorHL = $TextMediumEmphasisColor;
|
||||||
|
|
@ -289,11 +309,16 @@ new GuiControlProfile( GuiMLTextProfile )
|
||||||
autoSizeWidth = true;
|
autoSizeWidth = true;
|
||||||
autoSizeHeight = true;
|
autoSizeHeight = true;
|
||||||
border = false;
|
border = false;
|
||||||
category = "Core";
|
modal = false;
|
||||||
|
category = "BaseUI";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiMLWhiteTextProfile ) )
|
singleton GuiControlProfile( GuiMLTextProfileHighlighted : GuiMLTextProfile )
|
||||||
new GuiControlProfile( GuiMLWhiteTextProfile )
|
{
|
||||||
|
fontColor = $TextMediumEmphasisColorHL;
|
||||||
|
};
|
||||||
|
|
||||||
|
singleton GuiControlProfile( GuiMLWhiteTextProfile )
|
||||||
{
|
{
|
||||||
fontColor = "220 220 220";
|
fontColor = "220 220 220";
|
||||||
fontColorHL = $TextMediumEmphasisColor;
|
fontColorHL = $TextMediumEmphasisColor;
|
||||||
|
|
@ -303,8 +328,7 @@ new GuiControlProfile( GuiMLWhiteTextProfile )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiTextArrayProfile ) )
|
singleton GuiControlProfile( GuiTextArrayProfile : GuiTextProfile )
|
||||||
new GuiControlProfile( GuiTextArrayProfile : GuiTextProfile )
|
|
||||||
{
|
{
|
||||||
fontColor = $TextMediumEmphasisColor;
|
fontColor = $TextMediumEmphasisColor;
|
||||||
fontColorHL = $TextMediumEmphasisColor;
|
fontColorHL = $TextMediumEmphasisColor;
|
||||||
|
|
@ -324,8 +348,7 @@ new GuiControlProfile( GuiTextArrayProfile : GuiTextProfile )
|
||||||
canKeyFocus = true;
|
canKeyFocus = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiMenuTextEditProfile ) )
|
singleton GuiControlProfile( GuiMenuTextEditProfile : GuiTextEditProfile )
|
||||||
new GuiControlProfile( GuiMenuTextEditProfile : GuiTextEditProfile )
|
|
||||||
{
|
{
|
||||||
fontColor = $TextMediumEmphasisColor;
|
fontColor = $TextMediumEmphasisColor;
|
||||||
fontColorHL = $TextMediumEmphasisColor;
|
fontColorHL = $TextMediumEmphasisColor;
|
||||||
|
|
@ -347,8 +370,7 @@ new GuiControlProfile( GuiMenuTextEditProfile : GuiTextEditProfile )
|
||||||
// TODO: Revisit Popupmenu
|
// TODO: Revisit Popupmenu
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
if( !isObject( GuiPopupMenuItemBorder ) )
|
singleton GuiControlProfile( GuiPopupMenuItemBorder : GuiButtonProfile )
|
||||||
new GuiControlProfile( GuiPopupMenuItemBorder : GuiButtonProfile )
|
|
||||||
{
|
{
|
||||||
opaque = true;
|
opaque = true;
|
||||||
border = true;
|
border = true;
|
||||||
|
|
@ -362,8 +384,7 @@ new GuiControlProfile( GuiPopupMenuItemBorder : GuiButtonProfile )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiPopUpMenuDefault ) )
|
singleton GuiControlProfile( GuiPopUpMenuDefault : GuiDefaultProfile )
|
||||||
new GuiControlProfile( GuiPopUpMenuDefault : GuiDefaultProfile )
|
|
||||||
{
|
{
|
||||||
opaque = true;
|
opaque = true;
|
||||||
mouseOverSelected = true;
|
mouseOverSelected = true;
|
||||||
|
|
@ -385,8 +406,7 @@ new GuiControlProfile( GuiPopUpMenuDefault : GuiDefaultProfile )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiPopUpMenuProfile ) )
|
singleton GuiControlProfile( GuiPopUpMenuProfile : GuiPopUpMenuDefault )
|
||||||
new GuiControlProfile( GuiPopUpMenuProfile : GuiPopUpMenuDefault )
|
|
||||||
{
|
{
|
||||||
textOffset = "6 4";
|
textOffset = "6 4";
|
||||||
bitmapAsset = "UI:dropDown_image";
|
bitmapAsset = "UI:dropDown_image";
|
||||||
|
|
@ -396,8 +416,7 @@ new GuiControlProfile( GuiPopUpMenuProfile : GuiPopUpMenuDefault )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiTabBookProfile ) )
|
singleton GuiControlProfile( GuiTabBookProfile )
|
||||||
new GuiControlProfile( GuiTabBookProfile )
|
|
||||||
{
|
{
|
||||||
fillColorHL = "100 100 100";
|
fillColorHL = "100 100 100";
|
||||||
fillColorNA = "150 150 150";
|
fillColorNA = "150 150 150";
|
||||||
|
|
@ -418,8 +437,7 @@ new GuiControlProfile( GuiTabBookProfile )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiTabPageProfile ) )
|
singleton GuiControlProfile( GuiTabPageProfile : GuiDefaultProfile )
|
||||||
new GuiControlProfile( GuiTabPageProfile : GuiDefaultProfile )
|
|
||||||
{
|
{
|
||||||
fontType = "Arial";
|
fontType = "Arial";
|
||||||
fontSize = 10;
|
fontSize = 10;
|
||||||
|
|
@ -430,8 +448,7 @@ new GuiControlProfile( GuiTabPageProfile : GuiDefaultProfile )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiConsoleProfile ) )
|
singleton GuiControlProfile( GuiConsoleProfile )
|
||||||
new GuiControlProfile( GuiConsoleProfile )
|
|
||||||
{
|
{
|
||||||
fontType = ($platform $= "macos") ? "Monaco" : "Lucida Console";
|
fontType = ($platform $= "macos") ? "Monaco" : "Lucida Console";
|
||||||
fontSize = ($platform $= "macos") ? 13 : 12;
|
fontSize = ($platform $= "macos") ? 13 : 12;
|
||||||
|
|
@ -445,8 +462,7 @@ new GuiControlProfile( GuiConsoleProfile )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( GuiConsoleTextProfile ) )
|
singleton GuiControlProfile( GuiConsoleTextProfile )
|
||||||
new GuiControlProfile( GuiConsoleTextProfile )
|
|
||||||
{
|
{
|
||||||
fontColor = "0 0 0";
|
fontColor = "0 0 0";
|
||||||
autoSizeWidth = true;
|
autoSizeWidth = true;
|
||||||
|
|
@ -462,8 +478,7 @@ new GuiControlProfile( GuiConsoleTextProfile )
|
||||||
|
|
||||||
$ConsoleDefaultFillColor = "0 0 0 175";
|
$ConsoleDefaultFillColor = "0 0 0 175";
|
||||||
|
|
||||||
if( !isObject( ConsoleScrollProfile ) )
|
singleton GuiControlProfile( ConsoleScrollProfile : GuiScrollProfile )
|
||||||
new GuiControlProfile( ConsoleScrollProfile : GuiScrollProfile )
|
|
||||||
{
|
{
|
||||||
opaque = true;
|
opaque = true;
|
||||||
fillColor = $ConsoleDefaultFillColor;
|
fillColor = $ConsoleDefaultFillColor;
|
||||||
|
|
@ -473,8 +488,7 @@ new GuiControlProfile( ConsoleScrollProfile : GuiScrollProfile )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( ConsoleTextEditProfile ) )
|
singleton GuiControlProfile( ConsoleTextEditProfile : GuiTextEditProfile )
|
||||||
new GuiControlProfile( ConsoleTextEditProfile : GuiTextEditProfile )
|
|
||||||
{
|
{
|
||||||
fillColor = "242 241 240 255";
|
fillColor = "242 241 240 255";
|
||||||
fillColorHL = "255 255 255";
|
fillColorHL = "255 255 255";
|
||||||
|
|
@ -485,8 +499,7 @@ new GuiControlProfile( ConsoleTextEditProfile : GuiTextEditProfile )
|
||||||
// Center and bottom print
|
// Center and bottom print
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
if( !isObject( CenterPrintProfile ) )
|
singleton GuiControlProfile ( CenterPrintProfile )
|
||||||
new GuiControlProfile ( CenterPrintProfile )
|
|
||||||
{
|
{
|
||||||
opaque = false;
|
opaque = false;
|
||||||
fillColor = "128 128 128";
|
fillColor = "128 128 128";
|
||||||
|
|
@ -496,8 +509,7 @@ new GuiControlProfile ( CenterPrintProfile )
|
||||||
category = "Core";
|
category = "Core";
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( CenterPrintTextProfile ) )
|
singleton GuiControlProfile ( CenterPrintTextProfile )
|
||||||
new GuiControlProfile ( CenterPrintTextProfile )
|
|
||||||
{
|
{
|
||||||
opaque = false;
|
opaque = false;
|
||||||
fontType = "Arial";
|
fontType = "Arial";
|
||||||
|
|
@ -509,9 +521,7 @@ new GuiControlProfile ( CenterPrintTextProfile )
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// Radio button control
|
// Radio button control
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
singleton GuiControlProfile( GuiRadioProfile )
|
||||||
if( !isObject( GuiRadioProfile ) )
|
|
||||||
new GuiControlProfile( GuiRadioProfile )
|
|
||||||
{
|
{
|
||||||
fontSize = 14;
|
fontSize = 14;
|
||||||
fillColor = "232 232 232";
|
fillColor = "232 232 232";
|
||||||
|
|
@ -526,31 +536,16 @@ new GuiControlProfile( GuiRadioProfile )
|
||||||
//
|
//
|
||||||
// Scroll Profile
|
// Scroll Profile
|
||||||
//
|
//
|
||||||
if(!isObject(GuiMenuScrollProfile))
|
singleton GuiControlProfile(GuiMenuScrollProfile)
|
||||||
new GuiControlProfile(GuiMenuScrollProfile)
|
|
||||||
{
|
{
|
||||||
opaque = false;
|
opaque = false;
|
||||||
fillcolor = "22 22 22";
|
fillcolor = "0 0 0 0";
|
||||||
fontColor = "200 200 200";
|
fontColor = "200 200 200";
|
||||||
fontColorHL = "250 250 250";
|
fontColorHL = "250 250 250";
|
||||||
border = false;
|
border = false;
|
||||||
bitmapAsset = "UI:scrollBar_image";
|
bitmapAsset = "UI:scrollBar_image";
|
||||||
hasBitmapArray = true;
|
hasBitmapArray = true;
|
||||||
category = "Core";
|
category = "BaseUI";
|
||||||
};
|
|
||||||
|
|
||||||
// Scroll
|
|
||||||
if(!isObject(GuiMenuScrollProfile))
|
|
||||||
new GuiControlProfile(GuiMenuScrollProfile)
|
|
||||||
{
|
|
||||||
opaque = true;
|
|
||||||
fillcolor = "128 128 128";
|
|
||||||
fontColor = "0 0 0";
|
|
||||||
fontColorHL = "150 150 150";
|
|
||||||
border = true;
|
|
||||||
bitmapAsset = "UI:scrollBar_image";
|
|
||||||
hasBitmapArray = true;
|
|
||||||
category = "Core";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
singleton GuiControlProfile(SliderBitmapGUIProfile)
|
singleton GuiControlProfile(SliderBitmapGUIProfile)
|
||||||
|
|
@ -561,9 +556,23 @@ singleton GuiControlProfile(SliderBitmapGUIProfile)
|
||||||
borderColor = "0 0 0 255";
|
borderColor = "0 0 0 255";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
singleton GuiControlProfile(GuiMenuBackgroundProfile)
|
||||||
|
{
|
||||||
|
category = "BaseUI";
|
||||||
|
opaque = true;
|
||||||
|
fillcolor = "34 34 34 255";
|
||||||
|
};
|
||||||
|
|
||||||
singleton GuiControlProfile(GuiMenuPanelProfile)
|
singleton GuiControlProfile(GuiMenuPanelProfile)
|
||||||
{
|
{
|
||||||
category = "BaseUI";
|
category = "BaseUI";
|
||||||
opaque = true;
|
opaque = true;
|
||||||
fillcolor = "15 15 15 255";
|
fillcolor = "15 15 15 255";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
singleton GuiControlProfile(GuiMenuBasePanelProfile)
|
||||||
|
{
|
||||||
|
category = "BaseUI";
|
||||||
|
opaque = true;
|
||||||
|
fillcolor = "40 40 40 255";
|
||||||
|
};
|
||||||
|
|
@ -1,3 +1,25 @@
|
||||||
|
function ActionMap::getCommandButtonBitmap(%this, %device, %command)
|
||||||
|
{
|
||||||
|
%binding = %this.getBinding(%command);
|
||||||
|
|
||||||
|
if(%device $= "mouse" || %device $= "")
|
||||||
|
%device = "keyboard";
|
||||||
|
|
||||||
|
%bindingCount = getFieldCount(%binding);
|
||||||
|
for(%i=0; %i < %bindingCount; %i+=2)
|
||||||
|
{
|
||||||
|
%mapDevice = stripTrailingNumber(getField(%binding, %i));
|
||||||
|
if(%mapDevice $= %device)
|
||||||
|
{
|
||||||
|
%button = getField(%binding, %i+1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
%assetId = getButtonBitmap(%device, %button);
|
||||||
|
return %assetId;
|
||||||
|
}
|
||||||
|
|
||||||
function getButtonBitmap(%device, %button)
|
function getButtonBitmap(%device, %button)
|
||||||
{
|
{
|
||||||
if(%device $= "gamepad")
|
if(%device $= "gamepad")
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
<Setting
|
<Setting
|
||||||
name="doubleClickAction">Edit Asset</Setting>
|
name="doubleClickAction">Edit Asset</Setting>
|
||||||
<Setting
|
<Setting
|
||||||
name="LastPosExt">0 1047 2200 360</Setting>
|
name="LastPosExt">0 976 2016 360</Setting>
|
||||||
<Setting
|
<Setting
|
||||||
name="previewTileSize">1</Setting>
|
name="previewTileSize">1</Setting>
|
||||||
<Setting
|
<Setting
|
||||||
|
|
@ -106,7 +106,7 @@
|
||||||
<Setting
|
<Setting
|
||||||
name="lastPath">tools/RPGDialogEditor/gui</Setting>
|
name="lastPath">tools/RPGDialogEditor/gui</Setting>
|
||||||
<Setting
|
<Setting
|
||||||
name="previewResolution">1024 768</Setting>
|
name="previewResolution">1280 720</Setting>
|
||||||
<Group
|
<Group
|
||||||
name="EngineDevelopment">
|
name="EngineDevelopment">
|
||||||
<Setting
|
<Setting
|
||||||
|
|
@ -125,11 +125,6 @@
|
||||||
<Setting
|
<Setting
|
||||||
name="documentationURL">https://docs.torque3d.org</Setting>
|
name="documentationURL">https://docs.torque3d.org</Setting>
|
||||||
</Group>
|
</Group>
|
||||||
<Group
|
|
||||||
name="Library">
|
|
||||||
<Setting
|
|
||||||
name="viewType">Categorized</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group
|
<Group
|
||||||
name="Rendering">
|
name="Rendering">
|
||||||
<Setting
|
<Setting
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue