Files
pixelheros/.qoder/repowiki/zh/content/奖励系统/奖励配置/任务奖励配置.md
panw 4235e3b776 refactor(game): 移除已弃用的事件常量
- 删除 UpdateHero 和 UpdateFightHero 事件
- 移除 MISSION_UPDATE 事件常量
- 优化游戏事件枚举定义
2025-10-28 16:15:47 +08:00

446 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 任务奖励配置
<cite>
**本文档中引用的文件**
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts)
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts)
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts)
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts)
- [MissionHeroComp.ts](file://assets/script/game/map/MissionHeroComp.ts)
- [GameEvent.ts](file://assets/script/game/common/config/GameEvent.ts)
- [Guide.ts](file://assets/script/game/common/config/Guide.ts)
- [Initialize.ts](file://assets/script/game/initialize/Initialize.ts)
</cite>
## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构概览](#架构概览)
5. [详细组件分析](#详细组件分析)
6. [依赖关系分析](#依赖关系分析)
7. [性能考虑](#性能考虑)
8. [故障排除指南](#故障排除指南)
9. [结论](#结论)
## 简介
本文档全面解析了《英雄传说》游戏中基于Tasks.ts文件的任务奖励配置系统。该系统负责管理游戏中的各种任务类型包括新手指引任务和每日任务并实现了完整的奖励发放机制。系统采用模块化设计支持任务配置的动态加载、运行时查询和奖励数据的实时更新。
## 项目结构
任务奖励配置系统在项目中的组织结构如下:
```mermaid
graph TB
subgraph "配置层"
Tasks[Tasks.ts<br/>任务配置常量]
GameEvent[GameEvent.ts<br/>游戏事件定义]
Guide[Guide.ts<br/>引导系统]
end
subgraph "数据管理层"
SingletonModule[SingletonModuleComp.ts<br/>单例模块管理]
Initialize[Initialize.ts<br/>初始化系统]
end
subgraph "业务逻辑层"
MissionComp[MissionComp.ts<br/>任务控制组件]
VictoryComp[VictoryComp.ts<br/>胜利界面组件]
MissionHeroComp[MissionHeroComp.ts<br/>英雄任务组件]
end
subgraph "UI展示层"
MInfoComp[MInfoComp.ts<br/>任务信息组件]
MapViewComp[MapViewComp.ts<br/>地图视图组件]
end
Tasks --> MissionComp
GameEvent --> MissionComp
SingletonModule --> MissionComp
MissionComp --> VictoryComp
MissionComp --> MInfoComp
```
**图表来源**
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L13-L28)
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L1-L30)
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L1-L50)
**章节来源**
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L1-L28)
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L1-L151)
## 核心组件
### 任务配置常量
Tasks.ts文件定义了游戏中的任务配置常量数组包含以下关键字段
| 字段名 | 类型 | 描述 | 示例值 |
|--------|------|------|--------|
| id | number | 任务唯一标识符 | 0, 1 |
| name | string | 任务名称 | "新手指引", "每日任务" |
| description | string | 任务描述 | "新手指引描述", "每日任务描述" |
| reward | number | 奖励数值 | 100 |
| type | number | 任务类型(可选) | 0 |
### 用户数据管理
SingletonModuleComp.ts提供了完整的用户数据管理系统包含以下核心数据结构
| 数据字段 | 类型 | 默认值 | 描述 |
|----------|------|--------|------|
| score | number | 0 | 游戏分数 |
| mission | number | 1 | 当前关卡 |
| diamond | number | 100 | 钻石数量 |
| meat | number | 0 | 肉类资源 |
| exp | number | 0 | 经验值 |
| task | number | 0 | 任务进度 |
**章节来源**
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L13-L28)
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L37-L50)
## 架构概览
任务奖励配置系统采用分层架构设计,确保了良好的可维护性和扩展性:
```mermaid
sequenceDiagram
participant Player as 玩家
participant MissionComp as 任务控制器
participant SingletonModule as 数据管理器
participant Tasks as 任务配置
participant VictoryComp as 胜利界面
Player->>MissionComp : 开始任务
MissionComp->>Tasks : 查询任务配置
Tasks-->>MissionComp : 返回任务信息
MissionComp->>MissionComp : 执行任务逻辑
MissionComp->>Player : 显示任务进度
Player->>MissionComp : 完成任务
MissionComp->>SingletonModule : 更新用户数据
SingletonModule->>SingletonModule : 存储到云端/本地
MissionComp->>VictoryComp : 显示奖励界面
VictoryComp->>Player : 展示奖励结果
```
**图表来源**
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L70-L90)
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L81-L121)
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts#L30-L50)
## 详细组件分析
### 任务配置组件
#### Tasks.ts - 任务配置核心
任务配置组件负责定义所有可用的任务类型及其奖励规则:
```mermaid
classDiagram
class TaskConfig {
+number id
+string name
+string description
+number reward
+number type
+validateTask() boolean
+getRewardAmount() number
}
class Tasks {
+TaskConfig[] tasks
+findTaskById(id) TaskConfig
+getDailyRewards() number[]
+getTypeRewards(type) TaskConfig[]
}
Tasks --> TaskConfig : "包含多个"
```
**图表来源**
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L13-L28)
#### 任务类型与奖励规则
系统支持多种任务类型,每种类型具有不同的奖励计算规则:
| 任务类型 | ID | 奖励计算 | 特殊规则 |
|----------|----|---------|---------|
| 新手指引 | 0 | 固定奖励 | 一次性奖励,不可重复 |
| 每日任务 | 1 | 固定奖励 | 每日刷新,可重复完成 |
**章节来源**
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L13-L28)
### 任务执行组件
#### MissionComp.ts - 任务控制中心
任务控制组件管理整个任务生命周期,包括任务开始、执行和完成:
```mermaid
flowchart TD
Start([任务开始]) --> LoadConfig["加载任务配置"]
LoadConfig --> InitData["初始化任务数据"]
InitData --> MonitorEvents["监控游戏事件"]
MonitorEvents --> EventCheck{"事件检查"}
EventCheck --> |怪物死亡| UpdateProgress["更新任务进度"]
EventCheck --> |英雄死亡| CheckGameOver{"检查游戏结束"}
EventCheck --> |任务完成| RewardCalculation["计算奖励"]
UpdateProgress --> MonitorEvents
CheckGameOver --> |失败| EndMission["结束任务"]
CheckGameOver --> |继续| MonitorEvents
RewardCalculation --> AwardRewards["发放奖励"]
AwardRewards --> ShowVictory["显示胜利界面"]
ShowVictory --> EndMission
EndMission --> ResetData["重置任务数据"]
ResetData --> End([任务结束])
```
**图表来源**
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L70-L150)
#### 奖励发放机制
奖励发放通过以下流程实现:
```mermaid
sequenceDiagram
participant MissionComp as 任务控制器
participant SingletonModule as 数据管理器
participant VictoryComp as 胜利界面
participant Player as 玩家
MissionComp->>MissionComp : 检查任务完成条件
MissionComp->>MissionComp : 计算奖励数值
MissionComp->>SingletonModule : 更新用户数据
SingletonModule->>SingletonModule : 验证数据完整性
SingletonModule->>SingletonModule : 同步到云端/本地
SingletonModule-->>MissionComp : 确认更新成功
MissionComp->>VictoryComp : 打开胜利界面
VictoryComp->>Player : 显示奖励详情
Player->>VictoryComp : 确认奖励领取
VictoryComp->>MissionComp : 完成奖励流程
```
**图表来源**
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L47-L50)
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts#L30-L50)
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L120-L140)
**章节来源**
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L47-L50)
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts#L30-L50)
### 用户数据管理组件
#### SingletonModuleComp.ts - 数据管理中心
数据管理中心负责维护玩家的全局状态和持久化存储:
```mermaid
classDiagram
class SingletonModuleComp {
+Object data
+Object vmdata
+number fight_hero
+Array heros
+Array monsters
+updateGold(amount) boolean
+updateFihgtHero(heroId) boolean
+addHero(hero_uuid) boolean
+updateCloudData() boolean
+getCloudData() void
}
class UserData {
+number gold
+number exp
+number diamond
+number meat
+number task
+number score
+number mission
}
class MissionData {
+number mon_num
+number hero_num
+number fight_time
+boolean in_fight
+number level
+number coin
}
SingletonModuleComp --> UserData : "管理"
SingletonModuleComp --> MissionData : "管理"
```
**图表来源**
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L37-L50)
**章节来源**
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L37-L87)
### 初始化系统
#### Initialize.ts - 系统初始化
初始化系统负责在游戏启动时加载必要的配置和数据:
```mermaid
flowchart TD
Start([游戏启动]) --> CheckPlatform{"检查平台"}
CheckPlatform --> |微信客户端| LoadCloud["加载云端数据"]
CheckPlatform --> |其他平台| LoadLocal["加载本地数据"]
LoadCloud --> LoginCloud["云端登录"]
LoginCloud --> ValidateData{"验证数据"}
ValidateData --> |成功| OverrideLocal["覆盖本地数据"]
ValidateData --> |失败| UseDefault["使用默认数据"]
LoadLocal --> UseDefault
OverrideLocal --> InitComplete["初始化完成"]
UseDefault --> InitComplete
InitComplete --> StartGame["启动游戏"]
```
**图表来源**
- [Initialize.ts](file://assets/script/game/initialize/Initialize.ts#L80-L140)
**章节来源**
- [Initialize.ts](file://assets/script/game/initialize/Initialize.ts#L80-L140)
## 依赖关系分析
任务奖励配置系统的依赖关系如下:
```mermaid
graph LR
subgraph "外部依赖"
OopsFramework[Oops Framework]
WeChatAPI[微信API]
end
subgraph "内部模块"
Tasks[Tasks配置]
GameEvent[游戏事件]
SingletonModule[单例模块]
MissionComp[任务组件]
VictoryComp[胜利组件]
end
Tasks --> MissionComp
GameEvent --> MissionComp
SingletonModule --> MissionComp
MissionComp --> VictoryComp
SingletonModule --> WeChatAPI
MissionComp --> OopsFramework
VictoryComp --> OopsFramework
```
**图表来源**
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L1-L10)
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L1-L15)
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L1-L15)
**章节来源**
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L1-L10)
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L1-L15)
## 性能考虑
### 任务配置加载优化
1. **静态配置缓存**:任务配置作为常量数组,在游戏启动时一次性加载到内存
2. **按需查询**通过ID索引快速定位特定任务配置
3. **类型检查**:运行时验证任务配置的完整性
### 数据更新性能
1. **批量更新**:将多个数据变更合并为单次更新操作
2. **异步处理**:云端数据同步采用异步方式,避免阻塞主线程
3. **增量更新**:只更新发生变化的数据项
### 内存管理
1. **对象池**:复用任务相关对象,减少垃圾回收压力
2. **弱引用**:对临时对象使用弱引用,便于及时回收
3. **定时清理**:定期清理过期的任务数据
## 故障排除指南
### 常见问题及解决方案
#### 任务奖励未发放
**问题症状**:任务完成后未获得预期奖励
**排查步骤**
1. 检查任务配置中的reward字段是否正确设置
2. 验证用户数据更新逻辑是否正常执行
3. 确认云端同步功能是否工作正常
**解决方案**
```typescript
// 检查任务配置
if (!task.reward || task.reward <= 0) {
console.error("任务奖励配置错误:", task);
return false;
}
// 验证数据更新
if (!smc.updateGold(task.reward)) {
console.error("奖励发放失败");
return false;
}
```
#### 任务进度不更新
**问题症状**:任务进度显示异常或不更新
**排查步骤**
1. 检查GameEvent监听器是否正确注册
2. 验证任务完成条件判断逻辑
3. 确认UI组件的数据绑定是否正确
#### 云端数据同步失败
**问题症状**:本地数据与云端数据不一致
**排查步骤**
1. 检查网络连接状态
2. 验证微信API初始化是否成功
3. 查看错误日志获取详细信息
**解决方案**
```typescript
// 云端数据同步检查
async function syncDataWithCloud() {
try {
const result = await smc.updateCloudData();
if (!result) {
throw new Error("云端数据同步失败");
}
console.log("数据同步成功");
} catch (error) {
console.error("数据同步异常:", error);
// 回滚到本地数据
smc.getCloudData();
}
}
```
**章节来源**
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L81-L121)
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L47-L50)
## 结论
《英雄传说》任务奖励配置系统通过模块化的设计和清晰的职责分离,实现了高效、可靠的任务管理功能。系统支持多种任务类型,具备完善的奖励发放机制,并提供了灵活的扩展接口。
### 系统优势
1. **配置灵活**通过Tasks.ts文件集中管理任务配置
2. **数据安全**:支持云端和本地双重存储机制
3. **性能优化**:采用缓存和异步处理提升响应速度
4. **易于维护**:清晰的代码结构和完善的错误处理
### 扩展建议
1. **任务类型扩展**:增加更多任务类型如成就任务、挑战任务
2. **奖励多样化**:支持多种奖励类型如道具、技能等
3. **数据分析**:添加任务完成率统计和玩家行为分析
4. **社交功能**:支持任务分享和好友竞争功能
该系统为游戏提供了坚实的任务管理基础,能够有效支撑游戏的核心玩法和用户粘性。