This commit is contained in:
Hakoyu 2024-02-04 00:08:35 +08:00
commit 94b61cf7ec
28 changed files with 344 additions and 174 deletions

View File

@ -5,3 +5,5 @@ dotnet_diagnostic.CS1591.severity = suggestion
dotnet_diagnostic.CS1573.severity = suggestion
dotnet_diagnostic.CS1570.severity = suggestion
# CS8632: 只能在 "#nullable" 注释上下文内的代码中使用可为 null 的引用类型的注释。
dotnet_diagnostic.CS8632.severity = suggestion

View File

@ -59,7 +59,7 @@
* 自訂桌寵工作內容
* 對話內容
* 主題
* 代碼插件:編撰程式碼來加入新內容
* 程式碼外掛:編撰程式碼來加入新內容
* 加入新的動畫邏輯或顯示效果例如l2d/spine等
* 加入新功能(鬧鐘、記事本等)
* 幾乎無所不能,範例請見[VPet.Plugin.Demo](https://github.com/LorisYounger/VPet.Plugin.Demo)

View File

@ -23,10 +23,10 @@
<None Include="..\.editorconfig" Link=".editorconfig" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="LinePutScript" Version="1.9.2" />
<PackageReference Include="LinePutScript" Version="1.10.2" />
<PackageReference Include="LinePutScript.Localization.WPF" Version="1.0.6" />
<PackageReference Include="Panuon.WPF" Version="1.0.2" />
<PackageReference Include="Panuon.WPF.UI" Version="1.1.15.8" />
<PackageReference Include="Panuon.WPF" Version="1.0.3" />
<PackageReference Include="Panuon.WPF.UI" Version="1.1.16.8" />
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">

View File

@ -1,9 +1,12 @@
using LinePutScript;
using LinePutScript.Dictionary;
using LinePutScript.Localization.WPF;
using Panuon.WPF.UI;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
@ -55,9 +58,28 @@ namespace VPet_Simulator.Windows.Interface
if (nohashcheck)
{
hash = lps.GetInt64("hash");
int ver = lps["hash"].GetInt("ver");
if (lps.Remove("hash"))
{
HashCheck = Sub.GetHashCode(lps.ToString()) == hash;
if (ver == 2)
HashCheck = Sub.GetHashCode(lps.ToString()) == hash;
else
{
try
{
using (MD5 md5 = MD5.Create())
{
HashCheck = BitConverter.ToInt64(md5.ComputeHash(Encoding.UTF8.GetBytes(lps.ToString())), 0) == hash;
}
if (!HashCheck)
HashCheck = Sub.GetHashCode(lps.ToString()) == hash;
}
catch (Exception e)
{
HashCheck = false;
MessageBoxX.Show(e.ToString(), "当前存档Hash验证信息".Translate() + ":" + "失败".Translate());
}
}
}
}
@ -109,16 +131,23 @@ namespace VPet_Simulator.Windows.Interface
if (HashCheck)
{
lps[(gi64)"hash"] = Sub.GetHashCode(lps.ToString());
lps["hash"][(gint)"ver"] = 2;
}
else
{
lps[(gint)"hash"] = -1;
lps["hash"][(gint)"ver"] = 2;
}
return lps;
}
/// <summary>
/// Hash检查
/// </summary>
public bool HashCheck { get; private set; } = true;
FInt64 IGetOBJ<ILine>.this[gflt subName] { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
/// <summary>
@ -132,7 +161,7 @@ namespace VPet_Simulator.Windows.Interface
#region GETOBJ
public DateTime this[gdat subName] { get => Data[subName]; set => Data[subName] = value; }
public double this[gflt subName] { get => Data[subName]; set => Data[subName] = value; }
public FInt64 this[gflt subName] { get => Data[subName]; set => Data[subName] = value; }
public double this[gdbe subName] { get => Data[subName]; set => Data[subName] = value; }
public long this[gi64 subName] { get => Data[subName]; set => Data[subName] = value; }
public int this[gint subName] { get => Data[subName]; set => Data[subName] = value; }
@ -170,12 +199,12 @@ namespace VPet_Simulator.Windows.Interface
Data.SetInt64(subName, value);
}
public double GetFloat(string subName, double defaultvalue = 0)
public FInt64 GetFloat(string subName, FInt64 defaultvalue = default)
{
return Data.GetFloat(subName, defaultvalue);
}
public void SetFloat(string subName, double value)
public void SetFloat(string subName, FInt64 value)
{
Data.SetFloat(subName, value);
}

View File

