Merge pull request #1295 from Areloch/GameMenuToggleActionmap

Ensures there's a regular fallback actionmap for toggling the game menu
This commit is contained in:
Brian Roberts 2024-07-24 11:12:48 -05:00 committed by GitHub
commit 06bcf57755
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 25 additions and 4 deletions

View file

@ -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)

View file

@ -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);