private void ApplySettings() { OptionMenuItem <Tuple <int, int> > resolution = GetMenuItem("res") as OptionMenuItem <Tuple <int, int> >; OptionMenuItem <int> displayMode = GetMenuItem("display") as OptionMenuItem <int>; TextInputMenuItem playerName = GetMenuItem("name") as TextInputMenuItem; BoolOptionMenuItem shadows = GetMenuItem("shadows") as BoolOptionMenuItem; BoolOptionMenuItem bloom = GetMenuItem("bloom") as BoolOptionMenuItem; GameSettings.Default.ResolutionWidth = resolution.SelectedValue().Item1; GameSettings.Default.ResolutionHeight = resolution.SelectedValue().Item2; GameSettings.Default.FullScreen = displayMode.SelectedValue() == 1; GameSettings.Default.PlayerName = playerName.EnteredText; GameSettings.Default.Shadows = shadows.SelectedValue(); GameSettings.Default.Bloom = bloom.SelectedValue(); GameSettings.Default.Save(); graphics.PreferredBackBufferWidth = GameSettings.Default.ResolutionWidth; graphics.PreferredBackBufferHeight = GameSettings.Default.ResolutionHeight; if (graphics.IsFullScreen != GameSettings.Default.FullScreen) { graphics.ToggleFullScreen(); } graphics.ApplyChanges(); }
protected override void LoadContent() { base.LoadContent(); Vector2 size = GetScreenPosition(new Vector2(0.6f, 0.75f)); Bounds = new Rectangle(0, 0, (int)size.X, (int)size.Y); OptionMenuItem <Tuple <int, int> > resolution = new OptionMenuItem <Tuple <int, int> >("Resolution", "res"); foreach (var res in GraphicsAdapter.DefaultAdapter.SupportedDisplayModes.Select(m => new Tuple <int, int>(m.Width, m.Height)).Distinct().OrderBy(r => r.Item1)) { resolution.AddOption(res.Item1 + "x" + res.Item2, res); } resolution.SetStartOption(new Tuple <int, int>(gameInstance.Graphics.PreferredBackBufferWidth, gameInstance.Graphics.PreferredBackBufferHeight)); resolution.Bounds = Bounds; resolution.Font = MenuFont; resolution.ArrowLeft = ArrowLeft; resolution.ArrowRight = ArrowRight; resolution.Background = OptionSelected; resolution.FontColor = ItemColor; resolution.FontColorSelected = Color.Black; AddMenuItem(resolution); OptionMenuItem <int> displayMode = new OptionMenuItem <int>("Display Mode", "display"); displayMode.AddOption("Fullscreen", 1); displayMode.AddOption("Windowed", 2); displayMode.SetStartOption(gameInstance.Graphics.IsFullScreen ? 1 : 2); displayMode.Bounds = Bounds; displayMode.Font = MenuFont; displayMode.ArrowLeft = ArrowLeft; displayMode.ArrowRight = ArrowRight; displayMode.Background = OptionSelected; displayMode.FontColor = ItemColor; displayMode.FontColorSelected = Color.Black; AddMenuItem(displayMode); TextInputMenuItem playerName = new TextInputMenuItem("Player Name", "name"); playerName.Bounds = Bounds; playerName.Font = MenuFont; playerName.EnteredText = GameSettings.Default.PlayerName; playerName.Background = OptionSelected; playerName.FontColor = ItemColor; playerName.FontColorSelected = Color.Black; AddMenuItem(playerName); BoolOptionMenuItem shadows = new BoolOptionMenuItem("Shadows", "shadows"); shadows.Bounds = Bounds; shadows.Font = MenuFont; shadows.SetStartOption(GameSettings.Default.Shadows); shadows.ArrowLeft = ArrowLeft; shadows.ArrowRight = ArrowRight; shadows.Background = OptionSelected; shadows.FontColor = ItemColor; shadows.FontColorSelected = Color.Black; AddMenuItem(shadows); BoolOptionMenuItem bloom = new BoolOptionMenuItem("Bloom", "bloom"); bloom.Bounds = Bounds; bloom.Font = MenuFont; bloom.SetStartOption(GameSettings.Default.Bloom); bloom.ArrowLeft = ArrowLeft; bloom.ArrowRight = ArrowRight; bloom.Background = OptionSelected; bloom.FontColor = ItemColor; bloom.FontColorSelected = Color.Black; AddMenuItem(bloom); MenuItem item = new StateActionMenuItem("Cancel", GameState.MainMenu); item.Background = ButtonBackground; item.Font = MenuFont; item.FontColor = ItemColor; item.FontColorSelected = ItemColorSelected; item.SetWidth(Bounds.Width); AddMenuItem(item); item = new ActionMenuItem("Apply", ApplySettings); item.Background = ButtonBackground; item.Font = MenuFont; item.FontColor = ItemColor; item.FontColorSelected = ItemColorSelected; item.SetWidth(Bounds.Width); AddMenuItem(item); }