From eb478c0d8be35ae96c7d08e127b0cc87c9a9fb7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Tue, 19 Jul 2016 20:31:00 +0800 Subject: [PATCH 01/16] Little fix --- HeavenlyWind.Game/Services/Records/RankingPointsRecords.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HeavenlyWind.Game/Services/Records/RankingPointsRecords.cs b/HeavenlyWind.Game/Services/Records/RankingPointsRecords.cs index dcb6b9bf..50fd0caf 100644 --- a/HeavenlyWind.Game/Services/Records/RankingPointsRecords.cs +++ b/HeavenlyWind.Game/Services/Records/RankingPointsRecords.cs @@ -6,7 +6,7 @@ namespace Sakuno.KanColle.Amatsukaze.Game.Services.Records { public class RankingPointsRecords : RecordsGroup { - static int[] r_Modifier = { 7, 5, 7, 2, 7, 3, 1, 6, 9, 9 }; + static int[] r_Modifier = { 2, 5, 7, 2, 7, 3, 1, 6, 9, 9 }; public override string GroupName => "ranking_point"; public override int Version => 2; From 12143518721db782694b057d9db316e1ce42f096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Wed, 20 Jul 2016 11:42:38 +0800 Subject: [PATCH 02/16] Make exception message more detailed --- HeavenlyWind/Services/Browser/BrowserWrapper.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/HeavenlyWind/Services/Browser/BrowserWrapper.cs b/HeavenlyWind/Services/Browser/BrowserWrapper.cs index 7af78390..639f23a5 100644 --- a/HeavenlyWind/Services/Browser/BrowserWrapper.cs +++ b/HeavenlyWind/Services/Browser/BrowserWrapper.cs @@ -196,19 +196,20 @@ void InitializeBrowserControl() void LoadBrowser(string rpLayoutEngine) { if (!r_BrowsersDirectory.Exists) - throw new Exception(); + throw new DirectoryNotFoundException(r_BrowsersDirectory.FullName); foreach (var rFile in r_BrowsersDirectory.EnumerateFiles("*.dll", SearchOption.AllDirectories)) FileSystem.Unblock(rFile.FullName); - var rInfo = r_BrowsersDirectory.EnumerateFiles("*.json").Select(r => + var rInfos = r_BrowsersDirectory.EnumerateFiles("*.json").Select(r => { using (var rReader = new JsonTextReader(File.OpenText(r.FullName))) return JObject.Load(rReader).ToObject(); - }).SingleOrDefault(r => r.Name == rpLayoutEngine); + }).ToArray(); + var rInfo = rInfos.SingleOrDefault(r => r.Name == rpLayoutEngine); if (rInfo == null) - throw new Exception(); + throw new Exception($"Assigned layout engine not found.{Environment.NewLine}Current layout engine: {rpLayoutEngine}{Environment.NewLine}Installed layout engine(s):{Environment.NewLine}{rInfos.Select(r => r.Name).Join(Environment.NewLine)}"); if (rInfo.Dependencies != null) r_LayoutEngineDependencies = rInfo.Dependencies.ToHybridDictionary(r => r.AssemblyName, r => r.Path); @@ -217,7 +218,7 @@ void LoadBrowser(string rpLayoutEngine) var rType = rAssembly.GetTypes().Where(r => r.GetInterface(typeof(IBrowserProvider).FullName) != null).FirstOrDefault(); if (rType == null) - throw new Exception(); + throw new Exception($"IBrowserProvider not found in {rAssembly.FullName}."); r_BrowserProvider = (IBrowserProvider)rAssembly.CreateInstance(rType.FullName); } From 65ff1f47942370b64be817d25da6e8e735dff8cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Wed, 20 Jul 2016 23:34:22 +0800 Subject: [PATCH 03/16] Fix issue #5 - active quest kept showing in a situation --- HeavenlyWind.Game/QuestManager.cs | 5 +++++ HeavenlyWind/ViewModels/Game/QuestsViewModel.cs | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/HeavenlyWind.Game/QuestManager.cs b/HeavenlyWind.Game/QuestManager.cs index a87e2ec8..e7f180a8 100644 --- a/HeavenlyWind.Game/QuestManager.cs +++ b/HeavenlyWind.Game/QuestManager.cs @@ -54,6 +54,11 @@ internal QuestManager() IsLoaded = true; OnPropertyChanged(nameof(IsLoaded)); }); + SessionService.Instance.Subscribe("api_req_quest/stop", r => + { + var rQuestID = int.Parse(r.Parameters["api_quest_id"]); + Table[rQuestID].RawData.State = QuestState.None; + }); SessionService.Instance.Subscribe("api_req_quest/clearitemget", r => { var rQuestID = int.Parse(r.Parameters["api_quest_id"]); diff --git a/HeavenlyWind/ViewModels/Game/QuestsViewModel.cs b/HeavenlyWind/ViewModels/Game/QuestsViewModel.cs index dc7ec6df..ab89ce36 100644 --- a/HeavenlyWind/ViewModels/Game/QuestsViewModel.cs +++ b/HeavenlyWind/ViewModels/Game/QuestsViewModel.cs @@ -22,6 +22,7 @@ public override string Name public bool IsLoaded { get; private set; } IDTable r_Quests = new IDTable(); + QuestViewModel r_Dummy = new QuestViewModel(Quest.Dummy); public IList All { get; private set; } public IList Active { get; private set; } @@ -74,7 +75,7 @@ void UpdateActiveQuests() var rActiveQuests = KanColleGame.Current.Port.Quests.Active; if (rActiveQuests != null) { - Active = rActiveQuests.Where(r => r != Quest.Dummy).Select(r => r_Quests[r.ID]).ToArray(); + Active = rActiveQuests.Select(r => r != Quest.Dummy ? r_Quests[r.ID] : r_Dummy).ToArray(); r_Owner.Overview.ActiveQuests = Active; OnPropertyChanged(nameof(Active)); From 05e61b16e51f126ae77d2822a5affa0309a8de61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Thu, 21 Jul 2016 17:35:24 +0800 Subject: [PATCH 04/16] Little modification --- HeavenlyWind.Base/CollapsedIfNullExtension.cs | 4 ++-- HeavenlyWind.Base/CollapsedIfZeroExtension.cs | 6 +++--- Library | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/HeavenlyWind.Base/CollapsedIfNullExtension.cs b/HeavenlyWind.Base/CollapsedIfNullExtension.cs index d06156a6..a60498fa 100644 --- a/HeavenlyWind.Base/CollapsedIfNullExtension.cs +++ b/HeavenlyWind.Base/CollapsedIfNullExtension.cs @@ -17,13 +17,13 @@ public CollapsedIfNullExtension(string rpPath) } public override object ProvideValue(IServiceProvider rpServiceProvider) => - new Binding(r_Path) { Converter = NullToVisibilityConverter.Instance }.ProvideValue(rpServiceProvider); + new Binding(r_Path) { Converter = NullToVisibilityConverter.Instance, FallbackValue = EnumUtil.GetBoxed(Visibility.Collapsed) }.ProvideValue(rpServiceProvider); class NullToVisibilityConverter : IValueConverter { public static NullToVisibilityConverter Instance { get; } = new NullToVisibilityConverter(); - public object Convert(object rpValue, Type rpTargetType, object rpParameter, CultureInfo rpCulture) => rpValue == null ? Visibility.Collapsed : Visibility.Visible; + public object Convert(object rpValue, Type rpTargetType, object rpParameter, CultureInfo rpCulture) => rpValue == null ? EnumUtil.GetBoxed(Visibility.Collapsed) : EnumUtil.GetBoxed(Visibility.Visible); public object ConvertBack(object rpValue, Type rpTargetType, object rpParameter, CultureInfo rpCulture) { diff --git a/HeavenlyWind.Base/CollapsedIfZeroExtension.cs b/HeavenlyWind.Base/CollapsedIfZeroExtension.cs index e42d3811..7c57532c 100644 --- a/HeavenlyWind.Base/CollapsedIfZeroExtension.cs +++ b/HeavenlyWind.Base/CollapsedIfZeroExtension.cs @@ -19,7 +19,7 @@ public CollapsedIfZeroExtension(string rpPath) } public override object ProvideValue(IServiceProvider rpServiceProvider) => - new Binding(r_Path) { Converter = IsEqualToZeroToVisibilityConverter.Instance }.ProvideValue(rpServiceProvider); + new Binding(r_Path) { Converter = IsEqualToZeroToVisibilityConverter.Instance, FallbackValue = EnumUtil.GetBoxed(Visibility.Collapsed) }.ProvideValue(rpServiceProvider); class IsEqualToZeroToVisibilityConverter : IValueConverter { @@ -28,9 +28,9 @@ class IsEqualToZeroToVisibilityConverter : IValueConverter public object Convert(object rpValue, Type rpTargetType, object rpParameter, CultureInfo rpCulture) { if (rpValue is double) - return (double)rpValue == .0 ? Visibility.Collapsed : Visibility.Visible; + return (double)rpValue == .0 ? EnumUtil.GetBoxed(Visibility.Collapsed) : EnumUtil.GetBoxed(Visibility.Visible); else - return ConvertClass.ToInt32(rpValue) == 0 ? Visibility.Collapsed : Visibility.Visible; + return ConvertClass.ToInt32(rpValue) == 0 ? EnumUtil.GetBoxed(Visibility.Collapsed) : EnumUtil.GetBoxed(Visibility.Visible); } public object ConvertBack(object rpValue, Type rpTargetType, object rpParameter, CultureInfo rpCulture) diff --git a/Library b/Library index 3d90376a..6bfcd2dd 160000 --- a/Library +++ b/Library @@ -1 +1 @@ -Subproject commit 3d90376a6a4b6e58f52d10390ae68247e0846384 +Subproject commit 6bfcd2ddf1ddb1836b5cd8cafd8e7cb5ba6715d6 From 9d3fb874f16dffcf430ccb591dc4babefc9d2c80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Sun, 24 Jul 2016 00:15:28 +0800 Subject: [PATCH 05/16] Something forgotten --- HeavenlyWind/App.xaml.cs | 2 +- .../UnhandledExceptionDialogStringResources.cs | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/HeavenlyWind/App.xaml.cs b/HeavenlyWind/App.xaml.cs index 5d9ee868..b548006c 100644 --- a/HeavenlyWind/App.xaml.cs +++ b/HeavenlyWind/App.xaml.cs @@ -129,7 +129,7 @@ void ShowUnhandledExceptionDialog(Exception rpException) var rDialog = new TaskDialog() { - Caption = StringResources.Instance.Main.Product_Name, + Caption = UnhandledExceptionDialogStringResources.ProductName, Instruction = UnhandledExceptionDialogStringResources.Instruction, Icon = TaskDialogIcon.Error, Content = UnhandledExceptionDialogStringResources.Content, diff --git a/HeavenlyWind/Internal/UnhandledExceptionDialogStringResources.cs b/HeavenlyWind/Internal/UnhandledExceptionDialogStringResources.cs index b64959a3..52e75326 100644 --- a/HeavenlyWind/Internal/UnhandledExceptionDialogStringResources.cs +++ b/HeavenlyWind/Internal/UnhandledExceptionDialogStringResources.cs @@ -4,6 +4,24 @@ namespace Sakuno.KanColle.Amatsukaze.Internal { static class UnhandledExceptionDialogStringResources { + public static string ProductName + { + get + { + switch (CultureInfo.CurrentUICulture.Name) + { + case "ja-JP": + return "いんてりじぇんと連装砲くん"; + + case "zh-CN": + return "智能型连装炮君"; + + default: + return "Intelligent Naval Gun"; + } + } + } + public static string Instruction { get From bc951038f3de655d977fda9dfd898dbf81c5cc57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Fri, 29 Jul 2016 15:39:23 +0800 Subject: [PATCH 06/16] Little step of advanced log message in status bar --- .../Parsers/Root/Expedition/ResultParser.cs | 10 +++++ HeavenlyWind/Services/StatusBarService.cs | 43 ++++++++++++++++++- HeavenlyWind/Views/StatusBar.xaml | 14 ++++-- Library | 2 +- Resources/Strings/English/Main.xml | 8 ++-- Resources/Strings/Japanese/Main.xml | 8 ++-- Resources/Strings/SimplifiedChinese/Main.xml | 8 ++-- 7 files changed, 76 insertions(+), 17 deletions(-) diff --git a/HeavenlyWind.Game/Parsers/Root/Expedition/ResultParser.cs b/HeavenlyWind.Game/Parsers/Root/Expedition/ResultParser.cs index bb64fe96..775e0e09 100644 --- a/HeavenlyWind.Game/Parsers/Root/Expedition/ResultParser.cs +++ b/HeavenlyWind.Game/Parsers/Root/Expedition/ResultParser.cs @@ -14,6 +14,16 @@ public override void Process(RawExpeditionResult rpData) var rLogContent = string.Format(StringResources.Instance.Main.Log_ExpeditionResult, rFleet.ID, rFleet.Name, rExpedition.ID, rExpedition.TranslatedName, GetStringFromExpeditionResult(rpData.Result)); + + var rBucketCount = 0; + if (rpData.RewardItems[0] == 1) + rBucketCount = rpData.Item1.Count; + else if (rpData.RewardItems[0] == 1) + rBucketCount = rpData.Item2.Count; + + if (rBucketCount > 0) + rLogContent += " [icon]bucket[/icon]" + rBucketCount; + Logger.Write(LoggingLevel.Info, rLogContent); } diff --git a/HeavenlyWind/Services/StatusBarService.cs b/HeavenlyWind/Services/StatusBarService.cs index 01789b52..8e0b436a 100644 --- a/HeavenlyWind/Services/StatusBarService.cs +++ b/HeavenlyWind/Services/StatusBarService.cs @@ -1,5 +1,8 @@ -using Sakuno.KanColle.Amatsukaze.Models; +using Sakuno.KanColle.Amatsukaze.Controls; +using Sakuno.KanColle.Amatsukaze.Game.Models; +using Sakuno.KanColle.Amatsukaze.Models; using Sakuno.UserInterface; +using Sakuno.UserInterface.Controls; using System; using System.Collections.Generic; using System.ComponentModel; @@ -9,6 +12,8 @@ using System.Reactive.Linq; using System.Threading; using System.Threading.Tasks; +using System.Windows; +using System.Windows.Documents; using System.Windows.Input; namespace Sakuno.KanColle.Amatsukaze.Services @@ -100,6 +105,8 @@ public void Initialize() UIZoomFactors = new[] { .25, .5, .75, 1.0, 1.25, 1.5, 1.75, 2.0, 3.0, 4.0 }.Select(r => new UIZoomInfo(r, UISetZoomCommand)).ToArray(); UIZoomInCommand = new DelegatedCommand(() => SetZoom(UIZoom + .05)); UIZoomOutCommand = new DelegatedCommand(() => SetZoom(UIZoom - .05)); + + RegisterCustomBBCodeTag(); } async Task QueryCurrentTime(string rpHostname) @@ -166,5 +173,39 @@ void UpdateZoomSelection(double rpZoom) foreach (var rInfo in UIZoomFactors) rInfo.IsSelected = rInfo.Zoom == rpZoom; } + + void RegisterCustomBBCodeTag() + { + BBCodeBlock.AddCustomTag("icon", rpInline => + { + var rSpan = rpInline as Span; + if (rSpan == null || rSpan.Inlines.Count != 1) + return null; + + var rRun = rSpan.Inlines.FirstInline as Run; + if (rRun == null) + return null; + + var rMaterial = rRun.Text; + if (rMaterial.OICEquals("fuel")) + return new InlineUIContainer(new MaterialIcon() { Type = MaterialType.Fuel }) { BaselineAlignment = BaselineAlignment.Center }; + if (rMaterial.OICEquals("bullet")) + return new InlineUIContainer(new MaterialIcon() { Type = MaterialType.Bullet }) { BaselineAlignment = BaselineAlignment.Center }; + if (rMaterial.OICEquals("steel")) + return new InlineUIContainer(new MaterialIcon() { Type = MaterialType.Steel }) { BaselineAlignment = BaselineAlignment.Center }; + if (rMaterial.OICEquals("bauxite")) + return new InlineUIContainer(new MaterialIcon() { Type = MaterialType.Bauxite }) { BaselineAlignment = BaselineAlignment.Center }; + if (rMaterial.OICEquals("ic")) + return new InlineUIContainer(new MaterialIcon() { Type = MaterialType.InstantConstruction }) { BaselineAlignment = BaselineAlignment.Center }; + if (rMaterial.OICEquals("bucket")) + return new InlineUIContainer(new MaterialIcon() { Type = MaterialType.Bucket }) { BaselineAlignment = BaselineAlignment.Center }; + if (rMaterial.OICEquals("dm")) + return new InlineUIContainer(new MaterialIcon() { Type = MaterialType.DevelopmentMaterial }) { BaselineAlignment = BaselineAlignment.Center }; + if (rMaterial.OICEquals("im")) + return new InlineUIContainer(new MaterialIcon() { Type = MaterialType.ImprovementMaterial }) { BaselineAlignment = BaselineAlignment.Center }; + + return null; + }); + } } } diff --git a/HeavenlyWind/Views/StatusBar.xaml b/HeavenlyWind/Views/StatusBar.xaml index b9711b49..b8473cb9 100644 --- a/HeavenlyWind/Views/StatusBar.xaml +++ b/HeavenlyWind/Views/StatusBar.xaml @@ -5,6 +5,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:rb="clr-namespace:Sakuno.KanColle.Amatsukaze;assembly=HeavenlyWind.Base" xmlns:ruic="clr-namespace:Sakuno.UserInterface.Controls;assembly=Sakuno.UserInterface" + xmlns:rc="clr-namespace:Sakuno.KanColle.Amatsukaze.Controls" xmlns:rs="clr-namespace:Sakuno.KanColle.Amatsukaze.Services" mc:Ignorable="d" DataContext="{Binding Source={x:Static rs:StatusBarService.Instance}}" @@ -98,9 +99,16 @@ - + - + + @@ -117,7 +125,7 @@ - + diff --git a/Library b/Library index 6bfcd2dd..e2c2cdf7 160000 --- a/Library +++ b/Library @@ -1 +1 @@ -Subproject commit 6bfcd2ddf1ddb1836b5cd8cafd8e7cb5ba6715d6 +Subproject commit e2c2cdf71fb95d2cd9ce8b07a0e906bdc1e155fc diff --git a/Resources/Strings/English/Main.xml b/Resources/Strings/English/Main.xml index 24868e0c..fcf79fb3 100644 --- a/Resources/Strings/English/Main.xml +++ b/Resources/Strings/English/Main.xml @@ -13,10 +13,10 @@ Error code from API「{0}」: {1} Error occured when parsing API: {0} Failed to save file: {0} - /{0}"{1}" has returned from expedition {2}:{3}.(Result:{4}) - Start construction of {0} (Material Consumption:{1}/{2}/{3}/{4}-{5}) - {0} was successfully developed.(Material Consumption:{1}/{2}/{3}/{4}) - Development failed. (Material Consumption:{0}/{1}/{2}/{3}) + /{0}"{1}" has returned from expedition {2}:{3}.(Result: [b]{4}[/b]) + Start construction of {0} (Material Consumption: [icon]fuel[/icon] {1} [icon]bullet[/icon] {2} [icon]steel[/icon] {3} [icon]bauxite[/icon] {4} [icon]dm[/icon] {5}) + {0} was successfully developed.(Material Consumption: [icon]fuel[/icon] {1} [icon]bullet[/icon] {2} [icon]steel[/icon] {3} [icon]bauxite[/icon] {4}) + Development failed. (Material Consumption: [icon]fuel[/icon] {0} [icon]bullet[/icon] {1} [icon]steel[/icon] {2} [icon]bauxite[/icon] {3}) /{0}"{1}" sorties to {2} ({3}-{4}) /{0}"{1}" sorties to {2} (E{3} {4}) {0} dropped diff --git a/Resources/Strings/Japanese/Main.xml b/Resources/Strings/Japanese/Main.xml index da890d81..52425014 100644 --- a/Resources/Strings/Japanese/Main.xml +++ b/Resources/Strings/Japanese/Main.xml @@ -13,10 +13,10 @@ API「{0}」のエラーコードを受信しました: {1} API の解析中にエラーが発生しました: {0} ファイルの保存に失敗しました: {0} - /{0}「{1}」が遠征「{2}:{3}」から帰投しました。(結果:{4}) - 「{0}」の建造を開始しました。(投入した資材:{1}/{2}/{3}/{4}-{5}) - 「{0}」の開発に成功しました。(投入した資材:{1}/{2}/{3}/{4}) - 開発に失敗しました。(投入した資材:{0}/{1}/{2}/{3}) + /{0}「{1}」が遠征「{2}:{3}」から帰投しました。(結果: [b]{4}[/b]) + 「{0}」の建造を開始しました。(投入した資材: [icon]fuel[/icon] {1} [icon]bullet[/icon] {2} [icon]steel[/icon] {3} [icon]bauxite[/icon] {4} [icon]dm[/icon] {5}) + 「{0}」の開発に成功しました。(投入した資材: [icon]fuel[/icon] {1} [icon]bullet[/icon] {2} [icon]steel[/icon] {3} [icon]bauxite[/icon] {4}) + 開発に失敗しました。(投入した資材: [icon]fuel[/icon] {0} [icon]bullet[/icon] {1} [icon]steel[/icon] {2} [icon]bauxite[/icon] {3}) /{0}「{1}」が「{2} ({3}-{4})」へ出撃しました /{0}「{1}」が「{2} (E{3} {4})」へ出撃しました 「{0}」がドロップしました diff --git a/Resources/Strings/SimplifiedChinese/Main.xml b/Resources/Strings/SimplifiedChinese/Main.xml index 14991f3e..ed8574f4 100644 --- a/Resources/Strings/SimplifiedChinese/Main.xml +++ b/Resources/Strings/SimplifiedChinese/Main.xml @@ -13,10 +13,10 @@ API「{0}」返回错误代码:{1} 解析 API 时发生错误: {0} 保存缓存文件失败: {0} - /{0}「{1}」从远征「{2}:{3}」归来。(结果:{4}) - 开始建造「{0}」。(投入的资材:{1}/{2}/{3}/{4}-{5}) - 「{0}」开发成功。(投入的资材:{1}/{2}/{3}/{4}) - 开发失败。(投入的资材:{0}/{1}/{2}/{3}) + /{0}「{1}」从远征「{2}:{3}」归来。(结果: [b]{4}[/b]) + 开始建造「{0}」。(投入的资材: [icon]fuel[/icon] {1} [icon]bullet[/icon] {2} [icon]steel[/icon] {3} [icon]bauxite[/icon] {4} [icon]dm[/icon] {5}) + 「{0}」开发成功。(投入的资材: [icon]fuel[/icon] {1} [icon]bullet[/icon] {2} [icon]steel[/icon] {3} [icon]bauxite[/icon] {4}) + 开发失败。(投入的资材: [icon]fuel[/icon] {0} [icon]bullet[/icon] {1} [icon]steel[/icon] {2} [icon]bauxite[/icon] {3}) /{0}「{1}」向「{2} ({3}-{4})」出击 /{0}「{1}」向「{2} (E{3} {4})」出击 获得「{0}」 From 07c3dcd6f3e3e141b1804c5ea63003f1fa26f40d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Thu, 28 Jul 2016 23:33:47 +0800 Subject: [PATCH 07/16] Fix a little bug --- HeavenlyWind/Views/Browser.xaml.cs | 5 ++++- HeavenlyWind/Views/MainWindow.xaml.cs | 19 +++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/HeavenlyWind/Views/Browser.xaml.cs b/HeavenlyWind/Views/Browser.xaml.cs index 9f287432..b7657ee2 100644 --- a/HeavenlyWind/Views/Browser.xaml.cs +++ b/HeavenlyWind/Views/Browser.xaml.cs @@ -1,7 +1,6 @@ using Sakuno.KanColle.Amatsukaze.Services; using System.ComponentModel; using System.Windows; -using System.Windows.Controls; namespace Sakuno.KanColle.Amatsukaze.Views { @@ -19,8 +18,12 @@ public Browser() Instance = this; if (!DesignerProperties.GetIsInDesignMode(this)) + { BrowserService.Instance.Initialize(); + ((MainWindow)App.Current.MainWindow).SubscribeBrowserPreferenceChanged(); + } + InitializeComponent(); } diff --git a/HeavenlyWind/Views/MainWindow.xaml.cs b/HeavenlyWind/Views/MainWindow.xaml.cs index 39c126a1..6ead0ed8 100644 --- a/HeavenlyWind/Views/MainWindow.xaml.cs +++ b/HeavenlyWind/Views/MainWindow.xaml.cs @@ -22,14 +22,6 @@ static MainWindow() public MainWindow() { InitializeComponent(); - - if (!BrowserService.Instance.NoInstalledLayoutEngines) - { - BrowserService.Instance.Resized += (s, e) => Dispatcher.BeginInvoke(new Action(UpdateSize)); - - Preference.Current.Layout.LandscapeDock.Subscribe(OnDockChanged); - Preference.Current.Layout.PortraitDock.Subscribe(OnDockChanged); - } } protected override void OnSourceInitialized(EventArgs e) @@ -69,6 +61,17 @@ protected override void OnClosing(CancelEventArgs e) base.OnClosing(e); } + internal void SubscribeBrowserPreferenceChanged() + { + if (!BrowserService.Instance.NoInstalledLayoutEngines) + { + BrowserService.Instance.Resized += (s, e) => Dispatcher.BeginInvoke(new Action(UpdateSize)); + + Preference.Current.Layout.LandscapeDock.Subscribe(OnDockChanged); + Preference.Current.Layout.PortraitDock.Subscribe(OnDockChanged); + } + } + void UpdateSize() { var rZoom = DpiUtil.ScaleX + Preference.Current.Browser.Zoom - 1.0; From 6f210a67cff6f3393f4345f970c54e6b9e195306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Sat, 30 Jul 2016 21:46:12 +0800 Subject: [PATCH 08/16] Say goodbye to text format preference file --- HeavenlyWind.Base/CurrentDockExtension.cs | 4 +- HeavenlyWind.Base/HeavenlyWind.Base.csproj | 16 +- HeavenlyWind.Base/Internal/OldPreference.cs | 285 ++++++++++++++++++ .../Internal/OldPreferenceMappingAttribute.cs | 15 + .../PreferencePropertyJsonConverter.cs | 53 ---- .../Models/Preferences/BrowserPreference.cs | 25 +- .../Models/Preferences/CachePreference.cs | 21 +- .../Models/Preferences/FlashPreference.cs | 10 +- .../Models/Preferences/GamePreference.cs | 19 +- .../Preferences/HeavyDamageLinePreference.cs | 10 +- .../HeavyDamageLineWidthProperty.cs | 2 +- .../Models/Preferences/LayoutPreference.cs | 14 - .../Models/Preferences/NetworkPreference.cs | 16 +- .../Preferences/NotificationPreference.cs | 34 +-- .../Models/Preferences/OtherPreference.cs | 10 +- .../Models/Preferences/PanicKeyPreference.cs | 13 +- .../Models/Preferences/Property.cs | 24 +- .../Models/Preferences/Property`T.cs | 109 ++++--- .../Preferences/ScreenshotPreference.cs | 13 +- .../Preferences/SessionToolPreference.cs | 7 +- .../Models/Preferences/UIFontProperty.cs | 3 +- .../Models/Preferences/UpdatePreference.cs | 10 +- .../Preferences/UpstreamProxyPreference.cs | 16 +- .../Preferences/UserInterfacePreference.cs | 17 +- .../Models/Preferences/WindowsPreference.cs | 69 ++--- HeavenlyWind.Base/Preference.Data.cs | 51 +--- HeavenlyWind.Base/Preference.cs | 135 ++++++--- HeavenlyWind.Base/PreferenceExtension.cs | 2 +- HeavenlyWind.Base/StringResources.Items.cs | 9 +- HeavenlyWind.Base/StringResources.cs | 6 +- HeavenlyWind.Base/packages.config | 1 + .../Models/FleetConditionRegeneration.cs | 2 +- .../Parsers/Root/Battle/BattleResultParser.cs | 2 +- HeavenlyWind.Game/Proxy/KanColleProxy.cs | 12 +- HeavenlyWind.Game/Services/CacheService.cs | 4 +- HeavenlyWind/App.xaml.cs | 9 +- HeavenlyWind/Controls/FighterPower.cs | 2 +- HeavenlyWind/Controls/LoSFormulas.cs | 2 +- .../Internal/HeavyDamageLineColorExtension.cs | 2 +- .../Internal/PanicKeyPreferenceExtension.cs | 4 +- .../Internal/WindowPlacementPreference.cs | 7 +- HeavenlyWind/Models/UIZoomInfo.cs | 2 +- HeavenlyWind/Services/Browser/BrowserHost.cs | 4 +- .../Services/Browser/BrowserZoomInfo.cs | 2 +- .../Services/Browser/GameController.cs | 4 +- HeavenlyWind/Services/BrowserService.cs | 8 +- HeavenlyWind/Services/NotificationService.cs | 32 +- HeavenlyWind/Services/PanicKeyService.cs | 12 +- HeavenlyWind/Services/ScreenshotService.cs | 4 +- HeavenlyWind/Services/StatusBarService.cs | 4 +- HeavenlyWind/Services/UpdateService.cs | 4 +- .../ViewModels/InitializationPageViewModel.cs | 4 +- .../Preferences/PreferencesWindowViewModel.cs | 13 +- .../ViewModels/Tools/SessionToolViewModel.cs | 2 +- HeavenlyWind/Views/MainWindow.xaml.cs | 8 +- HeavenlyWind/Views/Preferences/Network.xaml | 3 - .../Views/Preferences/Notification.xaml | 16 +- HeavenlyWind/Views/Preferences/Other.xaml.cs | 2 +- .../Views/Preferences/Screenshot.xaml | 2 +- HeavenlyWind/Views/Preferences/UI.xaml | 18 +- HeavenlyWind/Views/Preferences/Window.xaml | 32 +- Resources/Strings/English/Main.xml | 9 +- Resources/Strings/Japanese/Main.xml | 9 +- Resources/Strings/SimplifiedChinese/Main.xml | 9 +- 64 files changed, 725 insertions(+), 543 deletions(-) create mode 100644 HeavenlyWind.Base/Internal/OldPreference.cs create mode 100644 HeavenlyWind.Base/Internal/OldPreferenceMappingAttribute.cs delete mode 100644 HeavenlyWind.Base/Internal/PreferencePropertyJsonConverter.cs delete mode 100644 HeavenlyWind.Base/Models/Preferences/LayoutPreference.cs diff --git a/HeavenlyWind.Base/CurrentDockExtension.cs b/HeavenlyWind.Base/CurrentDockExtension.cs index 4f9a896c..7cca1264 100644 --- a/HeavenlyWind.Base/CurrentDockExtension.cs +++ b/HeavenlyWind.Base/CurrentDockExtension.cs @@ -33,8 +33,8 @@ public override object ProvideValue(IServiceProvider rpServiceProvider) { var rResult = new MultiBinding() { Mode = BindingMode.OneWay, Converter = CoreConverter.Instance }; rResult.Bindings.Add(new Binding() { Path = new PropertyPath(MetroWindow.ScreenOrientationProperty), RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(MetroWindow), 1) }); - rResult.Bindings.Add(new Binding("LandscapeDock.Value") { Source = Preference.Current.Layout }); - rResult.Bindings.Add(new Binding("PortraitDock.Value") { Source = Preference.Current.Layout }); + rResult.Bindings.Add(new Binding("LandscapeDock.Value") { Source = Preference.Instance.UI }); + rResult.Bindings.Add(new Binding("PortraitDock.Value") { Source = Preference.Instance.UI }); rResult.Bindings.Add(new Binding() { RelativeSource = RelativeSource.Self }); if (Converter != null) diff --git a/HeavenlyWind.Base/HeavenlyWind.Base.csproj b/HeavenlyWind.Base/HeavenlyWind.Base.csproj index 021c380a..c96088b8 100644 --- a/HeavenlyWind.Base/HeavenlyWind.Base.csproj +++ b/HeavenlyWind.Base/HeavenlyWind.Base.csproj @@ -39,6 +39,11 @@ + + + ..\packages\System.Data.SQLite.Core.1.0.102.0\lib\net45\System.Data.SQLite.dll + True + ..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll True @@ -79,7 +84,8 @@ - + + @@ -97,7 +103,6 @@ - @@ -146,6 +151,13 @@ + + + + このプロジェクトは、このコンピューター上にない NuGet パッケージを参照しています。それらのパッケージをダウンロードするには、[NuGet パッケージの復元] を使用します。詳細については、http://go.microsoft.com/fwlink/?LinkID=322105 を参照してください。見つからないファイルは {0} です。 + + +