From 01de818503eff34fdcfaa9cfe5725dfb68024f81 Mon Sep 17 00:00:00 2001 From: JeffR Date: Tue, 22 Feb 2022 20:12:39 -0600 Subject: [PATCH] Ran importer on UI module to ensure guis and images are converted to latest standards Updated all UI module controls to utilize a more standard structure with stack controls instead of the GameMenu ctrls, as well as more standardization of gamepad input handling --- .../data/ExampleModule/ExampleModule.tscript | 6 + Templates/BaseGame/game/data/UI/UI.module | 2 +- Templates/BaseGame/game/data/UI/UI.tscript | 2 +- .../data/UI/datablocks/guiSounds.asset.taml | 2 +- .../game/data/UI/datablocks/guiSounds.tscript | 2 +- .../data/UI/guis/ChooseLevelDlg.asset.taml | 6 +- .../data/UI/guis/GuiMusicPlayer.asset.taml | 6 +- .../data/UI/guis/IODropdownDlg.asset.taml | 5 +- .../data/UI/guis/JoinServerMenu.asset.taml | 6 +- .../game/data/UI/guis/LoadingGui.asset.taml | 5 +- .../game/data/UI/guis/MainMenuGui.asset.taml | 6 +- .../data/UI/guis/MessageBoxDlg.asset.taml | 5 +- .../data/UI/guis/NetGraphProfile.asset.taml | 7 - .../game/data/UI/guis/OptionsMenu.asset.taml | 6 +- .../game/data/UI/guis/PauseMenu.asset.taml | 6 +- .../game/data/UI/guis/ProfilerGui.asset.taml | 6 +- .../data/UI/guis/RemapConfirmDlg.asset.taml | 5 +- .../game/data/UI/guis/RemapDlg.asset.taml | 5 +- .../game/data/UI/guis/StartupGui.asset.taml | 6 +- .../game/data/UI/guis/chooseLevelDlg.gui | 4 +- .../data/UI/guis/controlsMenuSetting.taml | 102 --- .../game/data/UI/guis/joinServerMenu.gui | 2 +- .../game/data/UI/guis/joinServerMenu.tscript | 8 +- .../BaseGame/game/data/UI/guis/mainMenu.gui | 4 +- .../game/data/UI/guis/mainMenu.tscript | 3 +- .../game/data/UI/guis/messageBoxDlg.gui | 4 +- .../game/data/UI/guis/netGraphGui.gui | 2 +- .../game/data/UI/guis/optionsMenu.gui | 183 ------ .../game/data/UI/guis/optionsMenu.tscript | 581 ++++++++++++------ .../BaseGame/game/data/UI/guis/pauseMenu.gui | 49 +- .../game/data/UI/guis/pauseMenu.tscript | 49 +- .../game/data/UI/guis/profiler.tscript | 2 +- .../data/UI/guis/recordingsDlg.asset.taml | 5 +- .../BaseGame/game/data/UI/guis/startupGui.gui | 4 +- .../game/data/UI/guis/startupGui.tscript | 2 +- .../UI/images/Torque-3D-logo-shortcut.png | Bin 10728 -> 0 bytes .../game/data/UI/images/Torque-3D-logo-w.png | Bin 19328 -> 0 bytes .../game/data/UI/images/Torque-3D-logo.png | Bin 9063 -> 0 bytes .../data/UI/images/Torque-3D-logo_alt.png | Bin 11616 -> 0 bytes .../Torque_3D_logo_alt_image.asset.taml | 2 +- .../UI/images/Torque_3D_logo_image.asset.taml | 2 +- .../Torque_3D_logo_shortcut_image.asset.taml | 2 +- .../images/Torque_3D_logo_w_image.asset.taml | 2 +- .../game/data/UI/images/background-dark.png | Bin 5751 -> 0 bytes .../images/background_dark_image.asset.taml | 8 - .../game/data/UI/images/clear-btn_d.png | Bin 593 -> 0 bytes .../game/data/UI/images/clear-btn_h.png | Bin 595 -> 0 bytes .../game/data/UI/images/clear-btn_n.png | Bin 377 -> 0 bytes .../data/UI/images/collapse-toolbar_d.png | Bin 280 -> 0 bytes .../data/UI/images/collapse-toolbar_h.png | Bin 468 -> 0 bytes .../data/UI/images/collapse-toolbar_n.png | Bin 439 -> 0 bytes .../data/UI/images/dropdown-button-arrow.png | Bin 132 -> 0 bytes .../game/data/UI/images/dropdown-textEdit.png | Bin 390 -> 0 bytes .../game/data/UI/images/expand-toolbar_d.png | Bin 278 -> 0 bytes .../game/data/UI/images/expand-toolbar_h.png | Bin 468 -> 0 bytes .../game/data/UI/images/expand-toolbar_n.png | Bin 437 -> 0 bytes .../game/data/UI/images/group-border.png | Bin 1273 -> 0 bytes .../game/data/UI/images/inactive-overlay.png | Bin 131 -> 0 bytes .../game/data/UI/images/menu-button.png | Bin 3559 -> 0 bytes .../game/data/UI/images/next-button_d.png | Bin 279 -> 0 bytes .../game/data/UI/images/next-button_h.png | Bin 549 -> 0 bytes .../game/data/UI/images/next-button_n.png | Bin 484 -> 0 bytes .../game/data/UI/images/no-preview.png | Bin 34615 -> 0 bytes .../game/data/UI/images/previous-button_d.png | Bin 290 -> 0 bytes .../game/data/UI/images/previous-button_h.png | Bin 561 -> 0 bytes .../game/data/UI/images/previous-button_n.png | Bin 494 -> 0 bytes .../data/UI/images/selector-button-blank.png | Bin 744 -> 0 bytes .../data/UI/images/selector-button-dark.png | Bin 1942 -> 0 bytes .../images/selector-button-highlight-only.png | Bin 1613 -> 0 bytes .../game/data/UI/images/selector-button.png | Bin 4002 -> 0 bytes .../game/data/UI/images/separator-h.png | Bin 117 -> 0 bytes .../game/data/UI/images/separator-v.png | Bin 118 -> 0 bytes .../game/data/UI/images/slider - Copy.png | Bin 908 -> 0 bytes .../game/data/UI/images/slider-w-box.png | Bin 982 -> 0 bytes .../UI/images/slider___Copy_image.asset.taml | 8 - .../game/data/UI/images/tab-border.png | Bin 1203 -> 0 bytes .../game/data/UI/scripts/controlsMenu.tscript | 17 +- .../game/data/UI/scripts/cursors.tscript | 2 +- .../game/data/UI/scripts/utility.tscript | 114 ++-- .../scripts/projectImporter.tscript | 8 +- 80 files changed, 590 insertions(+), 673 deletions(-) delete mode 100644 Templates/BaseGame/game/data/UI/guis/NetGraphProfile.asset.taml delete mode 100644 Templates/BaseGame/game/data/UI/guis/controlsMenuSetting.taml delete mode 100644 Templates/BaseGame/game/data/UI/images/Torque-3D-logo-shortcut.png delete mode 100644 Templates/BaseGame/game/data/UI/images/Torque-3D-logo-w.png delete mode 100644 Templates/BaseGame/game/data/UI/images/Torque-3D-logo.png delete mode 100644 Templates/BaseGame/game/data/UI/images/Torque-3D-logo_alt.png delete mode 100644 Templates/BaseGame/game/data/UI/images/background-dark.png delete mode 100644 Templates/BaseGame/game/data/UI/images/background_dark_image.asset.taml delete mode 100644 Templates/BaseGame/game/data/UI/images/clear-btn_d.png delete mode 100644 Templates/BaseGame/game/data/UI/images/clear-btn_h.png delete mode 100644 Templates/BaseGame/game/data/UI/images/clear-btn_n.png delete mode 100644 Templates/BaseGame/game/data/UI/images/collapse-toolbar_d.png delete mode 100644 Templates/BaseGame/game/data/UI/images/collapse-toolbar_h.png delete mode 100644 Templates/BaseGame/game/data/UI/images/collapse-toolbar_n.png delete mode 100644 Templates/BaseGame/game/data/UI/images/dropdown-button-arrow.png delete mode 100644 Templates/BaseGame/game/data/UI/images/dropdown-textEdit.png delete mode 100644 Templates/BaseGame/game/data/UI/images/expand-toolbar_d.png delete mode 100644 Templates/BaseGame/game/data/UI/images/expand-toolbar_h.png delete mode 100644 Templates/BaseGame/game/data/UI/images/expand-toolbar_n.png delete mode 100644 Templates/BaseGame/game/data/UI/images/group-border.png delete mode 100644 Templates/BaseGame/game/data/UI/images/inactive-overlay.png delete mode 100644 Templates/BaseGame/game/data/UI/images/menu-button.png delete mode 100644 Templates/BaseGame/game/data/UI/images/next-button_d.png delete mode 100644 Templates/BaseGame/game/data/UI/images/next-button_h.png delete mode 100644 Templates/BaseGame/game/data/UI/images/next-button_n.png delete mode 100644 Templates/BaseGame/game/data/UI/images/no-preview.png delete mode 100644 Templates/BaseGame/game/data/UI/images/previous-button_d.png delete mode 100644 Templates/BaseGame/game/data/UI/images/previous-button_h.png delete mode 100644 Templates/BaseGame/game/data/UI/images/previous-button_n.png delete mode 100644 Templates/BaseGame/game/data/UI/images/selector-button-blank.png delete mode 100644 Templates/BaseGame/game/data/UI/images/selector-button-dark.png delete mode 100644 Templates/BaseGame/game/data/UI/images/selector-button-highlight-only.png delete mode 100644 Templates/BaseGame/game/data/UI/images/selector-button.png delete mode 100644 Templates/BaseGame/game/data/UI/images/separator-h.png delete mode 100644 Templates/BaseGame/game/data/UI/images/separator-v.png delete mode 100644 Templates/BaseGame/game/data/UI/images/slider - Copy.png delete mode 100644 Templates/BaseGame/game/data/UI/images/slider-w-box.png delete mode 100644 Templates/BaseGame/game/data/UI/images/slider___Copy_image.asset.taml delete mode 100644 Templates/BaseGame/game/data/UI/images/tab-border.png diff --git a/Templates/BaseGame/game/data/ExampleModule/ExampleModule.tscript b/Templates/BaseGame/game/data/ExampleModule/ExampleModule.tscript index 0b233dc61..0f540c0d8 100644 --- a/Templates/BaseGame/game/data/ExampleModule/ExampleModule.tscript +++ b/Templates/BaseGame/game/data/ExampleModule/ExampleModule.tscript @@ -81,6 +81,7 @@ function ExampleModule::initClient(%this) exec(%prefPath @ "/keybinds." @ $TorqueScriptFileExtension); %this.queueExec("./scripts/inputCommands"); + addOptionsMenuCategory("Example Options", "testExampleOptions();"); } //This is called when a game session client successfuly connects to a game server. @@ -105,4 +106,9 @@ function ExampleModule::onDestroyClientConnection(%this) { //This will pop the keybind, cleaning it up from the input stack, as it no longer applies ExampleMoveMap.pop(); +} + +function testExampleOptions() +{ + addListOption("Test Option", "This is a test option", $testOptionValue, "OptionA\tOptionB"); } \ No newline at end of file diff --git a/Templates/BaseGame/game/data/UI/UI.module b/Templates/BaseGame/game/data/UI/UI.module index 1ab3024a2..ed204d1b1 100644 --- a/Templates/BaseGame/game/data/UI/UI.module +++ b/Templates/BaseGame/game/data/UI/UI.module @@ -11,4 +11,4 @@ canSaveDynamicFields="true" Extension="asset.taml" Recurse="true" /> - \ No newline at end of file + diff --git a/Templates/BaseGame/game/data/UI/UI.tscript b/Templates/BaseGame/game/data/UI/UI.tscript index 5b8c1ee6a..cd645f86f 100644 --- a/Templates/BaseGame/game/data/UI/UI.tscript +++ b/Templates/BaseGame/game/data/UI/UI.tscript @@ -83,4 +83,4 @@ function UI::initClient(%this) function UI::onCreateClientConnection(%this){} -function UI::onDestroyClientConnection(%this){} \ No newline at end of file +function UI::onDestroyClientConnection(%this){} diff --git a/Templates/BaseGame/game/data/UI/datablocks/guiSounds.asset.taml b/Templates/BaseGame/game/data/UI/datablocks/guiSounds.asset.taml index 81e2a8e24..7e5a1cada 100644 --- a/Templates/BaseGame/game/data/UI/datablocks/guiSounds.asset.taml +++ b/Templates/BaseGame/game/data/UI/datablocks/guiSounds.asset.taml @@ -2,5 +2,5 @@ canSave="true" canSaveDynamicFields="true" AssetName="guiSounds" - scriptFile="@assetFile=guiSounds.cs" + scriptFile="@assetFile=guiSounds" VersionId="1" /> diff --git a/Templates/BaseGame/game/data/UI/datablocks/guiSounds.tscript b/Templates/BaseGame/game/data/UI/datablocks/guiSounds.tscript index 0aab47fb9..4eed5f78a 100644 --- a/Templates/BaseGame/game/data/UI/datablocks/guiSounds.tscript +++ b/Templates/BaseGame/game/data/UI/datablocks/guiSounds.tscript @@ -31,4 +31,4 @@ singleton SFXProfile(menuButtonHover) preload = true; description = AudioGui; fileName = "data/ui/sounds/buttonHover"; -}; \ No newline at end of file +}; diff --git a/Templates/BaseGame/game/data/UI/guis/ChooseLevelDlg.asset.taml b/Templates/BaseGame/game/data/UI/guis/ChooseLevelDlg.asset.taml index 2d6a987f0..9090ea1af 100644 --- a/Templates/BaseGame/game/data/UI/guis/ChooseLevelDlg.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/ChooseLevelDlg.asset.taml @@ -1,7 +1,5 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/GuiMusicPlayer.asset.taml b/Templates/BaseGame/game/data/UI/guis/GuiMusicPlayer.asset.taml index 7014d72a6..94601d7a3 100644 --- a/Templates/BaseGame/game/data/UI/guis/GuiMusicPlayer.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/GuiMusicPlayer.asset.taml @@ -1,7 +1,5 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/IODropdownDlg.asset.taml b/Templates/BaseGame/game/data/UI/guis/IODropdownDlg.asset.taml index b929c70b0..d1d0c8c8e 100644 --- a/Templates/BaseGame/game/data/UI/guis/IODropdownDlg.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/IODropdownDlg.asset.taml @@ -1,7 +1,4 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/JoinServerMenu.asset.taml b/Templates/BaseGame/game/data/UI/guis/JoinServerMenu.asset.taml index 0ca202e6d..85da0192a 100644 --- a/Templates/BaseGame/game/data/UI/guis/JoinServerMenu.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/JoinServerMenu.asset.taml @@ -1,7 +1,5 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/LoadingGui.asset.taml b/Templates/BaseGame/game/data/UI/guis/LoadingGui.asset.taml index 196bc91e7..fc8ac974c 100644 --- a/Templates/BaseGame/game/data/UI/guis/LoadingGui.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/LoadingGui.asset.taml @@ -1,7 +1,4 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/MainMenuGui.asset.taml b/Templates/BaseGame/game/data/UI/guis/MainMenuGui.asset.taml index 2fd6b7c72..cdd3c6635 100644 --- a/Templates/BaseGame/game/data/UI/guis/MainMenuGui.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/MainMenuGui.asset.taml @@ -1,7 +1,5 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/MessageBoxDlg.asset.taml b/Templates/BaseGame/game/data/UI/guis/MessageBoxDlg.asset.taml index 9b9d38995..14ff4ba60 100644 --- a/Templates/BaseGame/game/data/UI/guis/MessageBoxDlg.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/MessageBoxDlg.asset.taml @@ -1,7 +1,4 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/NetGraphProfile.asset.taml b/Templates/BaseGame/game/data/UI/guis/NetGraphProfile.asset.taml deleted file mode 100644 index 2ee15e4ea..000000000 --- a/Templates/BaseGame/game/data/UI/guis/NetGraphProfile.asset.taml +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/Templates/BaseGame/game/data/UI/guis/OptionsMenu.asset.taml b/Templates/BaseGame/game/data/UI/guis/OptionsMenu.asset.taml index a00b4c7d4..0488ea976 100644 --- a/Templates/BaseGame/game/data/UI/guis/OptionsMenu.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/OptionsMenu.asset.taml @@ -1,7 +1,5 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/PauseMenu.asset.taml b/Templates/BaseGame/game/data/UI/guis/PauseMenu.asset.taml index c3806430a..08a16f03d 100644 --- a/Templates/BaseGame/game/data/UI/guis/PauseMenu.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/PauseMenu.asset.taml @@ -1,7 +1,5 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/ProfilerGui.asset.taml b/Templates/BaseGame/game/data/UI/guis/ProfilerGui.asset.taml index 0e49346ab..09b400893 100644 --- a/Templates/BaseGame/game/data/UI/guis/ProfilerGui.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/ProfilerGui.asset.taml @@ -1,7 +1,5 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/RemapConfirmDlg.asset.taml b/Templates/BaseGame/game/data/UI/guis/RemapConfirmDlg.asset.taml index 1e3fb30aa..6fc8c874a 100644 --- a/Templates/BaseGame/game/data/UI/guis/RemapConfirmDlg.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/RemapConfirmDlg.asset.taml @@ -1,7 +1,4 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/RemapDlg.asset.taml b/Templates/BaseGame/game/data/UI/guis/RemapDlg.asset.taml index 6b1c4df9a..7ea99e19c 100644 --- a/Templates/BaseGame/game/data/UI/guis/RemapDlg.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/RemapDlg.asset.taml @@ -1,7 +1,4 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/StartupGui.asset.taml b/Templates/BaseGame/game/data/UI/guis/StartupGui.asset.taml index 656157f71..876b039a6 100644 --- a/Templates/BaseGame/game/data/UI/guis/StartupGui.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/StartupGui.asset.taml @@ -1,7 +1,5 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/chooseLevelDlg.gui b/Templates/BaseGame/game/data/UI/guis/chooseLevelDlg.gui index fc2ffc57e..775e910f0 100644 --- a/Templates/BaseGame/game/data/UI/guis/chooseLevelDlg.gui +++ b/Templates/BaseGame/game/data/UI/guis/chooseLevelDlg.gui @@ -36,7 +36,7 @@ $guiContent = new GuiControl(ChooseLevelDlg) { percent = "100"; vertical = "0"; flipClip = "0"; - bitmap = "data/ui/images/panel.png"; + bitmapAsset = "UI:panel_image"; color = "255 255 255 255"; position = "0 0"; extent = "927 40"; @@ -79,7 +79,7 @@ $guiContent = new GuiControl(ChooseLevelDlg) { percent = "100"; vertical = "0"; flipClip = "0"; - bitmap = "data/ui/images/panel_low.png"; + bitmapAsset = "UI:panel_low_image"; color = "255 255 255 255"; position = "0 40"; extent = "927 618"; diff --git a/Templates/BaseGame/game/data/UI/guis/controlsMenuSetting.taml b/Templates/BaseGame/game/data/UI/guis/controlsMenuSetting.taml deleted file mode 100644 index e2794ca4a..000000000 --- a/Templates/BaseGame/game/data/UI/guis/controlsMenuSetting.taml +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - diff --git a/Templates/BaseGame/game/data/UI/guis/joinServerMenu.gui b/Templates/BaseGame/game/data/UI/guis/joinServerMenu.gui index 17a2c4435..c812e624c 100644 --- a/Templates/BaseGame/game/data/UI/guis/joinServerMenu.gui +++ b/Templates/BaseGame/game/data/UI/guis/joinServerMenu.gui @@ -425,7 +425,7 @@ $guiContent = new GuiControl(JoinServerMenu) { vertSizing = "bottom"; profile = "GuiMenuButtonProfile"; visible = "1"; - active = "1"; + active = "0"; command = "JoinServerMenu.join();"; tooltipProfile = "GuiToolTipProfile"; hovertime = "1000"; diff --git a/Templates/BaseGame/game/data/UI/guis/joinServerMenu.tscript b/Templates/BaseGame/game/data/UI/guis/joinServerMenu.tscript index b2f0eb8eb..1fe75bd46 100644 --- a/Templates/BaseGame/game/data/UI/guis/joinServerMenu.tscript +++ b/Templates/BaseGame/game/data/UI/guis/joinServerMenu.tscript @@ -1,10 +1,6 @@ -function JoinServerMenu::onWake() +function JoinServerMenu::onWake(%this) { - // Double check the status. Tried setting this the control - // inactive to start with, but that didn't seem to work. - JoinServerJoinBtn.setActive(JoinServerList.getCount() > 0); - JoinServerButtonHolder.setActive(); JoinServerList.setAsActiveMenuList(); @@ -128,7 +124,7 @@ function JoinServerMenu::update(%this) JoinServerList.add(%serverBtn); } - JoinServerJoinBtn.setActive(JoinServerList.getCount() > 0); + JoinServerButtonHolder-->joinButton.setActive(JoinServerList.getCount() > 0); } //---------------------------------------- diff --git a/Templates/BaseGame/game/data/UI/guis/mainMenu.gui b/Templates/BaseGame/game/data/UI/guis/mainMenu.gui index 4c6c13697..6b1dad9ee 100644 --- a/Templates/BaseGame/game/data/UI/guis/mainMenu.gui +++ b/Templates/BaseGame/game/data/UI/guis/mainMenu.gui @@ -1,6 +1,6 @@ //--- OBJECT WRITE BEGIN --- $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) { - BitmapAsset = "UI:background_dark_image"; + BitmapAsset = "UI:backgrounddark_image"; useVariable = "0"; tile = "0"; position = "0 0"; @@ -203,7 +203,7 @@ $guiContent = new GuiChunkedBitmapCtrl(MainMenuGui) { profile = "GuiMenuButtonProfile"; visible = "1"; active = "1"; - command = "exit();"; + command = "quit();"; tooltipProfile = "GuiToolTipProfile"; hovertime = "1000"; isContainer = "0"; diff --git a/Templates/BaseGame/game/data/UI/guis/mainMenu.tscript b/Templates/BaseGame/game/data/UI/guis/mainMenu.tscript index 0d830f176..c626c4952 100644 --- a/Templates/BaseGame/game/data/UI/guis/mainMenu.tscript +++ b/Templates/BaseGame/game/data/UI/guis/mainMenu.tscript @@ -66,4 +66,5 @@ function MainMenuGui::onReturnTo(%this) MainMenuButtonList.hidden = false; MainMenuButtonList.setFirstResponder(); MainMenuButtonHolder.setActive(); -} \ No newline at end of file + MainMenuButtonList.setAsActiveMenuList(); +} diff --git a/Templates/BaseGame/game/data/UI/guis/messageBoxDlg.gui b/Templates/BaseGame/game/data/UI/guis/messageBoxDlg.gui index a78ae98d5..91207adff 100644 --- a/Templates/BaseGame/game/data/UI/guis/messageBoxDlg.gui +++ b/Templates/BaseGame/game/data/UI/guis/messageBoxDlg.gui @@ -34,7 +34,7 @@ $guiContent = new GuiControl(MessageBoxDlg) { percent = "100"; vertical = "0"; flipClip = "0"; - bitmap = "data/ui/images/panel.png"; + bitmapAsset = "UI:panel_image"; color = "255 255 255 255"; position = "0 0"; extent = "641 40"; @@ -77,7 +77,7 @@ $guiContent = new GuiControl(MessageBoxDlg) { percent = "100"; vertical = "0"; flipClip = "0"; - bitmap = "data/ui/images/panel_low.png"; + bitmapAsset = "UI:panel_low_image"; color = "255 255 255 255"; position = "0 40"; extent = "641 341"; diff --git a/Templates/BaseGame/game/data/UI/guis/netGraphGui.gui b/Templates/BaseGame/game/data/UI/guis/netGraphGui.gui index be8ba1233..9da782ba7 100644 --- a/Templates/BaseGame/game/data/UI/guis/netGraphGui.gui +++ b/Templates/BaseGame/game/data/UI/guis/netGraphGui.gui @@ -554,4 +554,4 @@ function NetGraph::updateNetworkSimulation(%this) } netSimulateLag( %latency, %packetLoss ); -} \ No newline at end of file +} diff --git a/Templates/BaseGame/game/data/UI/guis/optionsMenu.gui b/Templates/BaseGame/game/data/UI/guis/optionsMenu.gui index b7195557c..a8fc2fb1e 100644 --- a/Templates/BaseGame/game/data/UI/guis/optionsMenu.gui +++ b/Templates/BaseGame/game/data/UI/guis/optionsMenu.gui @@ -213,127 +213,6 @@ $guiContent = new GuiControl(OptionsMenu) { class = "MenuList"; canSave = "1"; canSaveDynamicFields = "0"; - - new GuiButtonCtrl(OptionsMenuDisplayBtn) { - text = "Display"; - groupNum = "-1"; - buttonType = "PushButton"; - useMouseEvents = "0"; - position = "0 0"; - extent = "248 35"; - minExtent = "8 2"; - horizSizing = "right"; - vertSizing = "bottom"; - profile = "GuiMenuButtonProfile"; - visible = "1"; - active = "1"; - command = "populateDisplaySettingsList();"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "0"; - canSave = "1"; - canSaveDynamicFields = "0"; - }; - new GuiButtonCtrl(OptionsMenuGraphicsBtn) { - text = "Graphics"; - groupNum = "-1"; - buttonType = "PushButton"; - useMouseEvents = "0"; - position = "0 45"; - extent = "248 35"; - minExtent = "8 2"; - horizSizing = "right"; - vertSizing = "bottom"; - profile = "GuiMenuButtonProfile"; - visible = "1"; - active = "1"; - command = "populateGraphicsSettingsList();"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "0"; - canSave = "1"; - canSaveDynamicFields = "0"; - }; - new GuiButtonCtrl(OptionsMenuAudioBtn) { - text = "Audio"; - groupNum = "-1"; - buttonType = "PushButton"; - useMouseEvents = "0"; - position = "0 90"; - extent = "248 35"; - minExtent = "8 2"; - horizSizing = "right"; - vertSizing = "bottom"; - profile = "GuiMenuButtonProfile"; - visible = "1"; - active = "1"; - command = "populateAudioSettingsList();"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "0"; - canSave = "1"; - canSaveDynamicFields = "0"; - }; - new GuiButtonCtrl(OptionsMenuKBMBtn) { - text = "Keyboard & Mouse"; - groupNum = "-1"; - buttonType = "PushButton"; - useMouseEvents = "0"; - position = "0 135"; - extent = "248 35"; - minExtent = "8 2"; - horizSizing = "right"; - vertSizing = "bottom"; - profile = "GuiMenuButtonProfile"; - visible = "1"; - active = "1"; - command = "populateKeyboardMouseSettingsList();"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "0"; - canSave = "1"; - canSaveDynamicFields = "0"; - }; - new GuiButtonCtrl(OptionsMenuGamepadBtn) { - text = "Gamepad"; - groupNum = "-1"; - buttonType = "PushButton"; - useMouseEvents = "0"; - position = "0 180"; - extent = "248 35"; - minExtent = "8 2"; - horizSizing = "right"; - vertSizing = "bottom"; - profile = "GuiMenuButtonProfile"; - visible = "1"; - active = "1"; - command = "populateGamepadSettingsList();"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "0"; - canSave = "1"; - canSaveDynamicFields = "0"; - }; - new GuiButtonCtrl(OptionsMenuProfileBtn) { - text = "Profile"; - groupNum = "-1"; - buttonType = "PushButton"; - useMouseEvents = "0"; - position = "0 225"; - extent = "248 35"; - minExtent = "8 2"; - horizSizing = "right"; - vertSizing = "bottom"; - profile = "GuiMenuButtonProfile"; - visible = "1"; - active = "1"; - command = "populateProfileSettingsList();"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "0"; - canSave = "1"; - canSaveDynamicFields = "0"; - }; }; }; new GuiPanel() { @@ -493,68 +372,6 @@ $guiContent = new GuiControl(OptionsMenu) { canSave = "1"; canSaveDynamicFields = "0"; }; - new GuiIconButtonCtrl() { - buttonMargin = "4 4"; - BitmapAsset = "UI:Switch_LB_image"; - iconLocation = "Left"; - sizeIconToButton = "1"; - makeIconSquare = "1"; - textLocation = "Right"; - textMargin = "4"; - autoSize = "0"; - text = "Prev Tab"; - groupNum = "-1"; - buttonType = "PushButton"; - useMouseEvents = "0"; - position = "0 0"; - extent = "140 40"; - minExtent = "8 2"; - horizSizing = "right"; - vertSizing = "bottom"; - profile = "GuiMenuButtonProfile"; - visible = "0"; - active = "0"; - command = "OptionsMenu.prevTab();"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "0"; - internalName = "prevTabButton"; - class = "MenuInputButton"; - hidden = "1"; - canSave = "1"; - canSaveDynamicFields = "0"; - }; - new GuiIconButtonCtrl() { - buttonMargin = "4 4"; - BitmapAsset = "UI:Switch_RB_image"; - iconLocation = "Left"; - sizeIconToButton = "1"; - makeIconSquare = "1"; - textLocation = "Right"; - textMargin = "4"; - autoSize = "0"; - text = "Next Tab"; - groupNum = "-1"; - buttonType = "PushButton"; - useMouseEvents = "0"; - position = "144 0"; - extent = "140 40"; - minExtent = "8 2"; - horizSizing = "right"; - vertSizing = "bottom"; - profile = "GuiMenuButtonProfile"; - visible = "0"; - active = "0"; - command = "OptionsMenu.nextTab();"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "0"; - internalName = "nextTabButton"; - class = "MenuInputButton"; - hidden = "1"; - canSave = "1"; - canSaveDynamicFields = "0"; - }; new GuiIconButtonCtrl() { buttonMargin = "4 4"; BitmapAsset = "UI:Keyboard_Black_R_image"; diff --git a/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript b/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript index eac532203..48612b943 100644 --- a/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript +++ b/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript @@ -46,12 +46,67 @@ //headbob //FOV +function OptionsMenu::onAdd(%this) +{ + if(!isObject(%this.optionsCategories)) + { + %this.optionsCategories = new ArrayObject(); + } + + if(!isObject(%this.unappliedChanges)) + { + %this.unappliedChanges = new ArrayObject(); + } + + addOptionsMenuCategory("Display", "populateDisplaySettingsList();"); + addOptionsMenuCategory("Graphics", "populateGraphicsSettingsList();"); + addOptionsMenuCategory("Audio", "populateAudioSettingsList();"); + addOptionsMenuCategory("Keyboard & Mouse", "populateKeyboardMouseSettingsList();"); + addOptionsMenuCategory("Gamepad", "populateGamepadSettingsList();"); +} + function OptionsMenuSettingsList::onAdd(%this) { } +function OptionsMenuSettingsList::getOptionsList(%this, %index) +{ + +} + function OptionsMenu::onWake(%this) { + for(%i=0; %i < %this.optionsCategories.count(); %i++) + { + %catName = %this.optionsCategories.getKey(%i); + %callback = %this.optionsCategories.getValue(%i); + + %newCatButton = new GuiButtonCtrl() { + text = %catName; + groupNum = "-1"; + buttonType = "PushButton"; + useMouseEvents = "0"; + position = "0 180"; + extent = "248 35"; + minExtent = "8 2"; + horizSizing = "right"; + vertSizing = "bottom"; + profile = "GuiMenuButtonProfile"; + visible = "1"; + active = "1"; + command = %callback; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + + OptionsMenuCategoryList.add(%newCatButton); + } + + %this.unappliedChanges.empty(); + MainMenuButtonList.hidden = true; OptionsMenuCategoryList.setAsActiveMenuList(); @@ -63,8 +118,6 @@ function OptionsMenu::onWake(%this) function OptionsButtonHolder::onWake(%this) { - //%this-->prevTabButton.set("btn_l", "", "Prev Tab", "OptionsMenu.prevTab();", true); - %this-->nextTabButton.set("btn_a", "", "Select", "OptionsMenuList.activate();", true); %this-->resetButton.set("btn_back", "R", "Reset", "OptionsMenu.resetToDefaults();"); %this-->applyButton.set("btn_start", "Return", "Apply", "OptionsMenu.apply();"); %this-->backButton.set("btn_b", "Escape", "Back", "OptionsMenu.backOut();"); @@ -74,19 +127,81 @@ function OptionsButtonHolder::onWake(%this) function OptionsMenu::apply(%this) { - if(%this.pageTabIndex == 0) + //Now we run through our list of unapplied changes and... apply them. + %hasKeybindChanges = false; + %hasVideoChanges = false; + %hasPostFXChanges = false; + %hasAudioChanges = false; + for(%i=0; %i < %this.unappliedChanges.count(); %i++) { - %this.applyDisplaySettings(); + %targetVar = %this.unappliedChanges.getKey(%i); + %newValue = %this.unappliedChanges.getValue(%i); + + //First, lets just check through our action map names, see if any match + %wasKeybind = false; + for(%am=0; %am < ActionMapGroup.getCount(); %am++) + { + %actionMap = ActionMapGroup.getObject(%am); + + if(%actionMap == GlobalActionMap.getId()) + continue; + + %actionMapName = %actionMap.humanReadableName $= "" ? %actionMap.getName() : %actionMap.humanReadableName; + if(%actionMapName $= %targetVar) + { + %hasKeybindChanges = true; + %wasKeybind = true; + break; + } + } + + if(!%wasKeybind) + { + %currentValue = getVariable(%targetVar); + if(%currentValue !$= %newValue) + { + setVariable(%targetVar, %newValue); + + //now, lets check for special cases that need additional handling + //for updates + if ( %targetVar $= "$pref::Video::displayDevice" ) + { + MessageBoxOK( "Change requires restart", "Please restart the game for a display device change to take effect." ); + } + else if(startsWith(%targetVar, "$pref::Graphics::")) + { + //isolate the quality group name, like $pref::Graphics::LightingQuality + //we grab LightingQuality + %qualityGroupName = getSubStr(%targetVar, 17); + if(isObject(%qualityGroupName @ "List")) + { + //yep, it's a quality group, so apply it + (%qualityGroupName @ "List").applySetting(%newValue); + } + + if(%qualityGroupName $= "TextureQuality") + { + reloadTextures(); + } + } + else if(startsWith(%targetVar, "$pref::PostFX::")) + { + %hasPostFXChanges = true; + } + else if(startsWith(%targetVar, "$pref::Video::")) + { + %hasVideoChanges = true; + } + else if(startsWith(%targetVar, "$pref::SFX::")) + { + %hasAudioChanges = true; + } + } + } } - else if(%this.pageTabIndex == 1) - { - %this.applyGraphicsSettings(); - } - else if(%this.pageTabIndex == 2) - { - %this.applyAudioSettings(); - } - else if(%this.pageTabIndex == 3 || %this.pageTabIndex == 4) + + //If we had keybind changes, go ahead and save those out + if(%hasKeybindChanges) { %prefPath = getPrefpath(); @@ -108,8 +223,26 @@ function OptionsMenu::apply(%this) } } + if(%hasPostFXChanges) + { + updatePostFXSettings(); + } + + if(%hasVideoChanges) + { + updateDisplaySettings(); + } + + if(%hasAudioChanges) + { + updateAudioSettings(); + } + + //Finally, write our prefs to file %prefPath = getPrefpath(); export("$pref::*", %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension, false); + + OptionsMenu.unappliedChanges.empty(); } function OptionsMenu::resetToDefaults(%this) @@ -117,77 +250,9 @@ function OptionsMenu::resetToDefaults(%this) MessageBoxOKCancel("", "This will set the graphical settings back to the auto-detected defaults. Do you wish to continue?", "AutodetectGraphics();", ""); } -function OptionsMenuSettingsList::onChange(%this) -{ - %optionName = %this.getRowLabel(%this.getSelectedRow()); - %tooltipText = %this.getTooltip(%this.getSelectedRow()); - - OptionName.setText(%optionName); - OptionDescription.setText(%tooltipText); - return; - - OptionsMenuSettingsList.clearOptions(); - - %currentRowText = %this.getRowLabel(%this.getSelectedRow()); - - if(%currentRowText $= "Display") - { - populateDisplaySettingsList(); - } - else if(%currentRowText $= "Graphics") - { - populateGraphicsSettingsList(); - } - else if(%currentRowText $= "Audio") - { - populateAudioSettingsList(); - } - else if(%currentRowText $= "Keyboard + Mouse") - { - populateKeyboardMouseSettingsList(); - } - else if(%currentRowText $= "Gamepad") - { - populateGamepadSettingsList(); - } -} - -function OptionsMenu::prevTab(%this) -{ - %this.pageTabIndex--; - if(%this.pageTabIndex < 0) - %this.pageTabIndex = 4; - - %tabBtn = %this.getTab(); - %tabBtn.performClick(); -} - -function OptionsMenu::nextTab(%this) -{ - %this.pageTabIndex++; - if(%this.pageTabIndex > 4) - %this.pageTabIndex = 0; - - %tabBtn = %this.getTab(); - %tabBtn.performClick(); -} - -function OptionsMenu::getTab(%this) -{ - if(%this.pageTabIndex == 0) - return %this-->DisplayButton; - else if(%this.pageTabIndex == 1) - return %this-->GraphicsButton; - else if(%this.pageTabIndex == 2) - return %this-->AudioButton; - else if(%this.pageTabIndex == 3) - return %this-->KBMButton; - else if(%this.pageTabIndex == 4) - return %this-->GamepadButton; - else - return %this-->DisplayButton; -} - +// +// +// function populateDisplaySettingsList() { OptionsMenuSettingsList.clear(); @@ -220,7 +285,7 @@ function populateDisplaySettingsList() trim(%apiList); - OptionsMenuSettingsList.addOptionRow("Display API", %apiList, false, "", true, "The display API used for rendering.", %displayDevice); + OptionsMenuSettingsList.addOptionRow("Display API", "$pref::Video::DisplayAPI", %apiList, false, "", true, "The display API used for rendering.", %displayDevice); %numDevices = Canvas.getMonitorCount(); %devicesList = ""; @@ -234,7 +299,7 @@ function populateDisplaySettingsList() } %selectedDevice = getField(%devicesList, $pref::Video::deviceId); - OptionsMenuSettingsList.addOptionRow("Display Device", %devicesList, false, "onDisplayModeChange", true, "The display devices the window should be on.", %selectedDevice); + OptionsMenuSettingsList.addOptionRow("Display Device", "$pref::Video::deviceId", %devicesList, false, "", true, "The display devices the window should be on.", %selectedDevice); if (%numDevices > 1) OptionsMenuSettingsList.setRowEnabled(1, true); @@ -242,10 +307,10 @@ function populateDisplaySettingsList() OptionsMenuSettingsList.setRowEnabled(1, false); %mode = getField($Video::ModeTags, $pref::Video::deviceMode); - OptionsMenuSettingsList.addOptionRow("Window Mode", $Video::ModeTags, false, "onDisplayModeChange", true, "", %mode); + OptionsMenuSettingsList.addOptionRow("Window Mode", "$pref::Video::deviceMode", $Video::ModeTags, false, "", true, "", %mode); %resolutionList = getScreenResolutionList($pref::Video::deviceId, $pref::Video::deviceMode); - OptionsMenuSettingsList.addOptionRow("Resolution", %resolutionList, false, "onDisplayResChange", true, "Resolution of the game window", _makePrettyResString( $pref::Video::mode )); + OptionsMenuSettingsList.addOptionRow("Resolution", "$pref::Video::Resolution", %resolutionList, false, "onDisplayResChange", true, "Resolution of the game window", _makePrettyResString( $pref::Video::mode )); //If they're doing borderless, the window resolution must match the display resolution if(%mode !$= "Borderless") @@ -253,20 +318,20 @@ function populateDisplaySettingsList() else OptionsMenuSettingsList.setRowEnabled(3, false); - OptionsMenuSettingsList.addOptionRow("VSync", "No\tYes", false, "", true, "", convertBoolToYesNo(!$pref::Video::disableVerticalSync)); + OptionsMenuSettingsList.addOptionRow("VSync", "$pref::Video::disableVerticalSync", "No\tYes", false, "", true, "", convertBoolToYesNo(!$pref::Video::disableVerticalSync)); %refreshList = getScreenRefreshList($pref::Video::mode); - OptionsMenuSettingsList.addOptionRow("Refresh Rate", %refreshList, false, "", true, "", $pref::Video::RefreshRate); + OptionsMenuSettingsList.addOptionRow("Refresh Rate", "$pref::Video::RefreshRate", %refreshList, false, "", true, "", $pref::Video::RefreshRate); //move to gameplay tab - OptionsMenuSettingsList.addSliderRow("Field of View", 75, 5, "65 100", ""); + OptionsMenuSettingsList.addSliderRow("Field of View", "", 75, 5, "65 100", ""); - OptionsMenuSettingsList.addSliderRow("Brightness", 0.5, 0.1, "0 1", ""); - OptionsMenuSettingsList.addSliderRow("Contrast", 0.5, 0.1, "0 1", ""); + OptionsMenuSettingsList.addSliderRow("Brightness", "", 0.5, 0.1, "0 1", ""); + OptionsMenuSettingsList.addSliderRow("Contrast", "", 0.5, 0.1, "0 1", ""); } -function OptionsMenu::applyDisplaySettings(%this) +/*function OptionsMenu::applyDisplaySettings(%this) { %newDevice = OptionsMenuSettingsList.getCurrentOption(0); @@ -285,9 +350,12 @@ function OptionsMenu::applyDisplaySettings(%this) echo("Exporting client prefs"); %prefPath = getPrefpath(); export("$pref::*", %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension, false); -} +}*/ -function populateGraphicsSettingsList(%this) +// +// +// +function populateGraphicsSettingsList() { OptionsMenuSettingsList.clear(); @@ -299,90 +367,32 @@ function populateGraphicsSettingsList(%this) %highMedLow = "Low\tMedium\tHigh"; %anisoFilter = "Off\t4\t8\t16"; %aaFilter = "Off\t1\t2\t4"; - OptionsMenuSettingsList.addOptionRow("Lighting Quality", getQualityLevels(LightingQualityList), false, "", true, "Amount and drawdistance of local lights", getCurrentQualityLevel(LightingQualityList)); - OptionsMenuSettingsList.addOptionRow("Shadow Quality", getQualityLevels(ShadowQualityList), false, "", true, "Shadow revolution quality", getCurrentQualityLevel(ShadowQualityList)); - OptionsMenuSettingsList.addOptionRow("Soft Shadow Quality", getQualityLevels(SoftShadowList), false, "", true, "Amount of softening applied to shadowmaps", getCurrentQualityLevel(SoftShadowList)); - OptionsMenuSettingsList.addOptionRow("Mesh Quality", getQualityLevels(MeshQualityGroup), false, "", true, "Fidelity of rendering of mesh objects", getCurrentQualityLevel(MeshQualityGroup)); - OptionsMenuSettingsList.addOptionRow("Object Draw Distance", getQualityLevels(MeshDrawDistQualityGroup), false, "", true, "Dictates if and when static objects fade out in the distance", getCurrentQualityLevel(MeshDrawDistQualityGroup)); - OptionsMenuSettingsList.addOptionRow("Texture Quality", getQualityLevels(TextureQualityGroup), false, "", true, "Fidelity of textures", getCurrentQualityLevel(TextureQualityGroup)); - OptionsMenuSettingsList.addOptionRow("Terrain Quality", getQualityLevels(TerrainQualityGroup), false, "", true, "Quality level of terrain objects", getCurrentQualityLevel(TerrainQualityGroup)); - OptionsMenuSettingsList.addOptionRow("Decal Lifetime", getQualityLevels(DecalLifetimeGroup), false, "", true, "How long decals are rendered", getCurrentQualityLevel(DecalLifetimeGroup)); - OptionsMenuSettingsList.addOptionRow("Ground Cover Density", getQualityLevels(GroundCoverDensityGroup), false, "", true, "Density of ground cover items, such as grass", getCurrentQualityLevel(GroundCoverDensityGroup)); - OptionsMenuSettingsList.addOptionRow("Shader Quality", getQualityLevels(ShaderQualityGroup), false, "", true, "Dictates the overall shader quality level, adjusting what features are enabled.", getCurrentQualityLevel(ShaderQualityGroup)); - OptionsMenuSettingsList.addOptionRow("Anisotropic Filtering", %anisoFilter, false, "", true, "Amount of Anisotropic Filtering on textures, which dictates their sharpness at a distance", $pref::Video::defaultAnisotropy); - OptionsMenuSettingsList.addOptionRow("Anti-Aliasing", %aaFilter, false, "", true, "Amount of Post-Processing Anti-Aliasing applied to rendering", $pref::Video::AA); - OptionsMenuSettingsList.addOptionRow("Parallax", %onOffList, false, "", true, "Whether the surface parallax shader effect is enabled", convertBoolToOnOff(!$pref::Video::disableParallaxMapping)); - OptionsMenuSettingsList.addOptionRow("Water Reflections", %onOffList, false, "", true, "Whether water reflections are enabled", convertBoolToOnOff(!$pref::Water::disableTrueReflections)); - OptionsMenuSettingsList.addOptionRow("SSAO", %onOffList, false, "", true, "Whether Screen-Space Ambient Occlusion is enabled", convertBoolToOnOff($pref::PostFX::EnableSSAO)); - OptionsMenuSettingsList.addOptionRow("Depth of Field", %onOffList, false, "", true, "Whether the Depth of Field effect is enabled", convertBoolToOnOff($pref::PostFX::EnableDOF)); - OptionsMenuSettingsList.addOptionRow("Vignette", %onOffList, false, "", true, "Whether the vignette effect is enabled", convertBoolToOnOff($pref::PostFX::EnableVignette)); - OptionsMenuSettingsList.addOptionRow("Light Rays", %onOffList, false, "", true, "Whether the light rays effect is enabled", convertBoolToOnOff($pref::PostFX::EnableLightRays)); + OptionsMenuSettingsList.addOptionRow("Lighting Quality", "$pref::Graphics::LightingQuality", getQualityLevels(LightingQualityList), false, "", true, "Amount and drawdistance of local lights", getCurrentQualityLevel(LightingQualityList)); + OptionsMenuSettingsList.addOptionRow("Shadow Quality", "$pref::Graphics::ShadowQuality", getQualityLevels(ShadowQualityList), false, "", true, "Shadow revolution quality", getCurrentQualityLevel(ShadowQualityList)); + OptionsMenuSettingsList.addOptionRow("Soft Shadow Quality", "$pref::Graphics::SoftShadowQuality", getQualityLevels(SoftShadowList), false, "", true, "Amount of softening applied to shadowmaps", getCurrentQualityLevel(SoftShadowList)); + OptionsMenuSettingsList.addOptionRow("Mesh Quality", "$pref::Graphics::MeshQuality", getQualityLevels(MeshQualityGroup), false, "", true, "Fidelity of rendering of mesh objects", getCurrentQualityLevel(MeshQualityGroup)); + OptionsMenuSettingsList.addOptionRow("Object Draw Distance", "$pref::Graphics::ObjectDrawDistance", getQualityLevels(MeshDrawDistQualityGroup), false, "", true, "Dictates if and when static objects fade out in the distance", getCurrentQualityLevel(MeshDrawDistQualityGroup)); + OptionsMenuSettingsList.addOptionRow("Texture Quality", "$pref::Graphics::TextureQuality", getQualityLevels(TextureQualityGroup), false, "", true, "Fidelity of textures", getCurrentQualityLevel(TextureQualityGroup)); + OptionsMenuSettingsList.addOptionRow("Terrain Quality", "$pref::Graphics::TerrainQuality", getQualityLevels(TerrainQualityGroup), false, "", true, "Quality level of terrain objects", getCurrentQualityLevel(TerrainQualityGroup)); + OptionsMenuSettingsList.addOptionRow("Decal Lifetime", "$pref::Graphics::DecalLifetime", getQualityLevels(DecalLifetimeGroup), false, "", true, "How long decals are rendered", getCurrentQualityLevel(DecalLifetimeGroup)); + OptionsMenuSettingsList.addOptionRow("Ground Cover Density", "$pref::Graphics::GroundCoverDensity", getQualityLevels(GroundCoverDensityGroup), false, "", true, "Density of ground cover items, such as grass", getCurrentQualityLevel(GroundCoverDensityGroup)); + OptionsMenuSettingsList.addOptionRow("Shader Quality", "$pref::Graphics::ShaderQuality", getQualityLevels(ShaderQualityGroup), false, "", true, "Dictates the overall shader quality level, adjusting what features are enabled.", getCurrentQualityLevel(ShaderQualityGroup)); + OptionsMenuSettingsList.addOptionRow("Anisotropic Filtering", "$pref::Video::defaultAnisotropy", %anisoFilter, false, "", true, "Amount of Anisotropic Filtering on textures, which dictates their sharpness at a distance", $pref::Video::defaultAnisotropy); + OptionsMenuSettingsList.addOptionRow("Anti-Aliasing", "$pref::Video::AA", %aaFilter, false, "", true, "Amount of Post-Processing Anti-Aliasing applied to rendering", $pref::Video::AA); + OptionsMenuSettingsList.addOptionRow("Parallax", "$pref::Video::disableParallaxMapping", %onOffList, false, "", true, "Whether the surface parallax shader effect is enabled", convertBoolToOnOff(!$pref::Video::disableParallaxMapping)); + OptionsMenuSettingsList.addOptionRow("Water Reflections", "$pref::Water::disableTrueReflections", %onOffList, false, "", true, "Whether water reflections are enabled", convertBoolToOnOff(!$pref::Water::disableTrueReflections)); + OptionsMenuSettingsList.addOptionRow("SSAO", "$pref::PostFX::EnableSSAO", %onOffList, false, "", true, "Whether Screen-Space Ambient Occlusion is enabled", convertBoolToOnOff($pref::PostFX::EnableSSAO)); + OptionsMenuSettingsList.addOptionRow("Depth of Field", "$pref::PostFX::EnableDOF", %onOffList, false, "", true, "Whether the Depth of Field effect is enabled", convertBoolToOnOff($pref::PostFX::EnableDOF)); + OptionsMenuSettingsList.addOptionRow("Vignette", "$pref::PostFX::EnableVignette", %onOffList, false, "", true, "Whether the vignette effect is enabled", convertBoolToOnOff($pref::PostFX::EnableVignette)); + OptionsMenuSettingsList.addOptionRow("Light Rays", "$pref::PostFX::EnableLightRays", %onOffList, false, "", true, "Whether the light rays effect is enabled", convertBoolToOnOff($pref::PostFX::EnableLightRays)); } -function OptionsMenu::applyGraphicsSettings(%this) -{ - LightingQualityList.applySetting(OptionsMenuSettingsList.getCurrentOption(0)); - ShadowQualityList.applySetting(OptionsMenuSettingsList.getCurrentOption(1)); - SoftShadowList.applySetting(OptionsMenuSettingsList.getCurrentOption(2)); - - MeshQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(3)); - MeshDrawDistQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(4)); - TextureQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(5)); - TerrainQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(6)); - DecalLifetimeGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(7)); - GroundCoverDensityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(8)); - ShaderQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(9)); - - //Update Textures - reloadTextures(); - - //Update lighting - // Set the light manager. This should do nothing - // if its already set or if its not compatible. - //setLightManager( $pref::lightManager ); - - $pref::PostFX::EnableSSAO = convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(14)); - $pref::PostFX::EnableDOF = convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(15)); - $pref::PostFX::EnableVignette = convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(16)); - $pref::PostFX::EnableLightRays = convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(17)); - - PostFXManager.settingsEffectSetEnabled(SSAOPostFx, $pref::PostFX::EnableSSAO); - PostFXManager.settingsEffectSetEnabled(DOFPostEffect, $pref::PostFX::EnableDOF); - PostFXManager.settingsEffectSetEnabled(LightRayPostFX, $pref::PostFX::EnableLightRays); - PostFXManager.settingsEffectSetEnabled(vignettePostFX, $pref::PostFX::EnableVignette); - - $pref::Video::disableParallaxMapping = !convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(12)); - - //water reflections - $pref::Water::disableTrueReflections = !convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(13)); - - // Check the anisotropic filtering. - %level = OptionsMenuSettingsList.getCurrentOption(10); - if ( %level != $pref::Video::defaultAnisotropy ) - { - $pref::Video::defaultAnisotropy = %level; - } - - %newFSAA = OptionsMenuSettingsList.getCurrentOption(11); - if (%newFSAA $= "off") - %newFSAA = 0; - if (%newFSAA !$= $pref::Video::AA) - { - $pref::Video::AA = %newFSAA; - configureCanvas(); - } - - echo("Exporting client prefs"); - %prefPath = getPrefpath(); - export("$pref::*", %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension, false); -} - function updateDisplaySettings() { //Update the display settings now - %deviceName = OptionsMenuSettingsList.getCurrentOption(1); + %deviceName = getDisplayDeviceName(); %newDeviceID = getWord(%deviceName, 0) - 1; - %deviceModeName = OptionsMenuSettingsList.getCurrentOption(2); + %deviceModeName = getField($Video::ModeTags, $pref::Video::deviceMode); %newDeviceMode = 0; foreach$(%modeName in $Video::ModeTags) { @@ -392,15 +402,15 @@ function updateDisplaySettings() %newDeviceMode++; } - %newRes = getWord(OptionsMenuSettingsList.getCurrentOption(3), 0) SPC getWord(OptionsMenuSettingsList.getCurrentOption(3), 2); + %newRes = $pref::Video::Resolution; %newBpp = 32; // ... its not 1997 anymore. %newFullScreen = %deviceModeName $= "Fullscreen" ? true : false; - %newRefresh = OptionsMenuSettingsList.getCurrentOption(5); - %newVsync = !convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(4)); + %newRefresh = $pref::Video::RefreshRate; + %newVsync = !$pref::Video::disableVerticalSync; %newFSAA = $pref::Video::AA; // Build the final mode string. - %newMode = %newRes SPC %newFullScreen SPC %newBpp SPC %newRefresh SPC %newFSAA; + %newMode = $pref::Video::Resolution SPC %newFullScreen SPC %newBpp SPC %newRefresh SPC %newFSAA; // Change the video mode. if ( %newMode !$= $pref::Video::mode || %newDeviceID != $pref::Video::deviceId || @@ -433,7 +443,18 @@ function updateDisplaySettings() } } -function populateAudioSettingsList(%this) +function updatePostFXSettings() +{ + PostFXManager.settingsEffectSetEnabled(SSAOPostFx, $pref::PostFX::EnableSSAO); + PostFXManager.settingsEffectSetEnabled(DOFPostEffect, $pref::PostFX::EnableDOF); + PostFXManager.settingsEffectSetEnabled(LightRayPostFX, $pref::PostFX::EnableLightRays); + PostFXManager.settingsEffectSetEnabled(vignettePostFX, $pref::PostFX::EnableVignette); +} + +// +// +// +function populateAudioSettingsList() { OptionsMenuSettingsList.clear(); @@ -472,13 +493,13 @@ function populateAudioSettingsList(%this) } } - OptionsMenuSettingsList.addOptionRow("Audio Provider", %audioProviderList, false, "audioProviderChanged", true, "", $currentAudioProvider); - OptionsMenuSettingsList.addOptionRow("Audio Device", %audioDeviceList, false, "", true, $pref::SFX::device); + OptionsMenuSettingsList.addOptionRow("Audio Provider", "$pref::SFX::AudioProvider", %audioProviderList, false, "audioProviderChanged", true, "", $currentAudioProvider); + OptionsMenuSettingsList.addOptionRow("Audio Device", "$pref::SFX::device", %audioDeviceList, false, "", true, $pref::SFX::device); - OptionsMenuSettingsList.addSliderRow("Master Volume", $pref::SFX::masterVolume, 0.1, "0 1", ""); - OptionsMenuSettingsList.addSliderRow("GUI Volume", $pref::SFX::channelVolume[ $GuiAudioType], 0.1, "0 1", ""); - OptionsMenuSettingsList.addSliderRow("Effects Volume", $pref::SFX::channelVolume[ $SimAudioType ], 0.1, "0 1", ""); - OptionsMenuSettingsList.addSliderRow("Music Volume", $pref::SFX::channelVolume[ $MusicAudioType ], 0.1, "0 1", ""); + OptionsMenuSettingsList.addSliderRow("Master Volume", "$pref::SFX::masterVolume", $pref::SFX::masterVolume, 0.1, "0 1", ""); + OptionsMenuSettingsList.addSliderRow("GUI Volume", "$pref::SFX::channelVolume[ $GuiAudioType]", $pref::SFX::channelVolume[ $GuiAudioType], 0.1, "0 1", ""); + OptionsMenuSettingsList.addSliderRow("Effects Volume", "$pref::SFX::channelVolume[ $SimAudioType ]", $pref::SFX::channelVolume[ $SimAudioType ], 0.1, "0 1", ""); + OptionsMenuSettingsList.addSliderRow("Music Volume", "$pref::SFX::channelVolume[ $MusicAudioType ]", $pref::SFX::channelVolume[ $MusicAudioType ], 0.1, "0 1", ""); } function audioProviderChanged() @@ -491,21 +512,21 @@ function audioProviderChanged() populateAudioSettingsList(); } -function OptionsMenu::applyAudioSettings(%this) +function updateAudioSettings() { - $pref::SFX::masterVolume = OptionsMenuSettingsList.getValue(2); + //$pref::SFX::masterVolume = OptionsMenuSettingsList.getValue(2); sfxSetMasterVolume( $pref::SFX::masterVolume ); - $pref::SFX::channelVolume[ $GuiAudioType ] = OptionsMenuSettingsList.getValue(3); - $pref::SFX::channelVolume[ $SimAudioType ] = OptionsMenuSettingsList.getValue(4); - $pref::SFX::channelVolume[ $MusicAudioType ] = OptionsMenuSettingsList.getValue(5); + //$pref::SFX::channelVolume[ $GuiAudioType ] = OptionsMenuSettingsList.getValue(3); + //$pref::SFX::channelVolume[ $SimAudioType ] = OptionsMenuSettingsList.getValue(4); + //$pref::SFX::channelVolume[ $MusicAudioType ] = OptionsMenuSettingsList.getValue(5); sfxSetChannelVolume( $GuiAudioType, $pref::SFX::channelVolume[ $GuiAudioType ] ); sfxSetChannelVolume( $SimAudioType, $pref::SFX::channelVolume[ $SimAudioType ] ); sfxSetChannelVolume( $MusicAudioType, $pref::SFX::channelVolume[ $MusicAudioType ] ); - $pref::SFX::provider = OptionsMenuSettingsList.getCurrentOption(0); - $pref::SFX::device = OptionsMenuSettingsList.getCurrentOption(1); + //$pref::SFX::provider = OptionsMenuSettingsList.getCurrentOption(0); + //$pref::SFX::device = OptionsMenuSettingsList.getCurrentOption(1); if ( !sfxCreateDevice( $pref::SFX::provider, $pref::SFX::device, @@ -521,7 +542,10 @@ function OptionsMenu::applyAudioSettings(%this) } } -function populateKeyboardMouseSettingsList(%this) +// +// +// +function populateKeyboardMouseSettingsList() { OptionsMenuSettingsList.clear(); @@ -534,7 +558,7 @@ function populateKeyboardMouseSettingsList(%this) //OptionsMenuSettingsList.refresh(); } -function populateGamepadSettingsList(%this) +function populateGamepadSettingsList() { OptionsMenuSettingsList.clear(); @@ -544,15 +568,30 @@ function populateGamepadSettingsList(%this) $remapListDevice = "gamepad"; fillRemapList(); - OptionsMenuSettingsList.refresh(); + OptionsMenuSettingsList.updateStack(); } +// +// +// function OptionsMenuList::activateRow(%this) { OptionsMenuSettingsList.setFirstResponder(); } function OptionsMenu::backOut(%this) +{ + if(%this.unappliedChanges.count() != 0) + { + MessageBoxOKCancel("Discard Changes?", "You have unapplied changes to your settings, do you wish to continue?", "OptionsMenu.doOptionsMenuBackOut();", ""); + } + else + { + %this.doOptionsMenuBackOut(); + } +} + +function OptionsMenu::doOptionsMenuBackOut(%this) { //save the settings and then back out if(OptionsMain.hidden == false) @@ -583,7 +622,7 @@ function OptionsMenuSettingsList::setRowEnabled(%this, %row, %status) } } -function OptionsMenuSettingsList::addOptionRow(%this, %label, %optionsList, %wrapOptions, %callback, %enabled, %description, %defaultValue) +function OptionsMenuSettingsList::addOptionRow(%this, %label, %targetPrefVar, %optionsList, %wrapOptions, %callback, %enabled, %description, %defaultValue) { if(%enabled $= "") %enabled = true; @@ -600,14 +639,27 @@ function OptionsMenuSettingsList::addOptionRow(%this, %label, %optionsList, %wra extent = %this.extent.x SPC %optionsRowSize; columnSplit = %optionColumnWidth; useMouseEvents = true; + previousBitmapAsset = "UI:previousOption_n_image"; + nextBitmapAsset = "UI:nextOption_n_image"; }; + %option.targetPrefVar = %targetPrefVar; //create a var-option association + + //now some override trickery, if we have a value cached for unapplied changes, swapsies the defaultValue out + //with the unapplied, allowing us to change options categories without losing changes + %unappliedPrefIndex = OptionsMenu.unappliedChanges.getIndexFromValue(%targetPrefVar); + if(%unappliedPrefIndex != -1) + { + %unappliedValue = OptionsMenu.unappliedChanges.getValue(%unappliedPrefIndex); + %defaultValue = %unappliedValue; + } + %option.setListSetting(%label, %optionsList, %wrapOptions, %callback, %enabled, %description, %defaultValue); %this.add(%option); } -function OptionsMenuSettingsList::addSliderRow(%this, %label, %defaultValue, %increment, %range, %callback, %enabled, %description) +function OptionsMenuSettingsList::addSliderRow(%this, %label, %targetPrefVar, %defaultValue, %increment, %range, %callback, %enabled, %description) { if(%enabled $= "") %enabled = true; @@ -626,11 +678,46 @@ function OptionsMenuSettingsList::addSliderRow(%this, %label, %defaultValue, %in useMouseEvents = true; }; + %option.targetPrefVar = %targetPrefVar; //create a var-option association + + //now some override trickery, if we have a value cached for unapplied changes, swapsies the defaultValue out + //with the unapplied, allowing us to change options categories without losing changes + %unappliedPrefIndex = OptionsMenu.unappliedChanges.getIndexFromValue(%targetPrefVar); + if(%unappliedPrefIndex != -1) + { + %unappliedValue = OptionsMenu.unappliedChanges.getValue(%unappliedPrefIndex); + %defaultValue = %unappliedValue; + } + %option.setSliderSetting(%label, %defaultValue, %increment, %range, %callback, %enabled, %description); %this.add(%option); } +function OptionsMenuSettingsList::addKeybindRow(%this, %label, %bitmapName, %callback, %enabled, %description) +{ + if(%enabled $= "") + %enabled = true; + + %optionsRowSize = 40; + %optionColumnWidth = %this.extent.x - 450; + + %option = new GuiGameSettingsCtrl() { + class = "MenuOptionsButton"; + profile = "GuiMenuButtonProfile"; + horizSizing = "width"; + vertSizing = "bottom"; + position = "0 0"; + extent = %this.extent.x SPC %optionsRowSize; + columnSplit = %optionColumnWidth; + useMouseEvents = true; + }; + + %option.setKeybindSetting(%label, %bitmapName, %callback, %enabled, %description); + + %this.add(%option); +} + // function OptionsMenuCategoryList::onNavigate(%this, %index) { @@ -738,6 +825,24 @@ function onDisplayResChange(%val) OptionsMenuSettingsList.selectOption(5, %newRate); } +function getDisplayDeviceName() +{ + %numDevices = Canvas.getMonitorCount(); + %devicesList = ""; + for(%i = 0; %i < %numDevices; %i++) + { + %device = (%i+1) @ " - " @ Canvas.getMonitorName(%i); + if(%i==0) + %devicesList = %device; + else + %devicesList = %devicesList @ "\t" @ %device; + } + + return getField(%devicesList, $pref::Video::deviceId); +} +// +// +// function MenuOptionsButton::onMouseEnter(%this) { OptionName.setText(%this.getLabel()); @@ -748,4 +853,84 @@ function MenuOptionsButton::onMouseLeave(%this) { OptionName.setText(""); OptionDescription.setText(""); -} \ No newline at end of file +} + +function MenuOptionsButton::onChange(%this) +{ + %optionMode = %this.getMode(); + %optionName = %this.getLabel(); + %tooltipText = %this.getTooltip(); + + %targetVar = %this.targetPrefVar; + + OptionName.setText(%optionName); + OptionDescription.setText(%tooltipText); + + %currentValue = %this.getCurrentOption(); + if(%currentValue !$= "") + { + if(%currentValue $= "yes" || %currentValue $= "on") + %saveReadyValue = 1; + else if(%currentValue $= "no" || %currentValue $= "off") + %saveReadyValue = 0; + else + %saveReadyValue = %currentValue; + + %prefIndex = OptionsMenu.unappliedChanges.getIndexFromKey(%targetVar); + if(%prefIndex == -1) + OptionsMenu.unappliedChanges.add(%targetVar, %saveReadyValue); + else + OptionsMenu.unappliedChanges.setValue(%saveReadyValue, %prefIndex); + } +} + +function OptionsMenu::onKeybindChanged(%this, %actionMap, %keybind) +{ + %prefIndex = OptionsMenu.unappliedChanges.getIndexFromKey(%actionMap); + if(%prefIndex == -1) + OptionsMenu.unappliedChanges.add(%actionMap, %keybind); + else + OptionsMenu.unappliedChanges.setValue(%keybind, %prefIndex); +} + +// +// Indicates what category the options item should be added into +// +function addOptionsMenuCategory(%categoryName, %selectCallback) +{ + OptionsMenu.optionsCategories.add(%categoryName, %selectCallback); +} + +function removeOptionsMenuCategory(%categoryName) +{ + %index = OptionsMenu.optionsCategories.getIndexFromKey(%categoryName); + if(%index != -1) + OptionsMenu.optionsCategories.erase(%index); +} + +function addListOption(%label, %description, %targetPrefVar, %optionsList, %wrapOptions, %callback, %enabled) +{ + if(%wrapOptions $= "") + %wrapOptions = false; + + if(%enabled $= "") + %enabled = true; + + OptionsMenuSettingsList.addOptionRow(%label, %targetPrefVar, %optionsList, %wrapOptions, %callback, %enabled, %description, %targetPrefVar); +} + +function addSliderOption(%label, %description, %targetPrefVar, %defaultValue, %increment, %range, %callback, %enabled) +{ + if(%enabled $= "") + %enabled = true; + + OptionsMenuSettingsList.addSliderRow(%label, %targetPrefVar, %defaultValue, %increment, %range, %callback, %enabled, %description); +} + +function addKeybindOption(%label, %description, %bitmapName, %callback, %enabled) +{ + if(%enabled $= "") + %enabled = true; + + OptionsMenuSettingsList.addSliderRow(%label, %bitmapName, %callback, %enabled, %description); +} diff --git a/Templates/BaseGame/game/data/UI/guis/pauseMenu.gui b/Templates/BaseGame/game/data/UI/guis/pauseMenu.gui index 77356fcdb..0ba6e7ce5 100644 --- a/Templates/BaseGame/game/data/UI/guis/pauseMenu.gui +++ b/Templates/BaseGame/game/data/UI/guis/pauseMenu.gui @@ -49,25 +49,31 @@ $guiContent = new GuiControl(PauseMenu) { isContainer = "1"; canSave = "1"; canSaveDynamicFields = "0"; - - new GuiGameListMenuCtrl(PauseMenuList) { - debugRender = "0"; - callbackOnInputs = "1"; - consumeKeyInputEvents = "1"; + + new GuiStackControl(PauseMenuList) { + stackingType = "Vertical"; + horizStacking = "Left to Right"; + vertStacking = "Top to Bottom"; + padding = "15"; + dynamicSize = "0"; + dynamicNonStackExtent = "0"; + dynamicPos = "0"; + changeChildSizeToFit = "1"; + changeChildPosition = "1"; position = "0 0"; extent = "700 320"; - minExtent = "8 2"; - horizSizing = "width"; - vertSizing = "bottom"; - profile = "DefaultListMenuProfile"; + minExtent = "16 16"; + horizSizing = "center"; + vertSizing = "center"; + profile = "GuiDefaultProfile"; visible = "1"; active = "1"; tooltipProfile = "GuiToolTipProfile"; hovertime = "1000"; - isContainer = "0"; - class = "UIMenuButtonList"; + isContainer = "1"; canSave = "1"; canSaveDynamicFields = "0"; + class = "MenuList"; }; }; new GuiControl(PauseButtonHolder) { @@ -147,5 +153,26 @@ $guiContent = new GuiControl(PauseMenu) { canSaveDynamicFields = "0"; }; }; + new GuiInputCtrl(PauseMenuInputHandler) { + class = "MenuInputHandler"; + sendAxisEvents = "1"; + sendBreakEvents = "1"; + sendModifierEvents = "0"; + ignoreMouseEvents = "1"; + lockMouse = "0"; + position = "-50 0"; + extent = "10 10"; + minExtent = "8 2"; + horizSizing = "width"; + vertSizing = "height"; + profile = "GuiInputCtrlProfile"; + visible = "1"; + active = "1"; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; }; //--- OBJECT WRITE END --- diff --git a/Templates/BaseGame/game/data/UI/guis/pauseMenu.tscript b/Templates/BaseGame/game/data/UI/guis/pauseMenu.tscript index 8d23b95d2..8751c16ef 100644 --- a/Templates/BaseGame/game/data/UI/guis/pauseMenu.tscript +++ b/Templates/BaseGame/game/data/UI/guis/pauseMenu.tscript @@ -8,19 +8,21 @@ function PauseMenu::onWake(%this) } PauseMenuList.hidden = false; - PauseMenuList.setFirstResponder(); - PauseButtonHolder.setActive(); - PauseMenuList.clearRows(); + PauseMenuList.clear(); if($Tools::loaded && EditorIsActive()) { - PauseMenuList.addRow("Exit Editor", "fastLoadWorldEdit", -1, -30); + %this.addPauseMenuButton("Exit Editor", "fastLoadWorldEdit();"); } - PauseMenuList.addRow("Options", "openPauseMenuOptions", -1, -30); - PauseMenuList.addRow("Exit to Menu", "pauseMenuExitToMenu", -1, -30); - PauseMenuList.addRow("Exit to Desktop", "pauseMenuExitToDesktop", -1, -30); + %this.addPauseMenuButton("Options", "openPauseMenuOptions();"); + %this.addPauseMenuButton("Exit to Menu", "pauseMenuExitToMenu();"); + %this.addPauseMenuButton("Exit to Desktop", "pauseMenuExitToDesktop();"); + + PauseMenuList.setAsActiveMenuList(); + PauseButtonHolder.setActive(); + PauseMenuInputHandler.setFirstResponder(); } @@ -36,8 +38,9 @@ function PauseMenu::onSleep(%this) function PauseMenu::onReturnTo(%this) { PauseMenuList.hidden = false; - PauseMenuList.setFirstResponder(); + PauseMenuList.setAsActiveMenuList(); PauseButtonHolder.setActive(); + PauseMenuInputHandler.setFirstResponder(); } function openPauseMenuOptions() @@ -61,6 +64,32 @@ function pauseMenuExitToDesktop() function PauseButtonHolder::onWake(%this) { - %this-->goButton.set("btn_a", "Return", "OK", "PauseMenuList.activateRow();", true); + %this-->goButton.set("btn_a", "Return", "OK", "PauseMenuList.activate();", true); %this-->backButton.set("btn_b", "Escape", "Back", "Canvas.popDialog();"); -} \ No newline at end of file +} + +function PauseMenu::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); +} diff --git a/Templates/BaseGame/game/data/UI/guis/profiler.tscript b/Templates/BaseGame/game/data/UI/guis/profiler.tscript index a13d7d9b5..56f88a189 100644 --- a/Templates/BaseGame/game/data/UI/guis/profiler.tscript +++ b/Templates/BaseGame/game/data/UI/guis/profiler.tscript @@ -363,4 +363,4 @@ function metrics( %expr ) } else $GameCanvas.popDialog(FrameOverlayGui); -} \ No newline at end of file +} diff --git a/Templates/BaseGame/game/data/UI/guis/recordingsDlg.asset.taml b/Templates/BaseGame/game/data/UI/guis/recordingsDlg.asset.taml index 7cc7b2168..2b0c337b5 100644 --- a/Templates/BaseGame/game/data/UI/guis/recordingsDlg.asset.taml +++ b/Templates/BaseGame/game/data/UI/guis/recordingsDlg.asset.taml @@ -1,7 +1,4 @@ + VersionId="1"/> diff --git a/Templates/BaseGame/game/data/UI/guis/startupGui.gui b/Templates/BaseGame/game/data/UI/guis/startupGui.gui index 647fc1b03..13f2460e3 100644 --- a/Templates/BaseGame/game/data/UI/guis/startupGui.gui +++ b/Templates/BaseGame/game/data/UI/guis/startupGui.gui @@ -35,7 +35,7 @@ $guiContent = new GuiFadeinBitmapCtrl(StartupGui) { Visible = "1"; tooltipprofile = "GuiToolTipProfile"; hovertime = "1000"; - bitmap = ""; + bitmapAsset = ""; wrap = "0"; command = "StartupGui.click();"; }; @@ -54,7 +54,7 @@ $guiContent = new GuiFadeinBitmapCtrl(StartupGui) { Visible = "1"; tooltipprofile = "GuiToolTipProfile"; hovertime = "1000"; - bitmap = ""; + bitmapAsset = ""; wrap = "0"; command = "StartupGui.click();"; }; diff --git a/Templates/BaseGame/game/data/UI/guis/startupGui.tscript b/Templates/BaseGame/game/data/UI/guis/startupGui.tscript index af673c819..a89226d70 100644 --- a/Templates/BaseGame/game/data/UI/guis/startupGui.tscript +++ b/Templates/BaseGame/game/data/UI/guis/startupGui.tscript @@ -32,7 +32,7 @@ function loadStartup() // A list of the splash screens and logos // to cycle through. Note that they have to // be in consecutive numerical order - StartupGui.bitmap[0] = "UI:background_dark_image"; + StartupGui.bitmap[0] = "UI:backgrounddark_image"; StartupGui.logo[0] = "UI:Torque_3D_logo_alt_image"; StartupGui.logoPos[0] = "178 251"; StartupGui.logoExtent[0] = "443 139"; diff --git a/Templates/BaseGame/game/data/UI/images/Torque-3D-logo-shortcut.png b/Templates/BaseGame/game/data/UI/images/Torque-3D-logo-shortcut.png deleted file mode 100644 index d993d4893f9112747e2099c1f111877db4064a86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10728 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 IQpVr@2Vh;nHvj+t diff --git a/Templates/BaseGame/game/data/UI/images/Torque-3D-logo-w.png b/Templates/BaseGame/game/data/UI/images/Torque-3D-logo-w.png deleted file mode 100644 index ec197dda39246e2f1f0a95f79d35a68aba584a01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19328 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 diff --git a/Templates/BaseGame/game/data/UI/images/Torque-3D-logo.png b/Templates/BaseGame/game/data/UI/images/Torque-3D-logo.png deleted file mode 100644 index e31d42a688a7e560b17237ff60edbf9c0c00dc4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9063 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 diff --git a/Templates/BaseGame/game/data/UI/images/Torque-3D-logo_alt.png b/Templates/BaseGame/game/data/UI/images/Torque-3D-logo_alt.png deleted file mode 100644 index 3836f1e7fc26b23ee299fa02570bbed343d2cb50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11616 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 diff --git a/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_alt_image.asset.taml b/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_alt_image.asset.taml index b153f46bc..a0e71c485 100644 --- a/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_alt_image.asset.taml +++ b/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_alt_image.asset.taml @@ -2,7 +2,7 @@ canSave="true" canSaveDynamicFields="true" AssetName="Torque_3D_logo_alt_image" - imageFile="@assetFile=Torque-3D-logo_alt.png" + imageFile="@assetFile=Torque_3D_logo_alt.png" UseMips="true" isHDRImage="false" imageType="Albedo" /> diff --git a/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_image.asset.taml b/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_image.asset.taml index da6130ae8..2315a3908 100644 --- a/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_image.asset.taml +++ b/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_image.asset.taml @@ -2,7 +2,7 @@ canSave="true" canSaveDynamicFields="true" AssetName="Torque_3D_logo_image" - imageFile="@assetFile=Torque-3D-logo.png" + imageFile="@assetFile=Torque_3D_logo.png" UseMips="true" isHDRImage="false" imageType="Albedo" /> diff --git a/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_shortcut_image.asset.taml b/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_shortcut_image.asset.taml index f780d2f0d..233a8b4fd 100644 --- a/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_shortcut_image.asset.taml +++ b/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_shortcut_image.asset.taml @@ -2,7 +2,7 @@ canSave="true" canSaveDynamicFields="true" AssetName="Torque_3D_logo_shortcut_image" - imageFile="@assetFile=Torque-3D-logo-shortcut.png" + imageFile="@assetFile=Torque_3D_logo_shortcut.png" UseMips="true" isHDRImage="false" imageType="Albedo" /> diff --git a/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_w_image.asset.taml b/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_w_image.asset.taml index 7d6d2fc14..f7dd36579 100644 --- a/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_w_image.asset.taml +++ b/Templates/BaseGame/game/data/UI/images/Torque_3D_logo_w_image.asset.taml @@ -2,7 +2,7 @@ canSave="true" canSaveDynamicFields="true" AssetName="Torque_3D_logo_w_image" - imageFile="@assetFile=Torque-3D-logo-w.png" + imageFile="@assetFile=Torque_3D_logo_w.png" UseMips="true" isHDRImage="false" imageType="Albedo" /> diff --git a/Templates/BaseGame/game/data/UI/images/background-dark.png b/Templates/BaseGame/game/data/UI/images/background-dark.png deleted file mode 100644 index 13b4bda55c7c7c5ebc87d54bf010a5c06c32cc28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5751 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w@K)Q9>#R~Q(W?pK9GlmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(yJ#f-(1)jG1mahE`DlHEz5)zh~zxepOxpVT_WpiI{9Bv9I#?+kdw?Mc!cDDpK4dr}|{V&IObIM4p>g6Y)Ko^Y*WU@7C!{s5xps z7vDHvSM*e2`>)U)d(|VWdJ-$@8w31tXMb<)gZ@0{keYQFH(czMBs@q~> zn&;1NcI;VZ;H3P{>CyGM=RJzzSf@WccSz#J^j6h*-_HNqIhTE}(1%yHFQ514PTwuF zeDUoqk0$%w_WKpJf9a)Uwj| zw&2wQ&0pKH+REH@%}EmJb_!OW zGp4f5o~+|5R3W3FZt!_3_u3tm$DB8`oai-}#Ca~`Qq7uoH$Pncb?~A@@l4^LC7G>z zD%R;QF+6$J+KrK;ckN2O+LLp8>-B`!G%V1YDXbPzV;dW?^!KevMB z|EKfa>qCbBwB3z9oOeEUe&zi8N)rvs>bEg6Ffg`cIy(n=Iy=LXIxvCHshw!+ao9oT zX#8a_S1mp|#%hPf>sJr7 zIGW@Y{QCU5^nxD!pXAgn!Qc1$82$oym@D+;g2o_HiZN+ z#?F~lN_%HCKL4?+y?=dq;Jl}`@6KOb{lu5;hsz_&Wzu3F**<<*wzT-3I^X6=O9bW% z_e+*IK5}1oT5o@$o|VprGaDv)o)vEIJetIQTK0@ro0pBNOkhawr`9#6xt{Bu%UXIY z>iZLYo~K)`W<|dho=?2CWc} zKKVcVb>-P&YU+2E1n|75+W59#P+n?VEVPFvK^mK6y0hUhJ4T15>aoE7&$RF>c>?%UP zwoVoSmTZSTfZEuA*Z_zdfJzv6fH(n&8JK|>Wat4PMpc4a2CHUbjfH8(v=AnP-AxG~ z2M%#JkrMo%(7+xs)D0(Ey9vK*v8S5B<|Z0v9dN!QHJoVdChQS&0F()_+I)avw2T3U z4dDU`cMxLNoB%WxyA1XyqIKQ@nLpUvL~7mvm8-N4CsN&nHCN$@c)}?SQ}ZBm6ZQmr z02n!=WeiH>kseUEf)K@6cqk`;f}Df|MeDpXTE+n5gNQ&LWchit9diJbkqDRMgDpRU zoITjwL`3pOQ8L diff --git a/Templates/BaseGame/game/data/UI/images/clear-btn_d.png b/Templates/BaseGame/game/data/UI/images/clear-btn_d.png deleted file mode 100644 index 229c71e8bddaa102f495a3dba47004f9c65cd0d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmV-X00s?QkPn?)w z6CVEP+t+W**N+`j{PO<2JW!f(R$hMapFe*XQ8a;^}fcc&U1q&WrzGUsRJ~|Nb$;HG%v9vf=yp@5~EJ%j{0ATbF1a6f`foz5TGU zkMHBZK=}_JKCu4%`b@n56}$ZWa=w55ESxrV$`TGP&c7%D0g8vBl`A{>#l#-3tgkQ2 zR8m^7wz;{KM@Z;(+3GdzvKks+{{Hz34m}oFOoJj$N=5Z+-m>NMzkdJ5{O|8yMqVD? zKm39MzuDN>{(%B$^X5%VKwbYCk<;G)|Nj|*als698ry$h&@!{I{AFfl{tFTZ1~u4K f&!0Y90T5sS_@w(H5qG>u00000NkvXXu0mjf2Ztbp diff --git a/Templates/BaseGame/game/data/UI/images/clear-btn_h.png b/Templates/BaseGame/game/data/UI/images/clear-btn_h.png deleted file mode 100644 index 5e67cb13b2b4a85172bfa47e74b66993f0b315a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595 zcmV-Z0<8UsP)Z)GIKgXfZeFjXq_kgNUj7V-2Ju1S$m*D2rhp`p zl9Fcr{{5R5=;ZW=4s#>mglFXG_fcy{jGxe}m8#*ZI9GM_(p zPV4K}uWDReT(?V0OVju5+t&+J`X6r7>({RxLPA1j0TnU5ee;GTDJjwa)albT#>U3& zL4koCPoF;ZdGX=}>z_Y=nBbcJ{{71fH0}21PoJ2xva|ipoIP7*Vq(%dVZwyX5fPEM zf$}_W-n;>6Vum}9nVI=>M@NUoh4be%&z?P7X=ZBLvS8uDP2azNXPP-ylRQAAkeFdrZPpa1{=Gs2xW zapJ^25Y5TSd0R(E=N8C@o}O;)$f)S{??1kax3#zR@eA<(K?!mT3yaSa`unr^czN$E zUc7iJFaS<0UAAlz7dO|l>C>iXT3T9u1p0>&9^{~y21T5Oh2^KYbLX{x`t-3I=nMva zet|!dQj))bw*LbK(3UM*m>C%v|1%<|J&=2U{P@8N#BBfm{$pZgW%wAA<=LJelEZTKubwTGJIwqVjwiI($lj%e)b#h zSV}4U^((?ZzW5oeF0X{QG;0x_gI(Zp1%{y0u%eoqB*Be}+Z35ISogfn=j{1}M~e5r zom^~6`il#Z>bB`G@&P}3s^gaM{dn?`64>vd+uy zC)Ag|rg#ir`9=|JM=PFw+g^xf&*YE1hYH5v6--s@cbdf?FJvm;W#*#H1Rw9hgS0Vv4;mgMH;x)r;fhYuV;(S;&;;NSt=u63|? zz%6O(;J_d!D}&pg-rnB0C5=o>QFLPjLReThZb@}b%@L7I2uePB_z*;W0B5A7%a^0e egYzdqfB^t3O)Y)0 z9XimShOxs=YQDsp@gJb1gn_Zvu?5E&#SyLef*bddTyF3YCK)zo&)JhrF5V0V0e+4h z&!GoIxa##XdV>0jSi8!D*$CI(frpPId zoX)3*M|j)3>wnqT_NAKB=~QbCw1-x!H26BvM$lT86^U`fnQd^FLPPQqy@lE%w=B^f)Fy&H|PPw->A71`mp00RIT5=iSlljg+$0000< KMNUMnLSTYWrq$s9 diff --git a/Templates/BaseGame/game/data/UI/images/collapse-toolbar_n.png b/Templates/BaseGame/game/data/UI/images/collapse-toolbar_n.png deleted file mode 100644 index b36de3ae049d9743a09dc6fc26af740cf9841360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmV;o0Z9IdP)Ox_mJPyDg4SlUjSNW3W5uGwOEk!Lx4uX4pZl7UqAx0i=rnvSAdP_$$A20Su(H_ zvh10InGB}9^1v-*3Cso@F>PaL>L}8isTm_PeHKN5r}hODW+z|w`}Q5O#yHtL&*`VC zP~)7=kRBzVBuOw+YZy|xe)*kcR2>cgwbuTO8@Fkiwr+iIX4$!2->q9vYwhDG`qk=o zMb~kBVd5z4oUzQ=+;7}ZXk^2MX<21r!6szg-dfzih^e4%lbv7^R`VYwdnU3IbzN)k2xeK9 hJ@8zg^|AXCU;u#ob3iiM+rIz+002ovPDHLkV1m|A!NdRn diff --git a/Templates/BaseGame/game/data/UI/images/dropdown-button-arrow.png b/Templates/BaseGame/game/data/UI/images/dropdown-button-arrow.png deleted file mode 100644 index 8c420ab85dad8b5ee3ca92464665ae071a471732..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^EFjFm1|(O0oL2{=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%sd>6MhE&{2%E`$|abUXZ<1r^pL9db1gt1VxgHed#<;qq~ cW)1^}6XL9#0Z$iS1nOY$boFyt=akR{0H4Any8r+H diff --git a/Templates/BaseGame/game/data/UI/images/dropdown-textEdit.png b/Templates/BaseGame/game/data/UI/images/dropdown-textEdit.png deleted file mode 100644 index 3966efbb56239be59ee13cddceab917b144882b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 zcmV;10eSw3P)^?7l2ZX@QwNIJ_tdJyVq-O;hN*R;|Jf8oKt&?reAz#jswl zv@I};de2`VaYRw1b@G>k2y~N}rTzTSqF{8F^S*pfDsBZxV07vonVb4jntpET307*qoM6N<$f}R+y&Hw-a diff --git a/Templates/BaseGame/game/data/UI/images/expand-toolbar_d.png b/Templates/BaseGame/game/data/UI/images/expand-toolbar_d.png deleted file mode 100644 index 462929e95039217cc59fe50d6a95c2b7054ac0b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmV+x0qOpUP)hgS0Vv4;mgMHsH*7Al-)#9Kh|`0|)U)I@mj4 zmz0y0VX$?;A?fYyjom>YT}CFR*d@cl!f^+Jx~ArcNG3!}K6>~NM125fq@~N3qsxQy cCqRG!07OkOz~-BXZ2$lO07*qoM6N<$f=)$pfdBvi diff --git a/Templates/BaseGame/game/data/UI/images/expand-toolbar_h.png b/Templates/BaseGame/game/data/UI/images/expand-toolbar_h.png deleted file mode 100644 index c33bcad6985b3862324279bc0f5457755b94f28f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 468 zcmV;_0W1EAP)qS?llb{VTLkjAsY;|aeyj=$>HXDkKfU1h$Gh(W#P&4TdW&oR`Nq&a3 zTN8um?Q=toI@keY`=EJd?T*CDZYvdgmA#wIqEGOnEJb$uEx-Uri&4ja71Rp=0000< KMNUMnLSTZ?xyoSx diff --git a/Templates/BaseGame/game/data/UI/images/expand-toolbar_n.png b/Templates/BaseGame/game/data/UI/images/expand-toolbar_n.png deleted file mode 100644 index 0af2f1bd13809d099ca3a5a5c9ba1dc42b6f66c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 437 zcmV;m0ZRUfP)4~o#5^Dg=ri|$!*BY zbpP3B?F$Y zwO%=>X`z&@9drv@g0dk;N^TmO`W3-u+KiE!MNwe&sko4$lziUp$nSm5RBnu=@2aBx z{tJ6eXN!gmYNct4`g&Fzw)&+;bvRI-=QzXGHr@KjvWz??HC?wpRyQl0+1YZdyi5{W zUN4=}-z_)f`gSe%?Dp<%8~-FuXmPb@UGQXjFw*+wZiCf_ZQoNiaUAu!c4K0>t=SF5 z!{LASY^7JJHJ)q5(e1RYDluRawr*}2FECOnsnf(0O2YO1qqJU$>_lDHiXEXW%d$tF f>$5J~UjYUHlxB7wIAEv(00000NkvXXu0mjf?KH=8 diff --git a/Templates/BaseGame/game/data/UI/images/group-border.png b/Templates/BaseGame/game/data/UI/images/group-border.png deleted file mode 100644 index 61234ae1fb3dee29eda38a371165d36b060ee426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1273 zcmVRq)0SqBM&U{ zK~RE8k;)fTv@rNVFsUphN-&N10jmTOk|LETicKV_m54TpVAK!`|L<7|`4E(7K4ARB zDus5>J(HaE?!4W7v&qH}czMI@+&44#&Ye5=o}G2_O1ZzkpGs6d@8oj17WcW!E!8%I zG7SwXm(AMBn08BdCX>0T948-RoKK$0X0t6*Q&aiH#l^fexw~LXm>2UyPMmS3yc8^% zPN&txvs=#V2iKgriKmXs^9tJFqjWWIBOj#Opr!-61IK}Xx1-s?{L4G0_&?_ilXv4x zqfZ_btu8MwSK|-wsQY~v)cnk(&+H?8J(|C{sz$fn!M^&){#~l$>@n5f-deC_;MX2J zsxZHFtA)8SUGF$_vOr$N_B~qGz~m2~oD@4WwsorNs!FYtyCThVSEZ(BX4T=g^Lm1w z!FRq%(Y|`AS3jc65Sso~f)<#1w-6X-QZF0;z1&IJw>OAO*=w$5nIM949%2g^Yzljy(oWy)Hf= zKP~7s_`nZIkS{YqF~l(je$;4#Z=xBAo(3O1_wqgCBii5tJte9r;~AA?zGq4`(Ts_n zWQL)#a^A!gm6r6qM+nP?0Sc)kNm@4Xtw-=SGYrxowl6GaQ(5@5B&1Y;X$f*x_i`5k zxlG?JMp&eYe3Cfrf#}H=#@X;~|BtO`5XzBM3_XQWv3X-F3LkUd8np$mW$;ZD@}tlb z@grOWzKMePX$!hz`6y0z95fS#p0K!L8Eqx>`_a=%75$H%65feFik{-gOB_87-@a&t zo=kbNraT|vFoAMIeOeI8_0#*bHBgfWlms3M{F=|;vk&HAk-V?7qf70j+dSQteXuCB zxme0WXRY7zZQiQU6W{Gki*a6ad*$6z80sP_3%q+`TtsI83dY1J6eRh$8vuYoz-JP{ zd_mbs-aVmUVdndNBq%XE#kqTuz$8gP5_U;MoS^NwxEOTzWZpMPmn%SJ z?(zSC4+0292nh@kvId`u$uPqZCPNED8bgi@LmbC`Ql1P|ln1?_pHA~@{Z%BXuPKfW j%4_?bDUt6}KLr>7B{DrC{G$C100000NkvXXu0mjfaJE^D diff --git a/Templates/BaseGame/game/data/UI/images/inactive-overlay.png b/Templates/BaseGame/game/data/UI/images/inactive-overlay.png deleted file mode 100644 index feab83209cc442c5ad8dc73c2b86e0a8115c4743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!foRZkbkkcwMLfBw9D?8~Obq{gPz9LVg>D`Q%4bP0l+XkKL$W0) diff --git a/Templates/BaseGame/game/data/UI/images/menu-button.png b/Templates/BaseGame/game/data/UI/images/menu-button.png deleted file mode 100644 index 3cfa036d8f5ec1d5458b0716efd2ea477cca0c6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3559 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 ZSBpO8NK=0oeKjq>KnJS*AI-m_{|h>L*X{rS diff --git a/Templates/BaseGame/game/data/UI/images/next-button_d.png b/Templates/BaseGame/game/data/UI/images/next-button_d.png deleted file mode 100644 index 76c3ec0ffbfd0e390d18bf15b641406a1c963304..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^+&~=2!3HE*cE)T6Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JigtRsIEGZ*dUIWo&smX&Az+(=poWapSz@o$*? zhV8dl?=!aFoKn4xeZo2Nf4=Qb$;zCp)-ipVh!6ks%DPE^D{?9q{wDx9i9DW z-@5CHEdniu-!^_}`*}dN=v;ZVvUv|*i@L#DeRZC~n>o$)T~mbY?ZFzA*KO@H&DTlVp33;PS)Y-O Z!Sa~S%jms^DnL&#c)I$ztaD0e0szoGZ1VsB diff --git a/Templates/BaseGame/game/data/UI/images/next-button_h.png b/Templates/BaseGame/game/data/UI/images/next-button_h.png deleted file mode 100644 index f52f5fb4230f07e879e02d61472b07c57d07712c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549 zcmV+=0^0qFP)0-qXkL_v~jv zlgT7TvAv7&%t^dYr_+a#hr^+@TrOWYNQ8?)a=v3urz2xpTz;W+6qyRv^uk~=B$Fa* zY7trZc?lJ%X2T_NO4CLKXgbTNCUvD{m}Vo^YPY~Tkd2ce$z(`A zSFm{3{j7pUGGsRDL1tMpV+>&!sySO(N(;fVWY6>Px?ZdKIygr@9z84;3mir8H9bcT zKSQ{#tA_9UkIBuZg(!-!TCLy*m)dh=+qMwLF?PEhHk&s@;`3dyZQCkM?RFd6?G_i? zH&3?FXf)96b}<|dg{B^9J^vSnF{HXe^vpq8OGKg(`@ zDPc4kq4(575CoTb2I&Kvq)6s=Hk-l!@S!1z#rXq!I-TG+j+$?6tXwP5KmRLDro?qz zvLl(u&>hLB$=P8+ zw(YFdb&VZ&3=k2N&8;vD6%z#@SPPD4Vq~7_lP=Gm!*~tPGFXzjSBY6BP=OAZn1#Yz zeMOAFs`Cm16Yd2fQ=s2N5ee+0alltX+9{%Ju=RO7?f|t1WmQ!f&x7^dJ=)Ck+zLbQ z8C%e;EK4{X{$aeYESPxc)^_`2^&U`(>ag;@-~WwZxO#4HMyn_aV}GbRTk76dt6?AK zsxC-Q@=mGD}pHXHn{a?_1VZvZ|8^e0u7drcunPkNJ1EWBngI a3oroff;ABVIBm%Q00000druqyUGAf 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 diff --git a/Templates/BaseGame/game/data/UI/images/previous-button_d.png b/Templates/BaseGame/game/data/UI/images/previous-button_d.png deleted file mode 100644 index 688b3034593019b560c95d56ca9ad50633a1d800..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmV+-0p0$IP)aLQWp}M-VW=GgSOtJO1OWsQ!>dPPUAR&lL*PV&z_HIo(bxiQo zG};(LQc4m+6k(jEjJ36vwAQ4Q+D*=|s;Zp)s}5;NiF@#a(PGS)F=NIkUe^`Jecxkv zS(e-o9)BL_eXU0B$9lCDhj0MLO$6qS*o3}t8TfCx>}q<#)g6KIH2DOD=f(ZiAb^zpyn zi5)f=3~mA3^Qa@I>5M1#`~A9Y+gB5((3 zy3Q2IOpqltj~r`OQ*qL)SfWmr$+)hfTDpz0?$jW9A znJJRv70iF?ezt;2GRTc;khLUPhNfxoeP8r3h{ls-8II%Nd9@OKJpLV-Xa}A&o6T`J zI4SalX4iGGUazs;zQX_TfVHg+=hoVTjm&s{2v?w?ly z*zfl+&4gw~WTf37V)v$tcDs#Qt(E{W`NC?cXTyDWF&d48=QKzEmifXSk4MnKPknMc zb1NV@$+2JAWC|R|1$QJB8FEKb+GN=OF;Pu&sb7pz%GFO|)dJg)641pwaK zh{1KW@K4h;sFYfamcsxM<0y(26Sjjr)t45dZ)H07*qoM6N<$f@y!$IRF3v diff --git a/Templates/BaseGame/game/data/UI/images/selector-button-blank.png b/Templates/BaseGame/game/data/UI/images/selector-button-blank.png deleted file mode 100644 index e965b3af6f2b9a269f2d363f6118060aaaacfe23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 744 zcmVP)OT4`WyUtC~=@hx+zySvwaKHgKA>83`kd%_BYOLNgO(Uv$2b*)@|Eg9YW@7fI zT~!q^i<8!-Y2N9)S2Rgnw#U*CJ*lmP+UI&jej#f@hhX^j%SM~?LF zi?zW-dhDh9K8FR%|AW1+Pd7{fT$3IAR&V6+TZaPUw@w9!-|CGXdJee7;UfF3q}2_F z-|E$KyQ*vs6_t}znHa6W?Ga9$rG&H;mg0WQq!gDq*w&w<$RMR-QTF zp5X9X$D|d%wE|28zjYYM_QYn*#rUnC;P6`qMiswx)bfSjir571FWj#7x87#*oU@1w z+uvGBam@&64A{^k=j;-))qZO&*qHn9Tm5kCB=ITlrQvKh0|K};_P1&c*wXu3jc4w^ zg=2r~8qq_QY(Sd1r diff --git a/Templates/BaseGame/game/data/UI/images/selector-button-dark.png b/Templates/BaseGame/game/data/UI/images/selector-button-dark.png deleted file mode 100644 index 84ee7e6f30f4eef5b3d2a1440495b16cf3b21f65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1942 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 LNkvXXu0mjfl=J=< diff --git a/Templates/BaseGame/game/data/UI/images/selector-button.png b/Templates/BaseGame/game/data/UI/images/selector-button.png deleted file mode 100644 index cd0780068892795e6329d713f48e84fa9f1df8d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4002 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 IM6N<$f{4Jk(*OVf diff --git a/Templates/BaseGame/game/data/UI/images/separator-h.png b/Templates/BaseGame/game/data/UI/images/separator-h.png deleted file mode 100644 index 339c0fbe039e8b5cbdd085230594099c26928157..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^Oh7Ed0V0oZ{G0)#BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%iF>*@hE&{2%E-w0@&CWQFtY@YFPFjrhT;U4EtAg|X#kZl Nc)I$ztaD0e0sy9+AwB>A diff --git a/Templates/BaseGame/game/data/UI/images/separator-v.png b/Templates/BaseGame/game/data/UI/images/separator-v.png deleted file mode 100644 index 6a0f873612cef214add9a2f88ed72dbafe92174c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^GC<74!2~3aY}VEQQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiX=Q;978H@CFNvfBrGsX`1Ak2{Z(F84g-d-`&k-}TiGQ5 P)i8Lv`njxgN@xNAx)CBs diff --git a/Templates/BaseGame/game/data/UI/images/slider - Copy.png b/Templates/BaseGame/game/data/UI/images/slider - Copy.png deleted file mode 100644 index 92fee1e9c13401f0b9fb319b14ebd267b7c1c8a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 908 zcmV;719SX|P)BsNz zeu<3YC~{d@T`O@7=Bqd8zh+r&1N$TtpK!GELCNikCSDYg%%{_tjFWkfZXnes>n;@ zqR|aj)!gZHXh8b=y;^A;kRu8#6pO{!Mvtd3L02hDKJM?<79kE%E?3>4B+0?(MwHD# znh=bupw`5N2ruq9KZs6u_7))i@#~}<;40XaEJtI*eV$Cj55Bf2ineZ<81cX|$A?-K ziRQ$vUFqvirBbh8IBB!lrWT$p@_Epw4{y{Jk<89s7(yreE_ZXgJAlQLOs#F|`{D~e zk1JU{!ht}*1pQDv9-m=Z)*TLqIgIfHJjnm+Zki*YSv0N&+<5q!9OI!(a(m|ZDWCi2 z+7hQAJOK~#FZBQBsFq0$xe508a5Ng7>+0%qd%a%d^ZA(i`uZ`3VWtE40bY>a7M7V# zB!+jkHs_9=>37>2j-V5r7a4n=; z!uTf4JA}`P;v1uD=Z~Jdb2XVYA zW9_{!_Y>&<@ydWoCaW7|c%=l304u9lXbBBDP18sKV$fMbp11YLDqKf%e#(kCvbjnH z0IY2MSwNH|Nr;Cm_2f`8%fP&(pfq1j&P&EykrGAGkevASCV(r$>yDU`^BZRlB!U6C zWJs>$^wwoAh)RXbi7W=16Mq@GgpA26$sz+uYE0GPzMbJE%h#`yBRq)9| zM)ez$XR{;UB9VaZPe36jlnmZKpDj2gSsD4W{t>WPgB5pU{)$x*B(ajOltDF2!h9-! iq)BbrE0*;C1Q-Ck2#=cQD4UW100001gDw+ diff --git a/Templates/BaseGame/game/data/UI/images/slider-w-box.png b/Templates/BaseGame/game/data/UI/images/slider-w-box.png deleted file mode 100644 index d9ef04961a30ad99f1e8871ef1f292b8a58d99f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 zcmV;{11bE8P)P001Qj1^@s6w^2g10000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#cu7P-RCwCFR!vM3K@@(oZI`u_7W)HS z_z46E5)-2a4+bql1U-1bs3#7@MD)a635mu~6G-Gn0+OI7O^h)fNi@NO!AOt<2?u@- z9*T%*X=%IvU1wGbyW4iRJ=m8_JMZl``|W!(^UWYsCMfWq4Q+02T9P!k*TKfx&%D0b zIAV74Q(YCX9ALy)joJOZchpx&6vet?Mob}N^dtoU6${^z1Pb{oBc|v~N>Z->n@DC( z^dn?hhVAVwNE{p-MuM=syre-K`>u)#Xl!f(o6S~Sxwf`8L6&6j`TR#QZC~prlSvid z+}u(e$w530ZEfwknBO1B>68EU^)=Huvgcc$9*%OPjCcpe23-4*Ecl4pS?Z!vATK~Iiu<8eTHFFyaGybOBf*v0#((zSZ!Ussc*KV zOSc(IBP*p4NV1{K&1b;)3K*lE;}RUd_RdRpkQHcQ{vA+^sH8cEioJZbKQB(*d>ETm zuGaa}MSa=Fv8LiO$#h;y@AHDD?T@o!>D`6mNv2*6_aqXDx41j*a=9k%Ha_7s%C58F zFXwu=WDCZkai-igF-SdCvFG!V4BWm>!3*e*>_?`8!JubxadCuYS^C-62cdY{%V|mO zPrfEv*U!cyQ>QNWdN!6mk8mtUKTi&Y8cr}=J`yS#jShsv;o0u)ZhuWp4fOW*GG4ED z6l>Dt*u#5hb>-U;I2DTx9PIAQwsqd{y8?C4-gT3yI9WaFU@BB>UKK8*>A7oteeO!E zq@o~z9iMO)Iy!(tXb3;o>AT`6pKHBx%T2qhfX53+u`y74whPk8o`uzwE162EM<|a8 zw7SIcYMIM%i)G?$iUZ2&2bNcK>ca7I7FI{%a5zA~1PCEZ@l)(h;K<%ZdJU70*H7+D zBuN4uf3=Z>TqcahOA4g;Y!Y6wSi+(x<|H9;qX{^~k}4v-QVOC4iG*J!WFkKE!Y<#Qq8}0K%2(y+C}?TL1t607*qoM6N<$ Eg3Ob{L;wH) diff --git a/Templates/BaseGame/game/data/UI/images/slider___Copy_image.asset.taml b/Templates/BaseGame/game/data/UI/images/slider___Copy_image.asset.taml deleted file mode 100644 index 3a460e432..000000000 --- a/Templates/BaseGame/game/data/UI/images/slider___Copy_image.asset.taml +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/Templates/BaseGame/game/data/UI/images/tab-border.png b/Templates/BaseGame/game/data/UI/images/tab-border.png deleted file mode 100644 index 6703924d48fb96552fe11a91696f7c282aea3439..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1203 zcmV;k1WfyhP)s+T@)zO{{b^^V< z=wH7wY(L{2P71F802ipY7kw@qE$vBN%q#5`37@CZ`H-O1-w@Umr|4D%f4*L^Nt+hhLK_6p2Z z%jmzE=C=LL3e%yyDGwhjj6U6g3bP`N-;PET+g?oxjXD4|r+B4=CaKr15}L$b?q6b0 zh8~SA%A;{SQ}t+Cpt=UfVlxhaEO#3>tT*c#8_eR@?>5%(PLkvwCV9zbSc8!+a4ONV zR-+KOJO_Zt7V|Std?$P6?aK-C`OA{+V;uY;3(0FXgFHquf);&@Yc?a<)A*xjHOZUF z9OEwblp3gHGX%+c&yuRyjAl==LJ=%0nk$@AZ@u)S6zSP8LLos?q-QfZ^*VWDa!G;yi`d#otZB4azuR)9UhD?F)aac|0iuXn*Eh1*_F zk5@SQ_F3yW*%QGMWE}P+4H9G+d(!r(D?=_|4>u*qe>cw_ShR}v@)e(9wdwjG#i_h1~oIT;xGv>0sd%EOptRemapText.setValue( "Re-bind \"" @ %name @ "\" to..." ); OptRemapInputCtrl.index = %rowIndex; Canvas.pushDialog( RemapDlg ); + + //Let the options menu know + %actionMap = $RemapActionMap[%rowIndex]; + + OptionsMenu.onKeybindChanged(%actionMap, %name); } function ControlsMenuRebindButton::onClick(%this) @@ -327,4 +334,4 @@ function redoMapping( %device, %actionMap, %action, %cmd, %oldIndex, %newIndex ) %actionMap.bind( %device, %action, %cmd ); fillRemapList(); -} \ No newline at end of file +} diff --git a/Templates/BaseGame/game/data/UI/scripts/cursors.tscript b/Templates/BaseGame/game/data/UI/scripts/cursors.tscript index d8aa31eeb..ba81636f7 100644 --- a/Templates/BaseGame/game/data/UI/scripts/cursors.tscript +++ b/Templates/BaseGame/game/data/UI/scripts/cursors.tscript @@ -37,4 +37,4 @@ else renderOffset = "0 0"; bitmapName = "data/ui/images/defaultCursor"; }; -} \ No newline at end of file +} diff --git a/Templates/BaseGame/game/data/UI/scripts/utility.tscript b/Templates/BaseGame/game/data/UI/scripts/utility.tscript index 357a6a182..e73d1c080 100644 --- a/Templates/BaseGame/game/data/UI/scripts/utility.tscript +++ b/Templates/BaseGame/game/data/UI/scripts/utility.tscript @@ -10,117 +10,123 @@ function getButtonBitmap(%device, %button) %device = "Xbox"; } - %path = ""; + %assetId = ""; if(%device $= "PS4") { - %path = "data/ui/images/inputs/PS4/PS4_"; + %assetId = "UI:PS4_"; if(%button $= "A" || %button $= "btn_a") - %path = %path @ "Cross"; + %assetId = %assetId @ "Cross"; else if(%button $= "B" || %button $= "btn_b") - %path = %path @ "Circle"; + %assetId = %assetId @ "Circle"; else if(%button $= "X" || %button $= "btn_x") - %path = %path @ "Square"; + %assetId = %assetId @ "Square"; else if(%button $= "Y" || %button $= "btn_y") - %path = %path @ "Triangle"; + %assetId = %assetId @ "Triangle"; else if(%button $= "LB") - %path = %path @ "L1"; + %assetId = %assetId @ "L1"; else if(%button $= "LT") - %path = %path @ "L2"; + %assetId = %assetId @ "L2"; else if(%button $= "RB") - %path = %path @ "R1"; + %assetId = %assetId @ "R1"; else if(%button $= "RT") - %path = %path @ "R2"; + %assetId = %assetId @ "R2"; else if(%button $= "thumbrx" || %button $= "thumbry") - %path = %path @ "Right_Stick"; + %assetId = %assetId @ "Right_Stick"; else if(%button $= "thumblx" || %button $= "thumbly") - %path = %path @ "Left_Stick"; + %assetId = %assetId @ "Left_Stick"; else if(%button $= "start") - %path = %path @ "Options"; + %assetId = %assetId @ "Options"; else if(%button $= "back") - %path = %path @ "Share"; + %assetId = %assetId @ "Share"; else if(%button $= "dpadu") - %path = %path @ "Dpad_Up"; + %assetId = %assetId @ "Dpad_Up"; else if(%button $= "dpadd") - %path = %path @ "Dpad_Down"; + %assetId = %assetId @ "Dpad_Down"; else if(%button $= "dpadl") - %path = %path @ "Dpad_Left"; + %assetId = %assetId @ "Dpad_Left"; else if(%button $= "dpadr") - %path = %path @ "Dpad_Right"; + %assetId = %assetId @ "Dpad_Right"; + + %assetId = %assetId @ "_image"; } else if(%device $= "Switch") { - %path = "data/ui/images/inputs/Switch/Switch_"; + %assetId = "UI:Switch_"; if(%button $= "A" || %button $= "btn_a") - %path = %path @ "B"; + %assetId = %assetId @ "B"; else if(%button $= "B" || %button $= "btn_b") - %path = %path @ "A"; + %assetId = %assetId @ "A"; else if(%button $= "X" || %button $= "btn_x") - %path = %path @ "Y"; + %assetId = %assetId @ "Y"; else if(%button $= "Y" || %button $= "btn_y") - %path = %path @ "X"; + %assetId = %assetId @ "X"; else if(%button $= "LB") - %path = %path @ "LB"; + %assetId = %assetId @ "LB"; else if(%button $= "LT") - %path = %path @ "LT"; + %assetId = %assetId @ "LT"; else if(%button $= "RB") - %path = %path @ "RB"; + %assetId = %assetId @ "RB"; else if(%button $= "RT") - %path = %path @ "RT"; + %assetId = %assetId @ "RT"; else if(%button $= "thumbrx" || %button $= "thumbry") - %path = %path @ "Right_Stick"; + %assetId = %assetId @ "Right_Stick"; else if(%button $= "thumblx" || %button $= "thumbly") - %path = %path @ "Left_Stick"; + %assetId = %assetId @ "Left_Stick"; else if(%button $= "start") - %path = %path @ "Plus"; + %assetId = %assetId @ "Plus"; else if(%button $= "back") - %path = %path @ "Minus"; + %assetId = %assetId @ "Minus"; else if(%button $= "dpadu") - %path = %path @ "Dpad_Up"; + %assetId = %assetId @ "Dpad_Up"; else if(%button $= "dpadd") - %path = %path @ "Dpad_Down"; + %assetId = %assetId @ "Dpad_Down"; else if(%button $= "dpadl") - %path = %path @ "Dpad_Left"; + %assetId = %assetId @ "Dpad_Left"; else if(%button $= "dpadr") - %path = %path @ "Dpad_Right"; + %assetId = %assetId @ "Dpad_Right"; + + %assetId = %assetId @ "_image"; } else if(%device $= "Keyboard" || %device $= "Mouse") { - %pathBase = "data/ui/images/Inputs/Keyboard & Mouse/Keyboard_Black_"; - %path = %pathBase @ %button @ ".png"; - if(!isFile(%path)) - %path = %pathBase @ "Blank"; + %assetId = "UI:Keyboard_Black_" @ %button @ "_image"; } else if(%device !$= "") { - %path = "data/ui/images/inputs/Xbox/Xbox_"; + %assetId = "UI:Xbox_"; if(%button $= "btn_a") - %path = %path @ "B"; + %assetId = %assetId @ "B"; else if(%button $= "btn_b") - %path = %path @ "A"; + %assetId = %assetId @ "A"; else if(%button $= "btn_x") - %path = %path @ "Y"; + %assetId = %assetId @ "Y"; else if(%button $= "btn_y") - %path = %path @ "X"; + %assetId = %assetId @ "X"; else if(%button $= "thumbrx" || %button $= "thumbry") - %path = %path @ "Right_Stick"; + %assetId = %assetId @ "Right_Stick"; else if(%button $= "thumblx" || %button $= "thumbly") - %path = %path @ "Left_Stick"; + %assetId = %assetId @ "Left_Stick"; else if(%button $= "start") - %path = %path @ "Menu"; + %assetId = %assetId @ "Menu"; else if(%button $= "back") - %path = %path @ "Windows"; + %assetId = %assetId @ "Windows"; else if(%button $= "dpadu") - %path = %path @ "Dpad_Up"; + %assetId = %assetId @ "Dpad_Up"; else if(%button $= "dpadd") - %path = %path @ "Dpad_Down"; + %assetId = %assetId @ "Dpad_Down"; else if(%button $= "dpadl") - %path = %path @ "Dpad_Left"; + %assetId = %assetId @ "Dpad_Left"; else if(%button $= "dpadr") - %path = %path @ "Dpad_Right"; + %assetId = %assetId @ "Dpad_Right"; + + %assetId = %assetId @ "_image"; } - return %path; -} \ No newline at end of file + if(!AssetDatabase.isDeclaredAsset(%assetId)) + %assetId = "UI:Keyboard_Black_Blank_image"; + + return %assetId; +} diff --git a/Templates/BaseGame/game/tools/projectImporter/scripts/projectImporter.tscript b/Templates/BaseGame/game/tools/projectImporter/scripts/projectImporter.tscript index 2e98c9b03..c149cf3f2 100644 --- a/Templates/BaseGame/game/tools/projectImporter/scripts/projectImporter.tscript +++ b/Templates/BaseGame/game/tools/projectImporter/scripts/projectImporter.tscript @@ -1743,7 +1743,9 @@ function beginGUIImport() DirectoryHandler::createFolder(0, filePath(%destinationPath)); } - if(!pathCopy(%file, %destinationPath, false)) + //Check if we need to even copy in the first place. If we do, ensure + //the copy actually worked + if((makeRelativePath(%file) !$= %destinationPath) && !pathCopy(%file, %destinationPath, false)) { projectImporterLog("ProjectImporter::beginGUIImport() - failed to copy GUI: " @ %file @ " to destination: " @ %destinationPath); @@ -1779,9 +1781,9 @@ function processGUIntoAsset(%guiName, %file) %tamlpath = %assetPath @ %assetName @ ".asset.taml"; %scriptFile = ""; - if(isImportingFile(%filePath @ "/" @ %fileName @ ".tscript")) + if(isImportingFile(makeFullPath(%filePath @ "/" @ %fileName @ "." @ $TorqueScriptFileExtension))) { - %scriptFile = %fileName @ ".tscript"; + %scriptFile = %fileName; } %asset = new GUIAsset()