动画内存优化

This commit is contained in:
ZouJin 2023-08-12 16:09:20 +10:00
parent 2ec34c81ec
commit a1e894aa5a
11 changed files with 461 additions and 389 deletions

View File

@ -72,6 +72,7 @@ namespace VPet_Simulator.Core
if (!core.Controller.EnableFunction)
Core.Save.Mode = NoFunctionMOD;
var ig = Core.Graph.FindGraph(Core.Graph.FindName(GraphType.StartUP), AnimatType.Single, core.Save.Mode);
ig ??= Core.Graph.FindGraph(Core.Graph.FindName(GraphType.StartUP), AnimatType.Single, GameSave.ModeType.PoorCondition);
//var ig2 = Core.Graph.FindGraph(GraphType.Default, core.GameSave.Mode);
PetGrid2.Visibility = Visibility.Collapsed;
Task.Run(() =>

View File

@ -19,12 +19,16 @@ namespace VPet_Simulator.Core
/// </summary>
public class GraphCore
{
public GraphCore()
/// <summary>
/// 桌宠图形渲染的分辨率,越高图形越清晰
/// </summary>
public int Resolution { get; set; } = 1000;
public GraphCore(int resolution)
{
if (!Directory.Exists(CachePath))
Directory.CreateDirectory(CachePath);
CommConfig["Cache"] = new List<string>();
Resolution = resolution;
}
public static string CachePath = AppDomain.CurrentDomain.BaseDirectory + @"\cache";

View File

@ -165,7 +165,7 @@ namespace VPet_Simulator.Core
{
//新方法:加载大图片
//生成大文件加载非常慢,先看看有没有缓存能用
Path = GraphCore.CachePath + $"\\{Sub.GetHashCode(path)}_{paths.Length}.png";
Path = GraphCore.CachePath + $"\\{GraphCore.Resolution}_{Sub.GetHashCode(path)}_{paths.Length}.png";
Width = 500 * (paths.Length + 1);
if (File.Exists(Path) || ((List<string>)GraphCore.CommConfig["Cache"]).Contains(path))
{
@ -184,6 +184,11 @@ namespace VPet_Simulator.Core
imgs.Add(System.Drawing.Image.FromFile(file.FullName));
int w = imgs[0].Width;
int h = imgs[0].Height;
if(w > GraphCore.Resolution)
{
w = GraphCore.Resolution;
h = (int)(h * (GraphCore.Resolution / (double)imgs[0].Width));
}
Bitmap joinedBitmap = new Bitmap(w * paths.Length, h);
var graph = Graphics.FromImage(joinedBitmap);
for (int i = 0; i < paths.Length; i++)

View File

@ -18,9 +18,9 @@ namespace VPet_Simulator.Core
/// <summary>
/// 宠物图像
/// </summary>
public GraphCore Graph()
public GraphCore Graph(int Resolution)
{
var g = new GraphCore();
var g = new GraphCore(Resolution);
foreach (var p in path)
LoadGraph(g, new DirectoryInfo(p), p);
g.GraphConfig = Config;

View File

@ -407,5 +407,13 @@ namespace VPet_Simulator.Windows.Interface
get => this["gameconfig"].GetDouble("musicmax", 0.70);
set => this["gameconfig"].SetDouble("musicmax", value);
}
/// <summary>
/// 桌宠图形渲染的分辨率,越高图形越清晰
/// </summary>
public int Resolution
{
get => this["gameconfig"].GetInt("resolution", 500);
set => this["gameconfig"].SetInt("resolution", value);
}
}
}

View File

@ -389,14 +389,17 @@ namespace VPet_Simulator.Windows
Task.Run(Steamworks.SteamUserStats.StoreStats);
}
}
public void GameLoad(ILine line)
public bool GameLoad(ILine line)
{
if (line == null)
return false;
Core.Save = GameSave.Load(line);
long hash = line.GetInt64("hash");
if (line.Remove("hash"))
{
HashCheck = line.GetLongHashCode() == hash;
}
return true;
}
/// <summary>
/// 获得当前系统音乐播放音量

View File

