|
|
@@ -1,9 +1,145 @@
|
|
|
-# 宠物模块
|
|
|
+# 宠物模块开发文档
|
|
|
|
|
|
-## 模块简介
|
|
|
-宠物模块是农场系统的重要组成部分,提供了宠物获取、升级、技能、战力加成等功能,丰富了游戏玩法。
|
|
|
+## 1. 核心功能模块
|
|
|
+### 1.1 宠物属性系统
|
|
|
+- **品阶体系**:4个品阶(FIRST 60%/SECOND 25%/THIRD 10%/FOURTH 5%)
|
|
|
+- **成长属性**:
|
|
|
+ - 等级:1-30级
|
|
|
+ - 战力加成:10%-100%
|
|
|
+ - 体力值:0-100(每分钟恢复5点)
|
|
|
+- **喂养机制**:
|
|
|
+ - 普通狗粮:提升基础经验
|
|
|
+ - 优质狗粮:提供双倍经验
|
|
|
|
|
|
+### 1.2 品阶系统
|
|
|
+```php
|
|
|
+enum PET_GRADE: string {
|
|
|
+ case FIRST = 'FIRST'; // 一品
|
|
|
+ case SECOND = 'SECOND'; // 二品
|
|
|
+ case THIRD = 'THIRD'; // 三品
|
|
|
+ case FOURTH = 'FOURTH'; // 四品
|
|
|
+}
|
|
|
+```
|
|
|
|
|
|
+### 1.3 技能系统
|
|
|
+| 技能名称 | 消耗体力 | 冷却时间 | 效果描述 |
|
|
|
+|------------|---------|---------|-----------------------|
|
|
|
+| 自动收菜 | 50 | 2小时 | 自动收获成熟作物 |
|
|
|
+| 自动播种 | 50 | 4小时 | 自动补种空闲土地 |
|
|
|
+| 灾害防护 | 30 | 6小时 | 防止指定类型自然灾害 |
|
|
|
|
|
|
-## 参考文档
|
|
|
-- [开心农场系统说明文档](../readme.ignore.md)
|
|
|
+### 1.4 数据库设计
|
|
|
+```sql
|
|
|
+-- 用户宠物表
|
|
|
+CREATE TABLE `user_pets` (
|
|
|
+ `id` BIGINT UNSIGNED AUTO_INCREMENT,
|
|
|
+ `user_id` BIGINT NOT NULL COMMENT '用户ID',
|
|
|
+ `name` VARCHAR(20) NOT NULL COMMENT '宠物名称',
|
|
|
+ `grade` ENUM('FIRST','SECOND','THIRD','FOURTH') NOT NULL,
|
|
|
+ `level` TINYINT UNSIGNED DEFAULT 1,
|
|
|
+ `experience` INT UNSIGNED DEFAULT 0,
|
|
|
+ `stamina` SMALLINT UNSIGNED DEFAULT 100,
|
|
|
+ `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ PRIMARY KEY (id),
|
|
|
+ INDEX idx_user (user_id)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
+
|
|
|
+-- 技能配置表
|
|
|
+CREATE TABLE `pet_skills` (
|
|
|
+ `id` INT UNSIGNED AUTO_INCREMENT,
|
|
|
+ `skill_name` VARCHAR(50) NOT NULL COMMENT '技能名称',
|
|
|
+ `stamina_cost` SMALLINT NOT NULL COMMENT '体力消耗',
|
|
|
+ `cool_down` INT COMMENT '冷却时间(秒)',
|
|
|
+ `effect_desc` TEXT COMMENT '效果描述',
|
|
|
+ PRIMARY KEY (id)
|
|
|
+) ENGINE=InnoDB;
|
|
|
+
|
|
|
+-- 技能使用日志表
|
|
|
+CREATE TABLE `pet_skill_logs` (
|
|
|
+ `id` BIGINT UNSIGNED AUTO_INCREMENT,
|
|
|
+ `pet_id` BIGINT UNSIGNED NOT NULL,
|
|
|
+ `skill_id` INT UNSIGNED NOT NULL,
|
|
|
+ `used_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ `effect_result` JSON COMMENT '技能使用结果',
|
|
|
+ PRIMARY KEY (id),
|
|
|
+ FOREIGN KEY (pet_id) REFERENCES user_pets(id),
|
|
|
+ FOREIGN KEY (skill_id) REFERENCES pet_skills(id)
|
|
|
+) ENGINE=InnoDB;
|
|
|
+
|
|
|
+-- 洗髓记录表
|
|
|
+CREATE TABLE `pet_remould_logs` (
|
|
|
+ `id` BIGINT UNSIGNED AUTO_INCREMENT,
|
|
|
+ `pet_id` BIGINT UNSIGNED NOT NULL,
|
|
|
+ `old_grade` ENUM('FIRST','SECOND','THIRD','FOURTH'),
|
|
|
+ `new_grade` ENUM('FIRST','SECOND','THIRD','FOURTH'),
|
|
|
+ `remould_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ PRIMARY KEY (id),
|
|
|
+ FOREIGN KEY (pet_id) REFERENCES user_pets(id)
|
|
|
+) ENGINE=InnoDB;
|
|
|
+```
|
|
|
+
|
|
|
+## 2. 模块目录结构
|
|
|
+```
|
|
|
+app/Module/Pet/
|
|
|
+├── Enums/
|
|
|
+│ ├── PET_GRADE.php
|
|
|
+│ └── PET_SKILL.php
|
|
|
+├── Models/
|
|
|
+│ ├── Pet.php
|
|
|
+│ ├── PetSkill.php
|
|
|
+│ └── PetSkillLog.php
|
|
|
+├── Services/
|
|
|
+│ ├── PetService.php
|
|
|
+│ └── BattleService.php
|
|
|
+├── Validations/
|
|
|
+│ └── PetValidation.php
|
|
|
+└── README.md
|
|
|
+```
|
|
|
+
|
|
|
+## 3. 核心接口示例
|
|
|
+```php
|
|
|
+class PetService {
|
|
|
+ /**
|
|
|
+ * 宠物升级逻辑
|
|
|
+ * @param Pet $pet 宠物实例
|
|
|
+ * @param int $exp 获得经验值
|
|
|
+ */
|
|
|
+ public function levelUp(Pet $pet, int $exp): void {
|
|
|
+ $pet->experience += $exp;
|
|
|
+ while ($pet->experience >= $this->getRequiredExp($pet->level)) {
|
|
|
+ $pet->level++;
|
|
|
+ $pet->stamina = min(100, $pet->stamina + 20);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private function getRequiredExp(int $level): int {
|
|
|
+ return pow(2, $level) * 100;
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+## 4. 配置参数
|
|
|
+```php
|
|
|
+// config/pet.php
|
|
|
+return [
|
|
|
+ 'max_level' => 30,
|
|
|
+ 'stamina_recovery' => 5, // 每分钟恢复体力
|
|
|
+ 'skill_cooltime' => [
|
|
|
+ 'harvest' => 7200, // 2小时
|
|
|
+ 'plant' => 14400, // 4小时
|
|
|
+ 'protect' => 21600 // 6小时
|
|
|
+ ],
|
|
|
+ 'remould_cost' => [
|
|
|
+ 'diamond' => 50, // 洗髓消耗钻石
|
|
|
+ 'item_id' => 1001 // 洗髓道具ID
|
|
|
+ ]
|
|
|
+];
|
|
|
+```
|
|
|
+
|
|
|
+## 5. 关键改进
|
|
|
+1. **数据完整性**:完善外键约束和索引配置
|
|
|
+2. **错误修复**:修正枚举定义中的拼写错误
|
|
|
+3. **文档规范**:统一SQL和PHP代码格式
|
|
|
+4. **功能完善**:优化洗髓功能设计
|
|
|
+5. **结构调整**:移除狗粮库存表,使用物品系统管理狗粮
|