更新 Setting 结构

This commit is contained in:
ZouJin 2024-03-10 02:05:27 +08:00
parent 6a4d31b0d0
commit 45c4aae1c9
15 changed files with 369 additions and 123 deletions

View File

@ -27,7 +27,7 @@ namespace VPet_Simulator.Windows.Interface
/// <summary> /// <summary>
/// 游戏设置 /// 游戏设置
/// </summary> /// </summary>
Setting Set { get; } ISetting Set { get; }
/// <summary> /// <summary>
/// 宠物加载器列表 /// 宠物加载器列表
/// </summary> /// </summary>

View File

@ -0,0 +1,206 @@
using LinePutScript;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace VPet_Simulator.Windows.Interface
{
/// <summary>
/// 设置方法接口
/// </summary>
public interface ISetting
{
/// <summary>
/// 获取当前缩放倍率
/// </summary>
double ZoomLevel { get; }
/// <summary>
/// 设置缩放倍率
/// </summary>
/// <param name="level">缩放等级</param>
void SetZoomLevel(double level);
/// <summary>
/// 获取当前播放声音的大小
/// </summary>
double VoiceVolume { get; }
/// <summary>
/// 设置播放声音的大小
/// </summary>
/// <param name="volume">声音大小</param>
void SetVoiceVolume(double volume);
/// <summary>
/// 获取当前自动保存的频率(分钟)
/// </summary>
int AutoSaveInterval { get; }
/// <summary>
/// 设置自动保存的频率(分钟)
/// </summary>
/// <param name="interval">保存间隔</param>
void SetAutoSaveInterval(int interval);
/// <summary>
/// 获取或设置备份保存的最大数量
/// </summary>
int BackupSaveMaxNum { get; set; }
/// <summary>
/// 获取当前是否置于顶层
/// </summary>
bool TopMost { get; }
/// <summary>
/// 设置是否置于顶层
/// </summary>
/// <param name="topMost">是否置顶</param>
void SetTopMost(bool topMost);
/// <summary>
/// 获取或设置上次清理缓存的日期
/// </summary>
DateTime LastCacheDate { get; set; }
/// <summary>
/// 获取当前语言
/// </summary>
string Language { get; }
/// <summary>
/// 设置语言
/// </summary>
/// <param name="language">语言代码</param>
void SetLanguage(string language);
/// <summary>
/// 获取或设置按多久视为长按(毫秒)
/// </summary>
int PressLength { get; set; }
/// <summary>
/// 获取或设置互动周期
/// </summary>
int InteractionCycle { get; set; }
/// <summary>
/// 获取当前计算间隔(秒)
/// </summary>
double LogicInterval { get; }
/// <summary>
/// 设置计算间隔(秒)
/// </summary>
/// <param name="interval">计算间隔</param>
void SetLogicInterval(double interval);
/// <summary>
/// 获取当前是否允许移动
/// </summary>
bool AllowMove { get; }
/// <summary>
/// 设置是否允许移动
/// </summary>
/// <param name="allowMove">是否允许移动</param>
void SetAllowMove(bool allowMove);
/// <summary>
/// 获取当前是否启用智能移动
/// </summary>
bool SmartMove { get; }
/// <summary>
/// 设置是否启用智能移动
/// </summary>
/// <param name="smartMove">是否启用智能移动</param>
void SetSmartMove(bool smartMove);
/// <summary>
/// 获取当前是否启用计算等数据功能
/// </summary>
bool EnableFunction { get; }
/// <summary>
/// 设置是否启用计算等数据功能
/// </summary>
/// <param name="enableFunction">是否启用功能</param>
void SetEnableFunction(bool enableFunction);
/// <summary>
/// 获取当前智能移动周期(秒)
/// </summary>
int SmartMoveInterval { get; }
/// <summary>
/// 设置智能移动周期(秒)
/// </summary>
/// <param name="interval">智能移动周期</param>
void SetSmartMoveInterval(int interval);
/// <summary>
/// 获取或设置消息框是否外置
/// </summary>
bool MessageBarOutside { get; set; }
/// <summary>
/// 获取当前是否记录游戏退出位置
/// </summary>
bool StartRecordLast { get; set; }
/// <summary>
/// 获取上次退出位置
/// </summary>
Point StartRecordLastPoint { get; }
/// <summary>
/// 获取或设置桌宠启动的位置
/// </summary>
Point StartRecordPoint { get; set; }
/// <summary>
/// 获取或设置当实时播放音量达到该值时运行音乐动作
/// </summary>
double MusicCatch { get; set; }
/// <summary>
/// 获取或设置当实时播放音量达到该值时运行特殊音乐动作
/// </summary>
double MusicMax { get; set; }
/// <summary>
/// 获取或设置桌宠图形渲染的分辨率,越高图形越清晰,重启后生效
/// </summary>
int Resolution { get; set; }
/// <summary>
/// 获取或设置是否允许桌宠自动购买食品
/// </summary>
bool AutoBuy { get; set; }
/// <summary>
/// 获取或设置是否允许桌宠自动购买礼物
/// </summary>
bool AutoGift { get; set; }
/// <summary>
/// 获取或设置在任务切换器(Alt+Tab)中是否隐藏窗口,重启后生效
/// </summary>
bool HideFromTaskControl { get; set; }
/// <summary>
/// 更好买数据
/// </summary>
ILine BetterBuyData { get; }
/// <summary>
/// 游戏数据
/// </summary>
ILine GameData { get; }
}
}

