From 6d2bfa0368388e0f3c92949abf647c49c06169de Mon Sep 17 00:00:00 2001 From: JeffR Date: Tue, 21 Jun 2022 00:25:03 -0500 Subject: [PATCH] Adds animations for Playerbot Fixes PauseMenu navigation behavior and confirms the menu buttons and page nav to standard Fixes PauseMenu and OptionMenu menu buttons that were not being set correctly on wake Fixes logic in the shape editor where it wouldn't add new sequences if you were working off a non-assetId sequence in the sequence list(such as ambient) --- .../shapes/Player/Playerbot.tscript | 13 ++++ .../game/data/UI/guis/optionsMenu.tscript | 42 ++++++----- .../BaseGame/game/data/UI/guis/pauseMenu.gui | 2 +- .../game/data/UI/guis/pauseMenu.tscript | 71 ++++++++++--------- .../data/UI/scripts/menuNavigation.tscript | 7 +- .../scripts/shapeEditorActions.ed.tscript | 2 +- 6 files changed, 84 insertions(+), 53 deletions(-) diff --git a/Templates/BaseGame/game/data/Prototyping/shapes/Player/Playerbot.tscript b/Templates/BaseGame/game/data/Prototyping/shapes/Player/Playerbot.tscript index 516cd9100..390321c4a 100644 --- a/Templates/BaseGame/game/data/Prototyping/shapes/Player/Playerbot.tscript +++ b/Templates/BaseGame/game/data/Prototyping/shapes/Player/Playerbot.tscript @@ -10,3 +10,16 @@ singleton TSShapeConstructor(Playerbotdae) removeRedundantMats = "0"; animFPS = "2"; }; + +function Playerbotdae::onLoad(%this) +{ + %this.addSequence("ambient", "Root", "0", "30", "1", "0"); + %this.addSequence("ambient", "Run", "31", "50", "1", "0"); + %this.addSequence("ambient", "Back", "51", "70", "1", "0"); + %this.addSequence("ambient", "Side", "71", "90", "1", "0"); + %this.addSequence("ambient", "Crouch_Root", "91", "120", "1", "0"); + %this.addSequence("ambient", "Look", "121", "122", "1", "0"); + %this.setSequenceCyclic("Look", "0"); + %this.setSequenceBlend("Look", "0", "", "0"); + %this.setSequenceBlend("Look", "1", "ambient", "121"); +} diff --git a/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript b/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript index 81d3bf2a6..b7f75275e 100644 --- a/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript +++ b/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript @@ -110,7 +110,7 @@ function OptionsMenu::onOpen(%this) OptionsMenuCategoryList.setAsActiveMenuList(); $activeMenuButtonContainer-->button1.set("btn_back", "R", "Reset", "OptionsMenu.resetToDefaults();"); - $activeMenuButtonContainer-->button1.disable(); + $activeMenuButtonContainer-->button2.disable(); $activeMenuButtonContainer-->button3.set("", "Space", "Apply", "OptionsMenu.apply();"); $activeMenuButtonContainer-->button4.set("btn_a", "", "Select", "OptionsMenu.select();"); $activeMenuButtonContainer-->button5.set("btn_b", "Escape", "Back", %this @ ".navigation.popPage();"); @@ -130,7 +130,6 @@ function OptionsMenu::canClose(%this) if(OptionsMenuSettingsList.isActiveMenuList()) { OptionsMenuCategoryList.setAsActiveMenuList(); - %this.updateSelectButton(); return false; } else @@ -168,19 +167,6 @@ function OptionsMenu::select(%this) if(OptionsMenuCategoryList.isActiveMenuList()) { OptionsMenuSettingsList.setAsActiveMenuList(); - %this.updateSelectButton(); - } -} - -function OptionsMenu::updateSelectButton(%this) -{ - if(OptionsMenuCategoryList.isActiveMenuList()) - { - %this-->selectButton.setHidden(false); - } - else if(OptionsMenuSettingsList.isActiveMenuList()) - { - %this-->selectButton.setHidden(true); } } @@ -763,7 +749,8 @@ function populateGamepadSettingsList() // function OptionsMenuList::activateRow(%this) { - OptionsMenuSettingsList.setFirstResponder(); + //OptionsMenuSettingsList.setFirstResponder(); + OptionsMenuSettingsList.setAsActiveMenuList(); } function OptionsMenuSettingsList::setRowEnabled(%this, %row, %status) @@ -798,6 +785,29 @@ function OptionsMenuSettingsList::addOptionRow(%this, %label, %targetPrefVar, %o %option.targetPrefVar = %targetPrefVar; //create a var-option association + if(%defaultValue $= "") + { + %unappliedPrefIndex = OptionsMenu.unappliedChanges.getIndexFromKey(%targetPrefVar); + if(%unappliedPrefIndex != -1) + { + %value = OptionsMenu.unappliedChanges.getValue(%unappliedPrefIndex); + %defaultValue = strreplace(%value, "\"", ""); + } + + if(%defaultValue $= "") + { + %sanitizedVar = strReplace(%targetPrefVar, "[", ""); + %sanitizedVar = strReplace(%sanitizedVar, "]", ""); + %sanitizedVar = strReplace(%sanitizedVar, ",", "_"); + %defaultValue = getVariable(%sanitizedVar); + } + } + + if(%defaultValue $= "Off" || %defaultValue $= "No") + %defaultValue = "0"; + if(%defaultValue $= "On" || %defaultValue $= "Yes") + %defaultValue = "1"; + %option.setListSetting(%label, %optionsList, %wrapOptions, %callback, %enabled, %description, %defaultValue); %this.add(%option); diff --git a/Templates/BaseGame/game/data/UI/guis/pauseMenu.gui b/Templates/BaseGame/game/data/UI/guis/pauseMenu.gui index f0b9494e7..6e02697d8 100644 --- a/Templates/BaseGame/game/data/UI/guis/pauseMenu.gui +++ b/Templates/BaseGame/game/data/UI/guis/pauseMenu.gui @@ -17,7 +17,7 @@ $guiContent = new GuiControl(PauseMenu) { isContainer = "1"; canSaveDynamicFields = "1"; }; - new GuiControl() { + new GuiControl(PauseMenuButtons) { position = "162 125"; extent = "700 518"; horizSizing = "center"; diff --git a/Templates/BaseGame/game/data/UI/guis/pauseMenu.tscript b/Templates/BaseGame/game/data/UI/guis/pauseMenu.tscript index 715690443..0c55e625f 100644 --- a/Templates/BaseGame/game/data/UI/guis/pauseMenu.tscript +++ b/Templates/BaseGame/game/data/UI/guis/pauseMenu.tscript @@ -7,8 +7,16 @@ function PauseMenu::onWake(%this) sfxSetChannelVolume( $SimAudioType, $pref::SFX::channelVolume[ 0 ] ); } - PauseMenuList.hidden = false; + PauseButtonHolder.setActive(); + PauseMenuInputHandler.setFirstResponder(); + %this.resizePages = true; + + %this.setRootPage(PauseMenuButtons); +} + +function PauseMenuButtons::onOpen(%this) +{ PauseMenuList.clear(); if($Tools::loaded && EditorIsActive()) @@ -21,13 +29,39 @@ function PauseMenu::onWake(%this) %this.addPauseMenuButton("Exit to Desktop", "pauseMenuExitToDesktop();"); PauseMenuList.setAsActiveMenuList(); - PauseButtonHolder.setActive(); - PauseMenuInputHandler.setFirstResponder(); - %this.resizePages = true; + $activeMenuButtonContainer-->button1.disable(); + $activeMenuButtonContainer-->button2.disable(); + $activeMenuButtonContainer-->button3.disable(); + $activeMenuButtonContainer-->button4.set("btn_a", "", "OK", "PauseMenuList.activate();"); + $activeMenuButtonContainer-->button5.set("btn_b", "Escape", "Back", "Canvas.popDialog();"); } +function PauseMenuButtons::addPauseMenuButton(%this, %buttonText, %buttonCallback) +{ + %newButton = new GuiButtonCtrl() { + text = %buttonText; + groupNum = "-1"; + buttonType = "PushButton"; + useMouseEvents = "0"; + position = "0 0"; + extent = "400 55"; + minExtent = "8 2"; + horizSizing = "right"; + vertSizing = "bottom"; + profile = "GuiMenuButtonProfile"; + visible = "1"; + active = "1"; + command = %buttonCallback; + tooltipProfile = "GuiToolTipProfile"; + hovertime = "1000"; + isContainer = "0"; + canSave = "1"; + canSaveDynamicFields = "0"; + }; + PauseMenuList.add(%newButton); +} function PauseMenu::onSleep(%this) { if($Server::ServerType $= "SinglePlayer") @@ -54,35 +88,6 @@ function pauseMenuExitToDesktop() function PauseButtonHolder::onWake(%this) { - %this-->button1.disable(); - %this-->button2.disable(); - %this-->button3.disable(); - %this-->button4.set("btn_a", "", "OK", "PauseMenuList.activate();"); - %this-->button4.set("btn_b", "Escape", "Back", "Canvas.popDialog();"); -} -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/scripts/menuNavigation.tscript b/Templates/BaseGame/game/data/UI/scripts/menuNavigation.tscript index 2ff3dc953..20ff05ff7 100644 --- a/Templates/BaseGame/game/data/UI/scripts/menuNavigation.tscript +++ b/Templates/BaseGame/game/data/UI/scripts/menuNavigation.tscript @@ -175,8 +175,11 @@ function UINavigation::popPage(%this, %callback) } %newTopPage = %this.getCurrentPage(); - if(%newTopPage.isMethod("onOpen")) - %newTopPage.call("onOpen"); + if(isObject(%newTopPage)) + { + if(%newTopPage.isMethod("onOpen")) + %newTopPage.call("onOpen"); + } if(%callback !$= "") eval(%callback); diff --git a/Templates/BaseGame/game/tools/shapeEditor/scripts/shapeEditorActions.ed.tscript b/Templates/BaseGame/game/tools/shapeEditor/scripts/shapeEditorActions.ed.tscript index 656871086..f3c27f8a3 100644 --- a/Templates/BaseGame/game/tools/shapeEditor/scripts/shapeEditorActions.ed.tscript +++ b/Templates/BaseGame/game/tools/shapeEditor/scripts/shapeEditorActions.ed.tscript @@ -318,7 +318,7 @@ function ShapeEditor::doAddSequence( %this, %seqName, %from, %start, %end ) function ActionAddSequence::doit( %this ) { - if(ShapeEditorPlugin.selectedAssetDef $= "") + if(ShapeEditorPlugin.selectedAssetDef $= "" || !AssetDatabase.isDeclaredAsset(%this.seqName)) { // If adding this sequence from an existing sequence, make a backup copy of // the existing sequence first, so we can edit the start/end frames later