From 2d43d656c273cc4d6229fc7e7498fc627a7997c8 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 23 May 2011 22:53:23 +1200 Subject: [PATCH] Remove bs settings state tracking --- .../Widgets/Logic/CncSettingsLogic.cs | 161 +++++++----------- mods/cnc/chrome/preferences.yaml | 14 +- 2 files changed, 63 insertions(+), 112 deletions(-) diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs index d842b872ae..93f25dc530 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs @@ -27,11 +27,6 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic } PanelType Settings = PanelType.General; - ColorRamp playerColor; - Modifiers groupAddModifier; - MouseScrollType mouseScroll; - WindowMode windowMode; - CncColorPickerPaletteModifier playerPalettePreview; World world; @@ -51,69 +46,68 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic var generalPane = panel.GetWidget("GENERAL_CONTROLS"); generalPane.IsVisible = () => Settings == PanelType.General; + var gameSettings = Game.Settings.Game; + var playerSettings = Game.Settings.Player; + var debugSettings = Game.Settings.Debug; + var graphicsSettings = Game.Settings.Graphics; + var soundSettings = Game.Settings.Sound; + var keyboardSettings = Game.Settings.Keyboard; + // Player profile var nameTextfield = generalPane.GetWidget("NAME_TEXTFIELD"); - nameTextfield.Text = Game.Settings.Player.Name; + nameTextfield.Text = playerSettings.Name; - playerColor = Game.Settings.Player.ColorRamp; playerPalettePreview = world.WorldActor.Trait(); - playerPalettePreview.Ramp = playerColor; + playerPalettePreview.Ramp = playerSettings.ColorRamp; var colorDropdown = generalPane.GetWidget("COLOR_DROPDOWN"); - colorDropdown.OnMouseDown = _ => ShowColorPicker(colorDropdown); - colorDropdown.GetWidget("COLORBLOCK").GetColor = () => playerColor.GetColor(0); + colorDropdown.OnMouseDown = _ => ShowColorPicker(colorDropdown, playerSettings); + colorDropdown.GetWidget("COLORBLOCK").GetColor = () => playerSettings.ColorRamp.GetColor(0); // Debug - var perftext = Game.Settings.Debug.PerfText; var perftextCheckbox = generalPane.GetWidget("PERFTEXT_CHECKBOX"); - perftextCheckbox.IsChecked = () => perftext; - perftextCheckbox.OnClick = () => perftext ^= true; + perftextCheckbox.IsChecked = () => debugSettings.PerfText; + perftextCheckbox.OnClick = () => debugSettings.PerfText ^= true; - var perfgraph = Game.Settings.Debug.PerfGraph; var perfgraphCheckbox = generalPane.GetWidget("PERFGRAPH_CHECKBOX"); - perfgraphCheckbox.IsChecked = () => perfgraph; - perfgraphCheckbox.OnClick = () => perfgraph ^= true; + perfgraphCheckbox.IsChecked = () => debugSettings.PerfGraph; + perfgraphCheckbox.OnClick = () => debugSettings.PerfGraph ^= true; - var matchtimer = Game.Settings.Game.MatchTimer; var matchtimerCheckbox = generalPane.GetWidget("MATCHTIME_CHECKBOX"); - matchtimerCheckbox.IsChecked = () => matchtimer; - matchtimerCheckbox.OnClick = () => matchtimer ^= true; + matchtimerCheckbox.IsChecked = () => gameSettings.MatchTimer; + matchtimerCheckbox.OnClick = () => gameSettings.MatchTimer ^= true; - var checkunsynced = Game.Settings.Debug.SanityCheckUnsyncedCode; var checkunsyncedCheckbox = generalPane.GetWidget("CHECKUNSYNCED_CHECKBOX"); - checkunsyncedCheckbox.IsChecked = () => checkunsynced; - checkunsyncedCheckbox.OnClick = () => checkunsynced ^= true; + checkunsyncedCheckbox.IsChecked = () => debugSettings.SanityCheckUnsyncedCode; + checkunsyncedCheckbox.OnClick = () => debugSettings.SanityCheckUnsyncedCode ^= true; // Video - windowMode = Game.Settings.Graphics.Mode; var windowModeDropdown = generalPane.GetWidget("MODE_DROPDOWN"); - windowModeDropdown.OnMouseDown = _ => ShowWindowModeDropdown(windowModeDropdown); - windowModeDropdown.GetText = () => windowMode == WindowMode.Windowed ? "Windowed" : windowMode == WindowMode.Fullscreen ? "Fullscreen" : "Pseudo-Fullscreen"; + windowModeDropdown.OnMouseDown = _ => ShowWindowModeDropdown(windowModeDropdown, graphicsSettings); + windowModeDropdown.GetText = () => graphicsSettings.Mode == WindowMode.Windowed ? + "Windowed" : graphicsSettings.Mode == WindowMode.Fullscreen ? "Fullscreen" : "Pseudo-Fullscreen"; - generalPane.GetWidget("WINDOW_RESOLUTION").IsVisible = () => windowMode == WindowMode.Windowed; + generalPane.GetWidget("WINDOW_RESOLUTION").IsVisible = () => graphicsSettings.Mode == WindowMode.Windowed; var windowWidth = generalPane.GetWidget("WINDOW_WIDTH"); - windowWidth.Text = Game.Settings.Graphics.WindowedSize.X.ToString(); + windowWidth.Text = graphicsSettings.WindowedSize.X.ToString(); var windowHeight = generalPane.GetWidget("WINDOW_HEIGHT"); - windowHeight.Text = Game.Settings.Graphics.WindowedSize.Y.ToString(); + windowHeight.Text = graphicsSettings.WindowedSize.Y.ToString(); // Audio - var soundVolume = Game.Settings.Sound.SoundVolume; var soundSlider = generalPane.GetWidget("SOUND_SLIDER"); - soundSlider.OnChange += x => { soundVolume = x; Sound.SoundVolume = x;}; - soundSlider.GetOffset = () => { return soundVolume; }; - soundSlider.SetOffset(soundVolume); + soundSlider.OnChange += x => { soundSettings.SoundVolume = x; Sound.SoundVolume = x;}; + soundSlider.GetOffset = () => { return soundSettings.SoundVolume; }; + soundSlider.SetOffset(soundSettings.SoundVolume); - var musicVolume = Game.Settings.Sound.MusicVolume; var musicSlider = generalPane.GetWidget("MUSIC_SLIDER"); - musicSlider.OnChange += x => { musicVolume = x; Sound.MusicVolume = x; }; - musicSlider.GetOffset = () => { return musicVolume; }; - musicSlider.SetOffset(musicVolume); + musicSlider.OnChange += x => { soundSettings.MusicVolume = x; Sound.MusicVolume = x; }; + musicSlider.GetOffset = () => { return soundSettings.MusicVolume; }; + musicSlider.SetOffset(soundSettings.MusicVolume); - var shellmapMusic = Game.Settings.Game.ShellmapMusic; var shellmapMusicCheckbox = generalPane.GetWidget("SHELLMAP_MUSIC"); - shellmapMusicCheckbox.IsChecked = () => shellmapMusic; - shellmapMusicCheckbox.OnClick = () => shellmapMusic ^= true; + shellmapMusicCheckbox.IsChecked = () => gameSettings.ShellmapMusic; + shellmapMusicCheckbox.OnClick = () => gameSettings.ShellmapMusic ^= true; // Input pane @@ -126,80 +120,45 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic inputPane.GetWidget("CLASSICORDERS_CHECKBOX").IsDisabled = () => true; - var scrollStrength = Game.Settings.Game.ViewportEdgeScrollStep; var scrollSlider = inputPane.GetWidget("SCROLLSPEED_SLIDER"); - scrollSlider.OnChange += x => scrollStrength = scrollSlider.GetOffset(); - scrollSlider.SetOffset(scrollStrength); + scrollSlider.OnChange += x => gameSettings.ViewportEdgeScrollStep = scrollSlider.GetOffset(); + scrollSlider.SetOffset(gameSettings.ViewportEdgeScrollStep); - var edgescroll = Game.Settings.Game.ViewportEdgeScroll; var edgescrollCheckbox = inputPane.GetWidget("EDGESCROLL_CHECKBOX"); - edgescrollCheckbox.IsChecked = () => edgescroll; - edgescrollCheckbox.OnClick = () => edgescroll ^= true; + edgescrollCheckbox.IsChecked = () => gameSettings.ViewportEdgeScroll; + edgescrollCheckbox.OnClick = () => gameSettings.ViewportEdgeScroll ^= true; - mouseScroll = Game.Settings.Game.MouseScroll; var mouseScrollDropdown = inputPane.GetWidget("MOUSE_SCROLL"); - mouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(mouseScrollDropdown); - mouseScrollDropdown.GetText = () => mouseScroll.ToString(); + mouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(mouseScrollDropdown, gameSettings); + mouseScrollDropdown.GetText = () => gameSettings.MouseScroll.ToString(); - var teamchat = Game.Settings.Game.TeamChatToggle; var teamchatCheckbox = inputPane.GetWidget("TEAMCHAT_CHECKBOX"); - teamchatCheckbox.IsChecked = () => teamchat; - teamchatCheckbox.OnClick = () => teamchat ^= true; + teamchatCheckbox.IsChecked = () => gameSettings.TeamChatToggle; + teamchatCheckbox.OnClick = () => gameSettings.TeamChatToggle ^= true; - groupAddModifier = Game.Settings.Keyboard.ControlGroupModifier; var groupModifierDropdown = inputPane.GetWidget("GROUPADD_MODIFIER"); - groupModifierDropdown.OnMouseDown = _ => ShowGroupModifierDropdown(groupModifierDropdown); - groupModifierDropdown.GetText = () => groupAddModifier.ToString(); + groupModifierDropdown.OnMouseDown = _ => ShowGroupModifierDropdown(groupModifierDropdown, keyboardSettings); + groupModifierDropdown.GetText = () => keyboardSettings.ControlGroupModifier.ToString(); - panel.GetWidget("CANCEL_BUTTON").OnClick = () => + panel.GetWidget("BACK_BUTTON").OnClick = () => { - Widget.CloseWindow(); - onExit(); - }; - - panel.GetWidget("SAVE_BUTTON").OnClick = () => - { - var s = Game.Settings; - s.Player.Name = nameTextfield.Text; - s.Player.ColorRamp = playerColor; - - s.Debug.PerfText = perftext; - s.Debug.PerfGraph = perfgraph; - s.Game.MatchTimer = matchtimer; - s.Debug.SanityCheckUnsyncedCode = checkunsynced; - - s.Graphics.Mode = windowMode; - - int x = s.Graphics.WindowedSize.X, y = s.Graphics.WindowedSize.Y; + playerSettings.Name = nameTextfield.Text; + int x = graphicsSettings.WindowedSize.X, y = graphicsSettings.WindowedSize.Y; int.TryParse(windowWidth.Text, out x); int.TryParse(windowHeight.Text, out y); - s.Graphics.WindowedSize = new int2(x,y); - - s.Sound.SoundVolume = soundVolume; - Sound.SoundVolume = soundVolume; - s.Sound.MusicVolume = musicVolume; - Sound.MusicVolume = musicVolume; - s.Game.ShellmapMusic = shellmapMusic; - - - s.Game.ViewportEdgeScrollStep = scrollStrength; - s.Game.ViewportEdgeScroll = edgescroll; - s.Game.MouseScroll = mouseScroll; - - s.Game.TeamChatToggle = teamchat; - s.Keyboard.ControlGroupModifier = groupAddModifier; - s.Save(); + graphicsSettings.WindowedSize = new int2(x,y); + Game.Settings.Save(); Widget.CloseWindow(); onExit(); }; } - bool ShowColorPicker(DropDownButtonWidget color) + bool ShowColorPicker(DropDownButtonWidget color, PlayerSettings s) { Action onSelect = c => { - playerColor = c; + s.ColorRamp = c; color.RemovePanel(); }; @@ -212,14 +171,14 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic { { "onSelect", onSelect }, { "onChange", onChange }, - { "initialRamp", playerColor } + { "initialRamp", s.ColorRamp } }); color.AttachPanel(colorChooser); return true; } - bool ShowGroupModifierDropdown(DropDownButtonWidget dropdown) + bool ShowGroupModifierDropdown(DropDownButtonWidget dropdown, KeyboardSettings s) { var options = new Dictionary() { @@ -233,8 +192,8 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic Func setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, - () => groupAddModifier == options[o], - () => groupAddModifier = options[o]); + () => s.ControlGroupModifier == options[o], + () => s.ControlGroupModifier = options[o]); item.GetWidget("LABEL").GetText = () => o; return item; }; @@ -243,7 +202,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic return true; } - bool ShowWindowModeDropdown(DropDownButtonWidget dropdown) + bool ShowWindowModeDropdown(DropDownButtonWidget dropdown, GraphicSettings s) { var options = new Dictionary() { @@ -255,8 +214,8 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic Func setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, - () => windowMode == options[o], - () => windowMode = options[o]); + () => s.Mode == options[o], + () => s.Mode = options[o]); item.GetWidget("LABEL").GetText = () => o; return item; }; @@ -266,7 +225,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic } - bool ShowMouseScrollDropdown(DropDownButtonWidget dropdown) + bool ShowMouseScrollDropdown(DropDownButtonWidget dropdown, GameSettings s) { var options = new Dictionary() { @@ -278,8 +237,8 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic Func setupItem = (o, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, - () => mouseScroll == options[o], - () => mouseScroll = options[o]); + () => s.MouseScroll == options[o], + () => s.MouseScroll = options[o]); item.GetWidget("LABEL").GetText = () => o; return item; }; diff --git a/mods/cnc/chrome/preferences.yaml b/mods/cnc/chrome/preferences.yaml index 11a084f4ef..c2caac9c8b 100644 --- a/mods/cnc/chrome/preferences.yaml +++ b/mods/cnc/chrome/preferences.yaml @@ -345,19 +345,11 @@ Container@SETTINGS_PANEL: Width:140 Height:35 Text:Input - Button@CANCEL_BUTTON: - Id:CANCEL_BUTTON - Key:escape - X:450 - Y:249 - Width:140 - Height:35 - Text:Cancel Button@SAVE_BUTTON: - Id:SAVE_BUTTON - Key:return + Id:BACK_BUTTON + Key:escape X:600 Y:249 Width:140 Height:35 - Text:Save \ No newline at end of file + Text:Back \ No newline at end of file