# 地图/关卡进度 ## 分类 - 项目功能 ## 目的 记录地图、关卡、波次、进度奖励和关卡状态。 ## 已知线索 - 地图逻辑:`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() -> 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/.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 ``` 当前接入状态: - 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、网络、事件、配置等框架 |