From dc6bd60fccbe22f35098a58b825b016ecb5fc99e Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 22 May 2011 13:59:13 +1200 Subject: [PATCH] Kill CheckboxWidget.Bind and related --- OpenRA.Game/Widgets/CheckboxWidget.cs | 35 ++----------------- OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 10 +++--- .../Delegates/CreateServerMenuDelegate.cs | 6 ++-- .../Widgets/Delegates/LobbyDelegate.cs | 15 ++++---- .../Widgets/Delegates/MusicPlayerDelegate.cs | 12 +++++-- 5 files changed, 27 insertions(+), 51 deletions(-) diff --git a/OpenRA.Game/Widgets/CheckboxWidget.cs b/OpenRA.Game/Widgets/CheckboxWidget.cs index 2f9b58fec0..65902195d7 100644 --- a/OpenRA.Game/Widgets/CheckboxWidget.cs +++ b/OpenRA.Game/Widgets/CheckboxWidget.cs @@ -19,48 +19,17 @@ namespace OpenRA.Widgets { public Func IsChecked = () => false; public int BaseLine = 1; - - object boundObject; - bool boundReadOnly; - FieldInfo boundField; - [Obsolete] public event Action OnChange = _ => {}; - + public CheckboxWidget() : base() { - OnClick = OldClickBehavior; - IsChecked = () => (boundObject != null && (bool)boundField.GetValue(boundObject)); } protected CheckboxWidget(CheckboxWidget widget) : base(widget) { - OnClick = OldClickBehavior; - IsChecked = () => (boundObject != null && (bool)boundField.GetValue(boundObject)); } - - [Obsolete] public void Bind(object obj, string field) { Bind(obj, field, false); } - [Obsolete] public void BindReadOnly(object obj, string field) { Bind(obj, field, true); } - - void Bind(object obj, string field, bool readOnly) - { - boundObject = obj; - boundReadOnly = readOnly; - boundField = obj.GetType().GetField(field); - } - - void OldClickBehavior() - { - bool newVal = !IsChecked(); - if (boundObject != null && !boundReadOnly) - { - newVal = !(bool)boundField.GetValue(boundObject); - boundField.SetValue(boundObject, newVal); - } - - OnChange(newVal); - } - + public override void DrawInner() { var font = Game.Renderer.Fonts[Font]; diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 153ded9014..09959c3d39 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -1,4 +1,4 @@ - + Debug @@ -37,10 +37,6 @@ bin\Release\ - - False - ..\ICSharpCode.SharpZipLib.dll - 3.5 @@ -54,6 +50,10 @@ + + False + ..\ICSharpCode.SharpZipLib.dll + diff --git a/OpenRA.Mods.RA/Widgets/Delegates/CreateServerMenuDelegate.cs b/OpenRA.Mods.RA/Widgets/Delegates/CreateServerMenuDelegate.cs index e90293e8e4..6003d33b57 100644 --- a/OpenRA.Mods.RA/Widgets/Delegates/CreateServerMenuDelegate.cs +++ b/OpenRA.Mods.RA/Widgets/Delegates/CreateServerMenuDelegate.cs @@ -43,8 +43,10 @@ namespace OpenRA.Mods.RA.Widgets.Delegates cs.GetWidget("GAME_TITLE").Text = settings.Server.Name ?? ""; cs.GetWidget("LISTEN_PORT").Text = settings.Server.ListenPort.ToString(); cs.GetWidget("EXTERNAL_PORT").Text = settings.Server.ExternalPort.ToString(); - cs.GetWidget("CHECKBOX_ONLINE").Bind(settings.Server, "AdvertiseOnline"); - cs.GetWidget("CHECKBOX_ONLINE").OnChange += _ => settings.Save(); + + var onlineCheckbox = cs.GetWidget("CHECKBOX_ONLINE"); + onlineCheckbox.IsChecked = () => settings.Server.AdvertiseOnline; + onlineCheckbox.OnClick = () => { settings.Server.AdvertiseOnline ^= true; settings.Save(); }; } } } diff --git a/OpenRA.Mods.RA/Widgets/Delegates/LobbyDelegate.cs b/OpenRA.Mods.RA/Widgets/Delegates/LobbyDelegate.cs index f2ff7e4577..099fbad90f 100755 --- a/OpenRA.Mods.RA/Widgets/Delegates/LobbyDelegate.cs +++ b/OpenRA.Mods.RA/Widgets/Delegates/LobbyDelegate.cs @@ -110,7 +110,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates var lockTeamsCheckbox = lobby.GetWidget("LOCKTEAMS_CHECKBOX"); lockTeamsCheckbox.IsChecked = () => orderManager.LobbyInfo.GlobalSettings.LockTeams; - lockTeamsCheckbox.OnChange += _ => + lockTeamsCheckbox.OnClick = () => { if (Game.IsHost) orderManager.IssueOrder(Order.Command( @@ -119,21 +119,20 @@ namespace OpenRA.Mods.RA.Widgets.Delegates var allowCheats = lobby.GetWidget("ALLOWCHEATS_CHECKBOX"); allowCheats.IsChecked = () => orderManager.LobbyInfo.GlobalSettings.AllowCheats; - allowCheats.OnChange += _ => + allowCheats.OnClick = () => { if (Game.IsHost) orderManager.IssueOrder(Order.Command( "allowcheats {0}".F(!orderManager.LobbyInfo.GlobalSettings.AllowCheats))); }; - var startGameButton = lobby.GetWidget("START_GAME_BUTTON"); - startGameButton.OnMouseUp = mi => + var startGameButton = lobby.GetWidget("START_GAME_BUTTON"); + startGameButton.OnClick = () => { mapButton.Visible = false; disconnectButton.Visible = false; lockTeamsCheckbox.Visible = false; orderManager.IssueOrder(Order.Command("startgame")); - return true; }; // Todo: Only show if the map requirements are met for player slots @@ -409,7 +408,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates var status = template.GetWidget("STATUS"); status.IsChecked = () => c.State == Session.ClientState.Ready; - status.OnChange += CycleReady; + status.OnClick = CycleReady; var spectator = template.GetWidget("SPECTATOR"); @@ -442,7 +441,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates var status = template.GetWidget("STATUS"); status.IsChecked = () => c.State == Session.ClientState.Ready; if (c.Index == orderManager.LocalClient.Index) - status.OnChange += CycleReady; + status.OnClick = CycleReady; var spectator = template.GetWidget("SPECTATOR"); @@ -471,7 +470,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates bool SpawnPointAvailable(int index) { return (index == 0) || orderManager.LobbyInfo.Clients.All(c => c.SpawnPoint != index); } - void CycleReady(bool ready) + void CycleReady() { orderManager.IssueOrder(Order.Command("ready")); } diff --git a/OpenRA.Mods.RA/Widgets/Delegates/MusicPlayerDelegate.cs b/OpenRA.Mods.RA/Widgets/Delegates/MusicPlayerDelegate.cs index 0283b07dee..398f4781b0 100644 --- a/OpenRA.Mods.RA/Widgets/Delegates/MusicPlayerDelegate.cs +++ b/OpenRA.Mods.RA/Widgets/Delegates/MusicPlayerDelegate.cs @@ -82,9 +82,15 @@ namespace OpenRA.Mods.RA.Widgets.Delegates return bg.GetWidget("BUTTON_PLAY").OnMouseUp(mi); }; - bg.GetWidget("SHUFFLE").Bind(Game.Settings.Sound, "Shuffle"); - bg.GetWidget("REPEAT").Bind(Game.Settings.Sound, "Repeat"); - + + var shuffleCheckbox = bg.GetWidget("SHUFFLE"); + shuffleCheckbox.IsChecked = () => Game.Settings.Sound.Shuffle; + shuffleCheckbox.OnClick = () => Game.Settings.Sound.Shuffle ^= true; + + var repeatCheckbox = bg.GetWidget("REPEAT"); + repeatCheckbox.IsChecked = () => Game.Settings.Sound.Repeat; + repeatCheckbox.OnClick = () => Game.Settings.Sound.Repeat ^= true; + bg.GetWidget("TIME").GetText = () => { if (CurrentSong == null)