---
name: preloader_scene.aicomponent
description: Phaser 预加载场景。负责加载所有游戏资产（图片/音频）并显示 Loading UI，加载完成后调用 sdk.start() 通知投放平台，再切换到 Game 主场景。
triggers: 需要实现游戏资产预加载场景时触发。
---

# 预加载场景（Preloader Scene）

## 说明

`Preloader` 场景负责：

1. 加载所有图片（logo/win/lose/nomove_hint/figer/time/win_dot/normal_dot 等）
2. 加载所有音频（bg/click/appear/success/fail/lose 等）
3. 显示 Loading UI（logo + 进度 dots 动画）
4. 加载完成后调用 `sdk.start()` 通知投放平台
5. 切换到 `Game` 主场景

## Scaffold

| 目标路径 | 来源 | 说明 |
|---------|-----|-----|
| `src/game/scenes/Preloader.ts` | `ref/Preloader.ts` | 完整预加载场景 |

## Recipe

| 决策 | 原因 |
|------|------|
| **加载完成才调用 sdk.start()** | 投放平台（腾讯游戏 SDK）需要 `sdk.start()` 作为"可玩广告就绪"信号；在 Preloader 完成后统一调用，避免 Game 场景未加载就触发交互 |
| **从 Game 场景分离** | 资产加载（IO 密集）与游戏逻辑（CPU 密集）职责完全不同；分离后 Game.ts 不需要处理加载状态，更纯粹 |
| **软槽位 loading_screen** | Loading UI 的品牌视觉（logo、星评）需要跨 Remix 替换；软槽位允许 Preloader 逻辑不变，只换显示组件 |

## Adapter

- **Role**: `preloaderScene` — Phaser 预加载场景（加载资产 → sdk.start() → 切换到 Game）
- **Provides**: `Preloader` class（Phaser 场景）
- **Requires**: `phaser.aicomponent`、`phaser_scene_lifecycle.aicomponent`、`tencent_playable_sdk.aicomponent`、`loading_screen.aicomponent`（软槽位 Loading UI）
- **Consumed by**: `phaser.aicomponent` 的 `scene: [Preloader, Game]` 注册（排在 Game 之前启动）
- **Integration point**: `src/game/scenes/Preloader.ts` → `src/game/index.ts` `scene: [Preloader, Game]` 第一个场景

## Imports

- `phaser.aicomponent`（硬依赖）
- `phaser_scene_lifecycle.aicomponent`（硬依赖：双场景架构）
- `tencent_playable_sdk.aicomponent`（硬依赖：sdk.start()）
- `loading_screen.aicomponent`（软槽位：Loading UI 组件）

## Skill Definition

```yaml
tools:
  - read_file
  - write_file
inputs:
  - source: src/game/scenes/Preloader.ts
outputs:
  - preloader: Phaser Preloader scene class
```
