From b938cca623c3c9fad14a1e7026e9908b332fa3cd Mon Sep 17 00:00:00 2001 From: Gizeta <0w0@gizeta.tk> Date: Mon, 5 Jun 2017 20:47:52 +0800 Subject: [PATCH] Add feature toggle --- Observer/Observer.cs | 7 +++- Observer/Observer.csproj | 1 + Observer/Settings.cs | 22 ++++++++++++ ShadowWatcher/MainWindow.xaml | 5 +++ ShadowWatcher/MainWindow.xaml.cs | 2 ++ ShadowWatcher/SettingModel.cs | 55 ++++++++++++++++++++++++++++++ ShadowWatcher/ShadowWatcher.csproj | 1 + 7 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 Observer/Settings.cs create mode 100644 ShadowWatcher/SettingModel.cs diff --git a/Observer/Observer.cs b/Observer/Observer.cs index 27a6159..bdcc508 100644 --- a/Observer/Observer.cs +++ b/Observer/Observer.cs @@ -35,7 +35,9 @@ public void LateUpdate() { battleManager.Loop(); replayManager.Loop(); - CardAllListEnhancer.SetUp(); + + if (Settings.ShowSummonCard) + CardAllListEnhancer.SetUp(); } catch (Exception e) { @@ -50,6 +52,9 @@ private void Receiver_OnReceived(string action, string data) case "ReplayRequest": replayManager.InjectReplay(data); break; + case "Setting": + Settings.Parse(data); + break; } } } diff --git a/Observer/Observer.csproj b/Observer/Observer.csproj index 115f7c3..6f54f2c 100644 --- a/Observer/Observer.csproj +++ b/Observer/Observer.csproj @@ -58,6 +58,7 @@ + diff --git a/Observer/Settings.cs b/Observer/Settings.cs new file mode 100644 index 0000000..cd1de36 --- /dev/null +++ b/Observer/Settings.cs @@ -0,0 +1,22 @@ +namespace ShadowWatcher +{ + public static class Settings + { + public const int SHOW_SUMMON_CARD = 1; + + public static bool ShowSummonCard { get; set; } = false; + + public static void Parse(string data) + { + int flag = int.Parse(data); + ShowSummonCard = (flag & SHOW_SUMMON_CARD) > 0; + } + + public static new string ToString() + { + int flag = 0; + flag |= ShowSummonCard ? SHOW_SUMMON_CARD : 0; + return flag.ToString(); + } + } +} diff --git a/ShadowWatcher/MainWindow.xaml b/ShadowWatcher/MainWindow.xaml index 90d4500..f6e606f 100644 --- a/ShadowWatcher/MainWindow.xaml +++ b/ShadowWatcher/MainWindow.xaml @@ -133,6 +133,11 @@ + + + + + diff --git a/ShadowWatcher/MainWindow.xaml.cs b/ShadowWatcher/MainWindow.xaml.cs index 9c845d4..ca17a1a 100644 --- a/ShadowWatcher/MainWindow.xaml.cs +++ b/ShadowWatcher/MainWindow.xaml.cs @@ -23,6 +23,7 @@ public MainWindow() MainTab.IsEnabled = false; DataContext = this; + SettingPanel.DataContext = new SettingModel(); } private void attachObserver() @@ -66,6 +67,7 @@ private void Receiver_OnReceived(string action, string data) break; case "Load": Sender.Initialize(int.Parse(data)); + Sender.Send($"Setting:{Settings.ToString()}"); break; case "EnemyPlay": case "EnemyAdd": diff --git a/ShadowWatcher/SettingModel.cs b/ShadowWatcher/SettingModel.cs new file mode 100644 index 0000000..dcc34c9 --- /dev/null +++ b/ShadowWatcher/SettingModel.cs @@ -0,0 +1,55 @@ +using ShadowWatcher.Socket; +using System.ComponentModel; +using System.IO; +using System.IO.IsolatedStorage; + +namespace ShadowWatcher +{ + public class SettingModel : INotifyPropertyChanged + { + private IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForAssembly(); + + public SettingModel() + { + if (!storage.FileExists("setting")) + { + Save(); + } + else + { + var reader = new StreamReader(new IsolatedStorageFileStream("setting", FileMode.Open, storage)); + Settings.Parse(reader.ReadLine()); + } + } + + public bool ShowSummonCard + { + get => Settings.ShowSummonCard; + set + { + if (Settings.ShowSummonCard != value) + { + Settings.ShowSummonCard = value; + Save(); + NotifyPropertyChanged("ShowSummonCard"); + } + } + } + + public void Save() + { + var writer = new StreamWriter(new IsolatedStorageFileStream("setting", FileMode.Create, storage)); + writer.Write(Settings.ToString()); + writer.Close(); + + Sender.Send($"Setting:{Settings.ToString()}"); + } + + public event PropertyChangedEventHandler PropertyChanged; + + private void NotifyPropertyChanged(string propertyName) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + } +} diff --git a/ShadowWatcher/ShadowWatcher.csproj b/ShadowWatcher/ShadowWatcher.csproj index 2108098..9614d69 100644 --- a/ShadowWatcher/ShadowWatcher.csproj +++ b/ShadowWatcher/ShadowWatcher.csproj @@ -59,6 +59,7 @@ + MSBuild:Compile Designer