mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-04-03 03:25:11 +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
90 lines
No EOL
2.3 KiB
Text
90 lines
No EOL
2.3 KiB
Text
function MainMenuGui::onAdd(%this)
|
|
{
|
|
}
|
|
|
|
function MainMenuGui::onWake(%this)
|
|
{
|
|
MainMenuButtonList.listPosition = 0;
|
|
}
|
|
|
|
if(!isObject( MainMenuActionMap ) )
|
|
{
|
|
new ActionMap(MainMenuActionMap){};
|
|
|
|
MainMenuActionMap.bind( keyboard, w, mainMenuNavigateUp );
|
|
MainMenuActionMap.bind( keyboard, s, mainMenuNavigateDown );
|
|
MainMenuActionMap.bind( gamepad, yaxis, "D", "-0.23 0.23", mainMenuStickNavigate );
|
|
MainMenuActionMap.bind( gamepad, upov, mainMenuNavigateUp );
|
|
MainMenuActionMap.bind( gamepad, dpov, mainMenuNavigateDown );
|
|
|
|
MainMenuActionMap.bind( keyboard, Enter, activateSelected );
|
|
MainMenuActionMap.bind( gamepad, btn_a, activateSelected );
|
|
}
|
|
|
|
function mainMenuNavigateUp(%val)
|
|
{
|
|
if(%val)
|
|
{
|
|
MainMenuButtonList.listPosition -= 1;
|
|
if(MainMenuButtonList.listPosition < 0)
|
|
MainMenuButtonList.listPosition = 0;
|
|
|
|
MainMenuGUI.syncGUI();
|
|
}
|
|
}
|
|
|
|
function mainMenuNavigateDown(%val)
|
|
{
|
|
if(%val)
|
|
{
|
|
MainMenuButtonList.listPosition += 1;
|
|
if(MainMenuButtonList.listPosition >= MainMenuButtonList.getCount())
|
|
MainMenuButtonList.listPosition = MainMenuButtonList.getCount()-1;
|
|
|
|
MainMenuGUI.syncGUI();
|
|
}
|
|
}
|
|
|
|
function mainMenuStickNavigate(%val)
|
|
{
|
|
if(%val == -1)
|
|
mainMenuNavigateUp(1);
|
|
else if(%val == 1)
|
|
mainMenuNavigateDown(1);
|
|
}
|
|
|
|
function MainMenuGUI::syncGUI(%this)
|
|
{
|
|
MainMenuButtonList.callOnChildren("setHighlighted", false);
|
|
|
|
%btn = MainMenuButtonList.getObject(MainMenuButtonList.listPosition);
|
|
%btn.setHighlighted(true);
|
|
|
|
//
|
|
//Update the button imagery to comply to the last input device we'd used
|
|
%device = Canvas.getLastInputDevice();
|
|
if(%device $= "mouse")
|
|
%device = "keyboard";
|
|
|
|
%binding = MainMenuActionMap.getBinding("activateSelected");
|
|
|
|
%bindingCount = getFieldCount(%binding);
|
|
for(%i=0; %i < %bindingCount; %i+=2)
|
|
{
|
|
%mapDevice = stripTrailingNumber(getField(%binding, %i));
|
|
if(%mapDevice $= %device)
|
|
{
|
|
%button = getField(%binding, %i+1);
|
|
break;
|
|
}
|
|
}
|
|
|
|
%assetId = getButtonBitmap(%device, %button);
|
|
MainMenuGoButton.setBitmap(%assetId);
|
|
}
|
|
|
|
function activateSelected()
|
|
{
|
|
%btn = MainMenuButtonList.getObject(MainMenuButtonList.listPosition);
|
|
%btn.performClick();
|
|
} |