function MainMenuGui::onAdd(%this) { } function MainMenuGui::onWake(%this) { $MenuList = MainMenuButtonList; $MenuList.listPosition = 0; } function MainMenuGui::onSleep(%this) { } 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) { $MenuList.listPosition -= 1; if($MenuList.listPosition < 0) $MenuList.listPosition = 0; $MenuList.syncGUI(); } } function BaseUINavigateNext(%val) { if(%val) { $MenuList.listPosition += 1; if($MenuList.listPosition >= $MenuList.getCount()) $MenuList.listPosition = $MenuList.getCount()-1; $MenuList.syncGUI(); } } function BaseUIStickNavigate(%val) { if(%val == -1) BaseUINavigateNext(1); else if(%val == 1) mainMenuNavigateDown(1); } function BaseUIBackOut(%val) { //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 = %this.getObject(%this.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"; MainMenuGoButton.setBitmap(BaseUIActionMap.getCommandButtonBitmap(%device, "BaseUIActivateSelected")); } function BaseUIActivateSelected() { %btn = $MenuList.getObject($MenuList.listPosition); if(%btn.isMethod("performClick")) %btn.performClick(); }