---
name: settings_state.aicomponent
description: 用户设置状态管理器。管理音乐/音效开关和拖拽速度倍率等用户偏好，提供 get/set 接口供其他组件读取。
triggers: 需要管理用户音频设置、拖拽速度等游戏偏好设置时触发。
---

# 用户设置状态（Settings State）

## 说明

`SettingsManager` 管理用户偏好设置：

- `soundOn` / `musicOn`：音效/音乐开关
- `getDragSpeedMultiplier()`：拖拽棋盘速度倍率（0.5~1.5）

## Scaffold

| 目标路径 | 来源 |
|---------|-----|
| `src/game/scenes/GameUI/SettingsManager.ts` | `ref/SettingsManager.ts` |

## Skill Definition

```yaml
tools:
  - read_file
  - write_file
inputs:
  - source: src/game/scenes/GameUI/SettingsManager.ts
outputs:
  - settingsManager: SettingsManager class
```

## Imports

- `phaser.aicomponent`（硬依赖）

## Recipe

| 决策 | 原因 |
|------|------|
| **独立 Manager 而非分散状态** | 多个组件（SoundUtils、InputHandler）需要读取同一份偏好设置；集中在 SettingsManager 避免重复读取和不一致 |
| **轮询而非事件订阅** | 音效开关在播放时检查即可，拖拽速度在每帧输入处理时读取；轮询模式实现更简单，偏好变化低频 |

## Adapter

- **Role**: `settingsState` — 用户偏好设置管理器（音效/音乐开关、拖拽速度）
- **Provides**: `SettingsManager` 类（`soundOn`、`musicOn`、`getDragSpeedMultiplier()`）
- **Requires**: `phaser.aicomponent`（硬依赖）
- **Consumed by**: `sound_utils.aicomponent`（检查 `soundOn` 决定是否播放）、`path_input_handler.aicomponent`（读取拖拽速度倍率）、`game_scene.aicomponent`（持有实例并传递给子系统）
- **Integration point**: `src/game/scenes/GameUI/SettingsManager.ts` —— `game_scene` 初始化后传递给需要的子系统

## 关键接口

```typescript
class SettingsManager {
  soundOn: boolean;
  musicOn: boolean;
  getDragSpeedMultiplier(): number;
}
```
