mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-20 04:34:48 +00:00
Adds ability to select an actionmap for a GuiInputCtrl which will push it onto the stack, so menus can enact an action map Update of the MainMenuGUI to fit new style and have the logic needed for KBM and gamepad navigation Very early wipwork of OptionsMenu overhaul for new standard
107 lines
4.1 KiB
Plaintext
107 lines
4.1 KiB
Plaintext
function MainMenuButtons::onWake(%this)
|
|
{
|
|
}
|
|
|
|
function MainMenuButtons::onSleep(%this)
|
|
{
|
|
}
|
|
|
|
//==============================================================================
|
|
// This gets called by the MainMenuGUI beacuse it, being a UINavigation classed control
|
|
// set MainMenuButtonList as it's root page.
|
|
// This is an optional function, but is called as part of the validation that the page
|
|
// CAN be opened, so it's shown here as an example
|
|
function MainMenuButtons::canOpen(%this)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
//==============================================================================
|
|
// This gets called by the MainMenuGUI beacuse it, being a UINavigation classed control
|
|
// set MainMenuButtonList as it's root page.
|
|
// Once the page is added to the MainMenuGUI's UINavigation page stack, onOpen here is called
|
|
// Which allows us to actually do the work we need to do for display
|
|
function MainMenuButtons::onOpen(%this)
|
|
{
|
|
//Here, we set the MainMenuButtonList - a GuiStackControl with the MenuList class
|
|
// to be the active menu list.
|
|
// This means that when the MainMenuGUI's MainMenuInputHandler receives an input
|
|
// or we have one of the buttons in the MainMenuButtonHolder be actioned, we know
|
|
// we're working/navigating this list of buttons specifically
|
|
// In practice, it sets the $activeMenuList global variable so the various menu class code
|
|
// can reference it consistently
|
|
MainMenuButtonList.setAsActiveMenuList();
|
|
|
|
//Because MainMenuGUI set it's MainMenuButtonHolder as the active button container, we can reference it
|
|
//by $activeMenuButtonContainer and set the menu button/accelerator prompts we need for the MainMenuButtonList
|
|
//specifically.
|
|
//In particular, being a simple list of buttons, the only one we NEED is a simple activate, so we'll
|
|
//disable all the other ones to keep them clear in case they were set by other pages at some point
|
|
$activeMenuButtonContainer-->button1.disable();
|
|
$activeMenuButtonContainer-->button2.disable();
|
|
$activeMenuButtonContainer-->button3.disable();
|
|
|
|
//Here we set the 4th button in the container
|
|
//All the buttons have the MenuInputButton class, which, like the other classes
|
|
//help keep things accessible and consistent. Here we use that class's set function to
|
|
//configure the accelerator behavior
|
|
//The first parameter sets the gamepad button to the 'A' button
|
|
//The second sets the keyboard button to Enter or Return
|
|
//Third is what the displayed text will be
|
|
//And finally we set the command when the button is clicked, or either key inputs are caught by
|
|
//our MenuInputHandler
|
|
//The menu buttons automatically detect which input device you're using and swap the display between
|
|
//gamepad or keyboard for consistent behavior
|
|
$activeMenuButtonContainer-->button4.set("btn_a", "Return", "Go", "MainMenuButtonList.activate();");
|
|
$activeMenuButtonContainer-->button5.disable();
|
|
}
|
|
|
|
//Optional, as the check defaults to true, but here as an example case
|
|
function MainMenuButtons::canClose(%this)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
|
|
function MainMenuButtons::onClose(%this)
|
|
{
|
|
}
|
|
|
|
//Our actual commands when we activate the buttons
|
|
function openSinglePlayerMenu()
|
|
{
|
|
$pref::HostMultiPlayer=false;
|
|
MainMenuGui.pushPage(ChooseLevelDlg);
|
|
}
|
|
|
|
function openMultiPlayerMenu()
|
|
{
|
|
$pref::HostMultiPlayer=true;
|
|
|
|
//Here, like the other commands, we add a new page onto the stack
|
|
//In this case, we'll push the ChooseLevelDlg control onto the stack. This will
|
|
//invoke the canClose() and then onClose() functions for MainMenuButtonList
|
|
//before calling the onOpen() for ChooseLevelDlg then displaying.
|
|
MainMenuGui.pushPage(ChooseLevelDlg);
|
|
}
|
|
|
|
function openJoinServerMenu()
|
|
{
|
|
//Here, like the other commands, we add a new page onto the stack
|
|
//In this case, we'll push the JoinServerMenu control onto the stack. This will
|
|
//invoke the canClose() and then onClose() functions for MainMenuButtonList
|
|
//before calling the onOpen() for JoinServerMenu then displaying.
|
|
MainMenuGui.pushPage(JoinServerMenu);
|
|
}
|
|
|
|
|
|
|
|
function openWorldEditorBtn()
|
|
{
|
|
fastLoadWorldEdit(1);
|
|
}
|
|
|
|
function openGUIEditorBtn()
|
|
{
|
|
fastLoadGUIEdit(1);
|
|
} |