diff --git a/README.assets/ss2.gif b/README.assets/ss2.gif new file mode 100644 index 0000000..c4af6b9 Binary files /dev/null and b/README.assets/ss2.gif differ diff --git a/README.assets/ss7.gif b/README.assets/ss7.gif new file mode 100644 index 0000000..108fd65 Binary files /dev/null and b/README.assets/ss7.gif differ diff --git a/README.md b/README.md index 18e6ade..0bc5fa9 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,70 @@ ![ss4](README.assets/ss4.gif) -## 软件设计 +获取虚拟桌宠模拟器 [OnSteam(免费)](https://store.steampowered.com/app/1920960/VPet) 或 通过[Nuget]()内置到你的WPF应用程序 -* VPet-Simulator: 适用于桌面端的虚拟桌宠模拟器 +## 虚拟桌宠模拟器 详细介绍 + +虚拟桌宠模拟器是一款桌宠软件,支持各种互动投喂等. 开源免费并且支持创意工坊. + +反正免费为啥不试试呢( + +该游戏为 [虚拟主播模拟器](https://store.steampowered.com/app/1352140/_/) 内置桌宠(教程)程序独立而来, 如果喜欢的话欢迎添加 [虚拟主播模拟器](https://store.steampowered.com/app/1352140/_/) 至愿望单 + +### 超多的互动和动画 + +多达 32(种) * 4(状态) * 3(类型) 种动画, *注:部分种类没有生病状态或循环等内容,实际动画数量会偏少* + +#### 一些动画例子: + +##### 摸头 + +![ss2](README.assets/ss2.gif) + +##### 提起 + +![ss4](README.assets/ss4.gif) + +##### 爬墙 + +![ss7](README.assets/ss7.gif) + +详情请参见 开源文档中的 [图像资源](https://github.com/LorisYounger/VPet#%E5%9B%BE%E5%83%8F%E8%B5%84%E6%BA%90). + +### 免费 + +该游戏完全免费! 反正不要钱,试试不要紧( +该游戏主要目的是宣传下 [虚拟主播模拟器](https://store.steampowered.com/app/1352140/_/), 游戏中Q版人物为虚拟主播模拟器的主人公. + +### 开源 + +该游戏在github上开源, 欢迎提出自己的想法,创意或者参与开发! +您还可以修改代码来制作自己专属的桌宠!(虽然说大部分内容都支持创意工坊,不需要修改代码) +项目地址: https://github.com/LorisYounger/VPet + +### 支持创意工坊 + +该游戏支持创意工坊,您可以制作别的人物桌宠动画或者互动,并上传至创意工坊分享给更多人使用. + +创意工坊支持添加/修改以下内容 + +* 桌宠动画 +* 物品/食物/饮料等 +* 桌宠工作 +* 说话文本 +* 主题 + +### 反馈&建议&联系我们 + +如果有建议或者意见,可以在Steam商店评论/社区,Github Issue,虚拟主播模拟器贴吧,虚拟主播模拟器群(430081239)或者邮件联系我 [mailto:service@exlb.net](mailto:service@exlb.net) + +## 软件结构 + +* VPet-Simulator.Windows: 适用于桌面端的虚拟桌宠模拟器 * MainWindows 主窗体,存放和展示Core * WinSetting.xaml 软件设置/MOD 窗口 * MWController.cs 窗体控制器 +* VPet-Simulator.Tool: 方便制作MOD的工具(eg:图片帧生成) * VPet-Simulator.Core: 软件核心 方便内置到任何WPF应用程序(例如:VUP-Simulator) * Handle 接口与控件 * IController 窗体控制器 (调用相关功能,例如移动到侧边等) @@ -126,4 +184,43 @@ * 被拉起 (切换位置)(无生病,生病时使用状态不佳) * 爬墙 (无状态不佳/生病)) * 爬地板 (无状态不佳/生病)) - * 躲藏 (被发现加心情 无状态不佳/生病) \ No newline at end of file + * 躲藏 (被发现加心情 无状态不佳/生病) + +## 参与开发 + +欢迎参与虚拟桌宠模拟器的开发! 为保证代码可维护度和游戏性,如果想要开发新的功能,请先[邮件联系](mailto:zoujin.dev@exlb.org)我想要添加的功能/玩法, 以确保该功能/玩法适用于虚拟桌宠模拟器. 以免未来提交时因不合适被拒(而造成代码浪费) +如果是修复错误或者BUG,无需联系我,修好后直接PR即可 + +当想法通过后,您可以通过 [fork](https://github.com/LorisYounger/VPet/fork) 功能拷贝代码至自己的github以方便编写自己的代码, 编写完毕后通过[pull requests](https://github.com/LorisYounger/VPet/compare) 提交 +如果您想法没有被通过,也可以另起炉灶,写个不同版本功能的桌宠软件. 但需遵守 [Apache License 2.0](https://github.com/LorisYounger/VPet/blob/main/LICENSE) 与 [动画版权声明与授权](https://github.com/LorisYounger/VPet#%E5%8A%A8%E7%94%BB%E7%89%88%E6%9D%83%E5%A3%B0%E6%98%8E%E4%B8%8E%E6%8E%88%E6%9D%83) + +我可能会对您的提交的代码进行修改,删减等以确保该功能/玩法适用于虚拟桌宠模拟器. + +感谢以下参与的开发人员(按贡献程度排序) + +* 占位符 + +## 动画版权声明与授权 + +在github中 [VPet/VPet-Simulator.Windows/mod/0000_core/pet/vup/](https://github.com/LorisYounger/VPet/tree/main/VPet-Simulator.Windows/mod/0000_core/pet/vup) 动画版权归 [虚拟主播模拟器制作组](https://www.exlb.net/VUP-Simulator)所有, 当使用本类库时,您可能需要自行准备动画文件,或遵循以下协议 + +### 非商用用途授权 + +* 需要向用户告知动画文件来源并提供访问 [该页面](https://github.com/LorisYounger/VPet) 的链接 +* 当您完成以上要求后,您可以免费使用动画文件 + +### 商用用途授权(低于10万) + +* 第一次使用时需弹窗并醒目的向用户告知动画文件来源并提供访问 [该页面](https://github.com/LorisYounger/VPet) 的链接 +* 在相应页面(用户可以快捷访问)向用户告知动画文件来源并提供访问 [该页面](https://github.com/LorisYounger/VPet) 的链接 +* 当您完成以上要求后,您可以免费使用动画文件 + +### 商用用途授权(高于10万或其他) + +* 请[邮件联系](mailto:zoujin.dev@exlb.org)我 + +### 分发动画文件 + +* 需要告知以上所有授权信息 +* 需要提供访问 [该页面](https://github.com/LorisYounger/VPet) 的链接 +* 分发动画文件时禁止任何付费/收费行为 \ No newline at end of file diff --git a/VPet-Simulator.Core/Handle/Setting.cs b/VPet-Simulator.Core/Handle/Setting.cs index d719bc4..15407a5 100644 --- a/VPet-Simulator.Core/Handle/Setting.cs +++ b/VPet-Simulator.Core/Handle/Setting.cs @@ -12,6 +12,13 @@ namespace VPet_Simulator.Core /// public class Setting : LpsDocument { + public Setting(string lps) : base(lps) + { + } + public Setting() : base() + { + } + /// /// 窗体宽度 /// diff --git a/VPet-Simulator.Core/VPet-Simulator.Core.csproj b/VPet-Simulator.Core/VPet-Simulator.Core.csproj index 6060b48..a6fa848 100644 --- a/VPet-Simulator.Core/VPet-Simulator.Core.csproj +++ b/VPet-Simulator.Core/VPet-Simulator.Core.csproj @@ -31,6 +31,42 @@ prompt 4 + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + 7.3 + prompt + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + 7.3 + prompt + + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + ..\packages\LinePutScript.1.5.4\lib\net462\LinePutScript.dll diff --git a/VPet-Simulator.Tool/VPet-Simulator.Tool.csproj b/VPet-Simulator.Tool/VPet-Simulator.Tool.csproj index ef926de..f59ed15 100644 --- a/VPet-Simulator.Tool/VPet-Simulator.Tool.csproj +++ b/VPet-Simulator.Tool/VPet-Simulator.Tool.csproj @@ -32,6 +32,46 @@ prompt 4 + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + 7.3 + prompt + true + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + 7.3 + prompt + true + + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + true + diff --git a/VPet-Simulator.Windows/MainWindow.xaml.cs b/VPet-Simulator.Windows/MainWindow.xaml.cs index e0968c4..39b6c0c 100644 --- a/VPet-Simulator.Windows/MainWindow.xaml.cs +++ b/VPet-Simulator.Windows/MainWindow.xaml.cs @@ -1,4 +1,5 @@ -using System; +using Steamworks; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -25,8 +26,34 @@ namespace VPet_Simulator.Windows public partial class MainWindow : Window { public readonly string ModPath = Environment.CurrentDirectory + @"\mod"; + public readonly bool IsSteamUser; + public Setting Set; public MainWindow() { + //判断是不是Steam用户,因为本软件会发布到Steam + //在 https://store.steampowered.com/app/1920960/VPet + try + { + SteamClient.Init(1920960, true); + SteamClient.RunCallbacks(); + IsSteamUser = SteamClient.IsValid; + ////同时看看有没有买dlc,如果有就添加dlc按钮 + //if (Steamworks.SteamApps.IsDlcInstalled(1386450)) + // dlcToolStripMenuItem.Visible = true; + } + catch + { + IsSteamUser = false; + } + + //加载游戏设置 + if (new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"\Setting.lps").Exists) + { + Set = new Setting(File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"\Setting.lps")); + } + else + Set = new Setting(); + InitializeComponent(); //不存在就关掉 @@ -39,7 +66,7 @@ namespace VPet_Simulator.Windows } var core = new GameCore(); - core.Setting = new Setting(); + core.Setting = Set; core.Controller = new MWController(this); core.Graph = new GraphCore(); core.Save = new Save(); diff --git a/VPet-Simulator.Windows/VPet-Simulator.Windows.csproj b/VPet-Simulator.Windows/VPet-Simulator.Windows.csproj index 4e4726a..8c72dad 100644 --- a/VPet-Simulator.Windows/VPet-Simulator.Windows.csproj +++ b/VPet-Simulator.Windows/VPet-Simulator.Windows.csproj @@ -34,6 +34,46 @@ prompt 4 + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + 7.3 + prompt + true + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + 7.3 + prompt + true + + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + true + ..\packages\Panuon.WPF.1.0.1\lib\net48\Panuon.WPF.dll @@ -75,6 +115,16 @@ Code + + + ..\packages\Facepunch.Steamworks.win32.2.3.3\lib\net46\Facepunch.Steamworks.Win32.dll + + + + + ..\packages\Facepunch.Steamworks.2.3.3\lib\net46\Facepunch.Steamworks.Win64.dll + + Code @@ -108,5 +158,13 @@ VPet-Simulator.Core + + + PreserveNewest + + + PreserveNewest + + \ No newline at end of file diff --git a/VPet-Simulator.Windows/packages.config b/VPet-Simulator.Windows/packages.config index 6b1ff24..bbc255c 100644 --- a/VPet-Simulator.Windows/packages.config +++ b/VPet-Simulator.Windows/packages.config @@ -1,5 +1,7 @@  + + \ No newline at end of file diff --git a/VPet-Simulator.Windows/steam_api.dll b/VPet-Simulator.Windows/steam_api.dll new file mode 100644 index 0000000..6e0f440 Binary files /dev/null and b/VPet-Simulator.Windows/steam_api.dll differ diff --git a/VPet-Simulator.Windows/steam_api64.dll b/VPet-Simulator.Windows/steam_api64.dll new file mode 100644 index 0000000..ad13f2b Binary files /dev/null and b/VPet-Simulator.Windows/steam_api64.dll differ diff --git a/VPet.sln b/VPet.sln index b9b2a51..34cae4a 100644 --- a/VPet.sln +++ b/VPet.sln @@ -11,22 +11,36 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VPet-Simulator.Windows", "V EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7BD4CB1D-C8F3-4349-9BF0-CD11789130BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7BD4CB1D-C8F3-4349-9BF0-CD11789130BA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7BD4CB1D-C8F3-4349-9BF0-CD11789130BA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7BD4CB1D-C8F3-4349-9BF0-CD11789130BA}.Release|Any CPU.Build.0 = Release|Any CPU - {692CE45E-01A9-4500-8B1D-AFC0FE2767FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {692CE45E-01A9-4500-8B1D-AFC0FE2767FA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {692CE45E-01A9-4500-8B1D-AFC0FE2767FA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {692CE45E-01A9-4500-8B1D-AFC0FE2767FA}.Release|Any CPU.Build.0 = Release|Any CPU - {B5C2DD17-735F-4F9F-82E4-B8692AEC03F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B5C2DD17-735F-4F9F-82E4-B8692AEC03F1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B5C2DD17-735F-4F9F-82E4-B8692AEC03F1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B5C2DD17-735F-4F9F-82E4-B8692AEC03F1}.Release|Any CPU.Build.0 = Release|Any CPU + {7BD4CB1D-C8F3-4349-9BF0-CD11789130BA}.Debug|x64.ActiveCfg = Debug|x64 + {7BD4CB1D-C8F3-4349-9BF0-CD11789130BA}.Debug|x64.Build.0 = Debug|x64 + {7BD4CB1D-C8F3-4349-9BF0-CD11789130BA}.Debug|x86.ActiveCfg = Debug|x86 + {7BD4CB1D-C8F3-4349-9BF0-CD11789130BA}.Debug|x86.Build.0 = Debug|x86 + {7BD4CB1D-C8F3-4349-9BF0-CD11789130BA}.Release|x64.ActiveCfg = Release|x64 + {7BD4CB1D-C8F3-4349-9BF0-CD11789130BA}.Release|x64.Build.0 = Release|x64 + {7BD4CB1D-C8F3-4349-9BF0-CD11789130BA}.Release|x86.ActiveCfg = Release|x86 + {7BD4CB1D-C8F3-4349-9BF0-CD11789130BA}.Release|x86.Build.0 = Release|x86 + {692CE45E-01A9-4500-8B1D-AFC0FE2767FA}.Debug|x64.ActiveCfg = Debug|x64 + {692CE45E-01A9-4500-8B1D-AFC0FE2767FA}.Debug|x64.Build.0 = Debug|x64 + {692CE45E-01A9-4500-8B1D-AFC0FE2767FA}.Debug|x86.ActiveCfg = Debug|x86 + {692CE45E-01A9-4500-8B1D-AFC0FE2767FA}.Debug|x86.Build.0 = Debug|x86 + {692CE45E-01A9-4500-8B1D-AFC0FE2767FA}.Release|x64.ActiveCfg = Release|x64 + {692CE45E-01A9-4500-8B1D-AFC0FE2767FA}.Release|x64.Build.0 = Release|x64 + {692CE45E-01A9-4500-8B1D-AFC0FE2767FA}.Release|x86.ActiveCfg = Release|x86 + {692CE45E-01A9-4500-8B1D-AFC0FE2767FA}.Release|x86.Build.0 = Release|x86 + {B5C2DD17-735F-4F9F-82E4-B8692AEC03F1}.Debug|x64.ActiveCfg = Debug|x64 + {B5C2DD17-735F-4F9F-82E4-B8692AEC03F1}.Debug|x64.Build.0 = Debug|x64 + {B5C2DD17-735F-4F9F-82E4-B8692AEC03F1}.Debug|x86.ActiveCfg = Debug|x86 + {B5C2DD17-735F-4F9F-82E4-B8692AEC03F1}.Debug|x86.Build.0 = Debug|x86 + {B5C2DD17-735F-4F9F-82E4-B8692AEC03F1}.Release|x64.ActiveCfg = Release|x64 + {B5C2DD17-735F-4F9F-82E4-B8692AEC03F1}.Release|x64.Build.0 = Release|x64 + {B5C2DD17-735F-4F9F-82E4-B8692AEC03F1}.Release|x86.ActiveCfg = Release|x86 + {B5C2DD17-735F-4F9F-82E4-B8692AEC03F1}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE