# 画面設計書 9-ゲート画面

## 概要

本ドキュメントは、K-Shoot MANIA のゲート画面の設計仕様を記述する。入力ゲートシーンであるが、現バージョンでは非対応のため、ダイアログを表示してタイトル画面に戻る最小限の画面である。

### 本画面の処理概要

ゲート画面は入力ゲート（INPUT GATE）機能を実装するための画面であるが、現バージョン（v1.75b）では未実装であり、非対応メッセージのダイアログを表示してタイトル画面に自動復帰する。

**業務上の目的・背景**：INPUT GATE機能はゲームの将来的な拡張として予定されていた機能であるが、現バージョンでは実装されていない。タイトル画面のメニュー項目としては存在するが、選択しても非対応ダイアログが表示されるのみである。ソースコードのコメントに「ソースコード公開用に削除」と記載されており、オープンソース公開に際して一部機能が除去されたことが示唆される。

**画面へのアクセス方法**：タイトル画面でメニュー項目2番（ゲート）を選択してEnterキーを押下する。

**主要な操作・処理内容**：
1. 「This version does not support INPUT GATE.」というダイアログの表示
2. 100ms待機（wait 100）
3. prev_scene=SCENE_GATEの設定
4. scene=SCENE_TITLEへの自動遷移
5. standbyselp=2の設定（タイトル画面でメニュー2番が選択された状態に復帰）

**画面遷移**：
- 遷移先：タイトル画面（SCENE_TITLE、ダイアログ表示後に自動遷移、行7）
- 遷移元：タイトル画面（メニュー2番選択）

**権限による表示制御**：なし。全ユーザーに同一の非対応ダイアログが表示される。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 7 | シーン遷移管理 | 主機能 | 非対応ダイアログ表示後にSCENE_TITLE（タイトル画面）へ自動遷移 |
| 101 | 多言語テキスト管理 | 補助機能 | ダイアログメッセージ「This version does not support INPUT GATE.」の表示 |
| 1 | タイトル画面 | 遷移先機能 | 非対応通知後にタイトル画面(SCENE_TITLE)へ自動遷移（prev_scene=SCENE_GATE設定） |

## 画面種別

ダイアログ表示画面（非対応機能通知）

## URL/ルーティング

デスクトップアプリケーション（HSP3）のため、URLルーティングは存在しない。シーン管理はscene変数（SCENE_GATE = 8）により制御される。

## 入出力項目

| 項目名 | 入出力 | データ型 | 説明 |
|--------|--------|----------|------|
| prev_scene | 出力 | int | SCENE_GATEを設定。タイトル画面でゲート画面からの復帰であることを識別 |
| standbyselp | 出力 | int | 2を設定。タイトル画面でメニュー2番（ゲート）が選択された状態に復帰 |

## 表示項目

| 項目名 | 表示位置 | 説明 |
|--------|----------|------|
| ダイアログ | OS標準ダイアログ | 「This version does not support INPUT GATE.」というメッセージ |

## イベント仕様

### 1-非対応ダイアログ表示と自動復帰

ゲート画面に遷移すると即座に以下の処理が実行される：
1. HSPのdialog命令で「This version does not support INPUT GATE.」を表示（行3）
2. 100ms待機（wait 100）（行4）
3. ディレクトリをデフォルトに復帰（chdir dir_stat）（行5）
4. prev_scene=SCENE_GATEを設定（行6）
5. scene=SCENE_TITLEを設定（行7）
6. standbyselp=2を設定（行8）
7. is_scene_initial_frame=1を設定（行9）

ユーザーはダイアログのOKボタンを押下してダイアログを閉じた後、自動的にタイトル画面に復帰する。

## データベース更新仕様

### 操作別データベース影響一覧

該当なし。本画面はダイアログ表示のみで、データの読み書きは一切行わない。

### テーブル別更新項目詳細

該当なし。

## メッセージ仕様

