Files
lms ee1ff7f444 [docs][refactor]: 将旧 01~06 中文教程合并整理为 modules/frameworks 文件夹结构
- 删除 01~05 旧中文教程目录
- 将 03 核心功能教程拆分为各 framework 模块的子文档
- 06 工具脚本移入 modules/frameworks/编辑器工具/UI工具/
- 非框架内容合并进 rules/20-开发规则.md 与 rules/40-工作流清单.md
- 更新所有交叉链接与文档关联表

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 18:36:15 +08:00

148 lines
4.6 KiB
Markdown
Raw Permalink 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.
# 地图/关卡进度
## 分类
- 项目功能
## 目的
记录地图、关卡、波次、进度奖励和关卡状态。
## 已知线索
- 地图逻辑:`Assets/Game/GameHFScripte/GameFunction/Logic/MapManager/`
- 关卡资源:`Assets/Game/GameHFResource/CN/Map/Level.prefab`
- 配置线索:`XLSX_SRC/CN/Wave.xlsx`
- 网络线索:`UserRolePeripheryProgressReward*`
## 已确认内容
地图加载:
```text
HFMapManager.CreateMap(levelid, finish)
-> ClearMap()
-> HFFunCatalogue.Asset.LoadAsset(1501)
-> GetOrAddComponent<HFM_DLevelSetting>()
-> OnSetFinishLoad()
```
当前 `CreateMap` 传入了 `levelid`,但实际读取关卡配置的代码被注释:
```text
// MapInfo = HFFunCatalogue.NDB.ds_Level83D033B2TableData.ReadTableByPK(levelid);
```
地图配置数据:
- `stMapInfo` 使用 `MemoryPack`,包含障碍物/实体位置列表 `ObstaclesPos`
- `stMapEntityInfo` 包含 `Postion``EntityId``CellIndexs`
- `HF_MapEditor` 可以保存/读取地图配置文件到 `Assets/Game/GameHFResource/CN/MapInfoData/<Configuration>.txt`,但实体加载/放置代码大多处于注释状态。
- `HFM_MapSetting` 记录地图出生点、终点、Hero 引用。
- `HF_WaveInfo` 记录波次中的起止时间、怪物 id、数量和 Boss 卡显示等。
关卡/波次协议:
- `GetLevelInfo = 3004`
- `GetLevelWaveReward = 3005`
- `BattleLevelEnter = 3000`
- `BattleLevelExit = 3001`
- `BattleLevelWin = 3002`
- `BattleLevelFail = 3003`
字段线索:
```text
GetLevelInfoS2C
-> Levels
GetLevelWaveRewardC2S
-> Id
-> Wave
GetLevelWaveRewardS2C
-> Level
-> Item
BattleLevelEnterC2S
-> Id
BattleLevelWinC2S
-> Id
-> ChestType
-> KillMons
-> MaxWave
BattleLevelFailC2S
-> Id
-> MaxWave
-> KillMons
```
外围进度奖励协议:
- `GetUserRolePeripheryProgressReward1Data = 5000`
- `UserRolePeripheryClaimedProgressReward1Reward = 5001`
- `SetUserRolePeripheryLevelWaveProgress = 5901`,当前主要在 GM 调试入口看到。
字段线索:
```text
UserRolePeripheryDataProgressReward1
-> LevelId
-> MaxWave
-> State
-> ClaimedWave
GetUserRolePeripheryProgressReward1DataS2C
-> ProgressReward1 : repeated UserRolePeripheryDataProgressReward1
UserRolePeripheryClaimedProgressReward1RewardC2S
-> LevelId
UserRolePeripheryClaimedProgressReward1RewardS2C
-> Rewards : Map<int, int>
```
当前接入状态:
- PVE 战斗内波次由 `HFWaveManager` 读取 `Wave.xlsx`,属于战斗流程。
- 地图/关卡进度协议已生成,但业务 UI 和普通发送链路未确认。
- `GMWindow_GM.cs` 中有外围进度设置和领取奖励调试入口。
- 地图编辑器、关卡配置、地图实体摆放等代码保留较多注释,当前更像半接入/调试状态。
## 梳理任务
- [x] 梳理地图/关卡数据结构。
- [ ] 梳理关卡解锁、当前关卡、已通关状态。
- [x] 梳理波次和关卡配置的关系。
- [x] 梳理进度奖励领取条件和网络消息。
- [ ] 梳理地图进度如何驱动主界面或 PVE 入口。
## 待确认
- 地图是否有章节/大关/小关层级;`ChapterWindow` 有注释入口,但当前未确认实装。
- `Level` 相关配置表是否为旧表残留或当前未登记源表。
- 关卡进度是否全部由服务器维护。
- `GetLevelWaveReward` 与外围进度奖励 `ProgressReward1` 的产品边界。
- 地图进度如何驱动主界面或 PVE 入口。
## 相关框架
- [PVE/关卡战斗](PVE关卡战斗.md)
- [数据/配置框架](../../../modules/frameworks/数据配置框架.md)
- [网络框架](../../../modules/frameworks/网络系统.md)
- [UI 框架](../../../modules/frameworks/UI窗口系统/README.md)
---
## 文档关联
> 当本文档发生变更时,应同步检查以下关联文档,避免信息不一致。
| 文档 | 关联原因 |
|---|---|
| [modules/模块索引.md](../../../modules/模块索引.md) | 模块索引是项目知识总入口 |
| [modules/features/PVE关卡战斗.md](PVE关卡战斗.md) | PVE/关卡战斗 |
| [modules/frameworks/数据配置框架.md](../../../modules/frameworks/数据配置框架.md) | 数据/配置框架 |
| [modules/frameworks/网络系统.md](../../../modules/frameworks/网络系统.md) | 网络框架 |
| [modules/frameworks/UI窗口系统/README.md](../../../modules/frameworks/UI窗口系统/README.md) | UI 框架 |
| [rules/10-架构说明.md](../../../rules/10-架构说明.md) | 架构说明定义总体分层和依赖方向 |
| [rules/30-模块登记规则.md](../../../rules/30-模块登记规则.md) | 模块登记规则定义分类和状态口径 |
| TODO补充依赖的框架/模块文档 | 如 UI、网络、事件、配置等框架 |