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(); }