View File

@ -171,7 +171,7 @@ namespace VPet_Simulator.Windows.Interface
public void LoadImageSource(IMainWindow imw) public void LoadImageSource(IMainWindow imw)
{ {
ImageSource = imw.ImageSources.FindImage(Image ?? Name, "food"); ImageSource = imw.ImageSources.FindImage(Image ?? Name, "food");
Star = imw.Set["betterbuy"]["star"].GetInfos().Contains(Name); Star = imw.Set.BetterBuyData["star"].GetInfos().Contains(Name);
LoadEatTimeSource(imw); LoadEatTimeSource(imw);
} }
public void LoadEatTimeSource(IMainWindow imw) public void LoadEatTimeSource(IMainWindow imw)

View File

@ -1,21 +1,29 @@
using LinePutScript; using LinePutScript;
using LinePutScript.Dictionary; using LinePutScript.Dictionary;
using LinePutScript.Localization.WPF;
using NAudio.Gui;
using Steamworks;
using System; using System;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.IO;
using System.Windows; using System.Windows;
using System.Windows.Controls;
using VPet_Simulator.Core; using VPet_Simulator.Core;
using VPet_Simulator.Windows.Interface;
using static VPet_Simulator.Windows.Win32;
namespace VPet_Simulator.Windows.Interface namespace VPet_Simulator.Windows
{ {
/// <summary> /// <summary>
/// 游戏设置 /// 游戏设置
/// </summary> /// </summary>
public class Setting : LPS_D public class Setting : LPS_D, ISetting
{ {
MainWindow mw;
/// <summary> /// <summary>
/// 游戏设置 /// 游戏设置
/// </summary> /// </summary>
public Setting(string lps) : base(lps) public Setting(MainWindow mw, string lps) : base(lps)
{ {
var line = FindLine("zoomlevel"); var line = FindLine("zoomlevel");
if (line == null) if (line == null)
@ -33,41 +41,12 @@ namespace VPet_Simulator.Windows.Interface
allowmove = !this["gameconfig"].GetBool("allowmove"); allowmove = !this["gameconfig"].GetBool("allowmove");
smartmove = this["gameconfig"].GetBool("smartmove"); smartmove = this["gameconfig"].GetBool("smartmove");
enablefunction = !this["gameconfig"].GetBool("nofunction"); enablefunction = !this["gameconfig"].GetBool("nofunction");
//Statistics_OLD = new Statistics(this["statistics"].ToList());
autobuy = this["gameconfig"].GetBool("autobuy"); autobuy = this["gameconfig"].GetBool("autobuy");
autogift = this["gameconfig"].GetBool("autogift"); autogift = this["gameconfig"].GetBool("autogift");
this.mw = mw;
} }
//public override string ToString()
//{//留作备份,未来版本删了
// this["statistics"] = new Line("statistics", "", "", Statistics_OLD.ToSubs().ToArray());
// return base.ToString();
//}
///// <summary>
///// 统计数据信息(旧)
///// </summary>
//public Statistics Statistics_OLD;
//public Size WindowsSize
//{
// get
// {
// var line = FindLine("windowssize");
// if (line == null)
// return new Size(1366, 799);
// var strs = line.GetInfos();
// if (int.TryParse(strs[0], out int x))
// x = 1366;
// if (int.TryParse(strs[0], out int y))
// y = 799;
// return new Size(x, y);
// }
// set
// {
// FindorAddLine("windowssize").info = $"{value.Width},{value.Height}";
// }
//}
private double zoomlevel = 0; private double zoomlevel = 0;
/// <summary> /// <summary>
/// 缩放倍率 /// 缩放倍率
@ -513,5 +492,85 @@ namespace VPet_Simulator.Windows.Interface
line.SetInt("h", value.Height); line.SetInt("h", value.Height);
} }
} }
public ILine BetterBuyData => FindorAddLine("betterbuy");
public ILine GameData => FindorAddLine("gamedata");
public void SetZoomLevel(double level) => mw.SetZoomLevel(level);
public void SetVoiceVolume(double volume) { VoiceVolume = volume; mw.Main.PlayVoiceVolume = volume; }
public void SetAutoSaveInterval(int interval)
{
AutoSaveInterval = interval;
if (AutoSaveInterval > 0)
{
mw.AutoSaveTimer.Interval = AutoSaveInterval * 60000;
mw.AutoSaveTimer.Start();
}
else
{
mw.AutoSaveTimer.Stop();
}
}
public void SetTopMost(bool topMost)
{
TopMost = true;
mw.Topmost = topMost;
}
public void SetLanguage(string language)
{
var petloader = mw.Pets.Find(x => x.Name == PetGraph);
petloader ??= mw.Pets[0];
bool ischangename = mw.Core.Save.Name == petloader.PetName.Translate();
LocalizeCore.LoadCulture(language);
Language = LocalizeCore.CurrentCulture;
if (ischangename)
{
mw.Core.Save.Name = petloader.PetName.Translate();
if (mw.IsSteamUser)
SteamFriends.SetRichPresence("username", mw.Core.Save.Name);
}
}
public void SetLogicInterval(double interval)
{
LogicInterval = interval;
mw.Main.SetLogicInterval((int)(interval * 1000));
}
public void SetAllowMove(bool allowMove)
{
AllowMove = allowMove;
mw.Main.SetMoveMode(AllowMove, SmartMove, SmartMoveInterval * 1000);
}
public void SetSmartMove(bool smartMove)
{
SmartMove = smartMove;
mw.Main.SetMoveMode(AllowMove, SmartMove, SmartMoveInterval * 1000);
}
public void SetEnableFunction(bool enableFunction)
{
EnableFunction = enableFunction;
if (!enableFunction)
{
if (mw.Main.State != Main.WorkingState.Nomal)
{
mw.Main.WorkTimer.Visibility = Visibility.Collapsed;
mw.Main.State = Main.WorkingState.Nomal;
}
}
}
public void SetSmartMoveInterval(int interval)
{
SmartMoveInterval = interval;
mw.Main.SetMoveMode(AllowMove, SmartMove, SmartMoveInterval * 1000);
}
} }
} }

