diff --git a/Templates/BaseGame/game/data/UI/UI.tscript b/Templates/BaseGame/game/data/UI/UI.tscript index 0588758d2..cccea7eff 100644 --- a/Templates/BaseGame/game/data/UI/UI.tscript +++ b/Templates/BaseGame/game/data/UI/UI.tscript @@ -88,12 +88,12 @@ function UI::initClient(%this) function UI::onCreateClientConnection(%this) { - GameMenuActionMap.push(); + GameMenuToggleActionMap.push(); } function UI::onDestroyClientConnection(%this) { - GameMenuActionMap.pop(); + GameMenuToggleActionMap.pop(); } function UI::registerGameMenus(%this, %menusArrayObj) diff --git a/Templates/BaseGame/game/data/UI/guis/GameMenu.tscript b/Templates/BaseGame/game/data/UI/guis/GameMenu.tscript index 117e7f184..892a43bf9 100644 --- a/Templates/BaseGame/game/data/UI/guis/GameMenu.tscript +++ b/Templates/BaseGame/game/data/UI/guis/GameMenu.tscript @@ -64,6 +64,15 @@ function GameMenu::onSleep(%this) } } +//This is just for general usage/fallback for ensuring we can get to the game menu +if(!isObject( GameMenuToggleActionMap ) ) +{ + new ActionMap(GameMenuToggleActionMap){}; + + GameMenuToggleActionMap.bindCmd( keyboard, Escape, "toggleGameMenu();", "" ); + GameMenuToggleActionMap.bindCmd( gamepad, btn_start, "toggleGameMenu();", "" ); +} + if(!isObject( GameMenuActionMap ) ) { new ActionMap(GameMenuActionMap){}; @@ -78,9 +87,9 @@ if(!isObject( GameMenuActionMap ) ) GameMenuActionMap.bind( keyboard, Space, BaseUIActivateSelected ); GameMenuActionMap.bind( gamepad, btn_a, BaseUIActivateSelected ); - GameMenuActionMap.bindCmd( keyboard, Escape, "Canvas.popDialog(GameMenu);", "" ); + GameMenuActionMap.bindCmd( keyboard, Escape, "toggleGameMenu();", "" ); GameMenuActionMap.bindCmd( gamepad, btn_b, "Canvas.popDialog(GameMenu);", "" ); - GameMenuActionMap.bindCmd( gamepad, btn_start, "Canvas.popDialog(GameMenu);", "" ); + GameMenuActionMap.bindCmd( gamepad, btn_start, "toggleGameMenu();", "" ); GameMenuActionMap.bind( keyboard, q, GameMenuPrevMenu ); GameMenuActionMap.bind( gamepad, btn_l, GameMenuPrevMenu ); @@ -89,6 +98,18 @@ if(!isObject( GameMenuActionMap ) ) GameMenuActionMap.bind( gamepad, btn_r, GameMenuNextMenu ); } +function toggleGameMenu() +{ + if(GameMenu.isAwake() && GameMenu.isVisible()) + { + Canvas.popDialog(GameMenu); + } + else + { + Canvas.pushDialog(GameMenu); + } +} + function GameMenu::openGameMenu(%this, %menuName) { %menuIdx = %this.gameMenusArray.getIndexFromKey(%menuName);