| メッセージID | 種別 | 表示条件 | メッセージ内容 |
|-------------|------|----------|--------------|
| - | 情報 | 常時（画面遷移時に即表示） | 「This version does not support INPUT GATE.」 |

## 例外処理

該当なし。本画面は例外が発生し得る処理を含まない。

## 備考

- ゲート画面は全体で10行のみの最小シーンである。
- ソースコードの行2にコメント「ソースコード公開用に削除」があり、元々は何らかの機能が実装されていたが、オープンソース公開時に除去されたことが示唆される。
- ダイアログメッセージは英語固定であり、多言語対応されていない（langテーブルを使用していない）。
- prev_scene=SCENE_GATEの設定により、タイトル画面はゲート画面からの復帰であることを識別し、glistをクリアする処理が実行される（title.hsp行12）。
- standbyselp=2により、タイトル画面に戻った際にメニュー2番（ゲート）にカーソルが位置する。

---

## コードリーディングガイド

本画面を理解するために参照すべきファイルと、推奨する読み解き順序を以下に示す。

### 推奨読解順序

#### Step 1: データ構造を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | kshootmania.hsp | `kshootmania.hsp` | 行18: SCENE_GATE = 8として定義 |

**読解のコツ**: ゲート画面は10行の最小シーンであり、全コードを一読すれば処理全体を把握できる。

#### Step 2: エントリーポイントを理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | gate.hsp | `src/scene/gate.hsp` | 行1: `#deffunc on_update_gate`がエントリーポイント。全10行で完結する |

**主要処理フロー**:
1. **行2**: コメント「ソースコード公開用に削除」
2. **行3**: dialog命令で非対応メッセージ表示
3. **行4**: 100ms待機
4. **行5**: ディレクトリ復帰
5. **行6**: prev_scene=SCENE_GATE設定
6. **行7**: scene=SCENE_TITLE設定
7. **行8**: standbyselp=2設定
8. **行9**: is_scene_initial_frame=1設定

#### Step 3: タイトル画面との連携を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | title.hsp | `src/scene/title.hsp` | 行12: `if(prev_scene=SCENE_GATE):sdim glist,0` - ゲート画面からの復帰時にglistをクリア |
| 3-2 | title.hsp | `src/scene/title.hsp` | 行643-651: タイトル画面でのメニュー2番（ゲート）選択時の遷移処理 |

### プログラム呼び出し階層図

```
kshootmania.hsp (メインループ)
    |
    +-- on_update_gate (src/scene/gate.hsp:1)
            |
            +-- dialog "This version does not support INPUT GATE." (行3)
            +-- wait 100 (行4)
            +-- chdir dir_stat (行5)
            +-- prev_scene=SCENE_GATE (行6)
            +-- scene=SCENE_TITLE (行7)
            +-- standbyselp=2 (行8)
            +-- is_scene_initial_frame=1 (行9)
            |
            v
    +-- start_title (src/scene/title.hsp:1)
            +-- if(prev_scene=SCENE_GATE):sdim glist,0 (行12)
```

### データフロー図

```
[入力]                      [処理]                           [出力]

（なし）              dialog表示 -----------------------> OS標準ダイアログ
                        |
                        v
                  wait 100
                        |
                        v
                  scene=SCENE_TITLE ---------------------> タイトル画面遷移
                  prev_scene=SCENE_GATE ----------------> glistクリアトリガー
                  standbyselp=2 -----------------------> メニュー2番選択状態
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| gate.hsp | `src/scene/gate.hsp` | ソース | ゲート画面の全処理（10行）。on_update_gate関数 |
| kshootmania.hsp | `kshootmania.hsp` | ソース | メインループ、シーン定数定義（SCENE_GATE=8） |
| title.hsp | `src/scene/title.hsp` | ソース | タイトル画面。ゲート画面からの復帰処理（行12）、ゲート選択時の遷移処理（行643-651） |