View File

@ -63,6 +63,8 @@ namespace VPet_Simulator.Windows
} }
} }
public Setting Set { get; set; } public Setting Set { get; set; }
ISetting IMainWindow.Set => Set;
public List<PetLoader> Pets { get; set; } = new List<PetLoader>(); public List<PetLoader> Pets { get; set; } = new List<PetLoader>();
public List<CoreMOD> CoreMODs = new List<CoreMOD>(); public List<CoreMOD> CoreMODs = new List<CoreMOD>();
public GameCore Core { get; set; } = new GameCore(); public GameCore Core { get; set; } = new GameCore();
@ -1121,6 +1123,7 @@ namespace VPet_Simulator.Windows
return TalkAPI[TalkAPIIndex]; return TalkAPI[TalkAPIIndex];
} }
} }
/// <summary> /// <summary>
/// 移除所有聊天对话框 /// 移除所有聊天对话框
/// </summary> /// </summary>
@ -1176,10 +1179,10 @@ namespace VPet_Simulator.Windows
//加载游戏设置 //加载游戏设置
if (new FileInfo(ExtensionValue.BaseDirectory + @$"\Setting{PrefixSave}.lps").Exists) if (new FileInfo(ExtensionValue.BaseDirectory + @$"\Setting{PrefixSave}.lps").Exists)
{ {
Set = new Setting(File.ReadAllText(ExtensionValue.BaseDirectory + @$"\Setting{PrefixSave}.lps")); Set = new Setting(this,File.ReadAllText(ExtensionValue.BaseDirectory + @$"\Setting{PrefixSave}.lps"));
} }
else else
Set = new Setting("Setting#VPET:|\n"); Set = new Setting(this, "Setting#VPET:|\n");
var visualTree = new FrameworkElementFactory(typeof(Border)); var visualTree = new FrameworkElementFactory(typeof(Border));
visualTree.SetValue(Border.BackgroundProperty, new TemplateBindingExtension(BackgroundProperty)); visualTree.SetValue(Border.BackgroundProperty, new TemplateBindingExtension(BackgroundProperty));
@ -1506,6 +1509,11 @@ namespace VPet_Simulator.Windows
Main = new Main(Core); Main = new Main(Core);
Main.NoFunctionMOD = Set.CalFunState; Main.NoFunctionMOD = Set.CalFunState;
//清空资源
Main.Resources = Application.Current.Resources;
Main.MsgBar.Resources = Application.Current.Resources;
Main.ToolBar.Resources = Application.Current.Resources;
//加载主题: //加载主题:
LoadTheme(Set.Theme); LoadTheme(Set.Theme);
//加载字体 //加载字体

