Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
Gizeta committed Dec 29, 2014
2 parents b2b127f + b58979f commit 2c44ee9
Show file tree
Hide file tree
Showing 8 changed files with 111 additions and 23 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
# 更新日志

## 1.1.0 -2014-12-29
- [change] 索敌值显示增加小数部分
52 changes: 42 additions & 10 deletions KCV.ViewRangeCalc/CalcExtension.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
using Grabacr07.KanColleViewer.ViewModels;
using Grabacr07.KanColleViewer.ViewModels.Contents;
using Grabacr07.KanColleViewer.ViewModels.Contents.Fleets;
using Grabacr07.KanColleViewer.Views;
using Grabacr07.KanColleViewer.Views.Settings;
using Grabacr07.KanColleWrapper;
using System;
using System.ComponentModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using KCVApp = Grabacr07.KanColleViewer.App;

Expand All @@ -19,6 +22,7 @@ public class CalcExtension
private ContentPresenter contentView;
private ScrollViewer startSettingsView;
private ContentControl mainSettingsView;
private ContentPresenter statusBarView;

private CalcExtension()
{
Expand Down Expand Up @@ -46,16 +50,16 @@ private void CurrentKanColleClient_PropertyChanged(object sender, PropertyChange
if(e.PropertyName=="IsStarted")
{
var proxy = KanColleClient.Current.Proxy;
proxy.api_port.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcTotalViewRange());
proxy.api_get_member_ship.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcTotalViewRange());
proxy.api_get_member_ship2.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcTotalViewRange());
proxy.api_get_member_ship3.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcTotalViewRange());
proxy.api_get_member_deck.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcTotalViewRange());
proxy.api_get_member_deck_port.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcTotalViewRange());
proxy.api_req_hensei_change.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcTotalViewRange());
proxy.api_req_hokyu_charge.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcTotalViewRange());

ViewRangeSelectorViewModel.Instance.CalcTotalViewRange();
proxy.api_port.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcAllTotalViewRange());
proxy.api_get_member_ship.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcAllTotalViewRange());
proxy.api_get_member_ship2.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcAllTotalViewRange());
proxy.api_get_member_ship3.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcAllTotalViewRange());
proxy.api_get_member_deck.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcAllTotalViewRange());
proxy.api_get_member_deck_port.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcAllTotalViewRange());
proxy.api_req_hensei_change.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcAllTotalViewRange());
proxy.api_req_hokyu_charge.Subscribe(x => ViewRangeSelectorViewModel.Instance.CalcAllTotalViewRange());

ViewRangeSelectorViewModel.Instance.CalcAllTotalViewRange();
}
}

Expand All @@ -67,6 +71,34 @@ private void KCVWindow_ContentRendered(object sender, EventArgs e)

KCVUIHelper.KCVContent.FindVisualChildren<RadioButton>().Where(x => x.Name == "SettingsTab").First().Checked += StartSettingsTab_Checked;
KCVUIHelper.KCVContent.FindVisualChildren<ContentPresenter>().Where(x => x.DataContext is StartContentViewModel || x.DataContext is MainContentViewModel).First().DataContextChanged += ContentView_DataContextChanged;

KCVUIHelper.KCVWindow.FindVisualChildren<StatusBar>().First().FindVisualChildren<ContentPresenter>().Last().DataContextChanged += StatusBar_DataContextChanged;
}

private void StatusBar_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
var bar = sender as ContentPresenter;
if (bar.Content is FleetsViewModel)
{
statusBarView = bar;
bar.LayoutUpdated += StatusBar_LayoutUpdated;
}
}

private void StatusBar_LayoutUpdated(object sender, EventArgs e)
{
statusBarView.LayoutUpdated -= StatusBar_LayoutUpdated;

var textBlock = statusBarView.FindVisualChildren<TextBlock>()
.Where(x => x.GetBindingExpression(TextBlock.TextProperty) == null ? false : x.GetBindingExpression(TextBlock.TextProperty).ParentBinding.Path.Path == "TotalViewRange")
.First();

var losBinding = new Binding();
losBinding.Path = new PropertyPath("TotalViewRange");
losBinding.Converter = new FleetToViewRangeConverter();
textBlock.SetBinding(TextBlock.TextProperty, losBinding);

statusBarView = null;
}

private void ContentView_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
Expand Down
33 changes: 33 additions & 0 deletions KCV.ViewRangeCalc/FleetToViewRangeConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using Grabacr07.KanColleViewer.ViewModels;
using System;
using System.Windows.Data;
using KCVApp = Grabacr07.KanColleViewer.App;

