# DyberPet
**Repository Path**: toolkit/DyberPet
## Basic Information
- **Project Name**: DyberPet
- **Description**: 呆啵桌面
- **Primary Language**: Unknown
- **License**: GPL-3.0
- **Default Branch**: PyQt5
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-12-02
- **Last Updated**: 2024-12-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
呆啵宠物 | DyberPet
旧版的呆啵宠物 (DyberPet) 是一个基于 PyQt5 的桌面宠物开发框架,现已迁移至 PySide6
简体中文 | English
⚠️ main branch 于 **10/17/2023** 同步至 PySide6 版本,此分支为 PyQt5 版本的存档
## 衍生成品导航
- **呆啵宠物 · 原神**:[项目主页](https://github.com/ChaozhongLiu/DyberPet_GenshinImpact) | [B站视频](https://www.bilibili.com/video/BV1fd4y1W7ht)
- **呆啵宠物 · 乃琳**:[微博介绍](https://m.weibo.cn/2765930401/4869193126380684) | [B站视频](https://www.bilibili.com/video/BV1qe4y1F7or)
## 快速体验 Demo
### Windows 用户
将 Release 下载至本地,双击 **``run_DyberPet.exe``** 即可
### Windows Terminal
建议首先在本地创建新的 **conda** 环境
```
conda create --name Dyber_Fluent python=3.9
conda activate Dyber_Fluent
conda install -c conda-forge apscheduler
conda install -c conda-forge pynput
pip install PyQt-Fluent-Widgets -i https://pypi.org/simple/
pip install tendo
```
将仓库下载至本地,之后运行 **``run_DyberPet.py``** 即可
### MacOS 用户
建议首先在本地创建新的 **conda** 环境
```
conda create --name Dyber_Fluent python=3.9
conda activate Dyber_Fluent
conda install -c conda-forge apscheduler
pip install pynput==1.7.6
pip install PyQt-Fluent-Widgets -i https://pypi.org/simple/
pip install tendo
```
将仓库下载至本地,之后运行 **``run_DyberPet.py``** 即可
## 用户手册
请参考用户手册,体验现有功能 (施工中)
## 开发者文档
### 素材开发
若您想要在现有功能下,开发一套新的宠物形象、动作,请参考[素材开发文档](docs/art_dev.md)
### 功能开发
若您想要在现有模块下,开发新的功能,请参考[功能开发文档](README.md) (施工中)
## 更新日志
版本更新列表
** **
**v0.3.0a - 09/24/2023**
- 添加了系统及 UI
- 基本设置 UI:替换了原本的设置,更贴近 Windows11;增加了语言切换设置
- 存档管理 UI:实装了存档系统,包括存档的导出、导入,快速存档功能
- 角色管理 UI:显示角色列表,包含启动按钮、角色信息卡片
- 存档系统改动
- 存档改动为每个角色独立
- 添加了新旧存档的自动转换代码
- 添加了存档文件的各种操作(详见 [添加了系统及 UI])
- 语言切换
- 完成了语言切换功能
- 新增了语言切换相关的文件:``langs.pro``, ``res/language``
- 部分完成了中英两种语言的翻译
- 重构了原有 UI
- 利用 PyQt5 原生功能重新实现 按分辨率和缩放改变大小
- 优化了菜单 UI,替换为 PyQt-Fluent-Widgets RoundMenu
- 将状态栏移动到了右键菜单中
- 开启计划任务时,进度条会持续出现在宠物上方
- 替换了通知窗口的关闭按钮
- 角色添加功能
- 角色管理UI基本完成
- 实现了角色添加的基本功能
**v0.2.2 - 03/14/2023**
- 数据存写大概花费0.43ms,有极小概率在该间隔内关闭软件导致数据丢失。本次优化在每次关闭前主动存储一次数据,并冻结数据,执行退出。
**v0.2.2 - 03/09/2023**
- 可以客制化番茄钟了
- 修复了狂爆物品的另一个大bug
**v0.2.2 - 03/08/2023**
- Mac不兼容通知栏关闭按钮,故优化了关闭按钮UI
**v0.2.2 - 03/07/2023**
- 附件动作的``follow_mouse``属性添加了``"x"`` 和 ``"y"``的选项,可单独跟随x或y轴
**v0.2.2 - 03/05/2023**
- 常驻动作数据结构修改,bug修复
- 同伴添加了常驻动作判定,需要在是主宠物时进行设定
**v0.2.2 - 03/04/2023**
- 添加了下落的前置动作``prefall``,将在鼠标松开后执行
- 背包分成了食物和收藏品两栏
**v0.2.2 - 03/03/2023**
- 右键菜单中增加了常驻动作选项,可以改变闲置时的默认动作,选中后将不在随机播放其他动作
**v0.2.2 - 03/02/2023**
- 交互功能添加了水平跟随目标的功能
- 添加了跟随鼠标的功能
- 目标跟随需要在``pet_conf.json``中定义``left``向左移动和 ``right``向右移动的动作
**v0.2.2 - 03/01/2023**
- 存档系统初步功能上线
**v0.2.1 - 02/25/2023**
- ``fv_reward``属性可设置为list,物品可出现在多个等级奖励中
**v0.2.1 - 02/23/2023**
- Windows系统添加了subwindow属性
- 禁用掉落时,缩放宠物不会闪回地面
**v0.2.1 - 02/22/2023**
- 优化了缩放机制
- 物品数量为1时不显示数字
- 优化了主宠物列表判断和默认宠物的保存方式
**v0.2.0 - 02/21/2023**
- MacOS 兼容性代码改进
- 增加好感度等级奖励的补偿系统
**v0.2.0 - 02/18/2023**
- 设置中添加了启动默认角色的选择
- 切换角色增加了问候通知
- 添加了 NoDropShadowWindowHint (为MacOS准备)
**v0.1.19 - 02/16/2023**
- 设置中可以静音了
- 添加了统计陪伴天数及显示铭牌的功能
**v0.1.18 - 02/12/2023**
- 对话框自动添加上一步按钮
- 调整了对特殊中文字符的长度计算
**v0.1.18 - 02/11/2023**
- 增加了附属宠物和主宠物的连接
- 保证收藏品在随机掉落中不重复出现
- 整理了可变更的系统数值
**v0.1.18 - 02/10/2023**
- 添加了对话界面和功能(暂未实装素材)
**v0.1.17 - 02/05/2023**
- 给通知系统语音添加了优先级``sound_priority``属性
- 增加了点击时的随机语音事件
- 增加了纳西妲的语音库
**v0.1.16 - 02/01/2023**
- 实现了多屏之间转移(测试中)
- 规避了专注时间0分0秒相关的闪退bug
- 解决了不能言说的狂爆物品惊天大bug
- 停止按钮按下后会立刻失效,避免多次结算
- 修复了快速点击鼠标微小位移造成闪现的bug
- 修复了召唤同伴放大时显示不全的问题
- 修复了一定条件下缩放宠物派蒙位置问题
**v0.1.15 - 01/29/2023**
- 取消屏幕缩放对图片大小的影响
- 重力加速度最小值变为0.01
- 数值栏字体固定为Times
- 设置内添加是否置顶的选项
**v0.1.14 - 01/28/2023**
- 修复了禁用掉落时不会触发摸摸事件的bug
- ``pets.json``转移到了``res/role/``
**v0.1.14 - 01/23/2023**
- ``item_config``更新
- 添加了``fv_reward``: int,将物品设定为好感度升级奖励
- 修复了label anchor未随缩放比例改变的bug
- 重力加速度最小值变为0.01
- 取消屏幕缩放比例对图片大小的影响
**v0.1.14 - 01/22/2023**
- ``pet_config['acc_act']``更新
- ``timeout``:true/false 动画结束后关闭 / 不断循环
- ``unique``:true/false 可否存在多个一样的附件
- ``closable``:true/false 可否关闭(右键菜单关闭)
- ``follow_main``:true/false 是否跟随主程序移动
- ``speed_follow_main``:int 跟随主程序的移动速度
**v0.1.13 - 01/21/2023**
- 优化了widget size的动态变化逻辑
- 修复了没有随机动作或随机动作概率为零时的报错
- 通知栏边框变为圆弧
- 饱食度下降间隔变为 2min
- ``pet_config`` 更新
- 添加了``subpet``,用来定义宠物的附属宠物
- ``item_favorite``, ``item_dislike`` 变更为``dict``, 增加了物品好感度倍率数值
- ``item_config``更新
- 添加了``type``, 可添加消耗品``consumable``和收藏品``collection``两类物品,收藏品不可使用
- ``act_config``更新
- 添加了``anchor``属性,将根据锚点自动移动动画
- 开始施工语言更换
**v0.1.12 - 01/15/2023**
- 待机动作(default)将持续进行
- 更改了数值模块的逻辑,目前所有宠物共用一套数值
- 删除了``pet_config``中的 ``gravity``, ``hp_interval``, ``fv_interval``
- 进程多开被禁止,以防数据存储混乱
- 多开禁止的情况下,为了能够让多个宠物同屏,增加了``召唤同伴``的功能
- 增加了鼠标点击触发的``摸摸事件``,宠物可定义摸摸的动作,并大概率触发向上浮动的心心,小概率获得物品掉落
- 增加了物品掉落的动画,掉落物品呈抛物线掉落在底部任务栏
**v0.1.11 - 01/07/2023**
- 添加了设置界面,可以改变大小、重力、拖拽速度、音量
- 添加了组件动作:现在支持动作包含另一个动画的功能(具体见素材开发文档)
- 物品使用添加了宠物喜爱度的分级,可设置不同的声音、动作
- 支持宠物自定义通知图标和声音,在``res/role/NAME/note/`` 中添加 (具体见素材开发文档)
- 宠物移动行为增加了屏幕边界
**v0.1.10 - 12/28/2022**
- 通知栏的图标和声音与 note_type 关联,可在 ``res/role/PETNAME/note/note_config.json`` 中自定义
**v0.1.10 - 12/27/2022**
- 更新了提醒事项的 UI
- 更新了饱食度随时间下降的计算逻辑,每一分钟都会变化,但只显示百分比,与用户定义的 ``hp_interval`` 相关
**v0.1.9 - 12/25/2022**
- 更新了番茄钟和专注时间的 UI
- 番茄钟和专注时间的开始和取消移动到了各自的界面内,不再使用菜单进行
- 专注时间可以暂停了
- 专注时间取消也会按已经行的时长获取物品奖励
**v0.1.8 - 12/21/2022**
- 界面大小加入了屏幕缩放比例的考虑
- UI 仍然没有全部完成
- 加入了圣诞限定小猫角色
**v0.1.8 - 12/19/2022**
- 交互模块QTimer变为更加精准的Timer
**v0.1.8 - 12/18/2022**
- 数值系统更新:健康值和心情值替换为 饱食度、好感度,并更新了数值系统及其 UI
- 增加了更多模块连接
- 数值改变将影响随即动作的触发几率、每个动作的具体概率
- 动作和物品将伴随好感度提升解锁
- 更多细节将在用户手册和素材开发文档中更新
- 下落动作细分为 下落中 + 落地动作 两个部分
- 更新了背包系统的 UI,后续将逐渐更新所有的 UI 界面
**v0.1.7 - 12/11/2022**
- 添加了计划任务完成后的物品掉落事件
**v0.1.7 - 12/10/2022 (大的来了)**
- 添加了背包系统,可以使用宠物获得的物品(目前只是功能测试阶段,UI极其丑陋,甚至不一致)
- 在 settings 中增加了 pet_data,用来存储宠物数值和物品的数据
- 添加了 item_data 和 ``res/items/item_config.json``,用于素材开发中设定物品属性(素材开发文档待更新)
- 完善了背包交互的一系列可能行为的系统反馈,尽可能考虑了各种情况(可能仍然有bug)
- 连接了物品使用与数值变化、动画播放
- 添加了通知系统,将取代旧版本中的对话框
- 定义了 QToaster class 及目前定义的通知类型字段
- 通知消息会伴随喵叫声
- 为物品使用和数值变化添加了通知
- 为计划任务添加了通知,删除了对话框显示(代码仍然在)
**v0.1.6 - 12/03/2022**
- 添加了提醒事项的到时提醒
- 添加了间隔提醒功能
- 关闭宠物后,备忘录会保留
- 添加了对话显示的排队系统,避免冲突
**v0.1.6 - 12/02/2022**
- 添加了专注时间功能
- 添加了番茄时钟和专注时间的倒计时
- 添加了提醒事项(备忘录)
- 该版本下,健康和心情会不断下降,暂时没有和其他功能连接,会在后续版本中添加
**v0.1.5 - 11/27/2022**
- 解决了使用 ``apscheduler`` 时 ``pyinstaller`` 的 bug
- 添加了番茄时间功能
**v0.1.5 - 11/26/2022**
- 采用 ``apscheduler`` 规范化了计划任务模块
- 增加了宠物数值相关数据的读取、修改、存储系统
- 重构了文件夹结构
**v0.1.5 - 11/25/2022**
- 增加了对话框和显示对话的功能
- 增加了计划任务模块
- 计划任务模块增加任务:运行时打招呼、健康和心情随时间下降
**v0.1.4 - 11/23/2022**
- 增加了心情数值
- 更新了呆啵宠物的图标
**v0.1.4 - 11/20/2022**
- 增加了鼠标停留时数值系统的显示 (未实装功能)
**v0.1.3 - 11/19/2022**
- 模块化重构了项目代码
**v0.1.2 - 11/14/2022**
- 最初版本上线
## 致谢
- Demo 中的部分素材来自 [daywa1kr](https://github.com/daywa1kr/Desktop-Cat)
- 框架早期的动画模块的逻辑参考了 [yanji255](https://toscode.gitee.com/yanji255/desktop_pet/)
- 框架拖拽掉落的计算逻辑参考了 [WolfChen1996](https://github.com/WolfChen1996/DesktopPet)