@ -235,9 +235,9 @@ namespace VPet_Simulator.Windows
//加载游戏内容
Core.Controller = new MWController(this);
if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + @"\Save.lps"))
GameLoad(new LpsDocument(File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"\Save.lps")).First());
else//如果加载存档失败了,试试加载备份,如果没备份,就新建一个
if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + @"\Save.lps") &&
!GameLoad(new LpsDocument(File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"\Save.lps")).First()))
//如果加载存档失败了,试试加载备份,如果没备份,就新建一个
LoadLatestSave(petloader.PetName);
AutoSaveTimer.Elapsed += AutoSaveTimer_Elapsed;
@ -299,7 +299,7 @@ namespace VPet_Simulator.Windows
{
LoadingText.Content = "尝试加载动画和生成缓存".Translate();
Core.Graph = petloader.Graph();
Core.Graph = petloader.Graph(Set.Resolution);
LoadingText.Content = "正在加载CGPT".Translate();
winSetting = new winGameSetting(this);

View File

@ -129,9 +129,6 @@
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="Update, Version=2.4.7.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Update.2.4.7\lib\net40\Update.exe</HintPath>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />

View File

@ -19,8 +19,9 @@
pu:TabControlHelper.ItemsCornerRadius="4"
pu:TabControlHelper.ItemsHoverBackground="{DynamicResource PrimaryLight}"
pu:TabControlHelper.ItemsSelectedBackground="{DynamicResource PrimaryDark}"
pu:TabControlHelper.ItemsSelectedForeground="{DynamicResource DARKPrimaryText}" pu:TabControlHelper.CanHeaderPanelScroll="True"
Foreground="{DynamicResource PrimaryText}" SelectionChanged="MainTab_SelectionChanged">
pu:TabControlHelper.ItemsSelectedForeground="{DynamicResource DARKPrimaryText}"
pu:TabControlHelper.CanHeaderPanelScroll="True" Foreground="{DynamicResource PrimaryText}"
SelectionChanged="MainTab_SelectionChanged">
<TabControl.ContentTemplate>
<DataTemplate>
<Border Margin="5,10,5,20" CornerRadius="15" Background="{DynamicResource DARKPrimaryText}">
@ -31,171 +32,198 @@
<TabItem Header="{ll:Str 图形}" Foreground="{DynamicResource PrimaryText}"
BorderBrush="{DynamicResource PrimaryDarker}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="15" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Text="{ll:Str 快速切换}" VerticalAlignment="Center" Grid.Row="1" />
<TextBlock Text="{ll:Str 置于顶层}" VerticalAlignment="Center" />
<Grid Grid.Row="0" Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<pu:Switch x:Name="TopMostBox" Grid.Column="0" BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent" BoxWidth="35"
BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}" Checked="TopMostBox_Checked"
Unchecked="TopMostBox_Unchecked" ToolTip="{ll:Str 将桌宠置于顶层}" Content="{ll:Str 将桌宠置于顶层}" />
<pu:Switch x:Name="HitThroughBox" Grid.Column="1" BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent" BoxWidth="35"
BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
ToolTip="{ll:Str '鼠标将会穿过桌宠到下方内容,不打扰操作\&#13;该选项'}" Content="{ll:Str '鼠标穿透'}"
Checked="HitThroughBox_Checked" Unchecked="HitThroughBox_Checked" />
</Grid>
<ScrollViewer>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="15" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Text="{ll:Str 快速切换}" VerticalAlignment="Center" Grid.Row="1" />
<TextBlock Text="{ll:Str 置于顶层}" VerticalAlignment="Center" />
<Grid Grid.Row="0" Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<pu:Switch x:Name="TopMostBox" Grid.Column="0"
BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
Checked="TopMostBox_Checked" Unchecked="TopMostBox_Unchecked"
ToolTip="{ll:Str 将桌宠置于顶层}" Content="{ll:Str 将桌宠置于顶层}" />
<pu:Switch x:Name="HitThroughBox" Grid.Column="1"
BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
ToolTip="{ll:Str '鼠标将会穿过桌宠到下方内容,不打扰操作\&#13;该选项'}" Content="{ll:Str '鼠标穿透'}"
Checked="HitThroughBox_Checked" Unchecked="HitThroughBox_Checked" />
</Grid>
<TextBlock Text="Language" VerticalAlignment="Center" Grid.Row="2" Grid.ColumnSpan="2" />
<ComboBox x:Name="LanguageBox" Grid.Row="2" Grid.Column="2"
Style="{DynamicResource StandardComboBoxStyle}" Margin="0,3,0,2" FontSize="16"
SelectionChanged="LanguageBox_SelectionChanged" />
<TextBlock Text="Language" VerticalAlignment="Center" Grid.Row="2" Grid.ColumnSpan="2" />
<ComboBox x:Name="LanguageBox" Grid.Row="2" Grid.Column="2"
Style="{DynamicResource StandardComboBoxStyle}" Margin="0,3,0,2" FontSize="16"
SelectionChanged="LanguageBox_SelectionChanged" />
<pu:Switch x:Name="PetHelperBox" Grid.Column="2" BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}" CheckedBorderBrush="{DynamicResource Primary}"
Background="Transparent" BoxWidth="35" BoxHeight="18" ToggleSize="14"
ToggleShadowColor="{x:Null}" ToggleBrush="{DynamicResource PrimaryDark}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}" ToolTip="{ll:Str '添加快速切换小标,切换顶层或穿透'}"
Grid.Row="1" Content="{ll:Str '添加小标,快速切换顶层或穿透'}" Checked="PetHelperBox_Checked"
Unchecked="PetHelperBox_Checked" />
<pu:Switch x:Name="PetHelperBox" Grid.Column="2" BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
ToolTip="{ll:Str '添加快速切换小标,切换顶层或穿透'}" Grid.Row="1"
Content="{ll:Str '添加小标,快速切换顶层或穿透'}" Checked="PetHelperBox_Checked"
Unchecked="PetHelperBox_Checked" />
<TextBlock Grid.Row="3" Text="{ll:Str 更高缩放}" VerticalAlignment="Center" />
<pu:Switch x:Name="FullScreenBox" Grid.Row="3" Grid.Column="2" Content="{ll:Str 支持更大缩放倍率}"
BorderBrush="{DynamicResource PrimaryDark}" CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent" BoxWidth="35"
BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}" Checked="FullScreenBox_Check"
Unchecked="FullScreenBox_Check" ToolTip="{ll:Str 解锁缩放限制}" />
<TextBlock Grid.Row="4" Text="{ll:Str 缩放等级}" VerticalAlignment="Center" />
<!--<Button pu:ButtonHelper.CornerRadius="4" Content="{ll:Str 小标介绍}" Grid.Column="2"
Background="{DynamicResource SecondaryLight}" HorizontalAlignment="Right"
VerticalAlignment="Center" Height="30" BorderBrush="{DynamicResource SecondaryDark}"
BorderThickness="2" Grid.Row="1" />-->
<Grid Grid.Column="2" Grid.Row="4">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Slider TickFrequency="0.05" IsSnapToTickEnabled="True" x:Name="ZoomSlider"
Style="{DynamicResource StandardSliderStyle}" VerticalAlignment="Center" Maximum="3"
SmallChange=".05" Minimum="0.5" LargeChange=".1" Value="1"
PreviewMouseUp="ZoomSlider_MouseUp" />
<TextBlock Grid.Column="1" Margin="15,0,0,0" VerticalAlignment="Center"
Text="{Binding ElementName=ZoomSlider,Path=Value,StringFormat=f2}" FontSize="18"
Foreground="{DynamicResource DARKPrimaryDarker}" FontWeight="Bold" Background="{x:Null}" />
</Grid>
<TextBlock Grid.Row="5" Text="{ll:Str 主题}" VerticalAlignment="Center" />
<ComboBox x:Name="ThemeBox" Grid.Row="5" Grid.Column="2"
SelectionChanged="ThemeBox_SelectionChanged" IsEnabled="False"
Style="{DynamicResource StandardComboBoxStyle}" Margin="0,3,0,2" FontSize="16" />
<TextBlock Grid.Row="3" Text="{ll:Str 更高缩放}" VerticalAlignment="Center" />
<pu:Switch x:Name="FullScreenBox" Grid.Row="3" Grid.Column="2" Content="{ll:Str 支持更大缩放倍率}"
BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}" Checked="FullScreenBox_Check"
Unchecked="FullScreenBox_Check" ToolTip="{ll:Str 解锁缩放限制}" />
<TextBlock Grid.Row="4" Text="{ll:Str 缩放等级}" VerticalAlignment="Center" />
<Grid Grid.Column="2" Grid.Row="4" Grid.RowSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Slider TickFrequency="0.05" IsSnapToTickEnabled="True" x:Name="ZoomSlider"
Style="{DynamicResource StandardSliderStyle}" VerticalAlignment="Center"
Maximum="3" SmallChange=".05" Minimum="0.5" LargeChange=".1" Value="1"
PreviewMouseUp="ZoomSlider_MouseUp" />
<TextBlock Grid.Column="1" Margin="15,0,0,0" VerticalAlignment="Center"
Text="{Binding ElementName=ZoomSlider,Path=Value,StringFormat=f2}" FontSize="18"
Foreground="{DynamicResource DARKPrimaryDarker}" FontWeight="Bold"
Background="{x:Null}" />
<Slider x:Name="SliderResolution" TickFrequency="10" IsSnapToTickEnabled="True"
Style="{DynamicResource StandardSliderStyle}" VerticalAlignment="Center"
Maximum="1920" SmallChange="20" Minimum="200" LargeChange="50" Value="1000"
Grid.Row="1"
ToolTip="{ll:Str '桌宠图形渲染的分辨率,越高图形越清晰\&#13;但是高分辨率会占用更多内存\&#13;重启后生效'}"
PreviewMouseUp="SliderResolution_MouseUp" />
<TextBlock Grid.Column="1" Margin="15,0,0,0" VerticalAlignment="Center"
Text="{Binding ElementName=SliderResolution,Path=Value,StringFormat=f0}"
FontSize="18" Foreground="{DynamicResource DARKPrimaryDarker}" FontWeight="Bold"
Background="{x:Null}" Grid.Row="1"
ToolTip="{ll:Str '桌宠图形渲染的分辨率,越高图形越清晰\&#13;但是高分辨率会占用更多内存\&#13;重启后生效'}" />
</Grid>
<TextBlock Grid.Row="5" Text="{ll:Str 分辨率}" VerticalAlignment="Center" Grid.ColumnSpan="2" />
<TextBlock Grid.Row="6" Text="{ll:Str 主题}" VerticalAlignment="Center" />
<ComboBox x:Name="ThemeBox" Grid.Row="6" Grid.Column="2" Margin="0,3,0,2"
SelectionChanged="ThemeBox_SelectionChanged" IsEnabled="False"
Style="{DynamicResource StandardComboBoxStyle}" FontSize="16" />
<TextBlock Grid.Row="6" Text="{ll:Str 字体}" VerticalAlignment="Center" />
<ComboBox x:Name="FontBox" Grid.Row="6" Grid.Column="2" SelectionChanged="FontBox_SelectionChanged"
IsEnabled="False" Style="{DynamicResource StandardComboBoxStyle}" FontSize="16"
Margin="0,2,0,3" />
<TextBlock Grid.Row="7" Text="{ll:Str 启动位置}" VerticalAlignment="Center" />
<Grid Grid.Row="7" Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<pu:Switch x:Name="StartPlace" BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}" IsChecked="True"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent" BoxWidth="35"
BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}" Content="{ll:Str 退出位置}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
ToolTip="{ll:Str 游戏退出位置为下次桌宠启动出现的位置}" Unchecked="StartPlace_Checked"
VerticalAlignment="Center" Checked="StartPlace_Checked" />
<TextBox x:Name="TextBoxStartUpX" Grid.Column="1" Style="{DynamicResource StandardTextBoxStyle}"
ToolTip="{ll:Str X轴}" pu:TextBoxHelper.Icon="X" FontSize="16" Margin="0,0,5,0"
pu:TextBoxHelper.InputLimit="Digit" pu:TextBoxHelper.Watermark="{ll:Str X轴}"
TextChanged="TextBoxStartUp_TextChanged" pu:IconHelper.Margin="5,0,0,0" />
<TextBox x:Name="TextBoxStartUpY" Grid.Column="2" Style="{DynamicResource StandardTextBoxStyle}"
ToolTip="{ll:Str Y轴}" pu:TextBoxHelper.Icon="Y" FontSize="16"
pu:TextBoxHelper.InputLimit="Digit" pu:TextBoxHelper.Watermark="{ll:Str Y轴}"
Margin="0,0,5,0" TextChanged="TextBoxStartUp_TextChanged" pu:IconHelper.Margin="5,0,0,0" />
<Button x:Name="BtnStartUpGet" pu:ButtonHelper.CornerRadius="4" Content="{ll:Str 当前位置}"
Grid.Column="3" Background="{DynamicResource SecondaryLight}"
HorizontalAlignment="Center" VerticalAlignment="Center" Height="30"
BorderBrush="{DynamicResource SecondaryDark}" BorderThickness="2"
Click="BtnStartUpGet_Click" />
<TextBlock Grid.Row="7" Text="{ll:Str 字体}" VerticalAlignment="Center" />
<ComboBox x:Name="FontBox" Grid.Row="7" Grid.Column="2"
SelectionChanged="FontBox_SelectionChanged" IsEnabled="False"
Style="{DynamicResource StandardComboBoxStyle}" FontSize="16" Margin="0,2,0,3" />
<TextBlock Grid.Row="8" Text="{ll:Str 启动位置}" VerticalAlignment="Center" />
<Grid Grid.Row="8" Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<pu:Switch x:Name="StartPlace" BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}" IsChecked="True"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}" Content="{ll:Str 退出位置}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
ToolTip="{ll:Str 游戏退出位置为下次桌宠启动出现的位置}" Unchecked="StartPlace_Checked"
VerticalAlignment="Center" Checked="StartPlace_Checked" />
<TextBox x:Name="TextBoxStartUpX" Grid.Column="1"
Style="{DynamicResource StandardTextBoxStyle}" ToolTip="{ll:Str X轴}"
pu:TextBoxHelper.Icon="X" FontSize="16" Margin="0,0,5,0"
pu:TextBoxHelper.InputLimit="Digit" pu:TextBoxHelper.Watermark="{ll:Str X轴}"
TextChanged="TextBoxStartUp_TextChanged" pu:IconHelper.Margin="5,0,0,0" />
<TextBox x:Name="TextBoxStartUpY" Grid.Column="2"
Style="{DynamicResource StandardTextBoxStyle}" ToolTip="{ll:Str Y轴}"
pu:TextBoxHelper.Icon="Y" FontSize="16" pu:TextBoxHelper.InputLimit="Digit"
pu:TextBoxHelper.Watermark="{ll:Str Y轴}" Margin="0,0,5,0"
TextChanged="TextBoxStartUp_TextChanged" pu:IconHelper.Margin="5,0,0,0" />
<Button x:Name="BtnStartUpGet" pu:ButtonHelper.CornerRadius="4" Content="{ll:Str 当前位置}"
Grid.Column="3" Background="{DynamicResource SecondaryLight}"
HorizontalAlignment="Center" VerticalAlignment="Center" Height="30"
BorderBrush="{DynamicResource SecondaryDark}" BorderThickness="2"
Click="BtnStartUpGet_Click" />
</Grid>
<TextBlock Grid.Row="8" Text="{ll:Str 消息框}" VerticalAlignment="Center" />
<pu:Switch x:Name="SwitchMsgOut" Grid.Column="2" Grid.Row="8"
BorderBrush="{DynamicResource PrimaryDark}" CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent" BoxWidth="35"
BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}" Checked="SwitchMsgOut_Checked"
Unchecked="SwitchMsgOut_Checked" ToolTip="{ll:Str 将消息框置于外部}" Content="{ll:Str 将消息框置于外部}" />
<TextBlock Grid.Row="9" Text="{ll:Str 开机启动}" VerticalAlignment="Center" />
<Grid Grid.Row="9" Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<pu:Switch x:Name="StartUpBox" BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent" BoxWidth="35"
BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}" Content="{ll:Str 开机启动}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
ToolTip="{ll:Str '该游戏随着开机启动该程序\&#13;如需卸载游戏\&#13;请关闭该选项'}" Checked="StartUpBox_Checked"
Unchecked="StartUpBox_Checked" />
<pu:Switch x:Name="StartUpSteamBox" BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}"
IsEnabled="{Binding ElementName=StartUpBox,Path=IsChecked}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent" BoxWidth="35"
BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}" Content="{ll:Str 从Steam启动}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
ToolTip="{ll:Str '从Steam启动该游戏, 统计时长不能停'}" Grid.Column="1"
Checked="StartUpSteamBox_Checked" Unchecked="StartUpSteamBox_Checked" />
</Grid>
<TextBlock Grid.Row="10" Text="{ll:Str 宠物动画}" VerticalAlignment="Center" />
<TextBlock x:Name="PetIntor" Grid.Row="11" Text="{ll:Str 动画描述动画描述动画描述动画描述动画描述}"
VerticalAlignment="Center" Grid.Column="2" TextWrapping="WrapWithOverflow" FontSize="14" />
<ComboBox x:Name="PetBox" Grid.Row="10" Grid.Column="2" ToolTip="{ll:Str '加载的宠物动画,重启后生效'}"
Style="{DynamicResource StandardComboBoxStyle}" Margin="0,3,0,2"
SelectionChanged="PetBox_SelectionChanged" FontSize="16" />
<Button x:Name="ButtonRestartGraph" Content="{ll:Str 重启软件以应用更改}" Visibility="Collapsed"
VerticalAlignment="Center" Background="{DynamicResource DARKPrimary}"
Foreground="{DynamicResource DARKPrimaryText}" Click="ButtonRestart_Click"
Grid.ColumnSpan="3" Grid.Row="12" />
</Grid>
<TextBlock Grid.Row="9" Text="{ll:Str 消息框}" VerticalAlignment="Center" />
<pu:Switch x:Name="SwitchMsgOut" Grid.Column="2" Grid.Row="9"
BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
Checked="SwitchMsgOut_Checked" Unchecked="SwitchMsgOut_Checked"
ToolTip="{ll:Str 将消息框置于外部}" Content="{ll:Str 将消息框置于外部}" />
<TextBlock Grid.Row="10" Text="{ll:Str 开机启动}" VerticalAlignment="Center" />
<Grid Grid.Row="10" Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<pu:Switch x:Name="StartUpBox" BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}" Content="{ll:Str 开机启动}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
ToolTip="{ll:Str '该游戏随着开机启动该程序\&#13;如需卸载游戏\&#13;请关闭该选项'}"
Checked="StartUpBox_Checked" Unchecked="StartUpBox_Checked" />
<pu:Switch x:Name="StartUpSteamBox" BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}"
IsEnabled="{Binding ElementName=StartUpBox,Path=IsChecked}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}" Content="{ll:Str 从Steam启动}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
ToolTip="{ll:Str '从Steam启动该游戏, 统计时长不能停'}" Grid.Column="1"
Checked="StartUpSteamBox_Checked" Unchecked="StartUpSteamBox_Checked" />
</Grid>
<TextBlock Grid.Row="11" Text="{ll:Str 宠物动画}" VerticalAlignment="Center" />
<TextBlock x:Name="PetIntor" Grid.Row="12" Text="{ll:Str 动画描述动画描述动画描述动画描述动画描述}"
VerticalAlignment="Center" Grid.Column="2" TextWrapping="WrapWithOverflow"
FontSize="14" />
<ComboBox x:Name="PetBox" Grid.Row="11" Grid.Column="2" ToolTip="{ll:Str '加载的宠物动画,重启后生效'}"
Style="{DynamicResource StandardComboBoxStyle}" Margin="0,3,0,2"
SelectionChanged="PetBox_SelectionChanged" FontSize="16" />
</Grid>
</ScrollViewer>
<Button x:Name="ButtonRestartGraph" Content="{ll:Str 重启软件以应用更改}" VerticalAlignment="Bottom"
Background="{DynamicResource DARKPrimary}" Visibility="Collapsed"
Foreground="{DynamicResource DARKPrimaryText}" Click="ButtonRestart_Click" />
</Grid>
</TabItem>
<TabItem Header="{ll:Str 系统}" BorderBrush="{DynamicResource PrimaryDarker}">
@ -313,6 +341,230 @@
Margin="4" Grid.Column="2" Background="{DynamicResource SecondaryLight}" Padding="1"
Grid.Row="1" Click="ChatGPT_Reset_Click" />
</Grid>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Background="{x:Null}"
TextWrapping="Wrap" Margin="0,5,0,0">
<Run FontWeight="Bold" FontSize="18" Text="{ll:Str 清理缓存}" /><LineBreak />
<Run Text="{ll:Str '清理缓存的动画,声音文件'}" />
</TextBlock>
<Button pu:ButtonHelper.CornerRadius="4" Content="{ll:Str 清理缓存}" Margin="4" Grid.Column="2"
Background="{DynamicResource SecondaryLight}" Padding="1" Grid.Row="1"
ToolTip="{ll:Str '清理缓存的动画,声音文件'}" Click="cleancache_click" />
</StackPanel>
</ScrollViewer>
</TabItem>
<TabItem Header="{ll:Str 互动}" BorderBrush="{DynamicResource PrimaryDarker}">
<ScrollViewer>
<StackPanel>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Background="{x:Null}"
TextWrapping="Wrap">
<Run FontWeight="Bold" FontSize="18" Text="{ll:Str 互动设置}" /><LineBreak />
<Run Text="{ll:Str 游戏互动相关设置}" />
</TextBlock>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="15" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
</Grid.RowDefinitions>
<pu:Switch x:Name="CalFunctionBox" BorderBrush="{DynamicResource PrimaryDark}"
Grid.Column="2" CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}" Content="{ll:Str '启用后桌宠会有状态变化,需要按时投喂等'}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
ToolTip="{ll:Str '启用数据计算,桌宠会有状态变化,需要按时投喂等.\&#13;如果嫌麻烦可以关掉'}"
Checked="CalFunctionBox_Checked" Unchecked="CalFunctionBox_Checked" />
<Grid Grid.Row="1" Grid.Column="2"
ToolTip="{ll:Str '当玩家在指定时间未对桌宠进行交互的时候,智能禁用移动功能\&#13;将在下次交互时解除'}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{ll:Str '当关闭数据计算时\&#13;桌宠显示的状态'}" FontSize="14" />
<ComboBox x:Name="combCalFunState" Style="{DynamicResource StandardComboBoxStyle}"
ToolTip="{ll:Str '当关闭数据计算时\&#13;桌宠显示的状态'}"
SelectionChanged="combCalFunState_SelectionChanged" SelectedIndex="5"
Grid.Column="1">
<ComboBoxItem Content="Happy" />
<ComboBoxItem Content="Nomal" />
<ComboBoxItem Content="PoorCondition" />
<ComboBoxItem Content="Ill" />
</ComboBox>
</Grid>
<Grid Grid.Column="2" Grid.Row="5" Grid.RowSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="35" />
<RowDefinition Height="35" />
</Grid.RowDefinitions>
<pu:Switch x:Name="MoveEventBox" BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}" Content="{ll:Str 启用桌宠移动}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}" IsChecked="True"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}" Margin="10,0,0,0"
ToolTip="{ll:Str '启用移动互动,桌宠会在屏幕上乱动,移动互动概率为普通互动的一半.\&#13;如果嫌麻烦可以关掉'}"
Checked="MoveEventBox_Checked" Unchecked="MoveEventBox_Checked" />
<pu:Switch x:Name="SmartMoveEventBox" BorderBrush="{DynamicResource PrimaryDark}"
IsEnabled="{Binding ElementName=MoveEventBox,Path=IsChecked}"
CheckedBackground="{DynamicResource Primary}" Content="{ll:Str '智能移动'}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}" Grid.Column="1"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}" Margin="10,0,0,0"
ToolTip="{ll:Str '当玩家在指定时间未对桌宠进行交互的时候,智能禁用移动功能\&#13;将在下次交互时解除'}"
Checked="SmartMoveEventBox_Checked" Unchecked="SmartMoveEventBox_Checked" />
<TextBlock Text="{ll:Str '智能移动判断时间间隔'}" Grid.Row="1"
ToolTip="{ll:Str '当玩家在指定时间未对桌宠进行交互的时候,智能禁用移动功能\&#13;将在下次交互时解除'}" />
<ComboBox x:Name="CBSmartMove" Style="{DynamicResource StandardComboBoxStyle}"
IsEnabled="{Binding ElementName=SmartMoveEventBox,Path=IsChecked}"
SelectionChanged="CBSmartMove_SelectionChanged" SelectedIndex="5"
Grid.Column="1" Grid.Row="1"
ToolTip="{ll:Str '当玩家在指定时间未对桌宠进行交互的时候,智能禁用移动功能\&#13;将在下次交互时解除'}">
<ComboBoxItem Content="{ll:Str '30 秒'}">
<ComboBoxItem.Tag>
<system:Int32>30</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '1 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>60</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '2 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>120</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '5 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>300</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '10 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>600</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '20 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>1200</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '30 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>1800</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '40 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>2400</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '50 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>3000</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '60 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>3600</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
</ComboBox>
</Grid>
<TextBlock Grid.Row="0" Text="{ll:Str 数据计算}" VerticalAlignment="Center" />
<TextBlock Grid.Row="1" Text="{ll:Str 显示状态}" VerticalAlignment="Center" />
<TextBlock Grid.Row="5" Text="{ll:Str 桌宠移动}" VerticalAlignment="Center" />
<TextBlock Grid.Row="2" Text="{ll:Str 计算间隔}" VerticalAlignment="Center" />
<Grid Grid.Column="2" Grid.Row="2"
ToolTip="{ll:Str '数据计算和互动计算时间间隔,间隔越短需要互动的频率可能会增加.\&#13;间隔越大越不容易打扰到当前工作'}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Slider x:Name="CalSlider" TickFrequency="0.1" IsSnapToTickEnabled="True"
Style="{DynamicResource StandardSliderStyle}" VerticalAlignment="Center"
Maximum="60" SmallChange=".5" Minimum="5" LargeChange="1" Value="15"
ValueChanged="CalSlider_ValueChanged" />
<TextBlock Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center"
Text="{ll:Str '\{0:f1} 秒', ValueSource={Binding ElementName=CalSlider,Path=Value}}"
Foreground="{DynamicResource DARKPrimaryDarker}" FontWeight="Bold"
Background="{x:Null}" MinWidth="60" />
</Grid>
<TextBlock Grid.Row="3" Text="{ll:Str '互动周期'}" VerticalAlignment="Center" />
<TextBlock Grid.Row="4" VerticalAlignment="Top" Grid.Column="2" FontSize="14">
<Run Text="{ll:Str 每分钟计算}" /> <Run x:Name="rTimeMinute">4</Run> <Run Text="{ll:Str 次数值变化}" /><LineBreak />
<Run Text="{ll:Str 大约}" /> <Run x:Name="RInter">4</Run> <Run
Text="{ll:Str '分钟左右主动进行一次互动(走路发呆爬墙等)'}" />
</TextBlock>
<Grid Grid.Column="2" Grid.Row="3" ToolTip="{ll:Str 互动周期决定在交互结束后大约经历多少计算间隔后再次进行自主行动}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Slider TickFrequency="1" IsSnapToTickEnabled="True" x:Name="InteractionSlider"
Style="{DynamicResource StandardSliderStyle}" VerticalAlignment="Center"
Maximum="1000" SmallChange="1" Minimum="30" LargeChange="5" Value="200"
ValueChanged="InteractionSlider_ValueChanged" />
<TextBlock Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center"
Text="{Binding ElementName=InteractionSlider,Path=Value}" FontSize="18"
Foreground="{DynamicResource DARKPrimaryDarker}" FontWeight="Bold"
Background="{x:Null}" Width="60" />
</Grid>
</Grid>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Background="{x:Null}"
TextWrapping="Wrap" Margin="0,10,0,0">
<Run FontWeight="Bold" FontSize="18" Text="{ll:Str 操作设置}" /><LineBreak />
<Run Text="{ll:Str 游戏操作相关设置}" />
</TextBlock>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="15" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="35" />
<RowDefinition Height="35" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{ll:Str 长按间隔}" VerticalAlignment="Center" />
<TextBlock Grid.Row="1" Text="{ll:Str 桌宠名字}" VerticalAlignment="Center" />
<TextBox x:Name="TextBoxPetName" Grid.Row="1" Grid.Column="2"
Style="{DynamicResource StandardTextBoxStyle}"
TextChanged="TextBoxPetName_TextChanged" FontSize="16" />
<Grid Grid.Column="2" Grid.Row="0"
ToolTip="{ll:Str '数据计算和互动计算时间间隔,间隔越短需要互动的频率可能会增加\&#13;间隔越大越不容易打扰到当前工作'}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Slider x:Name="PressLengthSlider" TickFrequency="0.01" IsSnapToTickEnabled="True"
Style="{DynamicResource StandardSliderStyle}" VerticalAlignment="Center"
Maximum="5" SmallChange=".05" Minimum="0.05" LargeChange="0.1" Value="0.5"
ValueChanged="PressLengthSlider_ValueChanged" />
<TextBlock Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center"
Text="{ll:Str '\{0:F2} 秒', ValueSource={Binding ElementName=PressLengthSlider,Path=Value}}"
Foreground="{DynamicResource DARKPrimaryDarker}" FontWeight="Bold"
Background="{x:Null}" />
<!--{Binding ElementName=PressLengthSlider,Path=Value,StringFormat={}{0:f2} 秒}-->
</Grid>
</Grid>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Background="{x:Null}"
TextWrapping="Wrap" Margin="0,5,0,0">
<Run FontWeight="Bold" FontSize="18" Text="{ll:Str 音乐识别设置}" /><LineBreak />
@ -356,219 +608,6 @@
</StackPanel>
</ScrollViewer>
</TabItem>
<TabItem Header="{ll:Str 互动}" BorderBrush="{DynamicResource PrimaryDarker}">
<StackPanel>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Background="{x:Null}"
TextWrapping="Wrap">
<Run FontWeight="Bold" FontSize="18" Text="{ll:Str 互动设置}" /><LineBreak />
<Run Text="{ll:Str 游戏互动相关设置}" />
</TextBlock>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="15" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
<RowDefinition Height="35" />
</Grid.RowDefinitions>
<pu:Switch x:Name="CalFunctionBox" BorderBrush="{DynamicResource PrimaryDark}" Grid.Column="2"
CheckedBackground="{DynamicResource Primary}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent" BoxWidth="35"
BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}" Content="{ll:Str '启用后桌宠会有状态变化,需要按时投喂等'}"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}"
ToolTip="{ll:Str '启用数据计算,桌宠会有状态变化,需要按时投喂等.\&#13;如果嫌麻烦可以关掉'}"
Checked="CalFunctionBox_Checked" Unchecked="CalFunctionBox_Checked" />
<Grid Grid.Row="1" Grid.Column="2"
ToolTip="{ll:Str '当玩家在指定时间未对桌宠进行交互的时候,智能禁用移动功能\&#13;将在下次交互时解除'}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{ll:Str '当关闭数据计算时\&#13;桌宠显示的状态'}" FontSize="14" />
<ComboBox x:Name="combCalFunState" Style="{DynamicResource StandardComboBoxStyle}"
ToolTip="{ll:Str '当关闭数据计算时\&#13;桌宠显示的状态'}"
SelectionChanged="combCalFunState_SelectionChanged" SelectedIndex="5"
Grid.Column="1">
<ComboBoxItem Content="Happy" />
<ComboBoxItem Content="Nomal" />
<ComboBoxItem Content="PoorCondition" />
<ComboBoxItem Content="Ill" />
</ComboBox>
</Grid>
<Grid Grid.Column="2" Grid.Row="5" Grid.RowSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="35" />
<RowDefinition Height="35" />
</Grid.RowDefinitions>
<pu:Switch x:Name="MoveEventBox" BorderBrush="{DynamicResource PrimaryDark}"
CheckedBackground="{DynamicResource Primary}" Content="{ll:Str 启用桌宠移动}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}" IsChecked="True"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}" Margin="10,0,0,0"
ToolTip="{ll:Str '启用移动互动,桌宠会在屏幕上乱动,移动互动概率为普通互动的一半.\&#13;如果嫌麻烦可以关掉'}"
Checked="MoveEventBox_Checked" Unchecked="MoveEventBox_Checked" />
<pu:Switch x:Name="SmartMoveEventBox" BorderBrush="{DynamicResource PrimaryDark}"
IsEnabled="{Binding ElementName=MoveEventBox,Path=IsChecked}"
CheckedBackground="{DynamicResource Primary}" Content="{ll:Str '智能移动'}"
CheckedBorderBrush="{DynamicResource Primary}" Background="Transparent"
BoxWidth="35" BoxHeight="18" ToggleSize="14" ToggleShadowColor="{x:Null}"
ToggleBrush="{DynamicResource PrimaryDark}" Grid.Column="1"
CheckedToggleBrush="{DynamicResource DARKPrimaryText}" Margin="10,0,0,0"
ToolTip="{ll:Str '当玩家在指定时间未对桌宠进行交互的时候,智能禁用移动功能\&#13;将在下次交互时解除'}"
Checked="SmartMoveEventBox_Checked" Unchecked="SmartMoveEventBox_Checked" />
<TextBlock Text="{ll:Str '智能移动判断时间间隔'}" Grid.Row="1"
ToolTip="{ll:Str '当玩家在指定时间未对桌宠进行交互的时候,智能禁用移动功能\&#13;将在下次交互时解除'}" />
<ComboBox x:Name="CBSmartMove" Style="{DynamicResource StandardComboBoxStyle}"
IsEnabled="{Binding ElementName=SmartMoveEventBox,Path=IsChecked}"
SelectionChanged="CBSmartMove_SelectionChanged" SelectedIndex="5" Grid.Column="1"
Grid.Row="1" ToolTip="{ll:Str '当玩家在指定时间未对桌宠进行交互的时候,智能禁用移动功能\&#13;将在下次交互时解除'}">
<ComboBoxItem Content="{ll:Str '30 秒'}">
<ComboBoxItem.Tag>
<system:Int32>30</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '1 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>60</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '2 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>120</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '5 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>300</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '10 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>600</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '20 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>1200</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '30 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>1800</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '40 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>2400</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '50 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>3000</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
<ComboBoxItem Content="{ll:Str '60 分钟'}">
<ComboBoxItem.Tag>
<system:Int32>3600</system:Int32>
</ComboBoxItem.Tag>
</ComboBoxItem>
</ComboBox>
</Grid>
<TextBlock Grid.Row="0" Text="{ll:Str 数据计算}" VerticalAlignment="Center" />
<TextBlock Grid.Row="1" Text="{ll:Str 显示状态}" VerticalAlignment="Center" />
<TextBlock Grid.Row="5" Text="{ll:Str 桌宠移动}" VerticalAlignment="Center" />
<TextBlock Grid.Row="2" Text="{ll:Str 计算间隔}" VerticalAlignment="Center" />
<Grid Grid.Column="2" Grid.Row="2"
ToolTip="{ll:Str '数据计算和互动计算时间间隔,间隔越短需要互动的频率可能会增加.\&#13;间隔越大越不容易打扰到当前工作'}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Slider x:Name="CalSlider" TickFrequency="0.1" IsSnapToTickEnabled="True"
Style="{DynamicResource StandardSliderStyle}" VerticalAlignment="Center"
Maximum="60" SmallChange=".5" Minimum="5" LargeChange="1" Value="15"
ValueChanged="CalSlider_ValueChanged" />
<TextBlock Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center"
Text="{ll:Str '\{0:f1} 秒', ValueSource={Binding ElementName=CalSlider,Path=Value}}"
Foreground="{DynamicResource DARKPrimaryDarker}" FontWeight="Bold"
Background="{x:Null}" MinWidth="60" />
</Grid>
<TextBlock Grid.Row="3" Text="{ll:Str '互动周期'}" VerticalAlignment="Center" />
<TextBlock Grid.Row="4" VerticalAlignment="Top" Grid.Column="2" FontSize="14">
<Run Text="{ll:Str 每分钟计算}" /> <Run x:Name="rTimeMinute">4</Run> <Run Text="{ll:Str 次数值变化}" /><LineBreak />
<Run Text="{ll:Str 大约}" /> <Run x:Name="RInter">4</Run> <Run
Text="{ll:Str '分钟左右主动进行一次互动(走路发呆爬墙等)'}" />
</TextBlock>
<Grid Grid.Column="2" Grid.Row="3" ToolTip="{ll:Str 互动周期决定在交互结束后大约经历多少计算间隔后再次进行自主行动}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Slider TickFrequency="1" IsSnapToTickEnabled="True" x:Name="InteractionSlider"
Style="{DynamicResource StandardSliderStyle}" VerticalAlignment="Center"
Maximum="1000" SmallChange="1" Minimum="30" LargeChange="5" Value="200"
ValueChanged="InteractionSlider_ValueChanged" />
<TextBlock Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center"
Text="{Binding ElementName=InteractionSlider,Path=Value}" FontSize="18"
Foreground="{DynamicResource DARKPrimaryDarker}" FontWeight="Bold"
Background="{x:Null}" Width="60" />
</Grid>
</Grid>
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Background="{x:Null}"
TextWrapping="Wrap" Margin="0,10,0,0">
<Run FontWeight="Bold" FontSize="18" Text="{ll:Str 操作设置}" /><LineBreak />
<Run Text="{ll:Str 游戏操作相关设置}" />
</TextBlock>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="15" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="35" />
<RowDefinition Height="35" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{ll:Str 长按间隔}" VerticalAlignment="Center" />
<TextBlock Grid.Row="1" Text="{ll:Str 桌宠名字}" VerticalAlignment="Center" />
<TextBox x:Name="TextBoxPetName" Grid.Row="1" Grid.Column="2"
Style="{DynamicResource StandardTextBoxStyle}" TextChanged="TextBoxPetName_TextChanged"
FontSize="16" />
<Grid Grid.Column="2" Grid.Row="0"
ToolTip="{ll:Str '数据计算和互动计算时间间隔,间隔越短需要互动的频率可能会增加\&#13;间隔越大越不容易打扰到当前工作'}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Slider x:Name="PressLengthSlider" TickFrequency="0.01" IsSnapToTickEnabled="True"
Style="{DynamicResource StandardSliderStyle}" VerticalAlignment="Center" Maximum="5"
SmallChange=".05" Minimum="0.05" LargeChange="0.1" Value="0.5"
ValueChanged="PressLengthSlider_ValueChanged" />
<TextBlock Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center"
Text="{ll:Str '\{0:F2} 秒', ValueSource={Binding ElementName=PressLengthSlider,Path=Value}}"
Foreground="{DynamicResource DARKPrimaryDarker}" FontWeight="Bold"
Background="{x:Null}" />
<!--{Binding ElementName=PressLengthSlider,Path=Value,StringFormat={}{0:f2} 秒}-->
</Grid>
</Grid>
</StackPanel>
</TabItem>
<TabItem Header="{ll:Str 自定}" BorderBrush="{DynamicResource PrimaryDarker}">
<StackPanel>
<TextBlock Background="{x:Null}" TextWrapping="Wrap">

