mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
Ongoing wipwork of the BaseUI update. Some bugfixes pending
This commit is contained in:
parent
616d974212
commit
ce4c8dabc9
|
|
@ -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 "
|
||||
"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,
|
||||
"Type of button control.\n\n"
|
||||
|
|
@ -290,6 +292,7 @@ void GuiButtonBaseCtrl::onMouseEnter(const GuiEvent &event)
|
|||
{
|
||||
mDepressed = true;
|
||||
mHighlighted = true;
|
||||
onHighlighted_callback(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -297,6 +300,7 @@ void GuiButtonBaseCtrl::onMouseEnter(const GuiEvent &event)
|
|||
SFX->playOnce(mProfile->getSoundButtonOverProfile());
|
||||
|
||||
mHighlighted = true;
|
||||
onHighlighted_callback(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -311,6 +315,7 @@ void GuiButtonBaseCtrl::onMouseLeave(const GuiEvent &)
|
|||
if( isMouseLocked() )
|
||||
mDepressed = false;
|
||||
mHighlighted = false;
|
||||
onHighlighted_callback(false);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ class GuiButtonBaseCtrl : public GuiControl
|
|||
DECLARE_CALLBACK( void, onMouseEnter, () );
|
||||
DECLARE_CALLBACK( void, onMouseLeave, () );
|
||||
DECLARE_CALLBACK( void, onMouseDragged, () );
|
||||
DECLARE_CALLBACK( void, onHighlighted, (bool));
|
||||
|
||||
/// @}
|
||||
|
||||
|
|
@ -95,9 +96,18 @@ class GuiButtonBaseCtrl : public GuiControl
|
|||
bool getStateOn() const { return mStateOn; }
|
||||
|
||||
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; }
|
||||
|
||||
void acceleratorKeyPress(U32 index);
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
|
|||
if (mProfile->mBorder != 0)
|
||||
renderFilledBorder(boundsRect, borderColor, fillColor, mProfile->mBorderThickness);
|
||||
else
|
||||
GFX->getDrawUtil()->drawRectFill(boundsRect, mProfile->mFillColor);
|
||||
GFX->getDrawUtil()->drawRectFill(boundsRect, fillColor);
|
||||
}
|
||||
}
|
||||
else if(mHighlighted && mActive)
|
||||
|
|
@ -269,7 +269,7 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
|
|||
if (mProfile->mBorder != 0)
|
||||
renderFilledBorder(boundsRect, borderColor, fillColor, mProfile->mBorderThickness);
|
||||
else
|
||||
GFX->getDrawUtil()->drawRectFill(boundsRect, mProfile->mFillColor);
|
||||
GFX->getDrawUtil()->drawRectFill(boundsRect, fillColor);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -388,6 +388,7 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
|
|||
start.x = iconRect.extent.x + mButtonMargin.x + mTextMargin;
|
||||
}
|
||||
|
||||
drawer->setBitmapModulation(fontColor);
|
||||
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 );
|
||||
|
||||
drawer->setBitmapModulation(fontColor);
|
||||
drawer->drawText( mProfile->mFont, start + offset, text, mProfile->mFontColors );
|
||||
}
|
||||
|
||||
|
|
@ -408,6 +410,7 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
|
|||
}
|
||||
else
|
||||
start.set( ( getWidth() - textWidth ) / 2, ( getHeight() - mProfile->mFont->getHeight() ) / 2 );
|
||||
|
||||
drawer->setBitmapModulation( fontColor );
|
||||
drawer->drawText( mProfile->mFont, start + offset, text, mProfile->mFontColors );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -218,7 +218,8 @@ GuiControl::GuiControl() : mAddGroup( NULL ),
|
|||
mLangTable(NULL),
|
||||
mFirstResponder(NULL),
|
||||
mHorizSizing(horizResizeRight),
|
||||
mVertSizing(vertResizeBottom)
|
||||
mVertSizing(vertResizeBottom),
|
||||
mCategory(StringTable->EmptyString())
|
||||
{
|
||||
mConsoleVariable = StringTable->EmptyString();
|
||||
mAcceleratorKey = StringTable->EmptyString();
|
||||
|
|
@ -294,6 +295,10 @@ void GuiControl::initPersistFields()
|
|||
addField("accelerator", TypeString, Offset(mAcceleratorKey, GuiControl),
|
||||
"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" );
|
||||
|
||||
addGroup( "ToolTip" );
|
||||
|
|
|
|||
|
|
@ -218,6 +218,8 @@ class GuiControl : public SimGroup
|
|||
String mAltConsoleCommand;
|
||||
|
||||
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++ )
|
||||
{
|
||||
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;
|
||||
nodeIndex = j;
|
||||
|
|
@ -1805,6 +1806,7 @@ bool ActionMap::handleEvent(const InputEventInfo* pEvent)
|
|||
for (SimSet::iterator itr = pActionMapSet->end() - 1;
|
||||
itr > pActionMapSet->begin(); itr--) {
|
||||
ActionMap* pMap = static_cast<ActionMap*>(*itr);
|
||||
|
||||
if (pMap->processAction(pEvent) == true)
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -147,25 +147,31 @@ new GuiControlProfile(GuiTextEditProfile)
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if(!isObject(GuiMenuScrollProfile))
|
||||
new GuiControlProfile(GuiMenuScrollProfile)
|
||||
if(!isObject(GuiScrollProfile))
|
||||
new GuiControlProfile(GuiScrollProfile)
|
||||
{
|
||||
opaque = true;
|
||||
fontColor = $TextMediumEmphasisColor;
|
||||
fontColorHL = $TextMediumEmphasisColor;
|
||||
fontColorNA = $TextDisabledColor;
|
||||
fontColorSEL = $TextMediumEmphasisColor;
|
||||
fillColor = "40 40 40";
|
||||
opaque = "0";
|
||||
fontColor = "200 200 200 255";
|
||||
fontColorHL = "200 200 200 255";
|
||||
fontColorNA = "108 108 108 255";
|
||||
fontColorSEL = "200 200 200 255";
|
||||
fillColor = "0 0 0 0";
|
||||
fillColorHL = "56 56 56";
|
||||
fillColorNA = "40 40 40";
|
||||
borderColor = "87 87 87";
|
||||
borderColorNA = "0 0 0";
|
||||
borderColorHL = "255 255 255";
|
||||
border = true;
|
||||
border = "0";
|
||||
bitmapAsset = "Core_GUI:scrollBar_image";
|
||||
hasBitmapArray = true;
|
||||
category = "Core";
|
||||
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))
|
||||
|
|
|
|||
|
|
@ -74,6 +74,21 @@ new SimGroup(VideoSettingsGroup)
|
|||
OptionName = "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()
|
||||
{
|
||||
class = "OptionsQualityLevel";
|
||||
|
|
@ -89,6 +104,54 @@ new SimGroup(VideoSettingsGroup)
|
|||
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)
|
||||
|
|
|
|||
|
|
@ -39,21 +39,12 @@ function UI::initClient(%this)
|
|||
//Load UI stuff
|
||||
//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.gui");
|
||||
|
||||
//%this.queueExec("./guis/mainMenuButtons");
|
||||
//%this.queueExec("./guis/mainMenuButtons.gui");
|
||||
|
||||
%this.queueExec("./guis/chooseLevelDlg");
|
||||
%this.queueExec("./guis/chooseLevelDlg.gui");
|
||||
%this.queueExec("./guis/ChooseLevelMenu");
|
||||
%this.queueExec("./guis/ChooseLevelMenu.gui");
|
||||
|
||||
%this.queueExec("./guis/joinServerMenu");
|
||||
%this.queueExec("./guis/joinServerMenu.gui");
|
||||
|
|
@ -63,8 +54,8 @@ function UI::initClient(%this)
|
|||
%this.queueExec("./guis/optionsMenu");
|
||||
%this.queueExec("./guis/optionsMenu.gui");
|
||||
|
||||
%this.queueExec("./guis/pauseMenu");
|
||||
%this.queueExec("./guis/pauseMenu.gui");
|
||||
%this.queueExec("./guis/GameMenu");
|
||||
%this.queueExec("./guis/GameMenu.gui");
|
||||
|
||||
%this.queueExec("./guis/remapDlg.gui");
|
||||
%this.queueExec("./guis/remapConfirmDlg.gui");
|
||||
|
|
@ -73,21 +64,18 @@ function UI::initClient(%this)
|
|||
%this.queueExec("./guis/profiler.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.gui");
|
||||
|
||||
// Load Editor Dialogs
|
||||
%this.queueExec("./guis/messageBoxDlg");
|
||||
%this.queueExec("./guis/messageBoxDlg.gui");
|
||||
|
||||
%this.queueExec("./guis/SystemMenu");
|
||||
%this.queueExec("./guis/SystemMenu.gui");
|
||||
|
||||
//Load scripts
|
||||
%this.queueExec("./scripts/controlsMenu");
|
||||
%this.queueExec("./scripts/messageBoxes");
|
||||
%this.queueExec("./scripts/help");
|
||||
%this.queueExec("./scripts/cursors");
|
||||
|
||||
if(isToolBuild())
|
||||
|
|
@ -97,3 +85,8 @@ function UI::initClient(%this)
|
|||
function UI::onCreateClientConnection(%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 ---
|
||||
$guiContent = new GuiControl(JoinServerMenu) {
|
||||
extent = "1024 768";
|
||||
profile = "GuiNonModalDefaultProfile";
|
||||
extent = "1280 720";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
profile = "GuiMenuBackgroundProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
isContainer = "1";
|
||||
canSaveDynamicFields = "1";
|
||||
|
||||
new GuiInputCtrl(JoinServerInputHandler) {
|
||||
ignoreMouseEvents = "1";
|
||||
ActionMap = "JoinServerActionMap";
|
||||
position = "-50 0";
|
||||
extent = "50 50";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
canSaveDynamicFields = "0";
|
||||
|
||||
new GuiControl(JoinServerWindow) {
|
||||
position = "48 56";
|
||||
extent = "928 655";
|
||||
horizSizing = "center";
|
||||
vertSizing = "center";
|
||||
profile = "GuiDefaultProfile";
|
||||
profile = "GuiInputCtrlProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
};
|
||||
|
||||
new GuiPanel(JoinServerTitlePanel) {
|
||||
extent = "1281 80";
|
||||
horizSizing = "width";
|
||||
profile = "GuiMenuPanelProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
isContainer = "1";
|
||||
|
||||
new GuiBitmapBarCtrl() {
|
||||
BitmapAsset = "UI:panel_image";
|
||||
extent = "927 40";
|
||||
horizSizing = "width";
|
||||
profile = "GuiDefaultProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
text = "JOIN SERVER";
|
||||
position = "22 10";
|
||||
extent = "207 28";
|
||||
position = "22 23";
|
||||
extent = "220 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 GuiTextCtrl(JS_status) {
|
||||
text = "No servers found.";
|
||||
maxLength = "255";
|
||||
position = "392 47";
|
||||
extent = "148 18";
|
||||
minExtent = "8 8";
|
||||
};
|
||||
new GuiContainer() {
|
||||
position = "203 81";
|
||||
extent = "900 30";
|
||||
profile = GuiMenuPanelProfile;
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
horizSizing = "center";
|
||||
vertSizing = "bottom";
|
||||
|
||||
new GuiTextCtrl() {
|
||||
text = "Server Details";
|
||||
position = "0 0";
|
||||
extent = "730 30";
|
||||
horizSizing = "right";
|
||||
vertSizing = "center";
|
||||
profile = "MenuSubHeaderText";
|
||||
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() {
|
||||
text = "Ping";
|
||||
maxLength = "255";
|
||||
position = "212 67";
|
||||
extent = "20 18";
|
||||
minExtent = "8 8";
|
||||
profile = "GuiMLWhiteTextProfile";
|
||||
position = "730 0";
|
||||
extent = "50 30";
|
||||
horizSizing = "left";
|
||||
vertSizing = "center";
|
||||
profile = "MenuSubHeaderText";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
isContainer = "0";
|
||||
};
|
||||
|
||||
new GuiTextCtrl() {
|
||||
text = "Server Name";
|
||||
maxLength = "255";
|
||||
position = "12 67";
|
||||
extent = "63 18";
|
||||
minExtent = "8 8";
|
||||
profile = "GuiMLWhiteTextProfile";
|
||||
text = "Player Count";
|
||||
position = "780 0";
|
||||
extent = "120 30";
|
||||
horizSizing = "left";
|
||||
vertSizing = "center";
|
||||
profile = "MenuSubHeaderText";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
isContainer = "0";
|
||||
};
|
||||
new GuiScrollCtrl() {
|
||||
hScrollBar = "dynamic";
|
||||
vScrollBar = "dynamic";
|
||||
position = "19 98";
|
||||
extent = "890 501";
|
||||
minExtent = "8 8";
|
||||
profile = "GuiMenuScrollProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
};
|
||||
new GuiScrollCtrl() {
|
||||
hScrollBar = "alwaysOff";
|
||||
vScrollBar = "dynamic";
|
||||
position = "203 111";
|
||||
extent = "900 601";
|
||||
minExtent = "8 8";
|
||||
horizSizing = "center";
|
||||
vertSizing = "height";
|
||||
profile = "GuiMenuScrollProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
|
||||
new GuiStackControl(JoinServerList) {
|
||||
padding = "10";
|
||||
changeChildSizeToFit = "0";
|
||||
position = "1 1";
|
||||
extent = "888 16";
|
||||
horizSizing = "center";
|
||||
vertSizing = "center";
|
||||
profile = "GuiDefaultProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
superClass = "MenuList";
|
||||
};
|
||||
new GuiStackControl(JoinServerList) {
|
||||
padding = "10";
|
||||
changeChildSizeToFit = "0";
|
||||
position = "1 1";
|
||||
extent = "888 16";
|
||||
horizSizing = "center";
|
||||
vertSizing = "center";
|
||||
profile = "GuiMenuDefaultProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
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)
|
||||
{
|
||||
$MenuList = JoinServerList;
|
||||
JoinServerList.listPosition = 0;
|
||||
}
|
||||
|
||||
function JoinServerMenu::onOpen(%this)
|
||||
if(!isObject( JoinServerActionMap ) )
|
||||
{
|
||||
JoinServerList.setAsActiveMenuList();
|
||||
|
||||
$activeMenuButtonContainer-->button1.set("btn_y", "R", "Refresh", "JoinServerMenu.refresh();");
|
||||
$activeMenuButtonContainer-->button2.set("btn_a", "Q", "Query LAN", "JoinServerMenu.queryLan();");
|
||||
$activeMenuButtonContainer-->button3.set("btn_x", "E", "Query Online", "JoinServerMenu.query();");
|
||||
$activeMenuButtonContainer-->button4.set("btn_start", "Return", "Join", "JoinServerMenu.join();");
|
||||
$activeMenuButtonContainer-->button5.set("btn_b", "Escape", "Back", "cancelServerQuery(); " @ %this @ ".navigation.popPage();");
|
||||
new ActionMap(JoinServerActionMap){};
|
||||
|
||||
JoinServerActionMap.bindCmd( keyboard, q, "JoinServerMenu.query();" );
|
||||
JoinServerActionMap.bindCmd( gamepad, btn_x, "JoinServerMenu.query();" );
|
||||
|
||||
JoinServerActionMap.bindCmd( keyboard, e, "JoinServerMenu.queryLan();" );
|
||||
JoinServerActionMap.bindCmd( gamepad, btn_y, "JoinServerMenu.queryLan();" );
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
|
|
@ -93,19 +95,17 @@ function JoinServerMenu::update(%this)
|
|||
%sc = getServerCount();
|
||||
for( %i = 0; %i < %sc; %i ++ ) {
|
||||
setServerInfo(%i);
|
||||
%serverBtn = new GuiButtonCtrl(){
|
||||
text = $ServerInfo::Name TAB
|
||||
$ServerInfo::Ping TAB
|
||||
$ServerInfo::PlayerCount @ "/" @ $ServerInfo::MaxPlayers TAB
|
||||
$ServerInfo::Version TAB
|
||||
$ServerInfo::MissionName;
|
||||
profile = GuiJoinServerButtonProfile;
|
||||
extent = JoinServerList.extent.x SPC 30;
|
||||
};
|
||||
JoinServerList.add(%serverBtn);
|
||||
|
||||
%serverEntry = %this.addServerEntry();
|
||||
%serverEntry-->serverNameTxt.text = $ServerInfo::Name;
|
||||
%serverEntry-->serverDetailsTxt.text = $ServerInfo::Version @ " | " @ $ServerInfo::MissionName @ " | " @ $ServerInfo::MissionType;
|
||||
%serverEntry-->pingTxt.text = $ServerInfo::Ping @ " ms";
|
||||
%serverEntry-->playerCountTxt.text = $ServerInfo::PlayerCount @ "|" @ $ServerInfo::MaxPlayers;
|
||||
|
||||
%serverEntry.resize(0, 0, JoinServerList.extent.x, %serverEntry.extent.y);
|
||||
|
||||
JoinServerList.add(%serverEntry);
|
||||
}
|
||||
|
||||
$activeMenuButtonContainer-->button4.setActive(JoinServerList.getCount() > 0);
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
|
|
@ -138,3 +138,109 @@ function onServerQueryStatus(%status, %msg, %value)
|
|||
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";
|
||||
vertSizing = "height";
|
||||
profile = "GuiDefaultProfile";
|
||||
category = "BaseUI";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
isContainer = "1";
|
||||
canSaveDynamicFields = "1";
|
||||
|
||||
new GuiInputCtrl(MainMenuInputHandler) {
|
||||
sendAxisEvents = "0";
|
||||
sendBreakEvents = "0";
|
||||
ignoreMouseEvents = "1";
|
||||
ActionMap = "BaseUIActionMap";
|
||||
position = "-50 0";
|
||||
extent = "2186 851";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
profile = "GuiInputCtrlProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
//class = "MenuInputHandler";
|
||||
actionMap = MainMenuActionMap;
|
||||
};
|
||||
new GuiBitmapCtrl(SideBackgroundImage) {
|
||||
BitmapAsset = "UI:menu_side_background_image";
|
||||
|
|
@ -33,7 +31,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
|||
};
|
||||
new GuiBitmapCtrl(MainMenuAppLogo) {
|
||||
BitmapAsset = "UI:Torque_3D_logo_image";
|
||||
position = "462 30";
|
||||
position = "460 78";
|
||||
extent = "360 100";
|
||||
horizSizing = "center";
|
||||
profile = "GuiDefaultProfile";
|
||||
|
|
@ -73,7 +71,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
|||
new GuiStackControl(MainMenuButtonList) {
|
||||
padding = "5";
|
||||
dynamicSize = "0";
|
||||
position = "440 185";
|
||||
position = "440 199";
|
||||
extent = "400 322";
|
||||
horizSizing = "center";
|
||||
vertSizing = "center";
|
||||
|
|
@ -85,7 +83,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
|||
text = "Single Player";
|
||||
extent = "400 40";
|
||||
profile = "GuiMenuButtonProfile";
|
||||
command = "openSinglePlayerMenu();";
|
||||
command = "$pref::HostMultiPlayer=false;\nCanvas.pushDialog(ChooseLevelMenu);";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
};
|
||||
new GuiButtonCtrl(MainMenuCreateSrvrBtn) {
|
||||
|
|
@ -93,7 +91,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
|||
position = "0 45";
|
||||
extent = "400 40";
|
||||
profile = "GuiMenuButtonProfile";
|
||||
command = "openMultiPlayerMenu();";
|
||||
command = "$pref::HostMultiPlayer=true;Canvas.pushDialog(ChooseLevelMenu);";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
};
|
||||
new GuiButtonCtrl(MainMenuJoinSrvrBtn) {
|
||||
|
|
@ -101,7 +99,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
|||
position = "0 90";
|
||||
extent = "400 40";
|
||||
profile = "GuiMenuButtonProfile";
|
||||
command = "openJoinServerMenu();";
|
||||
command = "Canvas.pushDialog(JoinServerMenu);";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
};
|
||||
new GuiButtonCtrl(MainMenuOptionBtn) {
|
||||
|
|
@ -117,7 +115,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
|||
position = "0 180";
|
||||
extent = "400 40";
|
||||
profile = "GuiMenuButtonProfile";
|
||||
command = "openWorldEditorBtn();";
|
||||
command = "fastLoadWorldEdit(1);";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
};
|
||||
new GuiButtonCtrl(MainMenuGuiEditBtn) {
|
||||
|
|
@ -125,7 +123,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) {
|
|||
position = "0 225";
|
||||
extent = "400 40";
|
||||
profile = "GuiMenuButtonProfile";
|
||||
command = "openGUIEditorBtn();";
|
||||
command = "fastLoadGUIEdit(1);";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
};
|
||||
new GuiButtonCtrl(MainMenuExitBtn) {
|
||||
|
|
|
|||
|
|
@ -4,60 +4,84 @@ function MainMenuGui::onAdd(%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)
|
||||
{
|
||||
MainMenuButtonList.listPosition -= 1;
|
||||
if(MainMenuButtonList.listPosition < 0)
|
||||
MainMenuButtonList.listPosition = 0;
|
||||
$MenuList.listPosition -= 1;
|
||||
if($MenuList.listPosition < 0)
|
||||
$MenuList.listPosition = 0;
|
||||
|
||||
MainMenuGUI.syncGUI();
|
||||
$MenuList.syncGUI();
|
||||
}
|
||||
}
|
||||
|
||||
function mainMenuNavigateDown(%val)
|
||||
function BaseUINavigateNext(%val)
|
||||
{
|
||||
if(%val)
|
||||
{
|
||||
MainMenuButtonList.listPosition += 1;
|
||||
if(MainMenuButtonList.listPosition >= MainMenuButtonList.getCount())
|
||||
MainMenuButtonList.listPosition = MainMenuButtonList.getCount()-1;
|
||||
$MenuList.listPosition += 1;
|
||||
if($MenuList.listPosition >= $MenuList.getCount())
|
||||
$MenuList.listPosition = $MenuList.getCount()-1;
|
||||
|
||||
MainMenuGUI.syncGUI();
|
||||
$MenuList.syncGUI();
|
||||
}
|
||||
}
|
||||
|
||||
function mainMenuStickNavigate(%val)
|
||||
function BaseUIStickNavigate(%val)
|
||||
{
|
||||
if(%val == -1)
|
||||
mainMenuNavigateUp(1);
|
||||
BaseUINavigateNext(1);
|
||||
else if(%val == 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);
|
||||
|
||||
//
|
||||
|
|
@ -66,25 +90,13 @@ function MainMenuGUI::syncGUI(%this)
|
|||
if(%device $= "mouse")
|
||||
%device = "keyboard";
|
||||
|
||||
%binding = MainMenuActionMap.getBinding("activateSelected");
|
||||
|
||||
%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);
|
||||
MainMenuGoButton.setBitmap(BaseUIActionMap.getCommandButtonBitmap(%device, "BaseUIActivateSelected"));
|
||||
}
|
||||
|
||||
function activateSelected()
|
||||
function BaseUIActivateSelected()
|
||||
{
|
||||
%btn = MainMenuButtonList.getObject(MainMenuButtonList.listPosition);
|
||||
%btn.performClick();
|
||||
%btn = $MenuList.getObject($MenuList.listPosition);
|
||||
|
||||
if(%btn.isMethod("performClick"))
|
||||
%btn.performClick();
|
||||
}
|
||||
|
|
@ -1,347 +1,75 @@
|
|||
//--- OBJECT WRITE BEGIN ---
|
||||
$guiContent = new GuiControl(MessageBoxDlg) {
|
||||
position = "0 0";
|
||||
extent = "1024 768";
|
||||
extent = "1280 720";
|
||||
minExtent = "8 8";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
profile = "GuiOverlayProfile";
|
||||
visible = "1";
|
||||
active = "1";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
hovertime = "1000";
|
||||
isContainer = "1";
|
||||
canSave = "1";
|
||||
canSaveDynamicFields = "1";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiControl(MessageBoxCtrl) {
|
||||
position = "192 197";
|
||||
extent = "641 381";
|
||||
minExtent = "8 2";
|
||||
new GuiInputCtrl(MessageBoxInputHandler) {
|
||||
ignoreMouseEvents = "1";
|
||||
ActionMap = "MessageBoxActionMap";
|
||||
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";
|
||||
vertSizing = "center";
|
||||
profile = "GuiDefaultProfile";
|
||||
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_image";
|
||||
color = "255 255 255 255";
|
||||
position = "0 0";
|
||||
extent = "641 40";
|
||||
minExtent = "8 2";
|
||||
new GuiPanel() {
|
||||
extent = "641 381";
|
||||
horizSizing = "width";
|
||||
vertSizing = "bottom";
|
||||
profile = "GuiDefaultProfile";
|
||||
visible = "1";
|
||||
active = "1";
|
||||
vertSizing = "height";
|
||||
profile = "GuiMenuBasePanelProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
hovertime = "1000";
|
||||
isContainer = "0";
|
||||
canSave = "1";
|
||||
canSaveDynamicFields = "0";
|
||||
};
|
||||
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";
|
||||
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";
|
||||
vertSizing = "bottom";
|
||||
profile = "GuiDefaultProfile";
|
||||
visible = "1";
|
||||
active = "1";
|
||||
profile = "MenuHeaderText";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
hovertime = "1000";
|
||||
isContainer = "0";
|
||||
canSave = "1";
|
||||
canSaveDynamicFields = "0";
|
||||
};
|
||||
new GuiMLTextCtrl(MessageBoxText) {
|
||||
lineSpacing = "2";
|
||||
allowColorChars = "0";
|
||||
maxChars = "-1";
|
||||
useURLMouseCursor = "0";
|
||||
position = "81 83";
|
||||
extent = "481 19";
|
||||
minExtent = "8 8";
|
||||
horizSizing = "center";
|
||||
vertSizing = "center";
|
||||
profile = "MenuMLSubHeaderText";
|
||||
visible = "1";
|
||||
active = "1";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
hovertime = "1000";
|
||||
isContainer = "0";
|
||||
canSave = "1";
|
||||
canSaveDynamicFields = "0";
|
||||
};
|
||||
new GuiControl(MessageBoxOKButtonHolder) {
|
||||
position = "0 285";
|
||||
extent = "642 40";
|
||||
minExtent = "8 2";
|
||||
horizSizing = "center";
|
||||
new GuiStackControl(MessageBoxButtonHolder) {
|
||||
stackingType = "Horizontal";
|
||||
position = "250 285";
|
||||
extent = "140 40";
|
||||
horizSizing = "width";
|
||||
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 = "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";
|
||||
vertSizing = "height";
|
||||
profile = "GuiDefaultProfile";
|
||||
category = "BaseUI";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
isContainer = "1";
|
||||
canSaveDynamicFields = "1";
|
||||
currentCategory = "Graphics";
|
||||
optionsCategories = "17233";
|
||||
unappliedChanges = "17234";
|
||||
optionsCategories = "17237";
|
||||
unappliedChanges = "17238";
|
||||
|
||||
new GuiControl(OptionsMenuContainer) {
|
||||
position = "208 32";
|
||||
extent = "870 655";
|
||||
horizSizing = "aspectCenter";
|
||||
vertSizing = "center";
|
||||
profile = "GuiDefaultProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
isContainer = "1";
|
||||
};
|
||||
new GuiInputCtrl(MainMenuInputHandler) {
|
||||
new GuiInputCtrl(OptionsMenuInputHandler) {
|
||||
ignoreMouseEvents = "1";
|
||||
ActionMap = "MainMenuActionMap";
|
||||
position = "-49 0";
|
||||
ActionMap = "OptionsMenuActionMap";
|
||||
position = "-50 0";
|
||||
extent = "2186 851";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
profile = "GuiInputCtrlProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
};
|
||||
new GuiStackControl(OptionsMenuCategoryList) {
|
||||
stackingType = "Horizontal";
|
||||
padding = "10";
|
||||
dynamicSize = "0";
|
||||
position = "398 80";
|
||||
extent = "471 40";
|
||||
new GuiControl(OptionsMenuCategoryContainer) {
|
||||
position = "332 80";
|
||||
extent = "617 49";
|
||||
horizSizing = "center";
|
||||
profile = "GuiDefaultProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
superClass = "MenuList";
|
||||
isContainer = "1";
|
||||
|
||||
new GuiButtonCtrl() {
|
||||
text = "Video";
|
||||
extent = "100 40";
|
||||
new GuiIconButtonCtrl(OptionsMenuCatPrevBtn) {
|
||||
BitmapAsset = "UI:Keyboard_Black_Q_image";
|
||||
iconLocation = "Center";
|
||||
makeIconSquare = "1";
|
||||
textLocation = "Center";
|
||||
bitmapMargin = "30";
|
||||
position = "1 4";
|
||||
extent = "50 40";
|
||||
vertSizing = "center";
|
||||
profile = "GuiMenuButtonProfile";
|
||||
command = "populateDisplaySettingsList();";
|
||||
command = "OptionsMenuCategoryPrev();";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
class = "MenuInputButton";
|
||||
};
|
||||
new GuiButtonCtrl() {
|
||||
text = "Audio";
|
||||
position = "110 0";
|
||||
extent = "100 40";
|
||||
new GuiIconButtonCtrl(OptionsMenuCatNextBtn) {
|
||||
BitmapAsset = "UI:Keyboard_Black_E_image";
|
||||
iconLocation = "Center";
|
||||
makeIconSquare = "1";
|
||||
bitmapMargin = "30";
|
||||
position = "568 4";
|
||||
extent = "50 40";
|
||||
horizSizing = "left";
|
||||
vertSizing = "center";
|
||||
profile = "GuiMenuButtonProfile";
|
||||
command = "populateAudioSettingsList();";
|
||||
command = "OptionsMenuCategoryNext();";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
class = "MenuInputButton";
|
||||
};
|
||||
new GuiButtonCtrl() {
|
||||
text = "Keyboard & Mouse";
|
||||
position = "220 0";
|
||||
extent = "140 40";
|
||||
profile = "GuiMenuButtonProfile";
|
||||
command = "populateKeyboardMouseSettingsList();";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
};
|
||||
new GuiButtonCtrl() {
|
||||
text = "Gamepad";
|
||||
position = "370 0";
|
||||
extent = "100 40";
|
||||
profile = "GuiMenuButtonProfile";
|
||||
command = "populateGamepadSettingsList();";
|
||||
new GuiStackControl(OptionsMenuCategoryList) {
|
||||
stackingType = "Horizontal";
|
||||
padding = "10";
|
||||
dynamicSize = "0";
|
||||
position = "137 3";
|
||||
extent = "358 40";
|
||||
horizSizing = "center";
|
||||
vertSizing = "center";
|
||||
profile = "GuiDefaultProfile";
|
||||
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) {
|
||||
|
|
@ -89,13 +110,227 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
|||
padding = "5";
|
||||
changeChildSizeToFit = "0";
|
||||
position = "1 1";
|
||||
extent = "603 245";
|
||||
extent = "603 200";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
profile = "GuiDefaultProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
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) {
|
||||
padding = "5";
|
||||
|
|
@ -105,9 +340,10 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
|||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
profile = "GuiDefaultProfile";
|
||||
visible = "0";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
superClass = "MenuList";
|
||||
visible = false;
|
||||
hidden = "1";
|
||||
};
|
||||
new GuiStackControl(ControlSettingsList) {
|
||||
padding = "5";
|
||||
|
|
@ -117,9 +353,10 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
|||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
profile = "GuiDefaultProfile";
|
||||
visible = "0";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
superClass = "MenuList";
|
||||
visible = false;
|
||||
hidden = "1";
|
||||
};
|
||||
};
|
||||
new GuiPanel(OptionMenuTitlePanel) {
|
||||
|
|
@ -136,7 +373,7 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
|||
tooltipProfile = "GuiToolTipProfile";
|
||||
};
|
||||
};
|
||||
new GuiPanel(MainMenuButtonPanel) {
|
||||
new GuiPanel(OptionsMenuButtonPanel) {
|
||||
position = "0 683";
|
||||
extent = "1281 40";
|
||||
horizSizing = "width";
|
||||
|
|
@ -144,7 +381,7 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
|||
profile = "GuiMenuPanelProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
|
||||
new GuiIconButtonCtrl() {
|
||||
new GuiIconButtonCtrl(OptionsMenuApplyBtn) {
|
||||
BitmapAsset = "UI:Keyboard_Black_Return_image";
|
||||
sizeIconToButton = "1";
|
||||
makeIconSquare = "1";
|
||||
|
|
@ -155,12 +392,11 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
|||
horizSizing = "left";
|
||||
vertSizing = "center";
|
||||
profile = "GuiMenuButtonProfile";
|
||||
command = "MainMenuSelectButton(1);";
|
||||
command = "OptionsMenu.applySettings();";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
internalName = "button4";
|
||||
class = "MenuInputButton";
|
||||
};
|
||||
new GuiIconButtonCtrl() {
|
||||
new GuiIconButtonCtrl(OptionsMenuBackBtn) {
|
||||
BitmapAsset = "UI:Keyboard_Black_Escape_image";
|
||||
sizeIconToButton = "1";
|
||||
makeIconSquare = "1";
|
||||
|
|
@ -168,44 +404,27 @@ $guiContent = new GuiChunkedBitmapCtrl(OptionsMenu) {
|
|||
text = "Back";
|
||||
position = "16 0";
|
||||
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";
|
||||
vertSizing = "center";
|
||||
profile = "GuiMenuButtonProfile";
|
||||
command = "MainMenuSelectButton(1);";
|
||||
command = "OptionsMenu.resetSettings();";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
internalName = "button4";
|
||||
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 ---
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@
|
|||
|
||||
$yesNoList = "No\tYes";
|
||||
$onOffList = "Off\tOn";
|
||||
$optionsEntryPad = 10;
|
||||
|
||||
function OptionsMenu::onAdd(%this)
|
||||
{
|
||||
|
|
@ -63,12 +64,6 @@ function OptionsMenu::onAdd(%this)
|
|||
|
||||
%this.currentCategory = "";
|
||||
|
||||
addOptionsMenuCategory("Display", "populateDisplaySettingsList();");
|
||||
addOptionsMenuCategory("Graphics", "populateGraphicsSettingsList();");
|
||||
addOptionsMenuCategory("Audio", "populateAudioSettingsList();");
|
||||
addOptionsMenuCategory("Keyboard & Mouse", "populateKeyboardMouseSettingsList();");
|
||||
addOptionsMenuCategory("Gamepad", "populateGamepadSettingsList();");
|
||||
|
||||
callOnModules("populateOptionsMenuCategories", "Game");
|
||||
}
|
||||
|
||||
|
|
@ -93,28 +88,147 @@ function OptionsMenu::onWake(%this)
|
|||
{
|
||||
%option = %setting.getObject(%s);
|
||||
|
||||
%optionsEntry = addOptionEntry();
|
||||
%optionsEntry-->optionName.text = %option.OptionName;
|
||||
%optionsEntry-->optionDescription.text = %option.Description;
|
||||
%optionsEntry-->optionValue.text = %option.getObject(0).displayName;
|
||||
|
||||
%optionsEntry = addOptionEntry(%option);
|
||||
|
||||
if(isObject(%optionsEntry))
|
||||
{
|
||||
%optionsEntry.resize(0, 0, VideoSettingsList.extent.x, %optionsEntry.extent.y);
|
||||
|
||||
VideoSettingsList.add(%optionsEntry);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(%setting.class $= "OptionsSettings")
|
||||
{
|
||||
%entry = addOptionEntry();
|
||||
%entry-->optionName.text = %setting.displayName;
|
||||
%entry-->optionDescription.text = %setting.description;
|
||||
%entry-->optionValue.text = %setting.getObject(0).displayName;
|
||||
|
||||
if(isObject(%entry))
|
||||
VideoSettingsList.add(%entry);
|
||||
%optionsEntry = addOptionEntry(%option);
|
||||
|
||||
if(isObject(%optionsEntry))
|
||||
{
|
||||
%optionsEntry.resize(0, 0, VideoSettingsList.extent.x, %optionsEntry.extent.y);
|
||||
|
||||
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)
|
||||
{
|
||||
OptionsMenuCategoryList.clear();
|
||||
|
|
@ -173,7 +287,7 @@ function OptionsMenu::canClose(%this)
|
|||
//UINavigation to not close the page
|
||||
if(OptionsMenuSettingsList.isActiveMenuList())
|
||||
{
|
||||
OptionsMenuCategoryList.setAsActiveMenuList();
|
||||
OptionsMenuCategoryList.setAsActiveMenuList();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
|
|
@ -1238,28 +1352,66 @@ function addOptionGroup()
|
|||
};
|
||||
|
||||
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() {
|
||||
position = "0 0";
|
||||
extent = "500 40";
|
||||
profile = "GuiMenuPanelProfile";
|
||||
profile = GuiMenuDefaultProfile;
|
||||
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() {
|
||||
text = "";
|
||||
position = "1 -1";
|
||||
text = %optionObj.OptionName;
|
||||
position = $optionsEntryPad SPC -1;
|
||||
extent = "250 20";
|
||||
profile = "MenuSubHeaderText";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
internalName = "optionName";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
text = "Sets the resolution and detail of shadows";
|
||||
position = "1 17";
|
||||
text = %optionObj.Description;
|
||||
position = $optionsEntryPad SPC 17;
|
||||
extent = "250 18";
|
||||
profile = "GuiMLTextProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
|
|
@ -1273,17 +1425,32 @@ function addOptionEntry()
|
|||
tooltipProfile = "GuiToolTipProfile";
|
||||
horizSizing = "left";
|
||||
vertSizing = "height";
|
||||
internalName = "valuesContainer";
|
||||
|
||||
new GuiButtonCtrl() {
|
||||
position = "160 0";
|
||||
extent = "20 40";
|
||||
text = "<";
|
||||
profile = GuiMenuButtonProfile;
|
||||
};
|
||||
|
||||
new GuiTextCtrl() {
|
||||
text = "< High >";
|
||||
text = %qualityLevel.displayName;
|
||||
position = "180 0";
|
||||
extent = "70 40";
|
||||
extent = "50 40";
|
||||
profile = "GuiMenuTextProfile";
|
||||
tooltipProfile = "GuiToolTipProfile";
|
||||
horizSizing = "left";
|
||||
horizSizing = "right";
|
||||
vertSizing = "center";
|
||||
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";
|
||||
$TextMediumEmphasisColorHL = "0 0 0";
|
||||
$TextHighEmphasisColor = "224 224 224";
|
||||
$TextHighEmphasisColorHL = "0 0 0";
|
||||
$TextDisabledColor = "108 108 108";
|
||||
|
||||
new GuiGameListMenuProfile(DefaultListMenuProfile)
|
||||
singleton GuiGameListMenuProfile(DefaultListMenuProfile)
|
||||
{
|
||||
fontType = "Arial Bold";
|
||||
fontSize = 20;
|
||||
|
|
@ -26,12 +28,12 @@ new GuiGameListMenuProfile(DefaultListMenuProfile)
|
|||
canKeyFocus = true;
|
||||
};
|
||||
|
||||
new GuiControlProfile(GamepadDefaultProfile)
|
||||
singleton GuiControlProfile(GamepadDefaultProfile)
|
||||
{
|
||||
border = 0;
|
||||
};
|
||||
|
||||
new GuiControlProfile(GamepadButtonTextLeft)
|
||||
singleton GuiControlProfile(GamepadButtonTextLeft)
|
||||
{
|
||||
fontType = "Arial Bold";
|
||||
fontSize = 20;
|
||||
|
|
@ -39,20 +41,26 @@ new GuiControlProfile(GamepadButtonTextLeft)
|
|||
justify = "left";
|
||||
};
|
||||
|
||||
new GuiControlProfile(GamepadButtonTextRight : GamepadButtonTextLeft)
|
||||
singleton GuiControlProfile(GamepadButtonTextRight : GamepadButtonTextLeft)
|
||||
{
|
||||
justify = "right";
|
||||
};
|
||||
|
||||
new GuiControlProfile(MenuHeaderText)
|
||||
singleton GuiControlProfile(MenuHeaderText)
|
||||
{
|
||||
fontType = "Arial Bold";
|
||||
fontSize = 30;
|
||||
fontColor = $TextHighEmphasisColor;
|
||||
justify = "left";
|
||||
modal = false;
|
||||
};
|
||||
|
||||
new GuiControlProfile(MenuHeaderTextCenter)
|
||||
singleton GuiControlProfile(MenuHeaderTextHighlighted : MenuHeaderText)
|
||||
{
|
||||
fontColor = $TextHighEmphasisColorHL;
|
||||
};
|
||||
|
||||
singleton GuiControlProfile(MenuHeaderTextCenter)
|
||||
{
|
||||
fontType = "Arial Bold";
|
||||
fontSize = 30;
|
||||
|
|
@ -60,15 +68,26 @@ new GuiControlProfile(MenuHeaderTextCenter)
|
|||
justify = "center";
|
||||
};
|
||||
|
||||
new GuiControlProfile(MenuSubHeaderText)
|
||||
singleton GuiControlProfile(MenuSubHeaderText)
|
||||
{
|
||||
fontType = "Arial Bold";
|
||||
fontSize = 20;
|
||||
fontColor = $TextMediumEmphasisColor;
|
||||
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";
|
||||
fontSize = 20;
|
||||
|
|
@ -76,15 +95,21 @@ new GuiControlProfile(MenuMLSubHeaderText)
|
|||
justify = "left";
|
||||
autoSizeWidth = true;
|
||||
autoSizeHeight = true;
|
||||
modal = false;
|
||||
};
|
||||
|
||||
new GuiControlProfile(MenuMLSubHeaderTextCenter : MenuMLSubHeaderText)
|
||||
singleton GuiControlProfile(MenuMLSubHeaderTextCenter : MenuMLSubHeaderText)
|
||||
{
|
||||
justify = "center";
|
||||
};
|
||||
|
||||
if( !isObject( GuiMenuButtonProfile ) )
|
||||
new GuiControlProfile( GuiMenuButtonProfile )
|
||||
singleton GuiControlProfile( GuiMenuDefaultProfile )
|
||||
{
|
||||
opaque = false;
|
||||
fillColor = "0 0 0 0";
|
||||
};
|
||||
|
||||
singleton GuiControlProfile( GuiMenuButtonProfile )
|
||||
{
|
||||
opaque = true;
|
||||
border = false;
|
||||
|
|
@ -115,8 +140,13 @@ new GuiControlProfile( GuiMenuButtonProfile )
|
|||
fontColorLinkHL = "Magenta";
|
||||
};
|
||||
|
||||
if( !isObject( GuiHighlightMenuButtonProfile ) )
|
||||
new GuiControlProfile( GuiHighlightMenuButtonProfile )
|
||||
singleton GuiControlProfile( LevelPreviewButtonProfile : GuiMenuButtonProfile )
|
||||
{
|
||||
fontSize = 22;
|
||||
justify = "Left";
|
||||
};
|
||||
|
||||
singleton GuiControlProfile( GuiHighlightMenuButtonProfile )
|
||||
{
|
||||
opaque = true;
|
||||
border = false;
|
||||
|
|
@ -134,8 +164,7 @@ new GuiControlProfile( GuiHighlightMenuButtonProfile )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiBlankMenuButtonProfile ) )
|
||||
new GuiControlProfile( GuiBlankMenuButtonProfile )
|
||||
singleton GuiControlProfile( GuiBlankMenuButtonProfile )
|
||||
{
|
||||
opaque = true;
|
||||
border = false;
|
||||
|
|
@ -155,14 +184,12 @@ new GuiControlProfile( GuiBlankMenuButtonProfile )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiJoinServerButtonProfile ) )
|
||||
new GuiControlProfile( GuiJoinServerButtonProfile : GuiMenuButtonProfile )
|
||||
singleton GuiControlProfile( GuiJoinServerButtonProfile : GuiMenuButtonProfile )
|
||||
{
|
||||
justify = "left";
|
||||
};
|
||||
|
||||
if( !isObject( GuiMenuTextProfile ) )
|
||||
new GuiControlProfile( GuiMenuTextProfile )
|
||||
singleton GuiControlProfile( GuiMenuTextProfile )
|
||||
{
|
||||
opaque = true;
|
||||
border = false;
|
||||
|
|
@ -173,27 +200,30 @@ new GuiControlProfile( GuiMenuTextProfile )
|
|||
fontColorNA = "125 125 125";
|
||||
fixedExtent = false;
|
||||
justify = "center";
|
||||
category = "Core";
|
||||
category = "BaseUI";
|
||||
modal = false;
|
||||
};
|
||||
|
||||
if( !isObject( GuiSolidDefaultProfile ) )
|
||||
new GuiControlProfile (GuiSolidDefaultProfile)
|
||||
singleton GuiControlProfile( GuiMenuTextProfileHighlighted : GuiMenuTextProfile )
|
||||
{
|
||||
fontColor = "0 0 0";
|
||||
};
|
||||
|
||||
singleton GuiControlProfile (GuiSolidDefaultProfile)
|
||||
{
|
||||
opaque = true;
|
||||
border = true;
|
||||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiTransparentProfile ) )
|
||||
new GuiControlProfile (GuiTransparentProfile)
|
||||
singleton GuiControlProfile (GuiTransparentProfile)
|
||||
{
|
||||
opaque = false;
|
||||
border = false;
|
||||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiGroupBorderProfile ) )
|
||||
new GuiControlProfile( GuiGroupBorderProfile )
|
||||
singleton GuiControlProfile( GuiGroupBorderProfile )
|
||||
{
|
||||
border = false;
|
||||
opaque = false;
|
||||
|
|
@ -202,8 +232,7 @@ new GuiControlProfile( GuiGroupBorderProfile )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiTabBorderProfile ) )
|
||||
new GuiControlProfile( GuiTabBorderProfile )
|
||||
singleton GuiControlProfile( GuiTabBorderProfile )
|
||||
{
|
||||
border = false;
|
||||
opaque = false;
|
||||
|
|
@ -212,15 +241,13 @@ new GuiControlProfile( GuiTabBorderProfile )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiModelessDialogProfile ) )
|
||||
new GuiControlProfile( GuiModelessDialogProfile )
|
||||
singleton GuiControlProfile( GuiModelessDialogProfile )
|
||||
{
|
||||
modal = false;
|
||||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiFrameSetProfile ) )
|
||||
new GuiControlProfile (GuiFrameSetProfile)
|
||||
singleton GuiControlProfile (GuiFrameSetProfile)
|
||||
{
|
||||
fillcolor = "255 255 255";
|
||||
borderColor = "246 245 244";
|
||||
|
|
@ -230,31 +257,27 @@ new GuiControlProfile (GuiFrameSetProfile)
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiInputCtrlProfile ) )
|
||||
new GuiControlProfile( GuiInputCtrlProfile )
|
||||
singleton GuiControlProfile( GuiInputCtrlProfile )
|
||||
{
|
||||
tab = true;
|
||||
canKeyFocus = true;
|
||||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiTextProfile ) )
|
||||
new GuiControlProfile (GuiTextProfile)
|
||||
singleton GuiControlProfile (GuiTextProfile)
|
||||
{
|
||||
justify = "left";
|
||||
fontColor = "20 20 20";
|
||||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiTextRightProfile ) )
|
||||
new GuiControlProfile (GuiTextRightProfile : GuiTextProfile)
|
||||
singleton GuiControlProfile (GuiTextRightProfile : GuiTextProfile)
|
||||
{
|
||||
justify = "right";
|
||||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiAutoSizeTextProfile ) )
|
||||
new GuiControlProfile (GuiAutoSizeTextProfile)
|
||||
singleton GuiControlProfile (GuiAutoSizeTextProfile)
|
||||
{
|
||||
fontColor = "0 0 0";
|
||||
autoSizeWidth = true;
|
||||
|
|
@ -262,22 +285,19 @@ new GuiControlProfile (GuiAutoSizeTextProfile)
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiMediumTextProfile ) )
|
||||
new GuiControlProfile( GuiMediumTextProfile : GuiTextProfile )
|
||||
singleton GuiControlProfile( GuiMediumTextProfile : GuiTextProfile )
|
||||
{
|
||||
fontSize = 24;
|
||||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiBigTextProfile ) )
|
||||
new GuiControlProfile( GuiBigTextProfile : GuiTextProfile )
|
||||
singleton GuiControlProfile( GuiBigTextProfile : GuiTextProfile )
|
||||
{
|
||||
fontSize = 36;
|
||||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiMLTextProfile ) )
|
||||
new GuiControlProfile( GuiMLTextProfile )
|
||||
singleton GuiControlProfile( GuiMLTextProfile )
|
||||
{
|
||||
fontColor = $TextMediumEmphasisColor;
|
||||
fontColorHL = $TextMediumEmphasisColor;
|
||||
|
|
@ -289,11 +309,16 @@ new GuiControlProfile( GuiMLTextProfile )
|
|||
autoSizeWidth = true;
|
||||
autoSizeHeight = true;
|
||||
border = false;
|
||||
category = "Core";
|
||||
modal = false;
|
||||
category = "BaseUI";
|
||||
};
|
||||
|
||||
if( !isObject( GuiMLWhiteTextProfile ) )
|
||||
new GuiControlProfile( GuiMLWhiteTextProfile )
|
||||
singleton GuiControlProfile( GuiMLTextProfileHighlighted : GuiMLTextProfile )
|
||||
{
|
||||
fontColor = $TextMediumEmphasisColorHL;
|
||||
};
|
||||
|
||||
singleton GuiControlProfile( GuiMLWhiteTextProfile )
|
||||
{
|
||||
fontColor = "220 220 220";
|
||||
fontColorHL = $TextMediumEmphasisColor;
|
||||
|
|
@ -303,8 +328,7 @@ new GuiControlProfile( GuiMLWhiteTextProfile )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiTextArrayProfile ) )
|
||||
new GuiControlProfile( GuiTextArrayProfile : GuiTextProfile )
|
||||
singleton GuiControlProfile( GuiTextArrayProfile : GuiTextProfile )
|
||||
{
|
||||
fontColor = $TextMediumEmphasisColor;
|
||||
fontColorHL = $TextMediumEmphasisColor;
|
||||
|
|
@ -324,8 +348,7 @@ new GuiControlProfile( GuiTextArrayProfile : GuiTextProfile )
|
|||
canKeyFocus = true;
|
||||
};
|
||||
|
||||
if( !isObject( GuiMenuTextEditProfile ) )
|
||||
new GuiControlProfile( GuiMenuTextEditProfile : GuiTextEditProfile )
|
||||
singleton GuiControlProfile( GuiMenuTextEditProfile : GuiTextEditProfile )
|
||||
{
|
||||
fontColor = $TextMediumEmphasisColor;
|
||||
fontColorHL = $TextMediumEmphasisColor;
|
||||
|
|
@ -347,8 +370,7 @@ new GuiControlProfile( GuiMenuTextEditProfile : GuiTextEditProfile )
|
|||
// TODO: Revisit Popupmenu
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
if( !isObject( GuiPopupMenuItemBorder ) )
|
||||
new GuiControlProfile( GuiPopupMenuItemBorder : GuiButtonProfile )
|
||||
singleton GuiControlProfile( GuiPopupMenuItemBorder : GuiButtonProfile )
|
||||
{
|
||||
opaque = true;
|
||||
border = true;
|
||||
|
|
@ -362,8 +384,7 @@ new GuiControlProfile( GuiPopupMenuItemBorder : GuiButtonProfile )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiPopUpMenuDefault ) )
|
||||
new GuiControlProfile( GuiPopUpMenuDefault : GuiDefaultProfile )
|
||||
singleton GuiControlProfile( GuiPopUpMenuDefault : GuiDefaultProfile )
|
||||
{
|
||||
opaque = true;
|
||||
mouseOverSelected = true;
|
||||
|
|
@ -385,8 +406,7 @@ new GuiControlProfile( GuiPopUpMenuDefault : GuiDefaultProfile )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiPopUpMenuProfile ) )
|
||||
new GuiControlProfile( GuiPopUpMenuProfile : GuiPopUpMenuDefault )
|
||||
singleton GuiControlProfile( GuiPopUpMenuProfile : GuiPopUpMenuDefault )
|
||||
{
|
||||
textOffset = "6 4";
|
||||
bitmapAsset = "UI:dropDown_image";
|
||||
|
|
@ -396,8 +416,7 @@ new GuiControlProfile( GuiPopUpMenuProfile : GuiPopUpMenuDefault )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiTabBookProfile ) )
|
||||
new GuiControlProfile( GuiTabBookProfile )
|
||||
singleton GuiControlProfile( GuiTabBookProfile )
|
||||
{
|
||||
fillColorHL = "100 100 100";
|
||||
fillColorNA = "150 150 150";
|
||||
|
|
@ -418,8 +437,7 @@ new GuiControlProfile( GuiTabBookProfile )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiTabPageProfile ) )
|
||||
new GuiControlProfile( GuiTabPageProfile : GuiDefaultProfile )
|
||||
singleton GuiControlProfile( GuiTabPageProfile : GuiDefaultProfile )
|
||||
{
|
||||
fontType = "Arial";
|
||||
fontSize = 10;
|
||||
|
|
@ -430,8 +448,7 @@ new GuiControlProfile( GuiTabPageProfile : GuiDefaultProfile )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiConsoleProfile ) )
|
||||
new GuiControlProfile( GuiConsoleProfile )
|
||||
singleton GuiControlProfile( GuiConsoleProfile )
|
||||
{
|
||||
fontType = ($platform $= "macos") ? "Monaco" : "Lucida Console";
|
||||
fontSize = ($platform $= "macos") ? 13 : 12;
|
||||
|
|
@ -445,8 +462,7 @@ new GuiControlProfile( GuiConsoleProfile )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( GuiConsoleTextProfile ) )
|
||||
new GuiControlProfile( GuiConsoleTextProfile )
|
||||
singleton GuiControlProfile( GuiConsoleTextProfile )
|
||||
{
|
||||
fontColor = "0 0 0";
|
||||
autoSizeWidth = true;
|
||||
|
|
@ -462,8 +478,7 @@ new GuiControlProfile( GuiConsoleTextProfile )
|
|||
|
||||
$ConsoleDefaultFillColor = "0 0 0 175";
|
||||
|
||||
if( !isObject( ConsoleScrollProfile ) )
|
||||
new GuiControlProfile( ConsoleScrollProfile : GuiScrollProfile )
|
||||
singleton GuiControlProfile( ConsoleScrollProfile : GuiScrollProfile )
|
||||
{
|
||||
opaque = true;
|
||||
fillColor = $ConsoleDefaultFillColor;
|
||||
|
|
@ -473,8 +488,7 @@ new GuiControlProfile( ConsoleScrollProfile : GuiScrollProfile )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( ConsoleTextEditProfile ) )
|
||||
new GuiControlProfile( ConsoleTextEditProfile : GuiTextEditProfile )
|
||||
singleton GuiControlProfile( ConsoleTextEditProfile : GuiTextEditProfile )
|
||||
{
|
||||
fillColor = "242 241 240 255";
|
||||
fillColorHL = "255 255 255";
|
||||
|
|
@ -485,8 +499,7 @@ new GuiControlProfile( ConsoleTextEditProfile : GuiTextEditProfile )
|
|||
// Center and bottom print
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
if( !isObject( CenterPrintProfile ) )
|
||||
new GuiControlProfile ( CenterPrintProfile )
|
||||
singleton GuiControlProfile ( CenterPrintProfile )
|
||||
{
|
||||
opaque = false;
|
||||
fillColor = "128 128 128";
|
||||
|
|
@ -496,8 +509,7 @@ new GuiControlProfile ( CenterPrintProfile )
|
|||
category = "Core";
|
||||
};
|
||||
|
||||
if( !isObject( CenterPrintTextProfile ) )
|
||||
new GuiControlProfile ( CenterPrintTextProfile )
|
||||
singleton GuiControlProfile ( CenterPrintTextProfile )
|
||||
{
|
||||
opaque = false;
|
||||
fontType = "Arial";
|
||||
|
|
@ -509,9 +521,7 @@ new GuiControlProfile ( CenterPrintTextProfile )
|
|||
// ----------------------------------------------------------------------------
|
||||
// Radio button control
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
if( !isObject( GuiRadioProfile ) )
|
||||
new GuiControlProfile( GuiRadioProfile )
|
||||
singleton GuiControlProfile( GuiRadioProfile )
|
||||
{
|
||||
fontSize = 14;
|
||||
fillColor = "232 232 232";
|
||||
|
|
@ -526,31 +536,16 @@ new GuiControlProfile( GuiRadioProfile )
|
|||
//
|
||||
// Scroll Profile
|
||||
//
|
||||
if(!isObject(GuiMenuScrollProfile))
|
||||
new GuiControlProfile(GuiMenuScrollProfile)
|
||||
singleton GuiControlProfile(GuiMenuScrollProfile)
|
||||
{
|
||||
opaque = false;
|
||||
fillcolor = "22 22 22";
|
||||
fillcolor = "0 0 0 0";
|
||||
fontColor = "200 200 200";
|
||||
fontColorHL = "250 250 250";
|
||||
border = false;
|
||||
bitmapAsset = "UI:scrollBar_image";
|
||||
hasBitmapArray = true;
|
||||
category = "Core";
|
||||
};
|
||||
|
||||
// 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";
|
||||
category = "BaseUI";
|
||||
};
|
||||
|
||||
singleton GuiControlProfile(SliderBitmapGUIProfile)
|
||||
|
|
@ -561,9 +556,23 @@ singleton GuiControlProfile(SliderBitmapGUIProfile)
|
|||
borderColor = "0 0 0 255";
|
||||
};
|
||||
|
||||
singleton GuiControlProfile(GuiMenuBackgroundProfile)
|
||||
{
|
||||
category = "BaseUI";
|
||||
opaque = true;
|
||||
fillcolor = "34 34 34 255";
|
||||
};
|
||||
|
||||
singleton GuiControlProfile(GuiMenuPanelProfile)
|
||||
{
|
||||
category = "BaseUI";
|
||||
opaque = true;
|
||||
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)
|
||||
{
|
||||
if(%device $= "gamepad")
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
<Setting
|
||||
name="doubleClickAction">Edit Asset</Setting>
|
||||
<Setting
|
||||
name="LastPosExt">0 1047 2200 360</Setting>
|
||||
name="LastPosExt">0 976 2016 360</Setting>
|
||||
<Setting
|
||||
name="previewTileSize">1</Setting>
|
||||
<Setting
|
||||
|
|
@ -106,7 +106,7 @@
|
|||
<Setting
|
||||
name="lastPath">tools/RPGDialogEditor/gui</Setting>
|
||||
<Setting
|
||||
name="previewResolution">1024 768</Setting>
|
||||
name="previewResolution">1280 720</Setting>
|
||||
<Group
|
||||
name="EngineDevelopment">
|
||||
<Setting
|
||||
|
|
@ -125,11 +125,6 @@
|
|||
<Setting
|
||||
name="documentationURL">https://docs.torque3d.org</Setting>
|
||||
</Group>
|
||||
<Group
|
||||
name="Library">
|
||||
<Setting
|
||||
name="viewType">Categorized</Setting>
|
||||
</Group>
|
||||
<Group
|
||||
name="Rendering">
|
||||
<Setting
|
||||
|
|
|
|||
Loading…
Reference in a new issue