@ -33,19 +33,20 @@ namespace VPet_Simulator.Windows.Interface
allowmove = !this["gameconfig"].GetBool("allowmove");
smartmove = this["gameconfig"].GetBool("smartmove");
enablefunction = !this["gameconfig"].GetBool("nofunction");
Statistics_OLD = new Statistics(this["statistics"].ToList());
//Statistics_OLD = new Statistics(this["statistics"].ToList());
autobuy = this["gameconfig"].GetBool("autobuy");
autogift = this["gameconfig"].GetBool("autogift");
}
public override string ToString()
{//留作备份,未来版本删了
this["statistics"] = new Line("statistics", "", "", Statistics_OLD.ToSubs().ToArray());
return base.ToString();
}
/// <summary>
/// 统计数据信息(旧)
/// </summary>
public Statistics Statistics_OLD;
//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
//{
@ -87,7 +88,7 @@ namespace VPet_Simulator.Windows.Interface
/// </summary>
public double VoiceVolume
{
get => GetFloat("voicevolume", 0.5);
get => (double)GetFloat("voicevolume", 0.5);
set => SetFloat("voicevolume", value);
}
/// <summary>
@ -275,7 +276,7 @@ namespace VPet_Simulator.Windows.Interface
/// </summary>
public double PetHelpLeft
{
get => this["pethelp"].GetFloat("left", 0);
get => (double)this["pethelp"].GetFloat("left", 0);
set => this["pethelp"].SetFloat("left", value);
}
/// <summary>
@ -283,7 +284,7 @@ namespace VPet_Simulator.Windows.Interface
/// </summary>
public double PetHelpTop
{
get => this["pethelp"].GetFloat("top", 0);
get => (double)this["pethelp"].GetFloat("top", 0);
set => this["pethelp"].SetFloat("top", value);
}

View File

