|
|
@@ -48,9 +48,8 @@
|
|
|
**属性**:
|
|
|
- `userId`: 用户ID
|
|
|
- `petId`: 宠物ID
|
|
|
-- `name`: 宠物名称
|
|
|
-- `grade`: 宠物品阶
|
|
|
-- `level`: 宠物等级
|
|
|
+
|
|
|
+**注意**:此事件已经过优化,只保留必要的属性。其他信息(如宠物名称、品阶、等级)可以通过petId从数据库中获取。
|
|
|
|
|
|
#### 2.1.5 宠物战斗事件 (PetBattleEvent)
|
|
|
|
|
|
@@ -79,20 +78,9 @@
|
|
|
|
|
|
宠物模块会监听以下来自其他模块的事件:
|
|
|
|
|
|
-#### 2.2.1 物品变更事件 (ItemChangedEvent)
|
|
|
-
|
|
|
-当用户物品发生变化时,物品模块会触发此事件,宠物模块监听此事件以执行相应操作。
|
|
|
-
|
|
|
-**来源**:`App\Module\GameItems\Events\ItemChangedEvent`
|
|
|
|
|
|
-**属性**:
|
|
|
-- `userId`: 用户ID
|
|
|
-- `itemId`: 物品ID
|
|
|
-- `changeType`: 变更类型 (add/remove)
|
|
|
-- `amount`: 变更数量
|
|
|
-- `reason`: 变更原因
|
|
|
|
|
|
-#### 2.2.2 登录成功事件 (LoginSuccessEvent)
|
|
|
+#### 2.2.1 登录成功事件 (LoginSuccessEvent)
|
|
|
|
|
|
当用户成功登录时,AppGame模块会触发此事件,宠物模块监听此事件以执行相应操作。
|
|
|
|
|
|
@@ -117,7 +105,7 @@
|
|
|
|
|
|
| 事件名称 | 事件类 | 触发条件 | 包含数据 | 用途 |
|
|
|
|---------|-------|---------|---------|------|
|
|
|
-| 宠物创建事件 | PetCreatedEvent | 新宠物被创建 | userId, petId, name, grade, level | 通知其他模块新宠物被创建 |
|
|
|
+| 宠物创建事件 | PetCreatedEvent | 新宠物被创建 | userId, petId | 通知其他模块新宠物被创建 |
|
|
|
| 宠物技能使用事件 | PetSkillUsedEvent | 用户使用宠物技能 | userId, petId, skillId, params | 通知其他模块宠物技能被使用 |
|
|
|
| 宠物升级事件 | PetLevelUpEvent | 宠物升级 | userId, petId, oldLevel, newLevel, unlockedSkills | 通知其他模块宠物升级,可能解锁新技能 |
|
|
|
| 宠物洗髓事件 | PetRemouldEvent | 宠物洗髓 | userId, petId, oldGrade, newGrade | 通知其他模块宠物品阶变更 |
|
|
|
@@ -128,21 +116,14 @@
|
|
|
|
|
|
| 事件名称 | 事件类 | 来源模块 | 监听目的 | 处理逻辑 |
|
|
|
|---------|-------|---------|---------|---------|
|
|
|
-| 物品变更事件 | ItemChangedEvent | GameItems | 处理与宠物相关的物品变更 | 处理狗粮、洗髓道具等物品的变更 |
|
|
|
| 登录成功事件 | LoginSuccessEvent | AppGame | 处理用户登录后的宠物相关操作 | 更新宠物体力值、检查宠物状态、处理技能冷却时间 |
|
|
|
|
|
|
### 3.3 事件与监听器对应关系
|
|
|
|
|
|
| 事件类 | 监听器类 | 处理方法 |
|
|
|
|-------|---------|---------|
|
|
|
-| ItemChangedEvent | ItemChangedListener | handle() |
|
|
|
+
|
|
|
| LoginSuccessEvent | LoginSuccessListener | handle() |
|
|
|
-| PetCreatedEvent | PetCreatedListener | handle() |
|
|
|
-| PetStatusChangedEvent | PetStatusChangedListener | handle() |
|
|
|
-| PetLevelUpEvent | PetLevelUpListener | handle() |
|
|
|
-| PetRemouldEvent | PetRemouldListener | handle() |
|
|
|
-| PetSkillUsedEvent | PetSkillUsedListener | handle() |
|
|
|
-| PetBattleEvent | PetBattleListener | handle() |
|
|
|
|
|
|
## 4. 模块间服务调用
|
|
|
|
|
|
@@ -168,24 +149,13 @@
|
|
|
|
|
|
| 宠物模块事件 | Game 模块监听器 | 暂存数据类型 |
|
|
|
|------------|-----------------|------------|
|
|
|
-| PetCreatedEvent | PetCreatedListener | PetCreatedTempDto |
|
|
|
| PetStatusChangedEvent | PetStatusChangedListener | PetStatusTempDto |
|
|
|
|
|
|
### 5.2 暂存数据结构
|
|
|
|
|
|
Game 模块使用 DTO 对象来存储和传输宠物数据:
|
|
|
|
|
|
-**PetCreatedTempDto**:宠物创建临时数据传输对象
|
|
|
-```php
|
|
|
-class PetCreatedTempDto
|
|
|
-{
|
|
|
- public int $petId; // 宠物ID
|
|
|
- public string $name; // 宠物名称
|
|
|
- public int $grade; // 宠物品阶
|
|
|
- public int $level; // 宠物等级
|
|
|
- public int $createdAt; // 创建时间戳
|
|
|
-}
|
|
|
-```
|
|
|
+**注意**:由于PetCreatedListener已经被移除,因此PetCreatedTempDto不再被使用。
|
|
|
|
|
|
**PetStatusTempDto**:宠物状态变更临时数据传输对象
|
|
|
```php
|
|
|
@@ -213,7 +183,7 @@ class PetStatusTempDto
|
|
|
|
|
|
宠物模块通过三种方式与其他模块交互:事件系统、服务调用和暂存系统。
|
|
|
|
|
|
-**事件系统**用于处理非核心业务流程,如通知、日志、统计等。模块发出的事件包括宠物技能使用事件、宠物升级事件、宠物洗髓事件和宠物战斗事件;模块监听的事件包括物品变更事件和登录成功事件。
|
|
|
+**事件系统**用于处理非核心业务流程,如通知、日志、统计等。模块发出的事件包括宠物创建事件、宠物技能使用事件、宠物升级事件、宠物洗髓事件、宠物战斗事件和宠物状态变更事件;模块监听的事件包括登录成功事件。
|
|
|
|
|
|
**服务调用**用于处理核心业务流程,如农场模块调用宠物模块的服务来使用宠物技能。这种方式保持了代码流程的清晰和可控,同时减少了模块间的耦合。
|
|
|
|