From 131583a1e9dd659b646078ea3636e8a9152a4b52 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Wed, 23 Oct 2013 20:09:46 +1300 Subject: [PATCH] Remove legacy settings panel. --- OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj | 1 - OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 2 +- .../Widgets/Logic/IngameMenuLogic.cs | 2 +- .../Widgets/Logic/MainMenuButtonsLogic.cs | 2 +- .../Widgets/Logic/SettingsLogic.cs | 52 +- .../Widgets/Logic/SettingsMenuLogic.cs | 360 ---------- mods/cnc/chrome/settings.yaml | 42 +- mods/ra/chrome/settings.yaml | 641 +++++++++--------- 8 files changed, 405 insertions(+), 697 deletions(-) rename OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs => OpenRA.Mods.RA/Widgets/Logic/SettingsLogic.cs (89%) delete mode 100644 OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs diff --git a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj index b49c2f8320..7899ed9238 100644 --- a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj +++ b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj @@ -94,7 +94,6 @@ - diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 5e6203c3b0..5e8643fe0c 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -403,7 +403,6 @@ - @@ -472,6 +471,7 @@ + diff --git a/OpenRA.Mods.RA/Widgets/Logic/IngameMenuLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/IngameMenuLogic.cs index aebc308fe8..d2e44b17fe 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/IngameMenuLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/IngameMenuLogic.cs @@ -28,7 +28,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic widget.Get("SETTINGS").OnClick = () => { widget.Visible = false; - Ui.OpenWindow("SETTINGS_MENU", new WidgetArgs() + Ui.OpenWindow("SETTINGS_PANEL", new WidgetArgs() { { "onExit", () => widget.Visible = true }, { "worldRenderer", worldRenderer }, diff --git a/OpenRA.Mods.RA/Widgets/Logic/MainMenuButtonsLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/MainMenuButtonsLogic.cs index 456d7fe4ce..3c6d4a7f32 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/MainMenuButtonsLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/MainMenuButtonsLogic.cs @@ -36,7 +36,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic widget.Get("MAINMENU_BUTTON_SETTINGS").OnClick = () => { Menu = MenuType.None; - Game.OpenWindow("SETTINGS_MENU", new WidgetArgs() + Game.OpenWindow("SETTINGS_PANEL", new WidgetArgs() { { "onExit", () => Menu = MenuType.Main } }); diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/SettingsLogic.cs similarity index 89% rename from OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs rename to OpenRA.Mods.RA/Widgets/Logic/SettingsLogic.cs index b1d15b834c..bc96b5ae55 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/SettingsLogic.cs @@ -18,12 +18,11 @@ using OpenRA.GameRules; using OpenRA.Graphics; using OpenRA.Mods.RA; using OpenRA.Mods.RA.Widgets; -using OpenRA.Mods.RA.Widgets.Logic; using OpenRA.Widgets; -namespace OpenRA.Mods.Cnc.Widgets.Logic +namespace OpenRA.Mods.Ra.Widgets.Logic { - public class CncSettingsLogic + public class SettingsLogic { enum PanelType { Display, Audio, Input, Advanced } Dictionary leavePanelActions = new Dictionary(); @@ -35,12 +34,12 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic SoundDevice soundDevice; [ObjectCreator.UseCtor] - public CncSettingsLogic(Widget widget, Action onExit, WorldRenderer worldRenderer) + public SettingsLogic(Widget widget, Action onExit, WorldRenderer worldRenderer) { this.worldRenderer = worldRenderer; panelContainer = widget.Get("SETTINGS_PANEL"); - tabContainer = panelContainer; + tabContainer = widget.Get("TAB_CONTAINER"); RegisterSettingsPanel(PanelType.Display, InitDisplayPanel, ResetDisplayPanel, "DISPLAY_PANEL", "DISPLAY_TAB"); RegisterSettingsPanel(PanelType.Audio, InitAudioPanel, ResetAudioPanel, "AUDIO_PANEL", "AUDIO_TAB"); @@ -125,11 +124,11 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic BindCheckboxPref(panel, "SHOW_SHELLMAP", gs, "ShowShellmap"); var languageDropDownButton = panel.Get("LANGUAGE_DROPDOWNBUTTON"); - languageDropDownButton.OnMouseDown = _ => SettingsMenuLogic.ShowLanguageDropdown(languageDropDownButton); + languageDropDownButton.OnMouseDown = _ => ShowLanguageDropdown(languageDropDownButton); languageDropDownButton.GetText = () => FieldLoader.Translate(ds.Language); var windowModeDropdown = panel.Get("MODE_DROPDOWN"); - windowModeDropdown.OnMouseDown = _ => SettingsMenuLogic.ShowWindowModeDropdown(windowModeDropdown, ds); + windowModeDropdown.OnMouseDown = _ => ShowWindowModeDropdown(windowModeDropdown, ds); windowModeDropdown.GetText = () => ds.Mode == WindowMode.Windowed ? "Windowed" : ds.Mode == WindowMode.Fullscreen ? "Fullscreen" : "Pseudo-Fullscreen"; @@ -406,5 +405,44 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return true; } + + bool ShowWindowModeDropdown(DropDownButtonWidget dropdown, GraphicSettings s) + { + var options = new Dictionary() + { + { "Pseudo-Fullscreen", WindowMode.PseudoFullscreen }, + { "Fullscreen", WindowMode.Fullscreen }, + { "Windowed", WindowMode.Windowed }, + }; + + Func setupItem = (o, itemTemplate) => + { + var item = ScrollItemWidget.Setup(itemTemplate, + () => s.Mode == options[o], + () => s.Mode = options[o]); + + item.Get("LABEL").GetText = () => o; + return item; + }; + + dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); + return true; + } + + bool ShowLanguageDropdown(DropDownButtonWidget dropdown) + { + Func setupItem = (o, itemTemplate) => + { + var item = ScrollItemWidget.Setup(itemTemplate, + () => Game.Settings.Graphics.Language == o, + () => Game.Settings.Graphics.Language = o); + + item.Get("LABEL").GetText = () => FieldLoader.Translate(o); + return item; + }; + + dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, Game.modData.Languages, setupItem); + return true; + } } } diff --git a/OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs deleted file mode 100644 index e24d0cc975..0000000000 --- a/OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs +++ /dev/null @@ -1,360 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2013 The OpenRA Developers (see AUTHORS) - * This file is part of OpenRA, which is free software. It is made - * available to you under the terms of the GNU General Public License - * as published by the Free Software Foundation. For more information, - * see COPYING. - */ -#endregion - -using System; -using System.Collections.Generic; -using System.Linq; -using OpenRA.FileFormats; -using OpenRA.FileFormats.Graphics; -using OpenRA.GameRules; -using OpenRA.Graphics; -using OpenRA.Widgets; - -namespace OpenRA.Mods.RA.Widgets.Logic -{ - public class SettingsMenuLogic - { - Widget bg; - SoundDevice soundDevice; - - [ObjectCreator.UseCtor] - public SettingsMenuLogic(Action onExit, WorldRenderer worldRenderer) - { - bg = Ui.Root.Get("SETTINGS_MENU"); - var tabs = bg.Get("TAB_CONTAINER"); - - //Tabs - tabs.Get("GENERAL").OnClick = () => FlipToTab("GENERAL_PANE"); - tabs.Get("AUDIO").OnClick = () => FlipToTab("AUDIO_PANE"); - tabs.Get("DISPLAY").OnClick = () => FlipToTab("DISPLAY_PANE"); - tabs.Get("KEYS").OnClick = () => FlipToTab("KEYS_PANE"); - tabs.Get("DEBUG").OnClick = () => FlipToTab("DEBUG_PANE"); - FlipToTab("GENERAL_PANE"); - - //General - var general = bg.Get("GENERAL_PANE"); - - var name = general.Get("NAME"); - name.Text = Game.Settings.Player.Name; - name.OnLoseFocus = () => - { - name.Text = name.Text.Trim(); - if (name.Text.Length == 0) - name.Text = Game.Settings.Player.Name; - else - Game.Settings.Player.Name = name.Text; - }; - name.OnEnterKey = () => { name.YieldKeyboardFocus(); return true; }; - - var edgescrollCheckbox = general.Get("EDGE_SCROLL"); - edgescrollCheckbox.IsChecked = () => Game.Settings.Game.ViewportEdgeScroll; - edgescrollCheckbox.OnClick = () => Game.Settings.Game.ViewportEdgeScroll ^= true; - - var edgeScrollSlider = general.Get("EDGE_SCROLL_AMOUNT"); - edgeScrollSlider.Value = Game.Settings.Game.ViewportEdgeScrollStep; - edgeScrollSlider.OnChange += x => Game.Settings.Game.ViewportEdgeScrollStep = x; - - var inversescroll = general.Get("INVERSE_SCROLL"); - inversescroll.IsChecked = () => Game.Settings.Game.MouseScroll == MouseScrollType.Inverted; - inversescroll.OnClick = () => Game.Settings.Game.MouseScroll = (Game.Settings.Game.MouseScroll == MouseScrollType.Inverted) ? MouseScrollType.Standard : MouseScrollType.Inverted; - - var showShellmapCheckbox = general.Get("SHOW_SHELLMAP"); - showShellmapCheckbox.IsChecked = () => Game.Settings.Game.ShowShellmap; - showShellmapCheckbox.OnClick = () => Game.Settings.Game.ShowShellmap ^= true; - - var useClassicMouseStyleCheckbox = general.Get("USE_CLASSIC_MOUSE_STYLE_CHECKBOX"); - useClassicMouseStyleCheckbox.IsChecked = () => Game.Settings.Game.UseClassicMouseStyle; - useClassicMouseStyleCheckbox.OnClick = () => Game.Settings.Game.UseClassicMouseStyle ^= true; - - var allowNatDiscoveryCheckbox = general.Get("ALLOW_NAT_DISCOVERY_CHECKBOX"); - allowNatDiscoveryCheckbox.IsChecked = () => Game.Settings.Server.DiscoverNatDevices; - allowNatDiscoveryCheckbox.OnClick = () => Game.Settings.Server.DiscoverNatDevices ^= true; - - // Audio - var audio = bg.Get("AUDIO_PANE"); - var soundSettings = Game.Settings.Sound; - - var soundslider = audio.Get("SOUND_VOLUME"); - soundslider.OnChange += x => Sound.SoundVolume = x; - soundslider.Value = Sound.SoundVolume; - - var musicslider = audio.Get("MUSIC_VOLUME"); - musicslider.OnChange += x => Sound.MusicVolume = x; - musicslider.Value = Sound.MusicVolume; - - var videoslider = audio.Get("VIDEO_VOLUME"); - videoslider.OnChange += x => Sound.VideoVolume = x; - videoslider.Value = Sound.VideoVolume; - - var cashTicksCheckbox = audio.Get("CASHTICK_CHECKBOX"); - cashTicksCheckbox.IsChecked = () => Game.Settings.Sound.CashTicks; - cashTicksCheckbox.OnClick = () => Game.Settings.Sound.CashTicks ^= true; - - var mapMusicCheckbox = audio.Get("MAP_MUSIC_CHECKBOX"); - mapMusicCheckbox.IsChecked = () => Game.Settings.Sound.MapMusic; - mapMusicCheckbox.OnClick = () => Game.Settings.Sound.MapMusic ^= true; - - var devices = Sound.AvailableDevices(); - soundDevice = devices.FirstOrDefault(d => d.Engine == soundSettings.Engine && d.Device == soundSettings.Device) ?? devices.First(); - - var audioDeviceDropdown = audio.Get("AUDIO_DEVICE"); - audioDeviceDropdown.OnMouseDown = _ => ShowAudioDeviceDropdown(audioDeviceDropdown, soundSettings, devices); - audioDeviceDropdown.GetText = () => soundDevice.Label; - - // Display - var display = bg.Get("DISPLAY_PANE"); - var gs = Game.Settings.Graphics; - - var windowModeDropdown = display.Get("MODE_DROPDOWN"); - windowModeDropdown.OnMouseDown = _ => ShowWindowModeDropdown(windowModeDropdown, gs); - windowModeDropdown.GetText = () => gs.Mode == WindowMode.Windowed ? - "Windowed" : gs.Mode == WindowMode.Fullscreen ? "Fullscreen" : "Pseudo-Fullscreen"; - - display.Get("WINDOW_RESOLUTION").IsVisible = () => gs.Mode == WindowMode.Windowed; - var windowWidth = display.Get("WINDOW_WIDTH"); - windowWidth.Text = gs.WindowedSize.X.ToString(); - - var windowHeight = display.Get("WINDOW_HEIGHT"); - windowHeight.Text = gs.WindowedSize.Y.ToString(); - - var pixelDoubleCheckbox = display.Get("PIXELDOUBLE_CHECKBOX"); - pixelDoubleCheckbox.IsChecked = () => gs.PixelDouble; - pixelDoubleCheckbox.OnClick = () => - { - gs.PixelDouble ^= true; - worldRenderer.Viewport.Zoom = gs.PixelDouble ? 2 : 1; - }; - - var capFrameRateCheckbox = display.Get("CAPFRAMERATE_CHECKBOX"); - capFrameRateCheckbox.IsChecked = () => gs.CapFramerate; - capFrameRateCheckbox.OnClick = () => gs.CapFramerate ^= true; - - var maxFrameRate = display.Get("MAX_FRAMERATE"); - maxFrameRate.Text = gs.MaxFramerate.ToString(); - - var languageDropDownButton = display.Get("LANGUAGE_DROPDOWNBUTTON"); - languageDropDownButton.OnMouseDown = _ => ShowLanguageDropdown(languageDropDownButton); - languageDropDownButton.GetText = () => FieldLoader.Translate(Game.Settings.Graphics.Language); - - // Keys - var keys = bg.Get("KEYS_PANE"); - var keyConfig = Game.Settings.Keys; - - var specialHotkeyList = keys.Get("SPECIALHOTKEY_LIST"); - var specialHotkeyTemplate = specialHotkeyList.Get("SPECIALHOTKEY_TEMPLATE"); - - var pauseKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(pauseKey, "Pause the game:", () => keyConfig.PauseKey, k => keyConfig.PauseKey = k); - specialHotkeyList.AddChild(pauseKey); - - var viewportToBase = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(viewportToBase, "Move Viewport to Base:", () => keyConfig.CycleBaseKey, k => keyConfig.CycleBaseKey = k); - specialHotkeyList.AddChild(viewportToBase); - - var lastEventKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(lastEventKey, "Move Viewport to Last Event:", () => keyConfig.ToLastEventKey, k => keyConfig.ToLastEventKey = k); - specialHotkeyList.AddChild(lastEventKey); - - var viewportToSelectionKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(viewportToSelectionKey, "Move Viewport to Selection:", () => keyConfig.ToSelectionKey, k => keyConfig.ToSelectionKey = k); - specialHotkeyList.AddChild(viewportToSelectionKey); - - var sellKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(sellKey, "Switch to Sell-Cursor:", () => keyConfig.SellKey, k => keyConfig.SellKey = k); - specialHotkeyList.AddChild(sellKey); - - var powerDownKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(powerDownKey, "Switch to Power-Down-Cursor:", () => keyConfig.PowerDownKey, k => keyConfig.PowerDownKey = k); - specialHotkeyList.AddChild(powerDownKey); - - var repairKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(repairKey, "Switch to Repair-Cursor:", () => keyConfig.RepairKey, k => keyConfig.RepairKey = k); - specialHotkeyList.AddChild(repairKey); - - var tabCycleKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(tabCycleKey, "Cycle Tabs (+Shift to Reverse):", () => keyConfig.CycleTabsKey, k => keyConfig.CycleTabsKey = k); - specialHotkeyList.AddChild(tabCycleKey); - - var unitCommandHotkeyList = keys.Get("UNITCOMMANDHOTKEY_LIST"); - var unitCommandHotkeyTemplate = unitCommandHotkeyList.Get("UNITCOMMANDHOTKEY_TEMPLATE"); - - var attackKey = ScrollItemWidget.Setup(unitCommandHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(attackKey, "Attack Move:", () => keyConfig.AttackMoveKey, k => keyConfig.AttackMoveKey = k); - unitCommandHotkeyList.AddChild(attackKey); - - var stopKey = ScrollItemWidget.Setup(unitCommandHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(stopKey, "Stop:", () => keyConfig.StopKey, k => keyConfig.StopKey = k); - unitCommandHotkeyList.AddChild(stopKey); - - var scatterKey = ScrollItemWidget.Setup(unitCommandHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(scatterKey, "Scatter:", () => keyConfig.ScatterKey, k => keyConfig.ScatterKey = k); - unitCommandHotkeyList.AddChild(scatterKey); - - var stanceCycleKey = ScrollItemWidget.Setup(unitCommandHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(stanceCycleKey, "Cycle Stance:", () => keyConfig.StanceCycleKey, k => keyConfig.StanceCycleKey = k); - unitCommandHotkeyList.AddChild(stanceCycleKey); - - var deployKey = ScrollItemWidget.Setup(unitCommandHotkeyTemplate, () => false, () => {}); - SetupKeyBinding(deployKey, "Deploy:", () => keyConfig.DeployKey, k => keyConfig.DeployKey = k); - unitCommandHotkeyList.AddChild(deployKey); - - var guardKey = ScrollItemWidget.Setup(unitCommandHotkeyTemplate, () => false, () => { }); - SetupKeyBinding(guardKey, "Guard: ", () => keyConfig.GuardKey, k => keyConfig.GuardKey = k); - unitCommandHotkeyList.AddChild(guardKey); - - // Debug - var debug = bg.Get("DEBUG_PANE"); - - var perfgraphCheckbox = debug.Get("PERFGRAPH_CHECKBOX"); - perfgraphCheckbox.IsChecked = () => Game.Settings.Debug.PerfGraph; - perfgraphCheckbox.OnClick = () => Game.Settings.Debug.PerfGraph ^= true; - - var perftextCheckbox = debug.Get("PERFTEXT_CHECKBOX"); - perftextCheckbox.IsChecked = () => Game.Settings.Debug.PerfText; - perftextCheckbox.OnClick = () => Game.Settings.Debug.PerfText ^= true; - - var sampleSlider = debug.Get("PERFTEXT_SAMPLE_AMOUNT"); - sampleSlider.Value = sampleSlider.MaximumValue-Game.Settings.Debug.Samples; - sampleSlider.OnChange += x => Game.Settings.Debug.Samples = (int)sampleSlider.MaximumValue-(int)Math.Round(x); - - var checkunsyncedCheckbox = debug.Get("CHECKUNSYNCED_CHECKBOX"); - checkunsyncedCheckbox.IsChecked = () => Game.Settings.Debug.SanityCheckUnsyncedCode; - checkunsyncedCheckbox.OnClick = () => Game.Settings.Debug.SanityCheckUnsyncedCode ^= true; - - var botdebugCheckbox = debug.Get("BOTDEBUG_CHECKBOX"); - botdebugCheckbox.IsChecked = () => Game.Settings.Debug.BotDebug; - botdebugCheckbox.OnClick = () => Game.Settings.Debug.BotDebug ^= true; - - var verboseNatDiscoveryCheckbox = debug.Get("VERBOSE_NAT_DISCOVERY_CHECKBOX"); - verboseNatDiscoveryCheckbox.IsChecked = () => Game.Settings.Server.VerboseNatDiscovery; - verboseNatDiscoveryCheckbox.OnClick = () => Game.Settings.Server.VerboseNatDiscovery ^= true; - - var developerMenuCheckbox = debug.Get("DEVELOPER_MENU_CHECKBOX"); - developerMenuCheckbox.IsChecked = () => Game.Settings.Debug.DeveloperMenu; - developerMenuCheckbox.OnClick = () => Game.Settings.Debug.DeveloperMenu ^= true; - - var showFatalErrorDialog = debug.Get("SHOW_FATAL_ERROR_DIALOG_CHECKBOX"); - showFatalErrorDialog.IsChecked = () => Game.Settings.Debug.ShowFatalErrorDialog; - showFatalErrorDialog.OnClick = () => Game.Settings.Debug.ShowFatalErrorDialog ^= true; - - bg.Get("BUTTON_CLOSE").OnClick = () => - { - int x, y; - int.TryParse(windowWidth.Text, out x); - int.TryParse(windowHeight.Text, out y); - gs.WindowedSize = new int2(x,y); - int.TryParse(maxFrameRate.Text, out gs.MaxFramerate); - soundSettings.Device = soundDevice.Device; - soundSettings.Engine = soundDevice.Engine; - Game.Settings.Save(); - Ui.CloseWindow(); - onExit(); - }; - } - - string open = null; - - bool FlipToTab(string id) - { - if (open != null) - bg.Get(open).Visible = false; - - open = id; - bg.Get(open).Visible = true; - return true; - } - - public static bool ShowLanguageDropdown(DropDownButtonWidget dropdown) - { - Func setupItem = (o, itemTemplate) => - { - var item = ScrollItemWidget.Setup(itemTemplate, - () => Game.Settings.Graphics.Language == o, - () => Game.Settings.Graphics.Language = o); - item.Get("LABEL").GetText = () => FieldLoader.Translate(o); - return item; - }; - - dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, Game.modData.Languages, setupItem); - return true; - } - - public static bool ShowWindowModeDropdown(DropDownButtonWidget dropdown, GraphicSettings s) - { - var options = new Dictionary() - { - { "Pseudo-Fullscreen", WindowMode.PseudoFullscreen }, - { "Fullscreen", WindowMode.Fullscreen }, - { "Windowed", WindowMode.Windowed }, - }; - - Func setupItem = (o, itemTemplate) => - { - var item = ScrollItemWidget.Setup(itemTemplate, - () => s.Mode == options[o], - () => s.Mode = options[o]); - item.Get("LABEL").GetText = () => o; - return item; - }; - - dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); - return true; - } - - void SetupKeyBinding(ScrollItemWidget keyWidget, string description, Func getValue, Action setValue) - { - keyWidget.Get("FUNCTION").GetText = () => description; - - var keyEntry = keyWidget.Get("HOTKEY"); - keyEntry.Key = getValue(); - keyEntry.OnLoseFocus = () => setValue(keyEntry.Key); - } - - static bool ShowRendererDropdown(DropDownButtonWidget dropdown, GraphicSettings s) - { - var options = new Dictionary() - { - { "OpenGL", "Gl" }, - { "Cg Toolkit", "Cg" }, - }; - - Func setupItem = (o, itemTemplate) => - { - var item = ScrollItemWidget.Setup(itemTemplate, - () => s.Renderer == options[o], - () => s.Renderer = options[o]); - item.Get("LABEL").GetText = () => o; - return item; - }; - - dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); - return true; - } - - bool ShowAudioDeviceDropdown(DropDownButtonWidget dropdown, SoundSettings s, SoundDevice[] devices) - { - var i = 0; - var options = devices.ToDictionary(d => (i++).ToString(), d => d); - - Func setupItem = (o, itemTemplate) => - { - var item = ScrollItemWidget.Setup(itemTemplate, - () => soundDevice == options[o], - () => soundDevice = options[o]); - - item.Get("LABEL").GetText = () => options[o].Label; - return item; - }; - - dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); - return true; - } - } -} diff --git a/mods/cnc/chrome/settings.yaml b/mods/cnc/chrome/settings.yaml index 6a9bf9a893..23866996a5 100644 --- a/mods/cnc/chrome/settings.yaml +++ b/mods/cnc/chrome/settings.yaml @@ -1,5 +1,5 @@ Container@SETTINGS_PANEL: - Logic:CncSettingsLogic + Logic:SettingsLogic X:(WINDOW_RIGHT - WIDTH)/2 Y:(WINDOW_BOTTOM - HEIGHT)/2 Width:590 @@ -12,25 +12,27 @@ Container@SETTINGS_PANEL: Contrast:true Align:Center Text:Settings - Button@DISPLAY_TAB: - Width:140 - Height:35 - Text:Display - Button@AUDIO_TAB: - X:150 - Width:140 - Height:35 - Text:Audio - Button@INPUT_TAB: - X:300 - Width:140 - Height:35 - Text:Input - Button@ADVANCED_TAB: - X:450 - Width:140 - Height:35 - Text:Advanced + Container@TAB_CONTAINER: + Children: + Button@DISPLAY_TAB: + Width:140 + Height:35 + Text:Display + Button@AUDIO_TAB: + X:150 + Width:140 + Height:35 + Text:Audio + Button@INPUT_TAB: + X:300 + Width:140 + Height:35 + Text:Input + Button@ADVANCED_TAB: + X:450 + Width:140 + Height:35 + Text:Advanced Button@RESET_BUTTON: Y:293 Width:140 diff --git a/mods/ra/chrome/settings.yaml b/mods/ra/chrome/settings.yaml index 90e404c518..e7dee6f810 100644 --- a/mods/ra/chrome/settings.yaml +++ b/mods/ra/chrome/settings.yaml @@ -1,217 +1,83 @@ -Background@SETTINGS_MENU: - Logic:SettingsMenuLogic +Background@SETTINGS_PANEL: + Logic:SettingsLogic X:(WINDOW_RIGHT - WIDTH)/2 Y:(WINDOW_BOTTOM- HEIGHT)/2 - Width: 540 - Height: 400 + Width:600 + Height:351 Children: Label@SETTINGS_LABEL_TITLE: - X:0 Y:20 - Width:540 + Width:PARENT_RIGHT Height:25 Text:Settings Align:Center Font:Bold - Button@BUTTON_CLOSE: + Button@RESET_BUTTON: + X:20 + Y:PARENT_BOTTOM - 45 + Width:160 + Height:25 + Text:Reset + Button@BACK_BUTTON: + Key:escape X:PARENT_RIGHT - 180 Y:PARENT_BOTTOM - 45 Width:160 Height:25 - Text:Close + Text:Back Font:Bold - Key:escape Container@TAB_CONTAINER: - X:0 Y:50 Width:PARENT_RIGHT Height:25 Children: - Button@GENERAL: - X:45 - Y:0 - Width:90 - Height:25 - Text:General - Font:Bold - Button@AUDIO: - X:135 - Y:0 - Width:90 - Height:25 - Text:Audio - Font:Bold - Button@DISPLAY: - X:225 - Y:0 + Button@DISPLAY_TAB: + X:115 Width:90 Height:25 Text:Display Font:Bold - Button@KEYS: - X:315 - Y:0 + Button@AUDIO_TAB: + X:205 Width:90 Height:25 - Text:Keys + Text:Audio Font:Bold - Button@DEBUG: - X:405 - Y:0 + Button@INPUT_TAB: + X:295 Width:90 Height:25 - Text:Debug + Text:Input Font:Bold - Container@GENERAL_PANE: - X:37 - Y:100 - Width:PARENT_RIGHT - 37 - Height:PARENT_BOTTOM - 100 - Visible: true - Children: - Label@SETTINGS_PLAYER_NAME: - X:0 - Y:10 - Text: Player Name: - TextField@NAME: - Text:Name - Width:139 + Button@ADVANCED_TAB: + X:385 + Width:90 Height:25 - X:90 - Y:0 - MaxLength:16 - Checkbox@EDGE_SCROLL: - X:0 - Y:30 - Width:200 - Height:20 - Text: Enable Edge Scrolling - Label@EDGE_SCROLL_AMOUNT_LABEL: - X:0 - Y:70 - Text: Scroll Speed - Slider@EDGE_SCROLL_AMOUNT: - X:130 - Y:60 - Width:250 - Height:20 - Ticks:5 - MinimumValue: 10 - MaximumValue: 50 - Checkbox@INVERSE_SCROLL: - X:0 - Y:90 - Width:200 - Height:20 - Text: Invert Mouse Drag Scrolling - Checkbox@SHOW_SHELLMAP: - X:0 - Y:150 - Width:200 - Height:20 - Text: Show Shellmap - Checkbox@USE_CLASSIC_MOUSE_STYLE_CHECKBOX: - X:0 - Y:180 - Width:200 - Height:20 - Text: Left-Click Orders - Checkbox@ALLOW_NAT_DISCOVERY_CHECKBOX: - X:0 - Y:210 - Width:200 - Height:20 - Text: Enable Network Discovery (UPnP) - Container@AUDIO_PANE: - X:37 - Y:100 - Width:PARENT_RIGHT - 37 - Height:PARENT_BOTTOM - 100 - Visible: false - Children: - Label@SOUND_VOLUME_LABEL: - X:0 - Y:10 - Text: Sound Volume - Slider@SOUND_VOLUME: - X:100 - Y:0 - Width:250 - Height:20 - Ticks:5 - Label@MUSIC_VOLUME_LABEL: - X:0 - Y:40 - Text: Music Volume - Slider@MUSIC_VOLUME: - X:100 - Y:30 - Width:250 - Height:20 - Ticks:5 - Label@VIDEO_VOLUME_LABEL: - X:0 - Y:70 - Text: Video Volume - Slider@VIDEO_VOLUME: - X:100 - Y:60 - Width:250 - Height:20 - Ticks:5 - Checkbox@CASHTICK_CHECKBOX: - X:0 - Y:90 - Width:200 - Height:20 - Text:Cash Ticks - Checkbox@MAP_MUSIC_CHECKBOX: - X:0 - Y:120 - Width:200 - Height:20 - Text: Autoplay Music After Map Load - Label@AUDIO_DEVICE_LABEL: - X:0 - Y:150 - Width:75 - Height:25 - Text:Audio Device: - DropDownButton@AUDIO_DEVICE: - X:100 - Y:150 - Width:250 - Height:25 - Font:Regular - Label@AUDIO_DESC: - Y:175 - Width:200 - Height:25 - Font:Tiny - Text:Device changes will be applied after the game is restarted. - Container@DISPLAY_PANE: - X:37 - Y:100 - Width:PARENT_RIGHT - 37 - Height:PARENT_BOTTOM - 100 - Visible: false + Text:Advanced + Font:Bold + Container@DISPLAY_PANEL: + X:5 + Y:50 + Width:PARENT_RIGHT - 10 + Height:PARENT_BOTTOM Children: Label@MODE_LABEL: - X:0 - Y:0 + X:120 + Y:39 Width:45 Height:25 + Align:Right Text:Mode: DropDownButton@MODE_DROPDOWN: - X:50 - Y:0 + X:170 + Y:40 Width:170 Height:25 Font:Regular Text:Windowed Container@WINDOW_RESOLUTION: - X:225 - Y:0 + X:340 + Y:40 Children: Label@At: Text:@ @@ -239,165 +105,328 @@ Background@SETTINGS_MENU: Height:25 MaxLength:5 Label@VIDEO_DESC: - Y:30 + Y:60 Width:PARENT_RIGHT Height:25 Font:Tiny Align:Center - Text:Mode/Resolution changes will be applied after the game is restarted. + Text:Mode/Resolution changes will be applied after the game is restarted + Checkbox@FRAME_LIMIT_CHECKBOX: + X:15 + Y:100 + Width:200 + Height:20 + Font:Regular + Text:Enable Frame Limiter Checkbox@PIXELDOUBLE_CHECKBOX: - Y:60 + X:310 + Y:105 Width:200 Height:20 Font:Regular Text:Enable Pixel Doubling - Checkbox@CAPFRAMERATE_CHECKBOX: - Y:90 - Width:200 - Height:20 - Font:Regular - Text:Cap Framerate @ - TextField@MAX_FRAMERATE: - X:150 - Y:90 + Label@FRAME_LIMIT_DESC_A: + X:45 + Y:132 + Width:50 + Height:25 + Text:Limit to + Align:Right + TextField@FRAME_LIMIT_TEXTFIELD: + X:100 + Y:133 Width:45 Height:25 MaxLength:3 + Label@FRAME_LIMIT_DESC_B: + X:150 + Y:132 + Height:25 + Text: FPS + Checkbox@SHOW_SHELLMAP: + X:310 + Y:135 + Width:200 + Height:20 + Font:Regular + Text:Show Shellmap + Label@VIDEO_TITLE: + Y:175 + Width:PARENT_RIGHT + Font:Bold + Text:Localization + Align:Center Label@LANGUAGE_LABEL: - X:0 - Y:130 + X:230 - WIDTH - 5 + Y:194 Width:75 Height:25 + Align:Right Text:Language: DropDownButton@LANGUAGE_DROPDOWNBUTTON: - X:80 - Y:130 - Width:140 + X:230 + Y:195 + Width:200 Height:25 - Label@LANGUAGE_DESC: - Y:160 + Label@VIDEO_DESC_A: + Y:215 Width:PARENT_RIGHT Height:25 Font:Tiny Align:Center - Text:Language changes will be applied after the game is restarted. - Container@KEYS_PANE: - X:37 - Y:100 - Width:PARENT_RIGHT - 37 - Height:PARENT_BOTTOM - 100 - Visible: false + Text:Language changes will be applied after the game is restarted + Label@VIDEO_DESC_B: + Y:230 + Width:PARENT_RIGHT + Height:25 + Font:Tiny + Align:Center + Text:Translations apply to text strings only; Speech and build icons will remain in English + Container@AUDIO_PANEL: + X:5 + Y:50 + Width:PARENT_RIGHT - 10 + Height:PARENT_BOTTOM Children: - Label@KEYS_SPECIALHOTKEYSHEADLINE: - X:0 - Y:0 - Text: Special Hotkeys: - Font:Bold - ScrollPanel@SPECIALHOTKEY_LIST: - X:0 - Y:20 - Width:449 - Height:85 - Children: - ScrollItem@SPECIALHOTKEY_TEMPLATE: - Width:PARENT_RIGHT-27 - Height:25 - X:2 - Y:0 - Visible:false - Children: - Label@FUNCTION: - X:10 - Width:200 - Height:25 - HotkeyEntry@HOTKEY: - X:250 - Width:139 - Height:25 - Label@KEYS_UNITCOMMANDSHEADLINE: - X:0 - Y:130 - Text: Hotkeys for Unit Commands: - Font:Bold - ScrollPanel@UNITCOMMANDHOTKEY_LIST: - X:0 - Y:150 - Width:449 - Height:85 - Children: - ScrollItem@UNITCOMMANDHOTKEY_TEMPLATE: - Width:PARENT_RIGHT-27 - Height:25 - X:2 - Y:0 - Visible:false - Children: - Label@FUNCTION: - X:10 - Width:200 - Height:25 - HotkeyEntry@HOTKEY: - X:250 - Width:139 - Height:25 - Container@DEBUG_PANE: - X:37 - Y:100 - Width:PARENT_RIGHT - 37 - Height:PARENT_BOTTOM - 100 - Visible: false - Children: - Checkbox@PERFGRAPH_CHECKBOX: - X:0 - Y:0 - Width:300 + Checkbox@SHELLMAP_MUSIC: + X:15 + Y:40 + Width:200 Height:20 - Text:Show Performance Graph - Checkbox@PERFTEXT_CHECKBOX: - X:0 - Y:30 - Width:300 - Height:20 - Text:Show Performance Text - Label@PERFTEXT_SAMPLE_LABEL: - X:30 - Y:70 - Text:Update Rate - Slider@PERFTEXT_SAMPLE_AMOUNT: - X:130 - Y:60 + Font:Regular + Text:Shellmap / Mission Music + Label@SOUND_LABEL: + X:PARENT_RIGHT - WIDTH - 270 + Y:37 + Width:95 + Height:25 + Align:Right + Text:Sound Volume: + Slider@SOUND_VOLUME: + X:PARENT_RIGHT - WIDTH - 15 + Y:43 Width:250 Height:20 Ticks:5 - MinimumValue: 1 - MaximumValue: 50 - Checkbox@CHECKUNSYNCED_CHECKBOX: - X:0 - Y:90 - Width:300 - Height:20 - Text:Check Sync around Unsynced Code - Checkbox@BOTDEBUG_CHECKBOX: - X:0 - Y:120 - Width:300 - Height:20 - Text:Show Bot Debug Messages - Checkbox@VERBOSE_NAT_DISCOVERY_CHECKBOX: - X:0 - Y:150 - Width:300 - Height:20 - Text:Detailed NAT logging - Checkbox@DEVELOPER_MENU_CHECKBOX: - X:0 - Y:180 - Width:300 - Height:20 - Text:Enable Asset Browser (requires restart) - Checkbox@SHOW_FATAL_ERROR_DIALOG_CHECKBOX: - X:0 - Y:210 + Checkbox@CASH_TICKS: + X:15 + Y:70 Width:200 Height:20 - Text:Show Fatal Error dialog \ No newline at end of file + Font:Regular + Text:Cash Ticks + Label@MUSIC_LABEL: + X:PARENT_RIGHT - WIDTH - 270 + Y:67 + Width:95 + Height:25 + Align:Right + Text:Music Volume: + Slider@VIDEO_VOLUME: + X:PARENT_RIGHT - WIDTH - 15 + Y:73 + Width:250 + Height:20 + Ticks:5 + Label@VIDEO_LABEL: + X:PARENT_RIGHT - WIDTH - 270 + Y:97 + Width:95 + Height:25 + Align:Right + Text:Video Volume: + Slider@MUSIC_VOLUME: + X:PARENT_RIGHT - WIDTH - 15 + Y:103 + Width:250 + Height:20 + Ticks:5 + Label@AUDIO_DEVICE_LABEL: + X:190 - WIDTH - 5 + Y:194 + Width:75 + Height:25 + Align:Right + Text:Audio Device: + DropDownButton@AUDIO_DEVICE: + X:190 + Y:195 + Width:300 + Height:25 + Label@AUDIO_DEVICE_DESC: + Y:215 + Width:PARENT_RIGHT + Height:25 + Font:Tiny + Align:Center + Text:Device changes will be applied after the game is restarted + Container@INPUT_PANEL: + X:5 + Y:50 + Width:PARENT_RIGHT - 10 + Height:PARENT_BOTTOM + Children: + Checkbox@CLASSICORDERS_CHECKBOX: + X:15 + Y:40 + Width:250 + Height:20 + Font:Regular + Text:Left-Click Orders + Label@MOUSE_SCROLL_LABEL: + X:PARENT_RIGHT - WIDTH - 120 + Y:39 + Width:160 + Height:20 + Font:Regular + Text:Middle-Mouse Scrolling: + Align:Right + DropDownButton@MOUSE_SCROLL: + X:PARENT_RIGHT - WIDTH - 15 + Y:38 + Width:100 + Height:25 + Font:Regular + Text:Enabled + Checkbox@EDGESCROLL_CHECKBOX: + X:15 + Y:70 + Width:130 + Height:20 + Font:Regular + Text:Edge Scrolling + Label@SCROLL_SPEED_LABEL: + X:PARENT_RIGHT - WIDTH - 270 + Y:67 + Width:95 + Height:25 + Text:Scroll Speed: + Align:Right + Slider@SCROLLSPEED_SLIDER: + X:PARENT_RIGHT - WIDTH - 15 + Y:73 + Width:250 + Height:20 + Ticks:5 + MinimumValue: 10 + MaximumValue: 50 + Label@HOTKEY_TITLE: + Y:115 + Width:PARENT_RIGHT + Font:Bold + Text:Hotkeys + Align:Center + ScrollPanel@HOTKEY_LIST: + X:15 + Y:135 + Width:560 + ItemSpacing:4 + Height:110 + Children: + ScrollItem@HEADER: + BaseName:scrollheader + Width:528 + Height:13 + Visible:false + Children: + Label@LABEL: + Font:TinyBold + Width:PARENT_RIGHT + Height:10 + Align:Center + Container@GLOBAL_TEMPLATE: + Width:262 + Height:25 + Visible:false + Children: + Label@FUNCTION: + Y:0-1 + Width:PARENT_RIGHT - 85 + Height:25 + Align:Right + HotkeyEntry@HOTKEY: + X:PARENT_RIGHT-WIDTH + Width:80 + Height:25 + Container@UNIT_TEMPLATE: + Width:173 + Height:25 + Visible:false + Children: + Label@FUNCTION: + Y:0-1 + Width:PARENT_RIGHT - 84 + Height:25 + Align:Right + HotkeyEntry@HOTKEY: + X:PARENT_RIGHT-WIDTH+1 + Width:80 + Height:25 + Container@ADVANCED_PANEL: + X:5 + Y:50 + Width:PARENT_RIGHT - 10 + Height:PARENT_BOTTOM + Children: + Checkbox@NAT_DISCOVERY: + X:15 + Y:40 + Width:200 + Height:20 + Font:Regular + Text: Enable Network Discovery (UPnP) + Checkbox@CRASH_DIALOG_CHECKBOX: + X:310 + Y:40 + Width:300 + Height:20 + Font:Regular + Text:Show Fatal Error dialog + Checkbox@PERFTEXT_CHECKBOX: + X:15 + Y:70 + Width:300 + Height:20 + Font:Regular + Text:Show Performance Text + Checkbox@PERFGRAPH_CHECKBOX: + X:310 + Y:70 + Width:300 + Height:20 + Font:Regular + Text:Show Performance Graph + Checkbox@DEVELOPER_MENU_CHECKBOX: + X:15 + Y:100 + Width:300 + Height:20 + Font:Regular + Text:Enable Asset Browser (requires restart) + Label@HOTKEY_TITLE: + Y:140 + Width:PARENT_RIGHT + Font:Bold + Text:Debug + Align:Center + Checkbox@BOTDEBUG_CHECKBOX: + X:15 + Y:160 + Width:300 + Height:20 + Font:Regular + Text:Show Bot Debug Messages + Checkbox@VERBOSE_NAT_CHECKBOX: + X:310 + Y:160 + Width:300 + Height:20 + Font:Regular + Text:Detailed NAT logging + Checkbox@CHECKUNSYNCED_CHECKBOX: + X:15 + Y:190 + Width:300 + Height:20 + Font:Regular + Text:Check Sync around Unsynced Code \ No newline at end of file