Ongoing wipwork of the BaseUI update. Some bugfixes pending

This commit is contained in:
Areloch 2023-12-16 23:18:33 -06:00
parent 616d974212
commit ce4c8dabc9
53 changed files with 2033 additions and 3892 deletions

View file

@ -4,60 +4,84 @@ function MainMenuGui::onAdd(%this)
function MainMenuGui::onWake(%this)
{
MainMenuButtonList.listPosition = 0;
$MenuList = MainMenuButtonList;
$MenuList.listPosition = 0;
}
if(!isObject( MainMenuActionMap ) )
function MainMenuGui::onSleep(%this)
{
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(!isObject( BaseUIActionMap ) )
{
new ActionMap(BaseUIActionMap){};
BaseUIActionMap.bind( keyboard, w, BaseUINavigatePrev );
BaseUIActionMap.bind( keyboard, s, BaseUINavigateNext );
BaseUIActionMap.bind( gamepad, yaxis, "D", "-0.23 0.23", BaseUIStickNavigate );
BaseUIActionMap.bind( gamepad, upov, BaseUINavigatePrev );
BaseUIActionMap.bind( gamepad, dpov, BaseUINavigateNext );
BaseUIActionMap.bind( keyboard, Enter, BaseUIActivateSelected );
BaseUIActionMap.bind( gamepad, btn_a, BaseUIActivateSelected );
BaseUIActionMap.bind( keyboard, Escape, BaseUIBackOut );
BaseUIActionMap.bind( gamepad, btn_b, BaseUIBackOut );
}
function BaseUINavigatePrev(%val)
{
if(%val)
{
MainMenuButtonList.listPosition -= 1;
if(MainMenuButtonList.listPosition < 0)
MainMenuButtonList.listPosition = 0;
$MenuList.listPosition -= 1;
if($MenuList.listPosition < 0)
$MenuList.listPosition = 0;
MainMenuGUI.syncGUI();
$MenuList.syncGUI();
}
}
function mainMenuNavigateDown(%val)
function BaseUINavigateNext(%val)
{
if(%val)
{
MainMenuButtonList.listPosition += 1;
if(MainMenuButtonList.listPosition >= MainMenuButtonList.getCount())
MainMenuButtonList.listPosition = MainMenuButtonList.getCount()-1;
$MenuList.listPosition += 1;
if($MenuList.listPosition >= $MenuList.getCount())
$MenuList.listPosition = $MenuList.getCount()-1;
MainMenuGUI.syncGUI();
$MenuList.syncGUI();
}
}
function mainMenuStickNavigate(%val)
function BaseUIStickNavigate(%val)
{
if(%val == -1)
mainMenuNavigateUp(1);
BaseUINavigateNext(1);
else if(%val == 1)
mainMenuNavigateDown(1);
}
function MainMenuGUI::syncGUI(%this)
function BaseUIBackOut(%val)
{
MainMenuButtonList.callOnChildren("setHighlighted", false);
//we can't navigate further back than the MainMenuGui
if(%val && Canvas.getObject(Canvas.getCount()-1) != MainMenuGui)
{
Canvas.popDialog();
%topMenu = Canvas.getObject(Canvas.getCount()-1);
if(isObject(%topMenu))
{
//re-kick the on-wake so we can be fully up to date and relevently
//contexted
%topMenu.onWake();
}
}
}
function MainMenuButtonList::syncGUI(%this)
{
%this.callOnChildren("setHighlighted", false);
%btn = MainMenuButtonList.getObject(MainMenuButtonList.listPosition);
%btn = %this.getObject(%this.listPosition);
%btn.setHighlighted(true);
//
@ -66,25 +90,13 @@ function MainMenuGUI::syncGUI(%this)
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);
MainMenuGoButton.setBitmap(BaseUIActionMap.getCommandButtonBitmap(%device, "BaseUIActivateSelected"));
}
function activateSelected()
function BaseUIActivateSelected()
{
%btn = MainMenuButtonList.getObject(MainMenuButtonList.listPosition);
%btn.performClick();
%btn = $MenuList.getObject($MenuList.listPosition);
if(%btn.isMethod("performClick"))
%btn.performClick();
}