public void UpdateGameLogic() { // might want to add something in here to wait for saves/loads that are requested from menus foreach (var button in _activeMenuPage.Buttons) { button.UpdateOwnLogic(); } if (_activeMenuPage.DialogOpen) { foreach (var button in _activeMenuPage.CurrentDialog.Buttons) { button.UpdateOwnLogic(); } } if (_waitForSave) { return; } if (_switchPages) { if (!_activeMenuPage.DoneFading()) { return; } if (_activeMenuPage.Name == _switchPageArgs.Page) { _switchPages = false; _activeMenuPage.EnterMenu(_switchPageArgs.PreviousPage, DataHelper.PreferenceData); if (_activeMenuPage.Name == MenuPageNames.FileSelect) { if (_switchPageArgs.EnterFromExit != null) { ((FileSelectMenuPage)_activeMenuPage).EnterFromExit(_switchPageArgs.EnterFromExit.Value); } } return; } _activeMenuPage = _menuPages[_switchPageArgs.Page]; foreach (var button in _activeMenuPage.Buttons) { button.FadeIn(); } return; // i think we want to do this } if (_inputCounter < INPUT_DELAY) { _inputCounter++; // only reset this when we actually do something return; } if (_requestKeybindChange) { // this will update the preference data if a key is redbound var changed = _inputHandler.RequestSingleKeyRebind(_functionToChange); if (changed) { ((OptionsMenuPage)_menuPages[MenuPageNames.Options]).CloseKeybindDialog(); ((OptionsMenuPage)_menuPages[MenuPageNames.Options]).UpdateWithPreferenceData(DataHelper.PreferenceData); _requestKeybindChange = false; } } else if (_activeMenuPage.Name == MenuPageNames.Title) { if (_inputHandler.RequestSingleKeypress()) { // this should cause the switch page event to go _activeMenuPage.SelectButton(); } } else { if (_inputHandler.IsFunctionReady(ControlFunctions.Confirm)) { _activeMenuPage.SelectButton(); _inputCounter = 0; return; } if (_inputHandler.IsFunctionReady(ControlFunctions.Back)) { _activeMenuPage.ReturnToPreviousMenu(); _inputCounter = 0; return; } if (_inputHandler.IsFunctionReady(ControlFunctions.Menu)) { if (_activeMenuPage == _menuPages[MenuPageNames.ExitMenu]) { _activeMenuPage.ReturnToPreviousMenu(); _inputCounter = 0; } return; } var direction = _inputHandler.GetLongestDirection(); if (direction != null) { _activeMenuPage.MoveCursor(direction.Value); _inputCounter = 0; } } }