View File

@ -135,6 +135,10 @@ namespace VPet_Simulator.Windows
foreach (Sub sub in mw.Set["diy"])
StackDIY.Children.Add(new DIYViewer(sub));
SliderResolution.Maximum = Math.Min(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width,
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);
SliderResolution.Value = mw.Set.Resolution;
#if X64
GameVerison.Content = "游戏版本".Translate() + $"v{mw.Verison} x64";
#else
@ -1103,5 +1107,17 @@ namespace VPet_Simulator.Windows
mw.Set.MusicCatch = VoiceCatchSilder.Value;
mw.Set.MusicMax = VoiceMaxSilder.Value;
}
private void cleancache_click(object sender, RoutedEventArgs e)
{
mw.Set.LastCacheDate = DateTime.MinValue;
MessageBoxX.Show("清理指令已下达,下次启动桌宠时生效".Translate());
}
private void SliderResolution_MouseUp(object sender, MouseButtonEventArgs e)
{
mw.Set.Resolution = (int)SliderResolution.Value;
ButtonRestartGraph.Visibility = Visibility.Visible;
}
}
}

View File

@ -9,5 +9,4 @@
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" />
<package id="Panuon.WPF" version="1.0.2" targetFramework="net462" />
<package id="Panuon.WPF.UI" version="1.1.15.4" targetFramework="net462" />
<package id="Update" version="2.4.7" targetFramework="net462" />
</packages>