From 7902a5e050af67b18c3aca269d8e9cd355ca60b9 Mon Sep 17 00:00:00 2001 From: alzeih Date: Tue, 13 Jul 2010 22:40:27 +1200 Subject: [PATCH] Settings menu (pchote: fix alzeihs broken world) --- .../Widgets/Delegates/SettingsMenuDelegate.cs | 67 ++++++++++++++++++- mods/cnc/menus.yaml | 65 +++++++++++++++--- mods/ra/menus.yaml | 65 +++++++++++++++--- 3 files changed, 174 insertions(+), 23 deletions(-) diff --git a/OpenRA.Game/Widgets/Delegates/SettingsMenuDelegate.cs b/OpenRA.Game/Widgets/Delegates/SettingsMenuDelegate.cs index 0cdb840c70..bd365b3508 100644 --- a/OpenRA.Game/Widgets/Delegates/SettingsMenuDelegate.cs +++ b/OpenRA.Game/Widgets/Delegates/SettingsMenuDelegate.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using OpenRA.FileFormats.Graphics; +using System.Windows.Forms; namespace OpenRA.Widgets.Delegates { @@ -21,11 +22,37 @@ namespace OpenRA.Widgets.Delegates tabs.GetWidget("DEBUG").OnMouseUp = mi => FlipToTab("DEBUG_PANE"); FlipToTab("GENERAL_PANE"); + //General + var general = bg.GetWidget("GENERAL_PANE"); + + var name = general.GetWidget("NAME"); + name.Text = Game.Settings.PlayerName; + name.OnLoseFocus = () => + { + name.Text = name.Text.Trim(); + + if (name.Text.Length == 0) + name.Text = Game.Settings.PlayerName; + else + { + Game.Settings.PlayerName = name.Text; + Game.Settings.Save(); + } + }; + name.OnEnterKey = () => { name.LoseFocus(); return true; }; // Audio var audio = bg.GetWidget("AUDIO_PANE"); - var music = audio.GetWidget("MUSICPLAYER_CHECKBOX"); + var soundslider = audio.GetWidget("SOUND_VOLUME"); + soundslider.OnChange += x => { Sound.Volume = x; }; + soundslider.GetOffset = () => { return Sound.Volume; }; + + var musicslider = audio.GetWidget("MUSIC_VOLUME"); + musicslider.OnChange += x => { Sound.MusicVolume = x; }; + musicslider.GetOffset = () => { return Sound.MusicVolume; }; + + var music = audio.GetWidget("MUSICPLAYER_CHECKBOX"); music.Checked = () => { return Game.Settings.MusicPlayer; }; music.OnMouseDown = mi => { @@ -46,6 +73,44 @@ namespace OpenRA.Widgets.Delegates return true; }; + var width = display.GetWidget("SCREEN_WIDTH"); + width.Text = Game.Settings.WindowedSize.X.ToString(); + width.OnLoseFocus = () => + { + try { + var w = int.Parse(width.Text); + if (w > 800 && w <= Screen.PrimaryScreen.Bounds.Size.Width){ + Game.Settings.WindowedSize = new int2(w, Game.Settings.WindowedSize.Y); + Game.Settings.Save(); + } + else + width.Text = Game.Settings.WindowedSize.X.ToString(); + } + catch (FormatException e) { + width.Text = Game.Settings.WindowedSize.X.ToString(); + } + }; + width.OnEnterKey = () => { width.LoseFocus(); return true; }; + + var height = display.GetWidget("SCREEN_HEIGHT"); + height.Text = Game.Settings.WindowedSize.Y.ToString(); + height.OnLoseFocus = () => + { + try { + var h = int.Parse(height.Text); + if (h > 600 && h <= Screen.PrimaryScreen.Bounds.Size.Height){ + Game.Settings.WindowedSize = new int2(Game.Settings.WindowedSize.X, h); + Game.Settings.Save(); + } + else + height.Text = Game.Settings.WindowedSize.Y.ToString(); + } + catch (System.FormatException) { + height.Text = Game.Settings.WindowedSize.Y.ToString(); + } + }; + height.OnEnterKey = () => { height.LoseFocus(); return true; }; + // Debug var debug = bg.GetWidget("DEBUG_PANE"); var perfdebug = debug.GetWidget("PERFDEBUG_CHECKBOX"); diff --git a/mods/cnc/menus.yaml b/mods/cnc/menus.yaml index 9ad30de5a2..a2b68e2e4d 100644 --- a/mods/cnc/menus.yaml +++ b/mods/cnc/menus.yaml @@ -222,13 +222,16 @@ Container: Label@SETTINGS_PLAYER_NAME: Id:SETTINGS_PLAYER_NAME X:0 + Y:10 + Text: Player Name: + TextField@NAME: + Id:NAME + Text:Name + Width:139 + Height:25 + X:90 Y:0 - Text: Player Name - Label@SETTINGS_DOWNLOAD_MAPS: - Id:SETTINGS_DOWNLOAD_MAPS - X:0 - Y:30 - Text: Download Maps + MaxLength:16 Container@AUDIO_PANE: Id:AUDIO_PANE X:37 @@ -240,17 +243,31 @@ Container: Label@SOUND_VOLUME_LABEL: Id:SOUND_VOLUME_LABEL X:0 + Y:10 + Text: Sound Volume + Slider@SOUND_VOLUME: + Id:SOUND_VOLUME + X:100 Y:0 - Text: Sound Volume + Width:250 + Height:20 + Ticks:5 Label@MUSIC_VOLUME_LABEL: Id:MUSIC_VOLUME_LABEL X:0 - Y:30 + Y:40 Text: Music Volume + Slider@MUSIC_VOLUME: + Id:MUSIC_VOLUME + X:100 + Y:30 + Width:250 + Height:20 + Ticks:5 Checkbox@MUSICPLAYER_CHECKBOX: Id:MUSICPLAYER_CHECKBOX X:0 - Y:60 + Y:70 Width:300 Height:20 Text:Show Music Player @@ -268,12 +285,38 @@ Container: Y:0 Width:300 Height:20 - Text:Fullscreen (Requires restart) + Text:Fullscreen Label@RESOLUTION_LABEL: Id:RESOLUTION_LABEL X:0 + Y:50 + Text: Window Resolution: + TextField@SCREEN_WIDTH: + Id:SCREEN_WIDTH + Text:Width + Width:50 + Height:25 + X:130 Y:40 - Text: Screen Resolution: + MaxLength:5 + Label@X: + Id:X + Text:x + X:185 + Y:50 + TextField@SCREEN_HEIGHT: + Id:SCREEN_HEIGHT + Text:Height + Width:50 + Height:25 + X:195 + Y:40 + MaxLength:5 + Label@RESTART: + Id:RESTART + Text: Restart Game To Apply Changes + X:0 + Y:PARENT_BOTTOM - 30 Container@DEBUG_PANE: Id:DEBUG_PANE X:37 diff --git a/mods/ra/menus.yaml b/mods/ra/menus.yaml index bfe4a51fe7..735bbd814d 100644 --- a/mods/ra/menus.yaml +++ b/mods/ra/menus.yaml @@ -222,13 +222,16 @@ Container: Label@SETTINGS_PLAYER_NAME: Id:SETTINGS_PLAYER_NAME X:0 + Y:10 + Text: Player Name: + TextField@NAME: + Id:NAME + Text:Name + Width:139 + Height:25 + X:90 Y:0 - Text: Player Name - Label@SETTINGS_DOWNLOAD_MAPS: - Id:SETTINGS_DOWNLOAD_MAPS - X:0 - Y:30 - Text: Download Maps + MaxLength:16 Container@AUDIO_PANE: Id:AUDIO_PANE X:37 @@ -240,17 +243,31 @@ Container: Label@SOUND_VOLUME_LABEL: Id:SOUND_VOLUME_LABEL X:0 + Y:10 + Text: Sound Volume + Slider@SOUND_VOLUME: + Id:SOUND_VOLUME + X:100 Y:0 - Text: Sound Volume + Width:250 + Height:20 + Ticks:5 Label@MUSIC_VOLUME_LABEL: Id:MUSIC_VOLUME_LABEL X:0 - Y:30 + Y:40 Text: Music Volume + Slider@MUSIC_VOLUME: + Id:MUSIC_VOLUME + X:100 + Y:30 + Width:250 + Height:20 + Ticks:5 Checkbox@MUSICPLAYER_CHECKBOX: Id:MUSICPLAYER_CHECKBOX X:0 - Y:60 + Y:70 Width:300 Height:20 Text:Show Music Player @@ -268,12 +285,38 @@ Container: Y:0 Width:300 Height:20 - Text:Fullscreen (Requires restart) + Text:Fullscreen Label@RESOLUTION_LABEL: Id:RESOLUTION_LABEL X:0 + Y:50 + Text: Window Resolution: + TextField@SCREEN_WIDTH: + Id:SCREEN_WIDTH + Text:Width + Width:50 + Height:25 + X:130 Y:40 - Text: Screen Resolution: + MaxLength:5 + Label@X: + Id:X + Text:x + X:185 + Y:50 + TextField@SCREEN_HEIGHT: + Id:SCREEN_HEIGHT + Text:Height + Width:50 + Height:25 + X:195 + Y:40 + MaxLength:5 + Label@RESTART: + Id:RESTART + Text: Restart Game To Apply Changes + X:0 + Y:PARENT_BOTTOM - 30 Container@DEBUG_PANE: Id:DEBUG_PANE X:37