From ba8c9bb1b10589e373669c980ae5393027bec439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Thu, 14 Feb 2013 19:14:24 +0100 Subject: [PATCH] added hidden audio settings to ra/d2k GUI - video volume - map music (was shellmap music) - sound engine --- OpenRA.Game/GameRules/Settings.cs | 2 +- .../Widgets/Logic/CncSettingsLogic.cs | 4 +-- .../Widgets/Logic/SettingsMenuLogic.cs | 34 +++++++++++++++++++ OpenRA.Mods.RA/World/PlayMusicOnMapLoad.cs | 2 +- mods/ra/chrome/settings.yaml | 33 ++++++++++++++++-- 5 files changed, 69 insertions(+), 6 deletions(-) diff --git a/OpenRA.Game/GameRules/Settings.cs b/OpenRA.Game/GameRules/Settings.cs index a0b6b7793e..aa2e97cec1 100644 --- a/OpenRA.Game/GameRules/Settings.cs +++ b/OpenRA.Game/GameRules/Settings.cs @@ -88,7 +88,7 @@ namespace OpenRA.GameRules public float VideoVolume = 0.5f; public bool Shuffle = false; public bool Repeat = false; - public bool ShellmapMusic = true; + public bool MapMusic = true; public string Engine = "AL"; public SoundCashTicks SoundCashTickType = SoundCashTicks.Extreme; diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs index 8d8fb13bc7..5c3b99e9d0 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs @@ -109,8 +109,8 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic musicSlider.Value = soundSettings.MusicVolume; var shellmapMusicCheckbox = generalPane.Get("SHELLMAP_MUSIC"); - shellmapMusicCheckbox.IsChecked = () => soundSettings.ShellmapMusic; - shellmapMusicCheckbox.OnClick = () => soundSettings.ShellmapMusic ^= true; + shellmapMusicCheckbox.IsChecked = () => soundSettings.MapMusic; + shellmapMusicCheckbox.OnClick = () => soundSettings.MapMusic ^= true; // Input pane var inputPane = panel.Get("INPUT_CONTROLS"); diff --git a/OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs index 37a4b443af..f9181555ad 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/SettingsMenuLogic.cs @@ -86,11 +86,24 @@ namespace OpenRA.Mods.RA.Widgets.Logic 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 cashticksdropdown = audio.Get("CASH_TICK_TYPE"); cashticksdropdown.OnMouseDown = _ => ShowSoundTickDropdown(cashticksdropdown, soundSettings); cashticksdropdown.GetText = () => soundSettings.SoundCashTickType == SoundCashTicks.Extreme ? "Extreme" : soundSettings.SoundCashTickType == SoundCashTicks.Normal ? "Normal" : "Disabled"; + var mapMusicCheckbox = audio.Get("MAP_MUSIC_CHECKBOX"); + mapMusicCheckbox.IsChecked = () => Game.Settings.Sound.MapMusic; + mapMusicCheckbox.OnClick = () => Game.Settings.Sound.MapMusic ^= true; + + var soundEngineDropdown = audio.Get("SOUND_ENGINE"); + soundEngineDropdown.OnMouseDown = _ => ShowSoundEngineDropdown(soundEngineDropdown, soundSettings); + soundEngineDropdown.GetText = () => soundSettings.Engine == "AL" ? + "OpenAL" : soundSettings.Engine == "Null" ? "None" : "OpenAL"; + // Display var display = bg.Get("DISPLAY_PANE"); @@ -298,5 +311,26 @@ namespace OpenRA.Mods.RA.Widgets.Logic dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); return true; } + + public static bool ShowSoundEngineDropdown(DropDownButtonWidget dropdown, SoundSettings s) + { + var options = new Dictionary() + { + { "OpenAL", "AL" }, + { "None", "Null" }, + }; + + Func setupItem = (o, itemTemplate) => + { + var item = ScrollItemWidget.Setup(itemTemplate, + () => s.Engine == options[o], + () => s.Engine = options[o]); + item.Get("LABEL").GetText = () => o; + return item; + }; + + dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); + return true; + } } } diff --git a/OpenRA.Mods.RA/World/PlayMusicOnMapLoad.cs b/OpenRA.Mods.RA/World/PlayMusicOnMapLoad.cs index f93d5391a0..b9c0669ad3 100644 --- a/OpenRA.Mods.RA/World/PlayMusicOnMapLoad.cs +++ b/OpenRA.Mods.RA/World/PlayMusicOnMapLoad.cs @@ -36,7 +36,7 @@ namespace OpenRA.Mods.RA { var onComplete = Info.Loop ? (Action)PlayMusic : () => {}; - if (Game.Settings.Sound.ShellmapMusic && + if (Game.Settings.Sound.MapMusic && Rules.Music.ContainsKey(Info.Music)) Sound.PlayMusicThen(Rules.Music[Info.Music], onComplete); } diff --git a/mods/ra/chrome/settings.yaml b/mods/ra/chrome/settings.yaml index b9113b01c9..4932645382 100644 --- a/mods/ra/chrome/settings.yaml +++ b/mods/ra/chrome/settings.yaml @@ -149,17 +149,46 @@ Background@SETTINGS_MENU: Width:250 Height:20 Ticks:5 - Label@SOUND_TICK_TYPE_LABEL: + Label@VIDEO_VOLUME_LABEL: X:0 Y:70 + Text: Video Volume + Slider@VIDEO_VOLUME: + X:100 + Y:60 + Width:250 + Height:20 + Ticks:5 + Label@SOUND_TICK_TYPE_LABEL: + X:0 + Y:100 Text: Cash ticks DropDownButton@CASH_TICK_TYPE: X:100 - Y:60 + Y:90 Width:250 Height:25 Font:Regular Text:Extreme + Checkbox@MAP_MUSIC_CHECKBOX: + X:0 + Y:120 + Width:200 + Height:20 + Text: Autoplay Music After Map Load + Label@SOUND_ENGINE_LABEL: + X:0 + Y:150 + Width:75 + Height:25 + Text:Sound Engine: + DropDownButton@SOUND_ENGINE: + X:100 + Y:150 + Width:120 + Height:25 + Font:Regular + Text:OpenAL Container@DISPLAY_PANE: X:37 Y:100