namespace Gizeta.KCV.ViewRangeCalc
{
public class FleetToViewRangeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var fleet = (KCVApp.ViewModelRoot.Content as MainContentViewModel).Fleets.SelectedFleet;
if (fleet != null)
{
var calcEx = ViewRangeSelectorViewModel.Instance;
if (calcEx.ViewRangeType1 || calcEx.ViewRangeType2)
{
return string.Format("{0}", fleet.GetViewRange());
}
if (calcEx.ViewRangeType3 || calcEx.ViewRangeType4)
{
return string.Format("{0:0.##}", fleet.GetExactViewRange());
}
}
return "0";
}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
1 change: 1 addition & 0 deletions KCV.ViewRangeCalc/KCV.ViewRangeCalc.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="CalcExtension.cs" />
<Compile Include="FleetToViewRangeConverter.cs" />
<Compile Include="KCVUIHelper.cs" />
<Compile Include="PluginLoader.cs" />
<Compile Include="PluginSettings.cs" />
Expand Down
20 changes: 19 additions & 1 deletion KCV.ViewRangeCalc/KanColleWrapperHelper.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Grabacr07.KanColleWrapper.Models;
using Grabacr07.KanColleViewer.ViewModels.Contents.Fleets;
using Grabacr07.KanColleWrapper.Models;
using System;
using System.Reflection;

Expand All @@ -21,4 +22,21 @@ public static void SetTotalViewRange(this Fleet fleet, int value)
type.GetProperty("TotalViewRange", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public).SetValue(fleet, value);
}
}

public static class FleetViewModelHelper
{
public static int GetViewRange(this FleetViewModel fleetViewModel)
{
Type type = typeof(FleetViewModel);
var fleet = type.GetField("source", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public).GetValue(fleetViewModel) as Fleet;
return fleet.TotalViewRange;
}

public static double GetExactViewRange(this FleetViewModel fleetViewModel)
{
Type type = typeof(FleetViewModel);
var fleet = type.GetField("source", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public).GetValue(fleetViewModel) as Fleet;
return ViewRangeSelectorViewModel.Instance.CalcTotalViewRange(fleet);
}
}
}
2 changes: 1 addition & 1 deletion KCV.ViewRangeCalc/PluginLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace Gizeta.KCV.ViewRangeCalc
[Export(typeof(IToolPlugin))]
[ExportMetadata("Title", "KCV.ViewRangeCalc")]
[ExportMetadata("Description", "KanColleViewer索敌值计算插件。")]
[ExportMetadata("Version", "1.0.0")]
[ExportMetadata("Version", "1.1.0")]
[ExportMetadata("Author", "@Gizeta")]
public class PluginLoader : IToolPlugin
{
Expand Down
4 changes: 2 additions & 2 deletions KCV.ViewRangeCalc/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.1.0.1")]
[assembly: AssemblyFileVersion("1.1.0.1")]
19 changes: 10 additions & 9 deletions KCV.ViewRangeCalc/ViewRangeSelectorViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public bool ViewRangeType1
this.RaisePropertyChanged();

if (!value)
this.CalcTotalViewRange();
this.CalcAllTotalViewRange();
}
}
}
Expand All @@ -50,7 +50,7 @@ public bool ViewRangeType2
this.RaisePropertyChanged();

if (!value)
this.CalcTotalViewRange();
this.CalcAllTotalViewRange();
}
}
}
Expand All @@ -68,7 +68,7 @@ public bool ViewRangeType3
this.RaisePropertyChanged();

if (!value)
this.CalcTotalViewRange();
this.CalcAllTotalViewRange();
}
}
}
Expand All @@ -86,20 +86,21 @@ public bool ViewRangeType4
this.RaisePropertyChanged();

if (!value)
this.CalcTotalViewRange();
this.CalcAllTotalViewRange();
}
}
}

public void CalcTotalViewRange()
public void CalcAllTotalViewRange()
{
foreach (var fleet in KanColleClient.Current.Homeport.Organization.Fleets)
{
fleet.Value.SetTotalViewRange(calc(fleet.Value));
var los = this.CalcTotalViewRange(fleet.Value);
fleet.Value.SetTotalViewRange((int)los);
}
}

private int calc(Fleet fleet)
public double CalcTotalViewRange(Fleet fleet)
{
if (fleet == null || fleet.Ships.Length == 0) return 0;

Expand Down Expand Up @@ -213,7 +214,7 @@ private int calc(Fleet fleet)
return Math.Sqrt(f.ViewRange - spotter - radar);
}) * 1.69 - Math.Ceiling(KanColleClient.Current.Homeport.Admiral.Level / 5.0) * 5.0 * 0.61;

return (int)result;
return result;
}

if (ViewRangeType4)
Expand Down Expand Up @@ -303,7 +304,7 @@ private int calc(Fleet fleet)
return Math.Sqrt(f.ViewRange - spotter - radar);
}) - KanColleClient.Current.Homeport.Admiral.Level * 0.4;

return (int)result;
return result;
}

return 0;
Expand Down

0 comments on commit 2c44ee9

Please sign in to comment.