@ -45,7 +45,7 @@ namespace VPet_Simulator.Windows.Interface
get => GetDateTime((string)subName);
set => SetDateTime((string)subName, value);
}
public double this[gflt subName]
public FInt64 this[gflt subName]
{
get => GetFloat((string)subName);
set => SetFloat((string)subName, value);
@ -113,9 +113,9 @@ namespace VPet_Simulator.Windows.Interface
public void SetInt64(string subName, long value) => Set(subName, value);
public double GetFloat(string subName, double defaultvalue = 0) => Find(subName)?.GetFloat() ?? defaultvalue;
public FInt64 GetFloat(string subName, FInt64 defaultvalue = default) => Find(subName)?.GetFloat() ?? defaultvalue;
public void SetFloat(string subName, double value) => Set(subName, value);
public void SetFloat(string subName, FInt64 value) => Set(subName, new SetObject(value));
public DateTime GetDateTime(string subName, DateTime defaultvalue = default) => Find(subName)?.GetDateTime() ?? defaultvalue;

View File

@ -16,9 +16,9 @@
<ProjectReference Include="..\VPet-Simulator.Core\VPet-Simulator.Core.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="LinePutScript" Version="1.9.2" />
<PackageReference Include="LinePutScript" Version="1.10.2" />
<PackageReference Include="LinePutScript.Localization.WPF" Version="1.0.6" />
<PackageReference Include="Panuon.WPF" Version="1.0.2" />
<PackageReference Include="Panuon.WPF.UI" Version="1.1.15.8" />
<PackageReference Include="Panuon.WPF" Version="1.0.3" />
<PackageReference Include="Panuon.WPF.UI" Version="1.1.16.8" />
</ItemGroup>
</Project>

View File

@ -637,7 +637,7 @@ namespace VPet_Simulator.Windows
{
var stat = GameSavesData.Statistics;
var save = Core.Save;
stat["stat_money"] = save.Money;
stat["stat_money"] = (SetObject)save.Money;
stat["stat_level"] = save.Level;
stat["stat_likability"] = save.Likability;
@ -712,7 +712,7 @@ namespace VPet_Simulator.Windows
else
data.Add(new Line(item.Name, item.Info));
}
tmp = new GameSave_v2(lps, Set.Statistics_OLD, olddata: data);
tmp = new GameSave_v2(lps, null, olddata: data);
}
if (tmp.GameSave == null)
return false;
@ -1425,12 +1425,16 @@ namespace VPet_Simulator.Windows
await Dispatcher.InvokeAsync(new Action(() => LoadingText.Content = "尝试加载游戏动画".Translate()));
await Dispatcher.InvokeAsync(new Action(() =>
{
LoadingText.Content = "尝试加载动画和生成缓存".Translate();
LoadingText.Content = "尝试加载动画和生成缓存\n该步骤可能会耗时比较长\n请耐心等待".Translate();
Core.Graph = petloader.Graph(Set.Resolution);
Main = new Main(Core);
Main.NoFunctionMOD = Set.CalFunState;
LoadingText.Content = "正在加载游戏".Translate();
//加载数据合理化:工作
if (!Set["gameconfig"].GetBool("noAutoCal"))
{
@ -1459,7 +1463,6 @@ namespace VPet_Simulator.Windows
}
LoadingText.Content = "正在加载游戏".Translate();
var m = new System.Windows.Controls.MenuItem()
{
Header = "MOD管理".Translate(),

View File

@ -20,6 +20,7 @@ using Line = LinePutScript.Line;
using static VPet_Simulator.Core.GraphInfo;
using System.Globalization;
using LinePutScript.Dictionary;
using Steamworks.Data;
namespace VPet_Simulator.Windows
{
@ -111,6 +112,8 @@ namespace VPet_Simulator.Windows
{
if (IsSteamUser)//如果是steam用户,尝试加载workshop
{
//Leaderboard? leaderboard = await SteamUserStats.FindLeaderboardAsync("chatgpt_auth");
//leaderboard?.ReplaceScore(Function.Rnd.Next());
var workshop = new Line_D("workshop");
await Dispatcher.InvokeAsync(new Action(() =>
{
@ -126,7 +129,7 @@ namespace VPet_Simulator.Windows
int i = 1;
while (true)
{
var page = await Steamworks.Ugc.Query.ItemsReadyToUse.GetPageAsync(i++);
var page = await Steamworks.Ugc.Query.ItemsReadyToUse.GetPageAsync(i++);
if (page.HasValue && page.Value.ResultCount != 0)
{
foreach (Steamworks.Ugc.Item entry in page.Value.Entries)
@ -260,7 +263,7 @@ namespace VPet_Simulator.Windows
if (App.MainWindows.Count <= 1)
{
try
{
{
if (Core != null && Core.Graph != null)
{
foreach (var igs in Core.Graph.GraphsList.Values)

View File

@ -185,6 +185,9 @@
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<None Include="..\.editorconfig" Link=".editorconfig" />
</ItemGroup>
<ItemGroup>
<Resource Include="Res\img\rbgt.png" />
<Resource Include="Res\img\r_autobuy_1.png" />
@ -234,10 +237,10 @@
<PackageReference Include="CSCore" Version="1.2.1.2" />
<PackageReference Include="Facepunch.Steamworks" Condition="'$(Platform)' == 'x64'" Version="2.3.3" />
<PackageReference Include="Facepunch.Steamworks.win32" Condition="'$(Platform)' == 'x86'" Version="2.3.3" />
<PackageReference Include="LinePutScript" Version="1.9.2" />
<PackageReference Include="LinePutScript" Version="1.10.2" />
<PackageReference Include="LinePutScript.Localization.WPF" Version="1.0.6" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Panuon.WPF" Version="1.0.2" />
<PackageReference Include="Panuon.WPF.UI" Version="1.1.15.8" />
<PackageReference Include="Panuon.WPF" Version="1.0.3" />
<PackageReference Include="Panuon.WPF.UI" Version="1.1.16.8" />
</ItemGroup>
</Project>

View File

@ -50,7 +50,7 @@ namespace VPet_Simulator.Windows
}
}
private void Statistics_StatisticChanged(Interface.Statistics sender, string name, LinePutScript.SetObject value)
private void Statistics_StatisticChanged(Interface.Statistics sender, string name, SetObject value)
{
Dispatcher.Invoke(() =>
{

View File

@ -1439,7 +1439,14 @@ namespace VPet_Simulator.Windows
mw.GameSavesData = new GameSave_v2(mw.Core.Save.Name);
mw.Core.Save = mw.GameSavesData.GameSave;
if (oldsave.HashCheck) // 对于重开无作弊的玩家保留统计
{
mw.GameSavesData.Statistics = oldsave.Statistics;
if(oldsave.GameSave.Money > 10000000 || oldsave.GameSave.Money < -1000000000 || oldsave.GameSave.Exp > 100000000 || oldsave.GameSave.Exp < -10000000000)
{
mw.Core.Save.Money = 10000;
mw.Core.Save.Exp = 10000;
}
}
mw.HashCheck = true;
MessageBoxX.Show("重置成功".Translate());
}

View File

@ -6,6 +6,7 @@ mklink /d "%~dp0\bin\x64\Debug\net462\mod" "%~dp0\mod"
echo The following is the automatic link generation for other related MODs. If an error is prompted, it is a normal phenomenon and can be ignored
mklink /d "%~dp0\bin\x64\Release\net462\mod" "%~dp0\mod"
mklink /d "%~dp0\..\VPet.Solution\bin\Debug\mod" "%~dp0\mod"
mklink /d "%~dp0\mod\0001_ModMaker" "%~dp0\..\..\VPet.ModMaker\0001_ModMaker"
mklink /d "%~dp0\mod\1100_DemoClock" "%~dp0\..\..\VPet.Plugin.Demo\VPet.Plugin.DemoClock\1100_DemoClock"

View File

@ -1,2 +1,3 @@
由于操作系统的设计通过我们软件启动的程序可能会在任务管理器中归类为我们软件的子进程这可能导致CPU/内存占用显示较高#Due to the design of the operating system, programs launched by our software may be categorized as sub-processes of our software in the task manager, which may result in higher displayed CPU/memory usage.:|
关于CPU/内存占用显示较高的一次性提示#One-time Notice Regarding Higher Displayed CPU/Memory Usage:|
尝试加载动画和生成缓存\n该步骤可能会耗时比较长\n请耐心等待#Attempting to load animations and generate cache\nThis step may take a while\nPlease be patient:|

View File

@ -0,0 +1,48 @@
VPET 设置编辑器#VPET Setup Editor:|
打开文件#Opening Files:|
从资源管理器打开文件#Opening a file from Explorer:|
重置#Reset:|
全部保存#Save All:|
Mod管理#Mod Management:|
保存为退出位置#Save as Exit Location:|
设为当前位置#Set as current position:|
设为当前窗口左上角顶点坐标的位置#Set to the current position of the top-left corner of the window in vertex coordinates.:|
每次间隔#Interval:|
备份设置#Backup Settings:|
桌宠设置#VPet Settings:|
桌宠状态#VPet Status:|
启用桌宠状态#Enable VPet status:|
分钟左右主动进行一次互动 (走路发呆爬墙等) #Interact actively once every minute or so (walk, dawdle, climb walls, etc.) :|
清空全部#Clear all:|
搜索名称#Search Name:|
链接#Link:|
每周期一次#Once per cycle:|
搜索模组#Search Module:|
清除失效模组#Clear invalid modules:|
清除全部模组#Clear all modules:|
模组名称:#Module Name.:|
作者:#Author.:|
模组版本:#Module Version.:|
游戏版本:#Game Version.:|
模组路径:#Path to Module.:|
启用模组#Enable Module:|
启用模组代码#Enable Module Code:|
打开所在文件夹#Open the folder:|
打开创意工坊页面#Open Creative Workshop Page:|
VPET 存档查看器#VPET Archive Viewer:|
搜索存档#Search Archives:|
保存时间#Save Time:|
游玩时长#Play Duration:|
数据#Data:|
保存日期#Save Dates:|
模式#Mode:|
等级#Grade:|
哈希检查#Hash Check:|
值#Value:|
VPET 问题解决工具#VPET Problem Solving Tool:|
打开设置编辑器#Open Settings Editor:|
打开存档查看器#Open Archive Viewer:|
打开翻译文本#Open Translated Text:|
全部重置#Reset All:|
哈希#Hash:|
第一次启动桌宠打不开?#Can't open the first time you start the desktop pet?:|

View File

@ -1,2 +1,3 @@
由于操作系统的设计通过我们软件启动的程序可能会在任务管理器中归类为我们软件的子进程这可能导致CPU/内存占用显示较高#由于操作系统的设计通过我们软件启动的程序可能会在任务管理器中归类为我们软件的子进程这可能导致CPU/内存占用显示较高:|
关于CPU/内存占用显示较高的一次性提示#关于CPU/内存占用显示较高的一次性提示:|
尝试加载动画和生成缓存\n该步骤可能会耗时比较长\n请耐心等待#尝试加载动画和生成缓存\n该步骤可能会耗时比较长\n请耐心等待:|

View File

@ -0,0 +1,48 @@
VPET 设置编辑器#VPET 设置编辑器:|
打开文件#打开文件:|
从资源管理器打开文件#从资源管理器打开文件:|
重置#重置:|
全部保存#全部保存:|
Mod管理#Mod管理:|
保存为退出位置#保存为退出位置:|
设为当前位置#设为当前位置:|
设为当前窗口左上角顶点坐标的位置#设为当前窗口左上角顶点坐标的位置:|
每次间隔#每次间隔:|
备份设置#备份设置:|
桌宠设置#桌宠设置:|
桌宠状态#桌宠状态:|
启用桌宠状态#启用桌宠状态:|
分钟左右主动进行一次互动 (走路发呆爬墙等) #分钟左右主动进行一次互动 (走路发呆爬墙等) :|
清空全部#清空全部:|
搜索名称#搜索名称:|
链接#链接:|
每周期一次#每周期一次:|
搜索模组#搜索模组:|
清除失效模组#清除失效模组:|
清除全部模组#清除全部模组:|
模组名称:#模组名称::|
作者:#作者::|
模组版本:#模组版本::|
游戏版本:#游戏版本::|
模组路径:#模组路径::|
启用模组#启用模组:|
启用模组代码#启用模组代码:|
打开所在文件夹#打开所在文件夹:|
打开创意工坊页面#打开创意工坊页面:|
VPET 存档查看器#VPET 存档查看器:|
搜索存档#搜索存档:|
保存时间#保存时间:|
游玩时长#游玩时长:|
数据#数据:|
保存日期#保存日期:|
模式#模式:|
等级#等级:|
哈希检查#哈希检查:|
值#值:|
VPET 问题解决工具#VPET 问题解决工具:|
打开设置编辑器#打开设置编辑器:|
打开存档查看器#打开存档查看器:|
打开翻译文本#打开翻译文本:|
全部重置#全部重置:|
哈希#哈希:|
第一次启动桌宠打不开?#第一次启动桌宠打不开?:|

View File

@ -1,2 +1,3 @@
由于操作系统的设计通过我们软件启动的程序可能会在任务管理器中归类为我们软件的子进程这可能导致CPU/内存占用显示较高#由於操作系統的設計透過我們軟體啟動的程序可能會在任務管理器中歸類為我們軟體的子進程這可能導致CPU/內存占用顯示較高:|
关于CPU/内存占用显示较高的一次性提示#關於CPU/內存占用顯示較高的一次性提示:|
尝试加载动画和生成缓存\n该步骤可能会耗时比较长\n请耐心等待#嘗試加載動畫和生成緩存\n該步驟可能會耗時比較長\n請耐心等待:|

View File

@ -15,6 +15,6 @@
糖果棒#糖果棒:|
糖果棒_giftintor#能吃能玩,還能用來打壞小孩的屁股:|
圣诞草莓奶茶#聖誕草莓奶茶:|
圣诞草莓奶茶_giftintor#我不知道為什麼是聖誕奶茶而不是聖誕蛋糕,可能師喜歡聖誕草莓奶茶吧:|
圣诞草莓奶茶_giftintor#我不知道為什麼是聖誕奶茶而不是聖誕蛋糕,可能師喜歡聖誕草莓奶茶吧:|
萝莉丝姜饼人#蘿莉斯薑餅人:|
萝莉丝姜饼人_giftintor#蘿莉絲做的自己樣子的薑餅人,要是因為太可愛捨不得吃蘿莉絲會生氣的哦:|

View File

@ -1,54 +1,54 @@
统计#統計:|
主人~多陪陪我~#主人~多陪陪我~:|
主人~感谢陪伴~#主人~感謝陪伴~:|
同学#同學:|
学长~前辈~#學長~前輩~:|
朋友#朋友:|
主人~多陪陪我~#主人~多陪陪我~:|
主人~感谢陪伴~#主人~感謝陪伴~:|
同学#同學:|
学长~前辈~#學長~前輩~:|
朋友#朋友:|
兄弟!#兄弟!:|
挚友#摯友:|
挚友#摯友:|
不求同年同月同日生,但求同年同月同日打开《虚拟桌宠模拟器》#不求同年同月同日生,但求同年同月同日打開《虛擬桌寵模擬器》:|
家人#家人:|
We are 伐木累~#We are伐木累~:|
女鹅#女:|
爸妈~ 这么叫好像不太好#爸媽~這麼叫好像不太好:|
相当于桌宠的中学学历哦\n<高考桌宠100天>#相當於桌寵的中學學歷哦\n<高考桌寵100天>:|
家人#家人:|
We are 伐木累~#We are 伐木累~:|
女鹅#女鵝。:|
爸妈~ 这么叫好像不太好#爸媽~嗯…這麼叫好像不太洽當…:|
相当于桌宠的中学学历哦\n<高考桌宠100天>#相當於桌寵的國中學歷哦\n<學測桌寵100天>:|
在你这个年纪,你怎么睡得着觉的?#在你這個年紀,你怎麼睡得著覺的?:|
学而不思则罔思而不学则die#學而不思則罔思而不學則die:|
学而不思则罔思而不学则die#學而不思則罔思而不學則die:|
学习?#學習?:|
看我量子速读法!#看我量子速讀法!:|
钱钱乃身外之物#錢錢乃身外之物:|
风声雨声读书声声声入耳,日结月结次次结钱钱入账#風聲雨聲讀書聲聲聲入耳,日結月結次次結錢錢入帳:|
有钱能使磨推鬼#有錢能使磨推鬼:|
钱钱乃身外之物#錢錢乃身外之物:|
风声雨声读书声声声入耳,日结月结次次结钱钱入账#風聲雨聲讀書聲聲聲入耳,日結月結次次結錢錢入帳:|
有钱能使磨推鬼#有錢能使磨推鬼:|
可是,我真的很需要那些钱钱!#可是,我真的很需要那些錢錢!:|
干一天来歇一天, 能混一天是一天#幹一天來歇一天,能混一天是一天:|
早8晚5快乐回家#早8晚5快樂回家:|
干一天来歇一天, 能混一天是一天#幹一天來歇一天,能混一天是一天:|
早8晚5快乐回家#早八晚五,快樂回家。:|
加班没有加班费不是基本常识吗?#加班沒有加班費不是基本常識嗎?:|
老板! 路灯已经准备好了!#老闆! 路燈已經準備好了!:|
啥也没吃,{0}都饿坏了#啥也沒吃,{0}都餓壞了:|
人是铁饭是钢, 四菜一汤吃得香#人是鐵飯是鋼,四菜一湯吃得香:|
自动购买又忘开了吧?#自動購買又忘開了吧?:|
多喝热水#多喝熱水:|
不是正餐买不起, 而是功能性更有性价比#不是正餐買不起,而是功能性更有性價比:|
多吃零食有益心理健康#多吃零食有益心理健康:|
公若不弃,{0}愿拜为义父!#公若不{0}願拜為義父!:|
主人, 是担心我乱买东西嘛#主人,是擔心我亂買東西:|
自己赚的钱自己花#自己賺的錢自己花:|
不要小看我的情报网! 你自动购买礼物没关,对不对?#不要小看我的情報網! 你自動購買禮物沒關,對不對?:|
诚招保姆,工资面议#誠招保姆,薪水面議:|
桌宠的steam创意工坊里有许多的mod喵, 主人快去试试吧#桌寵的steam創意工坊裏有許多的mod喵主人快去試試吧:|
创意工坊又更新了很多有趣的mod喵, 主人要不要去看看?#創意工坊又更新了很多有趣的mod喵,主人要不要去看看?:|
主人已经是mod大师了喵,要不要试试mod制作器,给我做mod喵!#主人已經是mod大師了喵要不要試試mod製作器給我做mod喵!:|
老板! 路灯已经准备好了!#老闆!路燈已經準備好了!:|
啥也没吃,{0}都饿坏了#啥也沒吃,{0}都餓壞了:|
人是铁饭是钢, 四菜一汤吃得香#人是鐵飯是鋼,四菜一湯吃得香:|
自动购买又忘开了吧?#自動購買又忘開了吧?:|
多喝热水#多喝熱水:|
不是正餐买不起, 而是功能性更有性价比#不是正餐買不起,而是功能性更有性價比:|
多吃零食有益心理健康#多吃零食有益心理健康:|
公若不弃,{0}愿拜为义父!#公若不{0}願拜為義父!:|
主人, 是担心我乱买东西嘛#主人,是擔心我亂買東西嗎?:|
自己赚的钱自己花#自己賺的錢自己花:|
不要小看我的情报网! 你自动购买礼物没关,对不对?#不要小看我的情報網!你自動購買禮物沒關,對不對?:|
诚招保姆,工资面议#誠徵保姆,薪水面議。:|
桌宠的steam创意工坊里有许多的mod喵, 主人快去试试吧#桌寵的Steam工作坊裡有許多的模組喵主人快去試試吧:|
创意工坊又更新了很多有趣的mod喵, 主人要不要去看看?#工作坊又更新了很多有趣的模組喵,主人要不要去看看?:|
主人已经是mod大师了喵,要不要试试mod制作器,给我做mod喵!#主人已經是模組大師了喵,要不要試試模組製作器,給我做模組喵!:|
统计总结#統計總結:|
生成统计#生成統計:|
保存图片#存圖片:|
未使用过作弊模组和修改游戏数据#未使用過作弊模組和修改遊戲數據:|
保存图片#存圖片:|
未使用过作弊模组和修改游戏数据#從未使用作弊模組或修改遊戲數據:|
同意上传统计数据至Steam排行榜#同意上傳統計資料至Steam排行榜:|
你第一次遇到了这只可爱的小东西#你第一次遇到了這可愛的小東西:|
初次见面,主人~#初次見面,主人~:|
你第一次遇到了这只可爱的小东西#你第一次遇到了這可愛的小東西:|
初次见面,主人~#初次見面,主人:|
你和#你和:|
一共生活了#一共生活了:|
r天#天:|
你陪伴她的时长是#你陪伴她的時長是:|
你陪伴她的时长是#你陪伴她的時數為:|
r小时#小時:|
超过了全球#超過了全球:|
r的主人#的主人:|
@ -57,25 +57,25 @@ r的主人#的主人:|
相当于平均和#相當於平均和:|
在一起的时间#在一起的時間:|
你的等级是#你的等級是:|
r级#:|
r级#:|
累计获得经验#累計獲得經驗:|
累计学习时间是#累計學習時間:|
累计学习时间是#累計學習時間:|
r分钟#分鐘:|
单次学习最大获得#單次學習最獲得:|
累计工作时间是#累計工作時間是:|
单次学习最大获得#單次學習最獲得:|
累计工作时间是#累計工作時:|
工作占总时间#工作占總時間:|
单次工作最大获得#單次工作最獲得:|
单次工作最大获得#單次工作最獲得:|
累计购买#累計購買:|
次更好买商品#次更好買商品:|
次更好买商品#次更好買商品:|
其中最多购买的是#其中最多購買的是:|
在分类#在分類:|
在分类#類別為:|
自动购买#自動購買:|
次#次:|
占全部购买#占全部購買:|
占全部购买#占全部購買次數的:|
你订阅了#你訂閱了:|
个mod#個mod:|
启用的其中的#啟用其中的:|
你订阅mod数超过了全球#你訂閱mod數超過了全球:|
个mod#個模組:|
启用的其中的#啟用其中的:|
你订阅mod数超过了全球#你訂閱的模組數超過了全球:|
睡了#睡了:|
小时的觉#小時的覺:|
移动了#移動了:|
@ -87,21 +87,21 @@ r分钟#分鐘:|
摸了#摸了:|
次头#次頭:|
吃喝玩乐睡, 惨了养成猪了#吃喝玩樂睡,慘了養成猪了:|
打开游戏次数是#打開遊戲次數是:|
打开游戏次数是#打開遊戲次數是:|
你照顾的#你照顧的:|
满状态次数是#滿狀態次數是:|
满状态次数是#狀態全滿次數是:|
对你的好感度是#對你的好感度是:|
最喜欢你了主人~ 新的一年请多多关照喵~#最喜歡你了主人~新的一年請多多關照喵~:|
MOD名称重复#MOD名稱重複:|
最喜欢你了主人~ 新的一年请多多关照喵~#最喜歡你了主人~新的一年請多多關照喵~:|
MOD名称重复#模組名稱重複:|
Food#食物:|
Star#收藏:|
Meal#正餐:|
Snack#零食:|
Drink#飲料:|
Functional#功能性:|
Functional#功能性物品:|
Drug#藥品:|
Gift#禮品:|
孩子学习老不好,多半是废了,快来试试思维驰学习机#孩子學習老不好,多半是廢了,快來試試思維馳學習機:|
主人还可以再去创意工坊体验更多MOD喵#主人還可以再去創意工坊體驗更多MOD喵:|
孩子学习老不好,多半是废了,快来试试思维驰学习机#孩子學習老不好,多半是廢了,快來試試思維馳學習機:|
主人还可以再去创意工坊体验更多MOD喵#主人還可以再去工作坊體驗更多模組喵!:|
点击前往查看#點擊前往查看:|
哼哼~主人,我的考试成绩出炉了哦,快来和我一起看我的成绩单喵#哼哼~主人,我的考試成績出爐了哦,快來和我一起看我的成績單喵:|
哼哼~主人,我的考试成绩出炉了哦,快来和我一起看我的成绩单喵#哼哼主人,我的考試成績出爐了哦,快來和我一起看我的成績單喵:|

View File

@ -0,0 +1,48 @@
VPET 设置编辑器#VPET設定編輯器:|
打开文件#打開文件:|
从资源管理器打开文件#從資料總管打開文件:|
重置#重置:|
全部保存#全部保存:|
Mod管理#Mod管理:|
保存为退出位置#保存為退出位置:|
设为当前位置#設為當前位置:|
设为当前窗口左上角顶点坐标的位置#設為當前視窗左上角頂點座標的位置:|
每次间隔#每次間隔:|
备份设置#備份設定:|
桌宠设置#桌寵設定:|
桌宠状态#桌寵狀態:|
启用桌宠状态#啟用桌寵狀態:|
分钟左右主动进行一次互动 (走路发呆爬墙等) #分鐘左右主動進行一次互動(走路發呆爬牆等):|
清空全部#清空全部:|
搜索名称#蒐索名稱:|
链接#鏈接:|
每周期一次#每週期一次:|
搜索模组#蒐索模組:|
清除失效模组#清除失效模組:|
清除全部模组#清除全部模組:|
模组名称:#模組名稱::|
作者:#作者::|
模组版本:#模組版本::|
游戏版本:#遊戲版本::|
模组路径:#模組路徑::|
启用模组#啟用模組:|
启用模组代码#啟用模組程式碼:|
打开所在文件夹#打開所在資料夾:|
打开创意工坊页面#打開創意工坊頁面:|
VPET 存档查看器#VPET存檔檢視器:|
搜索存档#蒐索存檔:|
保存时间#保存時間:|
游玩时长#遊玩時長:|
数据#數據:|
保存日期#保存日期:|
模式#模式:|
等级#等級:|
哈希检查#雜湊檢查:|
值#值:|
VPET 问题解决工具#VPET問題解决工具:|
打开设置编辑器#打開設定編輯器:|
打开存档查看器#打開存檔檢視器:|
打开翻译文本#打開翻譯文字:|
全部重置#全部重置:|
哈希#雜湊:|
第一次启动桌宠打不开?#第一次啟動桌寵打不開?:|

View File

@ -8,9 +8,9 @@ using System.Windows;
[assembly: AssemblyTitle("VPet.Solution")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyCompany("LBGame")]
[assembly: AssemblyProduct("VPet.Solution")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyCopyright("Copyright © LBGame 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

View File

@ -35,16 +35,18 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>icon.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="FastMember, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\FastMember.1.5.0\lib\net461\FastMember.dll</HintPath>
</Reference>
<Reference Include="LinePutScript, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\LinePutScript.1.9.2\lib\net462\LinePutScript.dll</HintPath>
<HintPath>..\packages\LinePutScript.1.10.2\lib\net462\LinePutScript.dll</HintPath>
</Reference>
<Reference Include="LinePutScript.Localization.WPF, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>
..\packages\LinePutScript.Localization.WPF.1.0.6\lib\net462\LinePutScript.Localization.WPF.dll</HintPath>
<HintPath>..\packages\LinePutScript.Localization.WPF.1.0.6\lib\net462\LinePutScript.Localization.WPF.dll</HintPath>
</Reference>
<Reference Include="Panuon.WPF, Version=1.0.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Panuon.WPF.1.0.3\lib\net462\Panuon.WPF.dll</HintPath>
@ -282,6 +284,8 @@
<Name>VPet-Simulator.Windows.Interface</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Resource Include="icon.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -42,9 +42,10 @@ public class MainWindowVM : ObservableClass<MainWindowVM>
private void FirstStartFailedCommand_ExecuteCommand()
{
Utils.OpenLink(
"https://steamcommunity.com/games/1920960/announcements/detail/3681184905256253203"
);
if (LocalizeCore.CurrentCulture == "zh-Hans")
Utils.OpenLink("https://www.bilibili.com/read/cv26510496/");
else
Utils.OpenLink("https://steamcommunity.com/games/1920960/announcements/detail/3681184905256253203");
}
#region Property

View File

@ -1,71 +1,40 @@
<pu:WindowX
x:Class="VPet.Solution.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ll="clr-namespace:LinePutScript.Localization.WPF;assembly=LinePutScript.Localization.WPF"
xmlns:local="clr-namespace:VPet.Solution"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:pu="https://opensource.panuon.com/wpf-ui"
xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:vm="clr-namespace:VPet.Solution.ViewModels"
Title="{ll:Str 'VPET 问题解决工具'}"
Width="800"
Height="450"
MinWidth="400"
MinHeight="200"
d:DataContext="{d:DesignInstance Type=vm:MainWindowVM}"
WindowStartupLocation="CenterScreen"
mc:Ignorable="d">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="200" />
<RowDefinition />
</Grid.RowDefinitions>
<Label
Height="Auto"
Content="{ll:Str 'VPET 问题解决工具'}"
FontSize="32"
Style="{DynamicResource Label_BaseStyle}" />
<ComboBox
x:Name="ComboBox_Langs"
Grid.Column="1"
HorizontalAlignment="Right"
VerticalAlignment="Top"
ItemsSource="{Binding AvailableCultures}"
SelectedItem="{Binding CurrentCulture}"
Style="{DynamicResource ComboBox_BaseStyle}">
<ComboBox.ContextMenu>
<ContextMenu>
<MenuItem Command="{Binding OpenLocalTextCommand}" Header="{ll:Str 打开翻译文本}" />
</ContextMenu>
</ComboBox.ContextMenu>
</ComboBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel>
<Button
x:Name="Button_OpenSettingEditor"
Click="Button_OpenSettingEditor_Click"
Content="{ll:Str 打开设置编辑器}"
FontSize="16"
Style="{DynamicResource Button_BaseStyle}" />
<Button
x:Name="Button_OpenSaveViewer"
Click="Button_OpenSaveViewer_Click"
Content="{ll:Str 打开存档查看器}"
FontSize="16"
Style="{DynamicResource Button_BaseStyle}" />
</StackPanel>
<Button
Grid.Row="1"
Command="{Binding FirstStartFailedCommand}"
Content="{ll:Str '第一次启动桌宠打不开?'}"
FontSize="16"
Style="{DynamicResource LinkButtonStyle}" />
<pu:WindowX x:Class="VPet.Solution.Views.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ll="clr-namespace:LinePutScript.Localization.WPF;assembly=LinePutScript.Localization.WPF"
xmlns:local="clr-namespace:VPet.Solution" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:pu="https://opensource.panuon.com/wpf-ui" xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:vm="clr-namespace:VPet.Solution.ViewModels" Title="{ll:Str 'VPET 问题解决工具'}" Width="400" Height="450"
MinWidth="400" MinHeight="200" d:DataContext="{d:DesignInstance Type=vm:MainWindowVM}"
WindowStartupLocation="CenterScreen" mc:Ignorable="d">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="200" />
<RowDefinition />
</Grid.RowDefinitions>
<Label Height="Auto" Content="{ll:Str 'VPET 问题解决工具'}" FontSize="32" Style="{DynamicResource Label_BaseStyle}" />
<ComboBox MinWidth="150" x:Name="ComboBox_Langs" Grid.Column="1" HorizontalAlignment="Right"
VerticalAlignment="Top" ItemsSource="{Binding AvailableCultures}"
SelectedItem="{Binding CurrentCulture}" Style="{DynamicResource ComboBox_BaseStyle}">
<ComboBox.ContextMenu>
<ContextMenu>
<MenuItem Command="{Binding OpenLocalTextCommand}" Header="{ll:Str 打开翻译文本}" />
</ContextMenu>
</ComboBox.ContextMenu>
</ComboBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel>
<Button MinWidth="150" x:Name="Button_OpenSettingEditor" Click="Button_OpenSettingEditor_Click"
Content="{ll:Str 打开设置编辑器}" FontSize="16" Style="{DynamicResource Button_BaseStyle}" />
<Button MinWidth="150" x:Name="Button_OpenSaveViewer" Click="Button_OpenSaveViewer_Click"
Content="{ll:Str 打开存档查看器}" FontSize="16" Style="{DynamicResource Button_BaseStyle}" />
</StackPanel>
<Button Grid.Row="1" Command="{Binding FirstStartFailedCommand}" Content="{ll:Str '第一次启动桌宠打不开?'}"
FontSize="16" Style="{DynamicResource LinkButtonStyle}" />
</Grid>
</Grid>
</Grid>
</pu:WindowX>

BIN
VPet.Solution/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FastMember" version="1.5.0" targetFramework="net462" />
<package id="LinePutScript" version="1.9.2" targetFramework="net462" />
<package id="LinePutScript" version="1.10.2" targetFramework="net462" />
<package id="LinePutScript.Localization.WPF" version="1.0.6" targetFramework="net462" />
<package id="Panuon.WPF" version="1.0.3" targetFramework="net462" />
<package id="Panuon.WPF.UI" version="1.1.16.5" targetFramework="net462" />
<package id="Panuon.WPF.UI" version="1.1.16.8" targetFramework="net462" />
</packages>

Binary file not shown.