Ver Fonte

Merge pull request #1295 from Areloch/GameMenuToggleActionmap

Ensures there's a regular fallback actionmap for toggling the game menu
Brian Roberts há 1 ano atrás
pai
commit
06bcf57755

+ 2 - 2
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)

+ 23 - 2
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);