---
name: level_state.aicomponent
description: 关卡进度状态管理器。管理当前关卡索引、加载并解析下一关数据、处理关卡循环和随机播放逻辑。
triggers: 需要管理关卡进度、加载关卡数据或实现进关逻辑时触发。
---

# 关卡进度状态（Level Progress State）

## 说明

`LevelManager` 管理关卡流转：

- 持有关卡数据列表（来自主题配置）
- 跟踪当前关卡索引
- `getCurrentLevel()`：返回当前关卡 ParsedLevel
- `nextLevel()`：进入下一关（支持循环/随机）

## Scaffold

| 目标路径 | 来源 |
|---------|-----|
| `src/game/levels/LevelManager.ts` | `ref/LevelManager.ts` |

## Skill Definition

```yaml
tools:
  - read_file
  - write_file
inputs:
  - source: src/game/levels/LevelManager.ts
outputs:
  - levelManager: LevelManager class
```

## Recipe

| 决策 | 原因 |
|------|------|
| **状态与渲染分离** | 关卡进度（当前索引、循环模式）与游戏渲染逻辑完全无关；LevelManager 作为纯状态机，GameScene 作为协调器，职责边界清晰 |
| **支持循环/随机两种进关模式** | 试玩广告的关卡通常数量有限，需要支持循环；随机模式增加重玩多样性；两种模式由 ThemeVariantConfig 的配置决定 |
| **关卡数据来自主题配置** | 不同 Remix 变体可以有完全不同的关卡集合；LevelManager 从 ThemeVariantConfig.levels 读取，关卡数据随主题一起替换 |

## Adapter

- **Role**: `levelProgressState` — 关卡进度状态机（当前关卡索引 + 进关逻辑）
- **Provides**: `LevelManager` 类（`getCurrentLevel()`、`nextLevel()`、`reset()`）
- **Requires**: `phaser.aicomponent`、`arrow_path_data_format.aicomponent`（ParsedLevel 类型 + parseLevelJson）
- **Consumed by**: `level_lifecycle.aicomponent`（调用 `nextLevel()` 推进进度）、`game_scene.aicomponent`（实例化并持有 LevelManager）
- **Integration point**: `src/game/levels/LevelManager.ts` —— `game_scene` 在 `create()` 中 `new LevelManager(themeConfig.levels)`

## Imports

- `phaser.aicomponent`（硬依赖）
- `arrow_path_data_format.aicomponent`（硬依赖：ParsedLevel 类型 + parseLevelJson）