View File

@ -509,16 +509,7 @@ namespace VPet_Simulator.Windows
{ {
if (!AllowChange) if (!AllowChange)
return; return;
mw.Set.AutoSaveInterval = (int)((ComboBoxItem)CBAutoSave.SelectedItem).Tag; mw.Set.SetAutoSaveInterval((int)((ComboBoxItem)CBAutoSave.SelectedItem).Tag);
if (mw.Set.AutoSaveInterval > 0)
{
mw.AutoSaveTimer.Interval = mw.Set.AutoSaveInterval * 60000;
mw.AutoSaveTimer.Start();
}
else
{
mw.AutoSaveTimer.Stop();
}
} }
@ -808,8 +799,6 @@ namespace VPet_Simulator.Windows
if (!AllowChange) if (!AllowChange)
return; return;
mw.SetZoomLevel(ZoomSlider.Value / 2); mw.SetZoomLevel(ZoomSlider.Value / 2);
//this.Width = 400 * Math.Sqrt(ZoomSlider.Value);
//this.Height = 450 * Math.Sqrt(ZoomSlider.Value);
} }
private void PressLengthSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) private void PressLengthSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
@ -884,8 +873,7 @@ namespace VPet_Simulator.Windows
{ {
if (!AllowChange) if (!AllowChange)
return; return;
mw.Set.LogicInterval = CalSlider.Value; mw.Set.SetLogicInterval(CalSlider.Value);
mw.Main.SetLogicInterval((int)(CalSlider.Value * 1000));
CalTimeInteraction(); CalTimeInteraction();
} }
@ -893,32 +881,24 @@ namespace VPet_Simulator.Windows
{ {
if (!AllowChange) if (!AllowChange)
return; return;
mw.Set.AllowMove = MoveEventBox.IsChecked == true; mw.Set.SetAllowMove(MoveEventBox.IsChecked == true);
SetSmartMove();
} }
private void SmartMoveEventBox_Checked(object sender, RoutedEventArgs e) private void SmartMoveEventBox_Checked(object sender, RoutedEventArgs e)
{ {
if (!AllowChange) if (!AllowChange)
return; return;
mw.Set.SmartMove = SmartMoveEventBox.IsChecked == true; mw.Set.SetSmartMove(SmartMoveEventBox.IsChecked == true);
SetSmartMove();
} }
private void CBSmartMove_SelectionChanged(object sender, SelectionChangedEventArgs e) private void CBSmartMove_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ {
if (!AllowChange) if (!AllowChange)
return; return;
mw.Set.SmartMoveInterval = (int)((ComboBoxItem)CBSmartMove.SelectedItem).Tag; mw.Set.SetSmartMoveInterval((int)((ComboBoxItem)CBSmartMove.SelectedItem).Tag);
SetSmartMove();
}
public void SetSmartMove()
{
if (!AllowChange)
return;
mw.Main.SetMoveMode(mw.Set.AllowMove, mw.Set.SmartMove, mw.Set.SmartMoveInterval * 1000);
} }
public void GenStartUP() public void GenStartUP()
{ {
mw.Set["v"][(gbol)"newverstartup"] = true; mw.Set["v"][(gbol)"newverstartup"] = true;
@ -1383,18 +1363,8 @@ namespace VPet_Simulator.Windows
{ {
if (!AllowChange) if (!AllowChange)
return; return;
var petloader = mw.Pets.Find(x => x.Name == mw.Set.PetGraph); mw.Set.SetLanguage((string)LanguageBox.SelectedItem);
petloader ??= mw.Pets[0];
bool ischangename = mw.Core.Save.Name == petloader.PetName.Translate();
LocalizeCore.LoadCulture((string)LanguageBox.SelectedItem);
mw.Set.Language = LocalizeCore.CurrentCulture;
if (ischangename)
{
mw.Core.Save.Name = petloader.PetName.Translate();
TextBoxPetName.Text = mw.Core.Save.Name; TextBoxPetName.Text = mw.Core.Save.Name;
if (mw.IsSteamUser)
SteamFriends.SetRichPresence("username", mw.Core.Save.Name);
}
} }
private void MainTab_SelectionChanged(object sender, SelectionChangedEventArgs e) private void MainTab_SelectionChanged(object sender, SelectionChangedEventArgs e)

View File

@ -6,6 +6,7 @@ using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using VPet_Simulator.Windows;
using VPet_Simulator.Windows.Interface; using VPet_Simulator.Windows.Interface;
namespace VPet.Solution.Models.SettingEditor; namespace VPet.Solution.Models.SettingEditor;
@ -31,7 +32,7 @@ public class DiagnosticSettingModel : ObservableClass<DiagnosticSettingModel>
/// <summary> /// <summary>
/// 是否启用数据收集 /// 是否启用数据收集
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.Diagnosis))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.Diagnosis))]
public bool Diagnosis public bool Diagnosis
{ {
get => _diagnosis; get => _diagnosis;
@ -46,7 +47,7 @@ public class DiagnosticSettingModel : ObservableClass<DiagnosticSettingModel>
/// 数据收集频率 /// 数据收集频率
/// </summary> /// </summary>
[DefaultValue(500)] [DefaultValue(500)]
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.DiagnosisInterval))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.DiagnosisInterval))]
public int DiagnosisInterval public int DiagnosisInterval
{ {
get => _diagnosisInterval; get => _diagnosisInterval;

View File

@ -3,6 +3,7 @@ using LinePutScript.Localization.WPF;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.ComponentModel; using System.ComponentModel;
using System.Windows; using System.Windows;
using VPet_Simulator.Windows;
namespace VPet.Solution.Models.SettingEditor; namespace VPet.Solution.Models.SettingEditor;
@ -15,7 +16,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// 缩放倍率 /// 缩放倍率
/// </summary> /// </summary>
[DefaultValue(1)] [DefaultValue(1)]
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.ZoomLevel))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.ZoomLevel))]
public double ZoomLevel public double ZoomLevel
{ {
get => _zoomLevel; get => _zoomLevel;
@ -48,7 +49,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// 桌宠图形渲染的分辨率,越高图形越清晰 /// 桌宠图形渲染的分辨率,越高图形越清晰
/// </summary> /// </summary>
[DefaultValue(1000)] [DefaultValue(1000)]
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.Resolution))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.Resolution))]
public int Resolution public int Resolution
{ {
get => _resolution; get => _resolution;
@ -62,7 +63,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 是否为更大的屏幕 /// 是否为更大的屏幕
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.IsBiggerScreen))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.IsBiggerScreen))]
public bool IsBiggerScreen public bool IsBiggerScreen
{ {
get => _isBiggerScreen; get => _isBiggerScreen;
@ -83,7 +84,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 是否置于顶层 /// 是否置于顶层
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.TopMost))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.TopMost))]
public bool TopMost public bool TopMost
{ {
get => _topMost; get => _topMost;
@ -97,7 +98,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 是否鼠标穿透 /// 是否鼠标穿透
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.HitThrough))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.HitThrough))]
public bool HitThrough public bool HitThrough
{ {
get => _hitThrough; get => _hitThrough;
@ -111,7 +112,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 语言 /// 语言
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.Language))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.Language))]
public string Language public string Language
{ {
get => _language; get => _language;
@ -128,7 +129,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 字体 /// 字体
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.Font))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.Font))]
public string Font public string Font
{ {
get => _font; get => _font;
@ -142,7 +143,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 主题 /// 主题
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.Theme))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.Theme))]
public string Theme public string Theme
{ {
get => _theme; get => _theme;
@ -156,7 +157,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 开机启动 /// 开机启动
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.StartUPBoot))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.StartUPBoot))]
public bool StartUPBoot public bool StartUPBoot
{ {
get => _startUPBoot; get => _startUPBoot;
@ -170,7 +171,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 开机启动 Steam /// 开机启动 Steam
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.StartUPBootSteam))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.StartUPBootSteam))]
public bool StartUPBootSteam public bool StartUPBootSteam
{ {
get => _startUPBootSteam; get => _startUPBootSteam;
@ -185,7 +186,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// 是否记录游戏退出位置 /// 是否记录游戏退出位置
/// </summary> /// </summary>
[DefaultValue(true)] [DefaultValue(true)]
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.StartRecordLast))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.StartRecordLast))]
public bool StartRecordLast public bool StartRecordLast
{ {
get => _startRecordLast; get => _startRecordLast;
@ -224,7 +225,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 在任务切换器(Alt+Tab)中隐藏窗口 /// 在任务切换器(Alt+Tab)中隐藏窗口
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.HideFromTaskControl))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.HideFromTaskControl))]
public bool HideFromTaskControl public bool HideFromTaskControl
{ {
get => _hideFromTaskControl; get => _hideFromTaskControl;
@ -238,7 +239,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 消息框外置 /// 消息框外置
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.MessageBarOutside))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.MessageBarOutside))]
public bool MessageBarOutside public bool MessageBarOutside
{ {
get => _messageBarOutside; get => _messageBarOutside;
@ -252,7 +253,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 是否显示宠物帮助窗口 /// 是否显示宠物帮助窗口
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.PetHelper))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.PetHelper))]
public bool PetHelper public bool PetHelper
{ {
get => _petHelper; get => _petHelper;
@ -268,7 +269,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 快捷穿透按钮X坐标 /// 快捷穿透按钮X坐标
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.PetHelpLeft))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.PetHelpLeft))]
public double PetHelpLeft public double PetHelpLeft
{ {
get => _petHelpLeft; get => _petHelpLeft;
@ -284,7 +285,7 @@ public class GraphicsSettingModel : ObservableClass<GraphicsSettingModel>
/// <summary> /// <summary>
/// 快捷穿透按钮Y坐标 /// 快捷穿透按钮Y坐标
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.PetHelpTop))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.PetHelpTop))]
public double PetHelpTop public double PetHelpTop
{ {
get => _petHelpTop; get => _petHelpTop;

View File

@ -14,7 +14,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
///// <summary> ///// <summary>
///// 宠物名称 ///// 宠物名称
///// </summary> ///// </summary>
//[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.PetName))] //[ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.PetName))]
//public string PetName //public string PetName
//{ //{
// get => _petName; // get => _petName;
@ -28,7 +28,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 播放声音大小 /// 播放声音大小
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.VoiceVolume))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.VoiceVolume))]
public double VoiceVolume public double VoiceVolume
{ {
get => _voiceVolume; get => _voiceVolume;
@ -42,7 +42,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 启用计算等数据功能 /// 启用计算等数据功能
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.EnableFunction))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.EnableFunction))]
public bool EnableFunction public bool EnableFunction
{ {
get => _enableFunction; get => _enableFunction;
@ -56,7 +56,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 非计算模式下默认模式 /// 非计算模式下默认模式
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.CalFunState))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.CalFunState))]
public IGameSave.ModeType CalFunState public IGameSave.ModeType CalFunState
{ {
get => _calFunState; get => _calFunState;
@ -73,7 +73,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 上次清理缓存日期 /// 上次清理缓存日期
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.LastCacheDate))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.LastCacheDate))]
public DateTime LastCacheDate public DateTime LastCacheDate
{ {
get => _lastCacheDate; get => _lastCacheDate;
@ -87,7 +87,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 储存顺序次数 /// 储存顺序次数
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.SaveTimes))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.SaveTimes))]
public int SaveTimes public int SaveTimes
{ {
get => _saveTimes; get => _saveTimes;
@ -101,7 +101,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 按多久视为长按 单位毫秒 /// 按多久视为长按 单位毫秒
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.PressLength))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.PressLength))]
public int PressLength public int PressLength
{ {
get => _pressLength; get => _pressLength;
@ -115,7 +115,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 互动周期 /// 互动周期
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.InteractionCycle))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.InteractionCycle))]
public int InteractionCycle public int InteractionCycle
{ {
get => _interactionCycle; get => _interactionCycle;
@ -129,7 +129,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 计算间隔 (秒) /// 计算间隔 (秒)
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.LogicInterval))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.LogicInterval))]
public double LogicInterval public double LogicInterval
{ {
get => _logicInterval; get => _logicInterval;
@ -143,7 +143,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 允许移动事件 /// 允许移动事件
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.AllowMove))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.AllowMove))]
public bool AllowMove public bool AllowMove
{ {
get => _allowMove; get => _allowMove;
@ -157,7 +157,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 智能移动 /// 智能移动
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.SmartMove))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.SmartMove))]
public bool SmartMove public bool SmartMove
{ {
get => _smartMove; get => _smartMove;
@ -172,7 +172,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// 智能移动周期 (秒) /// 智能移动周期 (秒)
/// </summary> /// </summary>
[DefaultValue(1)] [DefaultValue(1)]
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.SmartMoveInterval))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.SmartMoveInterval))]
[ReflectionPropertyConverter(typeof(SecondToMinuteConverter))] [ReflectionPropertyConverter(typeof(SecondToMinuteConverter))]
public int SmartMoveInterval public int SmartMoveInterval
{ {
@ -190,7 +190,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 桌宠选择内容 /// 桌宠选择内容
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.PetGraph))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.PetGraph))]
public string PetGraph public string PetGraph
{ {
get => _petGraph; get => _petGraph;
@ -204,7 +204,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 当实时播放音量达到该值时运行音乐动作 /// 当实时播放音量达到该值时运行音乐动作
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.MusicCatch))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.MusicCatch))]
[ReflectionPropertyConverter(typeof(PercentageConverter))] [ReflectionPropertyConverter(typeof(PercentageConverter))]
public int MusicCatch public int MusicCatch
{ {
@ -219,7 +219,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 当实时播放音量达到该值时运行特殊音乐动作 /// 当实时播放音量达到该值时运行特殊音乐动作
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.MusicMax))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.MusicMax))]
[ReflectionPropertyConverter(typeof(PercentageConverter))] [ReflectionPropertyConverter(typeof(PercentageConverter))]
public int MusicMax public int MusicMax
{ {
@ -235,7 +235,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 允许桌宠自动购买食品 /// 允许桌宠自动购买食品
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.AutoBuy))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.AutoBuy))]
public bool AutoBuy public bool AutoBuy
{ {
get => _autoBuy; get => _autoBuy;
@ -250,7 +250,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
/// <summary> /// <summary>
/// 允许桌宠自动购买礼物 /// 允许桌宠自动购买礼物
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.AutoGift))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.AutoGift))]
public bool AutoGift public bool AutoGift
{ {
get => _autoGift; get => _autoGift;
@ -261,7 +261,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
#region MoveAreaDefault #region MoveAreaDefault
private bool _moveAreaDefault; private bool _moveAreaDefault;
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.MoveAreaDefault))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.MoveAreaDefault))]
public bool MoveAreaDefault public bool MoveAreaDefault
{ {
get => _moveAreaDefault; get => _moveAreaDefault;
@ -272,7 +272,7 @@ public class InteractiveSettingModel : ObservableClass<InteractiveSettingModel>
#region MoveArea #region MoveArea
private System.Drawing.Rectangle _moveArea; private System.Drawing.Rectangle _moveArea;
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.MoveArea))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.MoveArea))]
public System.Drawing.Rectangle MoveArea public System.Drawing.Rectangle MoveArea
{ {
get => _moveArea; get => _moveArea;

View File

@ -10,7 +10,7 @@ using HKW.HKWUtils.Observable;
using LinePutScript; using LinePutScript;
using LinePutScript.Localization.WPF; using LinePutScript.Localization.WPF;
using VPet.Solution.Views.SettingEditor; using VPet.Solution.Views.SettingEditor;
using VPet_Simulator.Windows.Interface; using VPet_Simulator.Windows;
namespace VPet.Solution.Models.SettingEditor; namespace VPet.Solution.Models.SettingEditor;

View File

@ -7,7 +7,7 @@ using HKW.HKWUtils.Observable;
using LinePutScript; using LinePutScript;
using LinePutScript.Localization.WPF; using LinePutScript.Localization.WPF;
using VPet.Solution.Properties; using VPet.Solution.Properties;
using VPet_Simulator.Windows.Interface; using VPet_Simulator.Windows;
namespace VPet.Solution.Models.SettingEditor; namespace VPet.Solution.Models.SettingEditor;
@ -97,7 +97,7 @@ public class SettingModel : ObservableClass<SettingModel>
private readonly ReflectionOptions _saveReflectionOptions = new() { CheckValueEquals = true }; private readonly ReflectionOptions _saveReflectionOptions = new() { CheckValueEquals = true };
public SettingModel() public SettingModel()
: this(new("")) { } : this(new(null, "")) { }
public SettingModel(Setting setting) public SettingModel(Setting setting)
{ {

View File

@ -15,7 +15,7 @@ public class SystemSettingModel : ObservableClass<SystemSettingModel>
/// <summary> /// <summary>
/// 自动保存频率 (min) /// 自动保存频率 (min)
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.AutoSaveInterval))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.AutoSaveInterval))]
public int AutoSaveInterval public int AutoSaveInterval
{ {
get => _autoSaveInterval; get => _autoSaveInterval;
@ -32,7 +32,7 @@ public class SystemSettingModel : ObservableClass<SystemSettingModel>
/// <summary> /// <summary>
/// 备份保存最大数量 /// 备份保存最大数量
/// </summary> /// </summary>
[ReflectionProperty(nameof(VPet_Simulator.Windows.Interface.Setting.BackupSaveMaxNum))] [ReflectionProperty(nameof(VPet_Simulator.Windows.Setting.BackupSaveMaxNum))]
public int BackupSaveMaxNum public int BackupSaveMaxNum
{ {
get => _backupSaveMaxNum; get => _backupSaveMaxNum;

View File

@ -8,7 +8,7 @@ using LinePutScript.Localization.WPF;
using Panuon.WPF.UI; using Panuon.WPF.UI;
using VPet.Solution.Models.SettingEditor; using VPet.Solution.Models.SettingEditor;
using VPet.Solution.ViewModels.SettingEditor; using VPet.Solution.ViewModels.SettingEditor;
using VPet_Simulator.Windows.Interface; using VPet_Simulator.Windows;
namespace VPet.Solution.ViewModels; namespace VPet.Solution.ViewModels;

View File

@ -13,7 +13,7 @@ using Panuon.WPF;
using VPet.Solution.Models; using VPet.Solution.Models;
using VPet.Solution.Models.SettingEditor; using VPet.Solution.Models.SettingEditor;
using VPet.Solution.Views.SettingEditor; using VPet.Solution.Views.SettingEditor;
using VPet_Simulator.Windows.Interface; using VPet_Simulator.Windows;
namespace VPet.Solution.ViewModels.SettingEditor; namespace VPet.Solution.ViewModels.SettingEditor;
@ -215,7 +215,7 @@ public class SettingWindowVM : ObservableClass<SettingWindowVM>
var fileName = Path.GetFileNameWithoutExtension(file); var fileName = Path.GetFileNameWithoutExtension(file);
try try
{ {
var setting = new Setting(File.ReadAllText(file)); var setting = new Setting(null, File.ReadAllText(file));
var settingModel = new SettingModel(setting) { Name = fileName, FilePath = file }; var settingModel = new SettingModel(setting) { Name = fileName, FilePath = file };
Settings.Add(settingModel); Settings.Add(settingModel);
} }

View File

@ -32,6 +32,7 @@ public partial class MainWindow : WindowX
private void MainWindow_Closed(object? sender, EventArgs e) private void MainWindow_Closed(object? sender, EventArgs e)
{ {
if (ModSettingModel.LocalMods != null)
foreach (var mod in ModSettingModel.LocalMods) foreach (var mod in ModSettingModel.LocalMods)
mod.Value.Image?.CloseStream(); mod.Value.Image?.CloseStream();
SettingWindow.CloseX(); SettingWindow.CloseX();