|
|
@@ -1,514 +0,0 @@
|
|
|
-# 宠物模块开发计划
|
|
|
-
|
|
|
-## 1. 当前状态分析
|
|
|
-
|
|
|
-宠物模块已经完成了基础框架的搭建,包括:
|
|
|
-
|
|
|
-- 数据库表结构设计和SQL文件生成
|
|
|
-- 基础模型类定义
|
|
|
-- 枚举类定义(PetGrade、PetStatus)
|
|
|
-- 事件类定义(PetBattleEvent、PetLevelUpEvent、PetRemouldEvent、PetSkillUsedEvent、PetStatusChangedEvent)
|
|
|
-- 部分监听器实现(ItemChangedListener、LoginSuccessListener)
|
|
|
-- 后台管理控制器实现
|
|
|
-- 仓库类基础结构
|
|
|
-
|
|
|
-目前模块处于初始阶段,核心业务逻辑尚未实现,包括服务层、逻辑层、验证器等。
|
|
|
-
|
|
|
-## 2. 开发目标
|
|
|
-
|
|
|
-完成宠物模块的核心功能实现,包括:
|
|
|
-
|
|
|
-1. 宠物基础功能:创建、升级、喂养、洗髓
|
|
|
-2. 宠物技能系统:技能解锁、使用、冷却
|
|
|
-3. 与其他模块的集成:物品系统、农场系统、任务系统
|
|
|
-
|
|
|
-注:宠物战斗系统和争霸赛系统暂不开发
|
|
|
-
|
|
|
-## 3. 开发计划
|
|
|
-
|
|
|
-### 3.1 第一阶段:核心服务和逻辑实现(当前)
|
|
|
-
|
|
|
-#### 3.1.1 服务层实现
|
|
|
-
|
|
|
-- [x] **PetService**:对外提供宠物相关服务
|
|
|
- - [x] 获取用户宠物列表
|
|
|
- - [x] 创建宠物
|
|
|
- - [x] 宠物升级
|
|
|
- - [x] 宠物喂养
|
|
|
- - [x] 宠物洗髓
|
|
|
- - [x] 宠物技能使用
|
|
|
- - [x] 宠物状态管理
|
|
|
-
|
|
|
-#### 3.1.2 逻辑层实现
|
|
|
-
|
|
|
-- [x] **PetLogic**:内部宠物逻辑处理
|
|
|
- - [x] 宠物创建逻辑
|
|
|
- - [x] 宠物升级逻辑
|
|
|
- - [x] 宠物经验计算
|
|
|
- - [x] 宠物体力恢复
|
|
|
- - [x] 宠物状态变更
|
|
|
- - [x] 宠物技能逻辑
|
|
|
- - [x] 宠物洗髓逻辑
|
|
|
-
|
|
|
-#### 3.1.3 验证器实现
|
|
|
-
|
|
|
-- [x] **PetCreateValidator**:宠物创建验证
|
|
|
- - [x] 宠物名称验证
|
|
|
- - [x] 宠物数量限制验证
|
|
|
-
|
|
|
-- [x] **PetLevelUpValidator**:宠物升级验证
|
|
|
- - [x] 宠物状态验证
|
|
|
- - [x] 宠物经验验证
|
|
|
-
|
|
|
-- [x] **PetFeedValidator**:宠物喂养验证
|
|
|
- - [x] 宠物状态验证
|
|
|
- - [x] 物品类型验证
|
|
|
-
|
|
|
-- [x] **PetRemouldValidator**:宠物洗髓验证
|
|
|
- - [x] 宠物状态验证
|
|
|
- - [x] 洗髓道具验证
|
|
|
-
|
|
|
-- [x] **PetSkillUseValidator**:宠物技能使用验证
|
|
|
- - [x] 技能使用条件验证
|
|
|
- - [x] 技能冷却验证
|
|
|
-
|
|
|
-- [x] **PetStatusChangeValidator**:宠物状态变更验证
|
|
|
- - [x] 状态变更规则验证
|
|
|
-
|
|
|
-- [x] **PetFoodValidator**:宠物口粮验证
|
|
|
- - [x] 根据物品属性判断是否为宠物口粮
|
|
|
-
|
|
|
-### 3.2 第二阶段:事件系统完善
|
|
|
-
|
|
|
-#### 3.2.1 事件系统实现
|
|
|
-
|
|
|
-- [x] **对内监听器**:监听其他模块的事件
|
|
|
- - [x] **ItemChangedListener**:监听物品变更事件,处理宠物口粮和洗髓道具
|
|
|
- - [x] **LoginSuccessListener**:监听登录成功事件,处理宠物体力恢复等
|
|
|
-
|
|
|
-- [x] **对外事件**:提供给其他模块监听的事件
|
|
|
- - [x] **PetStatusChangedEvent**:宠物状态变更事件
|
|
|
- - [x] **PetLevelUpEvent**:宠物升级事件
|
|
|
- - [x] **PetRemouldEvent**:宠物洗髓事件
|
|
|
- - [x] **PetSkillUsedEvent**:宠物技能使用事件
|
|
|
-
|
|
|
-#### 3.2.2 事件注册
|
|
|
-
|
|
|
-- [x] 在PetServiceProvider中注册模块间通信的事件和监听器
|
|
|
-
|
|
|
-### 3.3 第三阶段:宠物技能系统完善
|
|
|
-
|
|
|
-- [ ] **技能效果实现**:实现各种宠物技能效果
|
|
|
-- [ ] **技能解锁机制**:完善技能解锁条件和机制
|
|
|
-- [ ] **技能冷却管理**:优化技能冷却时间管理
|
|
|
-- [ ] **技能使用记录**:完善技能使用记录和统计
|
|
|
-
|
|
|
-### 3.4 第四阶段:与其他模块集成
|
|
|
-
|
|
|
-- [ ] 与物品模块集成:狗粮、洗髓道具等物品处理
|
|
|
-- [ ] 与农场模块集成:宠物技能对农场的影响
|
|
|
-- [ ] 与任务模块集成:宠物相关任务
|
|
|
-
|
|
|
-### 3.5 第五阶段:测试和优化
|
|
|
-
|
|
|
-- [ ] 单元测试编写
|
|
|
-- [ ] 性能优化
|
|
|
-- [ ] 代码重构和优化
|
|
|
-
|
|
|
-## 4. 当前任务
|
|
|
-
|
|
|
-### 4.1 优先实现的功能
|
|
|
-
|
|
|
-1. **宠物技能系统**:完善宠物技能功能
|
|
|
- - 技能效果实现
|
|
|
- - 技能解锁机制
|
|
|
- - 技能冷却管理
|
|
|
- - 技能使用记录
|
|
|
-
|
|
|
-2. **与农场模块集成**:实现宠物技能对农场的影响
|
|
|
- - 自动收菜技能
|
|
|
- - 自动播种技能
|
|
|
- - 灾害防护技能
|
|
|
-
|
|
|
-3. **与物品模块集成**:完善物品使用效果
|
|
|
- - 宠物口粮使用效果
|
|
|
- - 洗髓道具使用效果
|
|
|
- - 技能道具使用效果
|
|
|
-
|
|
|
-### 4.2 具体实现步骤
|
|
|
-
|
|
|
-1. 完善PetLogic类中的技能效果实现
|
|
|
-2. 实现与农场模块的接口调用
|
|
|
-3. 完善ItemChangedListener,处理更多物品类型
|
|
|
-4. 优化宠物状态管理和事件处理
|
|
|
-5. 添加更多宠物技能类型和效果
|
|
|
-
|
|
|
-## 5. 开发进度跟踪
|
|
|
-
|
|
|
-| 功能模块 | 状态 | 开始日期 | 完成日期 | 备注 |
|
|
|
-|---------|------|---------|---------|------|
|
|
|
-| 数据库设计 | 已完成 | - | - | 包括10个数据表 |
|
|
|
-| 模型定义 | 已完成 | - | - | 包括10个模型类 |
|
|
|
-| 枚举定义 | 已完成 | - | - | PetGrade、PetStatus |
|
|
|
-| 事件定义 | 已完成 | - | - | 5个事件类 |
|
|
|
-| 监听器 | 已完成 | - | - | 已实现5个监听器 |
|
|
|
-| 后台控制器 | 已完成 | - | - | 10个控制器 |
|
|
|
-| 仓库类 | 已完成 | - | - | 10个仓库类 |
|
|
|
-| 服务层 | 已完成 | - | - | 已实现PetService |
|
|
|
-| 逻辑层 | 已完成 | - | - | 已实现PetLogic |
|
|
|
-| 验证器 | 已完成 | - | - | 已实现7个验证器 |
|
|
|
-| 技能系统 | 部分完成 | - | - | 已实现基础功能 |
|
|
|
-| 与其他模块集成 | 部分完成 | - | - | 已实现物品变更监听 |
|
|
|
-
|
|
|
-## 6. 下一步工作计划
|
|
|
-
|
|
|
-1. 完善宠物技能系统
|
|
|
- - 实现更多技能效果
|
|
|
- - 优化技能解锁机制
|
|
|
- - 完善技能冷却管理
|
|
|
-
|
|
|
-2. 加强与农场模块的集成
|
|
|
- - 实现自动收菜技能
|
|
|
- - 实现自动播种技能
|
|
|
- - 实现灾害防护技能
|
|
|
-
|
|
|
-3. 完善与物品模块的集成
|
|
|
- - 增加更多宠物口粮类型
|
|
|
- - 增加更多洗髓道具效果
|
|
|
- - 增加技能道具系统
|
|
|
-
|
|
|
-4. 优化宠物状态管理
|
|
|
- - 完善状态变更逻辑
|
|
|
- - 增加状态效果系统
|
|
|
- - 优化状态变更事件处理
|
|
|
-
|
|
|
-## 7. 注意事项
|
|
|
-
|
|
|
-1. 所有模型类中需要保持无业务逻辑,业务逻辑应放在逻辑层
|
|
|
-2. 服务层类中的所有方法应该是静态方法,对外提供服务
|
|
|
-3. 服务层不负责事务管理,调用方需要自行开启和管理事务
|
|
|
-4. 验证器类应单独实现,不应在模型中进行验证
|
|
|
-5. 事件用于模块间通信,模块内部不应使用事件机制
|
|
|
-6. 宠物模块与物品模块的集成应通过监听物品变更事件实现
|
|
|
-7. 宠物口粮验证应根据物品的pet_power/pet_exp属性判断
|
|
|
-
|
|
|
-## 8. 宠物模块与其他模块的交互
|
|
|
-
|
|
|
-### 8.1 与物品模块的交互
|
|
|
-
|
|
|
-- **监听物品变更事件**:处理宠物口粮、洗髓道具等物品的变更
|
|
|
-- **调用物品服务**:消耗宠物口粮、洗髓道具等物品
|
|
|
-
|
|
|
-### 8.2 与农场模块的交互
|
|
|
-
|
|
|
-- **提供宠物技能服务**:供农场模块调用宠物技能
|
|
|
-- **监听农场事件**:响应农场中的特定事件(如灾害发生)
|
|
|
-
|
|
|
-### 8.3 与任务模块的交互
|
|
|
-
|
|
|
-- **提供宠物状态查询服务**:供任务模块检查宠物相关任务条件
|
|
|
-- **触发任务完成事件**:当宠物达成特定条件时
|
|
|
-
|
|
|
-## 9. 宠物技能系统详细设计
|
|
|
-
|
|
|
-### 9.1 技能类型
|
|
|
-
|
|
|
-1. **自动收菜**:消耗50点体力,冷却2小时,自动收获成熟作物
|
|
|
-2. **自动播种**:消耗50点体力,冷却4小时,自动补种空闲土地
|
|
|
-3. **灾害防护**:消耗30点体力,冷却6小时,防止指定类型自然灾害
|
|
|
-
|
|
|
-### 9.2 技能解锁条件
|
|
|
-
|
|
|
-- **自动收菜**:宠物等级≥5
|
|
|
-- **自动播种**:宠物等级≥10
|
|
|
-- **灾害防护**:宠物等级≥15
|
|
|
-
|
|
|
-### 9.3 技能效果实现
|
|
|
-
|
|
|
-- **自动收菜**:调用农场模块的收获接口
|
|
|
-- **自动播种**:调用农场模块的播种接口
|
|
|
-- **灾害防护**:设置农场模块的灾害防护标志
|
|
|
-
|
|
|
-## 10. 宠物争霸赛系统详细设计
|
|
|
-
|
|
|
-### 10.1 赛季管理
|
|
|
-
|
|
|
-- 赛季创建、开始、结束
|
|
|
-- 奖池设置
|
|
|
-- Boss战力设置
|
|
|
-
|
|
|
-### 10.2 队伍管理
|
|
|
-
|
|
|
-- 队伍创建、解散
|
|
|
-- 成员加入、退出
|
|
|
-- 队伍战力计算
|
|
|
-
|
|
|
-### 10.3 战斗系统
|
|
|
-
|
|
|
-- Boss战斗机制
|
|
|
-- 伤害计算
|
|
|
-- 战斗结果记录
|
|
|
-
|
|
|
-### 10.4 奖励分配
|
|
|
-
|
|
|
-- 首胜奖励模式
|
|
|
-- 伤害占比奖励模式
|
|
|
-- 奖励发放机制
|
|
|
-
|
|
|
-## 11. 宠物喂养系统详细设计
|
|
|
-
|
|
|
-### 11.1 喂养机制
|
|
|
-
|
|
|
-- **普通狗粮**:提供基础经验值
|
|
|
-- **优质狗粮**:提供双倍经验值
|
|
|
-- **特殊狗粮**:提供额外属性加成
|
|
|
-
|
|
|
-### 11.2 喂养效果
|
|
|
-
|
|
|
-- **经验获取**:根据狗粮类型和品质获得不同经验值
|
|
|
-- **体力恢复**:部分狗粮可以恢复宠物体力
|
|
|
-- **状态变更**:喂养过程中宠物状态变为FEEDING
|
|
|
-
|
|
|
-### 11.3 喂养限制
|
|
|
-
|
|
|
-- **冷却时间**:每次喂养后有短暂冷却时间
|
|
|
-- **每日上限**:每日喂养次数有上限
|
|
|
-- **体力消耗**:喂养过程消耗少量体力
|
|
|
-
|
|
|
-## 12. 宠物洗髓系统详细设计
|
|
|
-
|
|
|
-### 12.1 洗髓机制
|
|
|
-
|
|
|
-- **消耗资源**:钻石或特定道具
|
|
|
-- **概率计算**:根据配置的品阶概率进行随机
|
|
|
-- **品阶变更**:可能提升或降低品阶
|
|
|
-
|
|
|
-### 12.2 洗髓效果
|
|
|
-
|
|
|
-- **属性重置**:根据新品阶重新计算属性加成
|
|
|
-- **技能影响**:部分技能可能受品阶影响
|
|
|
-- **外观变化**:不同品阶可能有不同外观
|
|
|
-
|
|
|
-### 12.3 洗髓记录
|
|
|
-
|
|
|
-- **记录保存**:每次洗髓结果记录到pet_remould_logs表
|
|
|
-- **历史查询**:玩家可查看历史洗髓记录
|
|
|
-
|
|
|
-## 13. 宠物战斗系统详细设计
|
|
|
-
|
|
|
-### 13.1 战斗类型
|
|
|
-
|
|
|
-- **偷菜战斗**:宠物参与偷取其他玩家农场作物的战斗
|
|
|
-- **守护战斗**:宠物守护自己农场的战斗
|
|
|
-- **争霸赛战斗**:宠物参与争霸赛的战斗
|
|
|
-
|
|
|
-### 13.2 战力计算
|
|
|
-
|
|
|
-- **基础战力**:根据宠物等级和品阶计算
|
|
|
-- **属性加成**:根据宠物数值属性计算加成
|
|
|
-- **品阶加成**:不同品阶有不同战力加成系数
|
|
|
-- **装备加成**:特殊装备可提供额外战力
|
|
|
-
|
|
|
-### 13.3 战斗结果计算
|
|
|
-
|
|
|
-- **偷菜战斗**:根据攻守双方战力差计算成功率
|
|
|
-- **守护战斗**:根据守护宠物战力计算防御成功率
|
|
|
-- **争霸赛战斗**:根据队伍总战力与Boss战力对比计算伤害
|
|
|
-
|
|
|
-### 13.4 战斗奖励
|
|
|
-
|
|
|
-- **偷菜战斗**:获得作物、经验值
|
|
|
-- **守护战斗**:获得守护奖励、经验值
|
|
|
-- **争霸赛战斗**:根据伤害排名获得奖池奖励
|
|
|
-
|
|
|
-## 14. 宠物模块实现计划
|
|
|
-
|
|
|
-### 14.1 第一周:基础功能实现
|
|
|
-
|
|
|
-| 日期 | 计划任务 | 负责人 |
|
|
|
-|------|---------|-------|
|
|
|
-| 第1天 | 实现PetService基础方法 | - |
|
|
|
-| 第2天 | 实现PetLogic基础逻辑 | - |
|
|
|
-| 第3天 | 实现PetValidator验证器 | - |
|
|
|
-| 第4天 | 实现PetFoodValidator验证器 | - |
|
|
|
-| 第5天 | 完善事件监听器 | - |
|
|
|
-
|
|
|
-### 14.2 第二周:技能系统实现
|
|
|
-
|
|
|
-| 日期 | 计划任务 | 负责人 |
|
|
|
-|------|---------|-------|
|
|
|
-| 第1天 | 实现PetSkillLogic基础逻辑 | - |
|
|
|
-| 第2天 | 实现技能解锁机制 | - |
|
|
|
-| 第3天 | 实现技能冷却管理 | - |
|
|
|
-| 第4天 | 实现技能效果 | - |
|
|
|
-| 第5天 | 与农场模块集成 | - |
|
|
|
-
|
|
|
-### 14.3 第三周:战斗系统实现
|
|
|
-
|
|
|
-| 日期 | 计划任务 | 负责人 |
|
|
|
-|------|---------|-------|
|
|
|
-| 第1天 | 实现PetBattleLogic基础逻辑 | - |
|
|
|
-| 第2天 | 实现战力计算 | - |
|
|
|
-| 第3天 | 实现战斗结果计算 | - |
|
|
|
-| 第4天 | 实现战斗奖励发放 | - |
|
|
|
-| 第5天 | 完善战斗记录 | - |
|
|
|
-
|
|
|
-### 14.4 第四周:争霸赛系统实现
|
|
|
-
|
|
|
-| 日期 | 计划任务 | 负责人 |
|
|
|
-|------|---------|-------|
|
|
|
-| 第1天 | 实现赛季管理 | - |
|
|
|
-| 第2天 | 实现队伍管理 | - |
|
|
|
-| 第3天 | 实现Boss战斗机制 | - |
|
|
|
-| 第4天 | 实现奖励分配 | - |
|
|
|
-| 第5天 | 系统测试与优化 | - |
|
|
|
-
|
|
|
-## 15. 接口设计
|
|
|
-
|
|
|
-### 15.1 服务层接口
|
|
|
-
|
|
|
-```php
|
|
|
-// PetService.php
|
|
|
-class PetService
|
|
|
-{
|
|
|
- // 获取用户宠物列表
|
|
|
- public static function getUserPets(int $userId): array;
|
|
|
-
|
|
|
- // 创建宠物
|
|
|
- public static function createPet(int $userId, string $name): array;
|
|
|
-
|
|
|
- // 宠物升级
|
|
|
- public static function levelUpPet(int $userId, int $petId): array;
|
|
|
-
|
|
|
- // 宠物喂养
|
|
|
- public static function feedPet(int $userId, int $petId, int $itemId, int $amount = 1): array;
|
|
|
-
|
|
|
- // 宠物洗髓
|
|
|
- public static function remouldPet(int $userId, int $petId, int $itemId = 0): array;
|
|
|
-
|
|
|
- // 使用宠物技能
|
|
|
- public static function useSkill(int $userId, int $petId, int $skillId, array $params = []): array;
|
|
|
-
|
|
|
- // 获取宠物状态
|
|
|
- public static function getPetStatus(int $userId, int $petId): array;
|
|
|
-
|
|
|
- // 更新宠物状态
|
|
|
- public static function updatePetStatus(int $userId, int $petId, int $status, string $reason = ''): bool;
|
|
|
-}
|
|
|
-
|
|
|
-// PetBattleService.php
|
|
|
-class PetBattleService
|
|
|
-{
|
|
|
- // 获取战斗记录
|
|
|
- public static function getBattleLogs(int $userId, int $petId, int $page = 1, int $pageSize = 20): array;
|
|
|
-
|
|
|
- // 发起战斗
|
|
|
- public static function startBattle(int $userId, int $petId, int $battleType, int $targetId = 0): array;
|
|
|
-
|
|
|
- // 获取战斗结果
|
|
|
- public static function getBattleResult(int $battleId): array;
|
|
|
-
|
|
|
- // 获取当前赛季信息
|
|
|
- public static function getCurrentSeason(): array;
|
|
|
-
|
|
|
- // 创建/加入队伍
|
|
|
- public static function joinTeam(int $userId, int $petId, int $teamId = 0, string $teamName = ''): array;
|
|
|
-
|
|
|
- // 退出队伍
|
|
|
- public static function leaveTeam(int $userId, int $petId): bool;
|
|
|
-
|
|
|
- // 获取队伍信息
|
|
|
- public static function getTeamInfo(int $teamId): array;
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-### 15.2 逻辑层接口
|
|
|
-
|
|
|
-```php
|
|
|
-// PetLogic.php
|
|
|
-class PetLogic
|
|
|
-{
|
|
|
- // 创建宠物
|
|
|
- public static function createPet(int $userId, string $name): array;
|
|
|
-
|
|
|
- // 宠物升级
|
|
|
- public static function levelUpPet(int $petId): array;
|
|
|
-
|
|
|
- // 计算宠物经验
|
|
|
- public static function calculateExp(int $petId, int $expGain): array;
|
|
|
-
|
|
|
- // 恢复宠物体力
|
|
|
- public static function recoverStamina(int $petId, int $minutes): int;
|
|
|
-
|
|
|
- // 变更宠物状态
|
|
|
- public static function changeStatus(int $petId, int $status, string $reason = ''): bool;
|
|
|
-}
|
|
|
-
|
|
|
-// PetSkillLogic.php
|
|
|
-class PetSkillLogic
|
|
|
-{
|
|
|
- // 检查技能是否解锁
|
|
|
- public static function checkSkillUnlocked(int $petId, int $skillId): bool;
|
|
|
-
|
|
|
- // 管理技能冷却
|
|
|
- public static function manageSkillCooldown(int $petId, int $skillId): array;
|
|
|
-
|
|
|
- // 执行技能效果
|
|
|
- public static function executeSkillEffect(int $petId, int $skillId, array $params = []): array;
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-## 16. 数据结构示例
|
|
|
-
|
|
|
-### 16.1 宠物数据结构
|
|
|
-
|
|
|
-```json
|
|
|
-{
|
|
|
- "id": 1,
|
|
|
- "user_id": 1001,
|
|
|
- "name": "小松狮",
|
|
|
- "grade": "THIRD",
|
|
|
- "level": 15,
|
|
|
- "experience": 2500,
|
|
|
- "stamina": 85,
|
|
|
- "status": 1,
|
|
|
- "created_at": "2023-05-01 10:00:00",
|
|
|
- "updated_at": "2023-05-05 15:30:00"
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-### 16.2 技能数据结构
|
|
|
-
|
|
|
-```json
|
|
|
-{
|
|
|
- "id": 1,
|
|
|
- "skill_name": "自动收菜",
|
|
|
- "stamina_cost": 50,
|
|
|
- "cool_down": 7200,
|
|
|
- "effect_desc": "自动收获成熟作物",
|
|
|
- "min_level": 5,
|
|
|
- "created_at": "2023-05-01 10:00:00",
|
|
|
- "updated_at": "2023-05-01 10:00:00"
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-### 16.3 战斗记录数据结构
|
|
|
-
|
|
|
-```json
|
|
|
-{
|
|
|
- "id": 1,
|
|
|
- "pet_id": 1,
|
|
|
- "battle_type": 1,
|
|
|
- "opponent_id": 2,
|
|
|
- "result": 1,
|
|
|
- "reward": {
|
|
|
- "exp": 100,
|
|
|
- "items": [
|
|
|
- {"id": 1001, "amount": 2},
|
|
|
- {"id": 1002, "amount": 1}
|
|
|
- ]
|
|
|
- },
|
|
|
- "battle_time": "2023-05-05 14:30:00",
|
|
|
- "created_at": "2023-05-05 14:30:00"
|
|
|
-}
|
|
|
-```
|