public OptionsMenuController(Window parent) { _model = new OptionsMenuModel(); _view = new OptionsMenu(); _parent = parent; _parent.Hide(); _view.Show(); AddEvents(); ModifySlidersValue(); TabControl_SelectionChanged(null, null); // The event doesn't fire when it's the first time, has to be called manually ModifySkinsTab(); }
public void Initialize() { _model = new OptionsMenuModel(_gameSettingsProvider, _activeLanguage.Languages, _versionInfo.VersionNumber, StartRebind, RestoreInputToDefaults); _activeLanguage.TableUpdates.Subscribe(languageTable => { _model.LanguageTable = languageTable; }); _renderer.SetActive(false); _menus = new Dictionary <Menu, AbstractMenu>(); for (int i = 0; i < _availableMenus.Count; i++) { var menu = _availableMenus[i]; _menus[menu.Id] = menu; menu.Initialize(_model); } _model.MenuLoaded += menuId => { var menu = _menus[menuId]; var firstSelected = menu.GetComponentsInChildren <Selectable>() .Find(s => s.isActiveAndEnabled && s.navigation.mode != Navigation.Mode.None); if (firstSelected.IsJust) { EventSystem.current.firstSelectedGameObject = firstSelected.Value.gameObject; EventSystem.current.SetSelectedGameObject(firstSelected.Value.gameObject); } }; _model.Updated += model => { for (int i = 0; i < _availableMenus.Count; i++) { var menu = _availableMenus[i]; menu.gameObject.SetActive(model.ActiveMenu == menu.Id); } var activeMenu = _menus[model.ActiveMenu]; activeMenu.SetState(model, model.LanguageTable.AsFunc); _versionNumber.text = model.AppVersion; }; _model.OnMenuClosed += action => { if (_menuCloseHandler != null) { _menuCloseHandler(action, null); } }; _inputMappingsViewModel.InputMappings.Subscribe(inputBindings => { _model.InputBindings = inputBindings; }); _joystickActivator.ActiveController.Subscribe(controller => { if (controller.HasValue) { _connectedController.text = "Active device: <i>" + controller.Value.Name + "</i>"; } else { _connectedController.text = "Active device: <i>keyboard and mouse</i>"; } }); }