# 画面遷移図

## 全体遷移図

```mermaid
stateDiagram-v2
    [*] --> タイトル画面

    state "タイトル画面" as TITLE {
        direction LR
        note right of TITLE
            src/scene/title.hsp
            メニュー選択による遷移
        end note
    }

    state "IRサインイン画面" as IR_SIGN_IN {
        direction LR
        note right of IR_SIGN_IN
            kshootmania.hsp（行1091-1154）
            IR オンラインログイン
        end note
    }

    state "曲選択画面" as SELECT {
        direction LR
        note right of SELECT
            src/scene/select.hsp
            楽曲・難易度・コース選択
        end note
    }

    state "プレイ前処理画面" as BEFORE_PLAY {
        direction LR
        note right of BEFORE_PLAY
            kshootmania.hsp（行955-1027）
            コースモード前処理
        end note
    }

    state "ゲームプレイ画面" as PLAY {
        direction LR
        note right of PLAY
            src/scene/play.hsp
            14サブモジュール統合
        end note
    }

    state "リザルト画面" as RESULT {
        direction LR
        note right of RESULT
            src/scene/result.hsp
            単曲成績表示
        end note
    }

    state "コースリザルト画面" as COURSE_RESULT {
        direction LR
        note right of COURSE_RESULT
            src/scene/course_result.hsp
            コース累積成績表示
        end note
    }

    state "オプション設定画面" as OPTION {
        direction LR
        note right of OPTION
            src/scene/option.hsp
            各種設定管理
        end note
    }

    state "ゲート画面" as GATE {
        direction LR
        note right of GATE
            src/scene/gate.hsp
            非対応（ダイアログ表示のみ）
        end note
    }

    %% タイトル画面からの遷移
    TITLE --> IR_SIGN_IN : メニュー選択（IRログイン）
    TITLE --> OPTION : メニュー選択（オプション設定）
    TITLE --> GATE : メニュー選択（ゲート）
    TITLE --> SELECT : メニュー選択（曲選択）※直接遷移
    TITLE --> [*] : メニュー選択（終了）

    %% IRサインインからの遷移
    IR_SIGN_IN --> TITLE : ESCキー / キャンセル
    IR_SIGN_IN --> SELECT : ログイン成功

    %% 曲選択画面からの遷移
    SELECT --> TITLE : ESCキー
    SELECT --> BEFORE_PLAY : Enterキー（曲選択確定）

    %% プレイ前処理からの遷移
    BEFORE_PLAY --> PLAY : 初期化完了
    BEFORE_PLAY --> SELECT : エラー発生

    %% ゲームプレイ画面からの遷移
    PLAY --> RESULT : ゲーム完了
    PLAY --> SELECT : ESCキー / 初期化エラー

    %% リザルト画面からの遷移
    RESULT --> SELECT : 通常終了
    RESULT --> COURSE_RESULT : コースモード完了
    RESULT --> PLAY : コースモード次曲へ

    %% コースリザルト画面からの遷移
    COURSE_RESULT --> SELECT : コース完了

    %% オプション設定からの遷移
    OPTION --> TITLE : 設定保存して戻る

    %% ゲート画面からの遷移
    GATE --> TITLE : ダイアログ表示後に戻る
```

## 遷移マトリックス

| No | 遷移元 | 遷移先 | トリガー | 根拠ファイル |
|----|--------|--------|----------|-------------|
| 1 | タイトル画面 | IRサインイン画面 | メニュー選択（IRログイン） | src/scene/title.hsp:631 |
| 2 | タイトル画面 | オプション設定画面 | メニュー選択（オプション設定） | src/scene/title.hsp:641 |
| 3 | タイトル画面 | ゲート画面 | メニュー選択（ゲート） | src/scene/title.hsp:650 |
| 4 | タイトル画面 | プレイ前処理画面 | メニュー選択（曲選択）※直接遷移 | src/scene/title.hsp:537, 549 |
| 5 | タイトル画面 | アプリケーション終了 | メニュー選択（終了） | src/scene/title.hsp |
| 6 | IRサインイン画面 | タイトル画面 | ESCキー / キャンセル | kshootmania.hsp:1127-1128 |
| 7 | IRサインイン画面 | 曲選択画面 | ログイン成功 / スキップ | kshootmania.hsp:1154 |
| 8 | 曲選択画面 | タイトル画面 | ESCキー | src/scene/select.hsp:183-184 |
| 9 | 曲選択画面 | プレイ前処理画面 | Enterキー（曲選択確定） | src/scene/select.hsp:1653, 1704 |
| 10 | プレイ前処理画面 | ゲームプレイ画面 | 初期化完了 | kshootmania.hsp:1013 |
| 11 | プレイ前処理画面 | 曲選択画面 | エラー発生 | kshootmania.hsp:1017, 1021, 1025 |
| 12 | ゲームプレイ画面 | リザルト画面 | ゲーム完了 | src/scene/play/play_key_input.hsp:131 |
| 13 | ゲームプレイ画面 | 曲選択画面 | ESCキー / 初期化エラー | src/scene/play/play_init.hsp:12, 62, 118, 744 |
| 14 | リザルト画面 | 曲選択画面 | 通常終了 | src/scene/result.hsp:23, 668 |
| 15 | リザルト画面 | コースリザルト画面 | コースモード完了 | src/scene/result.hsp:658 |
| 16 | リザルト画面 | ゲームプレイ画面 | コースモード次曲 | src/scene/result.hsp:18, 660 |
| 17 | コースリザルト画面 | 曲選択画面 | コース完了 | src/scene/course_result.hsp:11, 494 |
| 18 | オプション設定画面 | タイトル画面 | 設定保存 | src/scene/option.hsp:1071-1072 |
| 19 | ゲート画面 | タイトル画面 | ダイアログ表示後 | src/scene/gate.hsp:6-7 |
