モジュール別APIリファレンス
本ページでは、各モジュールの詳細なAPI仕様を提供します。 全モジュールは3層アーキテクチャ(Controller/Service/Component)で統一されています。
CONFIGモジュール
設定管理機能のAPI仕様です。
Controller層
Service層
- class common.config.service.action.Action(request: ConfigActionRequest)
ベースクラス:
object設定画面のアクションを実行するクラス。
画面上の各種設定項目に対する操作を処理し、設定フォームに反映させる。 具体的には、タブの選択、方向キー設定、直進キー設定、足踏みキー設定、音量設定、テスト選択などの操作を行う。
注釈
このクラスはビジネスロジックの検証と処理結果の返却を担当し、フォームの直接的な更新は行わない。
- select_go_key_type() Response
GOキーの種類をユーザーの操作に基づいて選択する。ユーザーの操作に基づいて、GOキーの種類が選択されたかどうかを判断する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["select_go_key_type"]) --> V{"KeyTypeValidator"} -- "NG" --> R1["Code.ARGUMENT_ERROR<br/>data: KEY_TYPE_ERROR"]:::error V -- "OK" --> C1{"TYPE_1?"} -- "Yes" --> R2["Code.OK<br/>data: GoKeyTypes.TYPE_1"]:::success C1 -- "No" --> C2{"TYPE_2?"} -- "Yes" --> R3["Code.OK<br/>data: GoKeyTypes.TYPE_2"]:::success C2 -- "No" --> R4["Code.DO_NOTHING"]:::info- 戻り値:
GOキーの種類の選択結果を含む
Responseオブジェクト。GOキーの種類が選択された場合は選択されたGOキーの種類を返す。引数が無効な場合はARGUMENT_ERRORを返す。何も変更がない場合はDO_NOTHINGを返す- 戻り値の型:
Response
- select_step_key_type() Response
STEPキーの種類をユーザーの操作に基づいて選択する。ユーザーのクリック操作に基づいて、STEPキーの種類を判断する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["select_step_key_type"]) --> V{"KeyTypeValidator"} -- "NG" --> R1["Code.ARGUMENT_ERROR"]:::error V -- "OK" --> C1{"TYPE_1?"} -- "Yes" --> R2["Code.OK<br/>data: TYPE_2"]:::success C1 -- "No" --> C2{"TYPE_2?"} -- "Yes" --> R3["Code.OK<br/>data: TYPE_1"]:::success C2 -- "No" --> R4["Code.DO_NOTHING"]:::info- 戻り値:
STEPキーの種類の選択結果を含む
Responseオブジェクト。STEPキーの種類が選択された場合は選択されたSTEPキーの種類を返す。引数が無効な場合はARGUMENT_ERRORを返す。何も変更がない場合はDO_NOTHINGを返す- 戻り値の型:
Response
- select_tab() Response
タブボタンのクリックに基づいて、タブを選択する。ユーザーの操作に基づいて、タブが選択されたかどうかを判断する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["select_tab"]) --> V{"KeyTypeValidator"} -- "NG" --> R1["Code.ARGUMENT_ERROR"]:::error V -- "OK" --> C1{"OPERATION?"} -- "Yes" --> R2["Code.OK<br/>data: TabTypes.OPERATION"]:::success C1 -- "No" --> C2{"SOUND?"} -- "Yes" --> R3["Code.OK<br/>data: TabTypes.SOUND"]:::success C2 -- "No" --> R4["Code.DO_NOTHING"]:::info- 戻り値:
タブボタンの選択結果を含む
Responseオブジェクト。タブが選択された場合は選択されたタブの種類を返す。引数が無効な場合はARGUMENT_ERRORを返す。何も変更がない場合はDO_NOTHINGを返す- 戻り値の型:
Response
- select_test() Response
テストアクションを選択する。ユーザーの操作に基づいて、テストアクションが選択されたかどうかを判断する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["select_test"]) --> C{"test_click?"} -- "Yes" --> R1["Code.OK<br/>data: True"]:::success C -- "No" --> R2["Code.DO_NOTHING<br/>data: False"]:::info- 戻り値:
テストアクションの選択結果を含む
Responseオブジェクト。テストアクションが選択された場合はTrueを返し、選択されなかった場合はFalseを返す- 戻り値の型:
Response
- select_volume() Response
音量レベルをユーザーの操作に基づいて選択する。音量スライダーのクリック位置に基づいて、音量レベルを計算して返す。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["select_volume"]) --> C{"slider_click?"} -- "No" --> R1["Code.DO_NOTHING<br/>data: VOLUME_ERROR"]:::info C -- "Yes" --> P{"位置判定"} -- "範囲内" --> R2["Code.OK<br/>data: int音量"]:::success P -- "MIN未満" --> R3["Code.OK<br/>data: VOLUME_MIN"]:::success P -- "MAX超過" --> R4["Code.OK<br/>data: VOLUME_MAX"]:::success- 戻り値:
音量レベルを含む
Responseオブジェクト。クリック位置が音量スライダーの範囲内にある場合は計算された音量レベルを返し、範囲外の場合は最小または最大の音量レベルを返す。クリックされていない場合は DO_NOTHING を返す- 戻り値の型:
Response
- select_way_key_type() Response
WAYキーの種類をユーザーの操作に基づいて選択する。ユーザーのクリック操作に基づいて、WAYキーの種類を判断する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["select_way_key_type"]) --> V{"KeyTypeValidator"} -- "NG" --> R1["result: Code.ARGUMENT_ERROR<br/>data: KEY_TYPE_ERROR"]:::error V -- "OK" --> C1{"TYPE_1 をクリック?"} -- "Yes" --> R2["result: Code.OK<br/>data: WayKeyTypes.TYPE_1"]:::success C1 -- "No" --> C2{"TYPE_2 をクリック?"} -- "Yes" --> R3["result: Code.OK<br/>data: WayKeyTypes.TYPE_2"]:::success C2 -- "No" --> R4["result: Code.DO_NOTHING<br/>data: KEY_TYPE_ERROR"]:::info- 戻り値:
WAYキーの種類の選択結果を含む
Responseオブジェクト。WAYキーの種類が選択された場合は選択されたWAYキーの種類を返す。引数が無効な場合はARGUMENT_ERRORを返す。何も変更がない場合はDO_NOTHINGを返す- 戻り値の型:
Response
- class common.config.service.sound.Sound(request: ConfigSoundRequest)
ベースクラス:
objectサウンド関連のサービスクラス。
テスト音声の再生や停止、チャンネル管理などを行う。
注釈
このクラスはサウンド処理のビジネスロジックを担当し、実際のサウンド制御は専用のマネージャークラスで行う。
- start() Response
サウンド関連の処理を開始する。音声の再生や再生状態の確認を行う。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["start"]) --> F{"再生要求?"} -- "Yes" --> C{"can_sound_start?"} -- "Yes" --> T["Try: SoundChannelManager.start()"] T -- "成功" --> R1["Code.OK<br/>data: (True, Busy, channel)"]:::success T -- "失敗" --> R2["Code.SOUND_ERROR<br/>data: (False, False, None)"]:::error C -- "No" --> R3["Code.SOUND_PENDING<br/>data: (False, Busy, channel)"]:::info F -- "No" --> R4["Code.OK<br/>data: (False, Busy, channel/None)"]:::info- 戻り値:
サウンド関連の処理結果を含む
Responseオブジェクト。音声の再生状態やチャンネル情報などが含まれる。data は (is_start_playing, is_channel_busy, channel) のタプル。is_start_playing は音声を新たに再生開始したかどうか、is_channel_busy はチャンネルが現在再生中かどうか、channel は使用されるChannelオブジェクト。result は処理結果のコード(OK、SOUND_PENDING、SOUND_ERROR)- 戻り値の型:
Response
- static stop(channel: Channel | None) Response
指定されたチャンネルで再生中の音声を停止する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["stop"]) --> C{"channel?"} -- "Yes" --> R1["Code.OK<br/>data: None"]:::success C -- "No" --> R2["Code.DO_NOTHING<br/>data: None"]:::info- パラメータ:
channel (
Channel| None) -- 停止する音声が再生されているChannelオブジェクト- 戻り値:
音声停止の処理結果を含む
Responseオブジェクト。成功の場合はCode.OK、チャンネルが None の場合はCode.DO_NOTHINGが返される。data は None(停止処理の結果に関する追加情報は含まれない)- 戻り値の型:
Response
Component層
Validator系
- class common.config.service.component.actionRequestValidator.RequestValidator(_request: ConfigActionRequest)
ベースクラス:
objectリクエストの妥当性を検証するクラス。
- パラメータ:
_request (
ConfigActionRequest) -- 検証対象のリクエスト
注釈
このクラスは
dataclassのfrozen=Trueとして定義されており、作成後にフィールド値を変更することはできない。- raise_if_invalid() None
リクエストの妥当性を検証する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["raise_if_invalid"]) --> L["14属性走査"] --> R1["None/ValueError"]- 例外:
ValueError -- リクエストが無効な場合に発生
- class common.config.service.component.actionKeyTypeValidator.KeyTypeValidator(key_type: int, key_type_max: int, click_list: list[bool])
ベースクラス:
objectキータイプの妥当性を検証するクラス。
- パラメータ:
注釈
このクラスは
dataclassのfrozen=Trueとして定義されており、作成後にフィールド値を変更することはできない。- is_invalid() bool
キータイプの妥当性を検証する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["is_invalid"]) --> C{"異常値?"} -- "Yes" --> R1["True"]:::error C -- "No" --> R2["False"]:::success- 戻り値:
キータイプが無効な場合はTrue、そうでない場合はFalse
- 戻り値の型:
- class common.config.service.component.displayRequestValidator.RequestValidator(_request: ConfigDisplayRequest)
ベースクラス:
objectリクエストの妥当性を検証するクラス。
- パラメータ:
_request (
ConfigDisplayRequest) -- 検証対象のリクエスト
注釈
このクラスは
dataclassのfrozen=Trueとして定義されており、作成後にフィールド値を変更することはできない。- raise_if_invalid() None
リクエストの妥当性を検証する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["raise_if_invalid"]) --> L["17属性走査"] --> R1["None/ValueError"]- 例外:
ValueError -- リクエストが無効な場合に発生
注釈
厳密な型チェックは行わず、
intかboolかのみ確認する。
- class common.config.service.component.soundRequestValidator.RequestValidator(_request: ConfigSoundRequest)
ベースクラス:
objectリクエストの妥当性を検証するクラス。
- パラメータ:
_request (
ConfigSoundRequest) -- 検証対象のリクエスト
注釈
このクラスは
dataclassのfrozen=Trueとして定義されており、作成後にフィールド値を変更することはできない。- raise_if_invalid() None
リクエストの妥当性を検証する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["raise_if_invalid"]) --> L["5属性+channel走査"] --> R1["None/ValueError"]- 例外:
ValueError -- リクエストが無効な場合に発生
注釈
厳密な型チェックは行わず、
intかboolかlistかのみ確認する。channel属性についてはChannelまたはNoneを許容する。
- class common.config.service.component.statusRequestValidator.RequestValidator(_request: ConfigStatusRequest)
ベースクラス:
objectリクエストの妥当性を検証するクラス。
- パラメータ:
_request (
ConfigStatusRequest) -- 検証対象のリクエスト
注釈
このクラスは
dataclassのfrozen=Trueとして定義されており、作成後にフィールド値を変更することはできない。- raise_if_invalid() None
リクエストの妥当性を検証する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["raise_if_invalid"]) --> L["4属性走査"] --> R1["None/ValueError"]- 例外:
ValueError -- リクエストが無効な場合に発生
注釈
厳密な型チェックは行わず、
intかboolかstrかのみ確認する。
Manager系
- class common.config.service.component.soundChannelManager.SoundChannelManager(channel: Channel | None, mp3_path: str | None = None, volume: int | None = None)
ベースクラス:
object音声再生を管理するクラス。
- パラメータ:
注釈
このクラスは
dataclassのfrozen=Trueとして定義されており、作成後にフィールド値を変更することはできない。- start() None
音声再生を開始するメソッド。
チャンネルが有効であれば、指定されたMP3ファイルを再生し、音量を設定する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["start"]) --> V{"引数OK?"} -- "OK" --> T["Try: play"] T -- "Err" --> E["Exception"]:::error- 例外:
Exception -- 音声再生に失敗した場合の一般的な例外
ValueError -- 引数の不備(volumeが
VolumeSliderSizeの範囲外、mp3_pathがNoneなど)がある場合
- stop() None
音声再生を停止するメソッド。
チャンネルの停止を試み、失敗した場合はエラーログを記録する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["stop"]) --> T["Try: stop"] T -- "Err" --> L["ERROR_LOG"]:::error注釈
処理の流れ:
チャンネルが有効であれば、チャンネルの停止を試みる
チャンネルが無効であったり、停止に失敗した場合は、エラーログを記録する
- class common.config.service.component.statusConvertManager.StatusConvertManager(_load_data: str | None = None)
ベースクラス:
objectデータの変換を行うクラス。ロードしたデータを設定フォームのデータに変換する。
- パラメータ:
_load_data (str | None) -- ロードしたデータ。ロードに成功した場合はロードしたデータを格納し、ロードに失敗した場合や未保存の場合は None または空文字列を格納する
注釈
このクラスは
dataclassのfrozen=Trueとして定義されており、作成後にフィールド値を変更することはできない。- load_data_to_config_data() tuple[int, int, int]
ロードしたデータを変換する。
_load_dataが None または空文字列である場合は、デフォルトの設定値とする。処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["load_data_to_config_data 開始"]) --> N{"None または空文字列?"} N -- "Yes" --> D["DEFAULT_SAVE_CONF_TUPLE を返却"]:::info N -- "No" --> T["Try: split(',') & int() 変換"] T -- "成功" --> R["(way_key_type, go_key_type, volume) を返却"]:::success T -. "例外発生" .-> Catch["DEFAULT_SAVE_CONF_TUPLE を返却"]:::error D --> End(["終了"]) R --> End Catch --> End
Check系
- class common.config.service.component.soundChannelCheck.SoundChannelCheck(_channel_index: int, _has_channel_available: bool, _channel: Channel | None)
ベースクラス:
objectサウンドチャンネルの状態をチェックするクラス。
- パラメータ:
注釈
このクラスは
dataclassのfrozen=Trueとして定義されており、作成後にフィールド値を変更することはできない。- can_sound_start() bool
サウンドを再生できるかどうかを判断するメソッド。
チャンネルが使用可能で、チャンネルのインデックスが
RELEASED_CHANNEL_INDEXであり、 チャンネルオブジェクトが None の場合に True を返す。処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 Start(["can_sound_start"]) --> C["条件判定"] --> R1["bool"]- 戻り値:
サウンドを再生できる場合は True、再生できない場合は False。すでに再生中のチャンネルがある可能性があるため、再生開始できないことを示す
- 戻り値の型:
HOMEモジュール
ホーム画面機能のAPI仕様です。
Controller層
Service層
- class common.home.service.display.Display(request: HomeDisplayRequest)
ベースクラス:
objectホーム画面の表示を処理するクラス。
スタートボタン、設定ボタン、ロードボタン、終了ボタンなどの表示位置を取得する。
注釈
このクラスは表示処理のビジネスロジックを担当し、実際の画面描画は各メソッド内で行う。
- disp_config_button()
画面上の設定ボタンの表示位置を取得する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 %% --- Main Flow --- START(["開始: disp_config_button"]) --> CHECK_TOUCH{"self._config_touch?<br/>設定ボタンタッチ状態判定"} CHECK_TOUCH -->|True| IMG_TOUCH["CONFIG_TOUCH画像を選択<br/>ButtonIndex.CONFIG_TOUCH"] CHECK_TOUCH -->|False| IMG_NORMAL["通常画像を選択<br/>ButtonIndex.CONFIG"] IMG_TOUCH --> CREATE_DSM_TOUCH["Dsm作成・実行<br/>screen: self._screen<br/>img: CONFIG_TOUCH<br/>pos: ButtonPosition.CONFIG_BUTTON"] IMG_NORMAL --> CREATE_DSM_NORMAL["Dsm作成・実行<br/>screen: self._screen<br/>img: CONFIG<br/>pos: ButtonPosition.CONFIG_BUTTON"] CREATE_DSM_TOUCH --> DSM_BLIT["error_flg = Dsm(...).blit()<br/>DisplayScreenManager描画実行"] CREATE_DSM_NORMAL --> DSM_BLIT DSM_BLIT --> ERROR_CHECK{"error_flg?<br/>描画エラー判定"} ERROR_CHECK -->|True| ERROR_RESPONSE["Response生成<br/>data: ButtonPosition.ERROR<br/>result: Code.SCREEN_ERROR"] ERROR_CHECK -->|False| SUCCESS_RESPONSE["Response生成<br/>data: ButtonPosition.CONFIG_BUTTON<br/>result: Code.OK"] ERROR_RESPONSE --> END(["return Response<br/>エラー終了"]) SUCCESS_RESPONSE --> END_SUCCESS(["return Response<br/>正常終了"]) %% --- Apply Styles --- START:::info CHECK_TOUCH:::info IMG_TOUCH:::info IMG_NORMAL:::info CREATE_DSM_TOUCH:::info CREATE_DSM_NORMAL:::info DSM_BLIT:::info ERROR_CHECK:::info ERROR_RESPONSE:::error SUCCESS_RESPONSE:::success END:::error END_SUCCESS:::success- 戻り値:
設定ボタンの表示位置を含むレスポンスオブジェクト
- 戻り値の型:
Response
- disp_exit_button()
画面上の終了ボタンの表示位置を取得する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 %% --- Main Flow --- START(["開始: disp_exit_button"]) --> CHECK_TOUCH{"self._exit_touch?<br/>終了ボタンタッチ状態判定"} CHECK_TOUCH -->|True| IMG_TOUCH["EXIT_TOUCH画像を選択<br/>ButtonIndex.EXIT_TOUCH"] CHECK_TOUCH -->|False| IMG_NORMAL["通常画像を選択<br/>ButtonIndex.EXIT"] IMG_TOUCH --> CREATE_DSM_TOUCH["Dsm作成・実行<br/>screen: self._screen<br/>img: EXIT_TOUCH<br/>pos: ButtonPosition.EXIT_BUTTON"] IMG_NORMAL --> CREATE_DSM_NORMAL["Dsm作成・実行<br/>screen: self._screen<br/>img: EXIT<br/>pos: ButtonPosition.EXIT_BUTTON"] CREATE_DSM_TOUCH --> DSM_BLIT["error_flg = Dsm(...).blit()<br/>DisplayScreenManager描画実行"] CREATE_DSM_NORMAL --> DSM_BLIT DSM_BLIT --> ERROR_CHECK{"error_flg?<br/>描画エラー判定"} ERROR_CHECK -->|True| ERROR_RESPONSE["Response生成<br/>data: ButtonPosition.ERROR<br/>result: Code.SCREEN_ERROR"] ERROR_CHECK -->|False| SUCCESS_RESPONSE["Response生成<br/>data: ButtonPosition.EXIT_BUTTON<br/>result: Code.OK"] ERROR_RESPONSE --> END(["return Response<br/>エラー終了"]) SUCCESS_RESPONSE --> END_SUCCESS(["return Response<br/>正常終了"]) %% --- Apply Styles --- START:::info CHECK_TOUCH:::info IMG_TOUCH:::info IMG_NORMAL:::info CREATE_DSM_TOUCH:::info CREATE_DSM_NORMAL:::info DSM_BLIT:::info ERROR_CHECK:::info ERROR_RESPONSE:::error SUCCESS_RESPONSE:::success END:::error END_SUCCESS:::success- 戻り値:
終了ボタンの表示位置を含むレスポンスオブジェクト
- 戻り値の型:
Response
- disp_load_button()
画面上のロードボタンの表示位置を取得する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 %% --- Main Flow --- START(["開始: disp_load_button"]) --> CHECK_TOUCH{"self._load_touch?<br/>ロードボタンタッチ状態判定"} CHECK_TOUCH -->|True| IMG_TOUCH["LOAD_TOUCH画像を選択<br/>ButtonIndex.LOAD_TOUCH"] CHECK_TOUCH -->|False| IMG_NORMAL["通常画像を選択<br/>ButtonIndex.LOAD"] IMG_TOUCH --> CREATE_DSM_TOUCH["Dsm作成・実行<br/>screen: self._screen<br/>img: LOAD_TOUCH<br/>pos: ButtonPosition.LOAD_BUTTON"] IMG_NORMAL --> CREATE_DSM_NORMAL["Dsm作成・実行<br/>screen: self._screen<br/>img: LOAD<br/>pos: ButtonPosition.LOAD_BUTTON"] CREATE_DSM_TOUCH --> DSM_BLIT["error_flg = Dsm(...).blit()<br/>DisplayScreenManager描画実行"] CREATE_DSM_NORMAL --> DSM_BLIT DSM_BLIT --> ERROR_CHECK{"error_flg?<br/>描画エラー判定"} ERROR_CHECK -->|True| ERROR_RESPONSE["Response生成<br/>data: ButtonPosition.ERROR<br/>result: Code.SCREEN_ERROR"] ERROR_CHECK -->|False| SUCCESS_RESPONSE["Response生成<br/>data: ButtonPosition.LOAD_BUTTON<br/>result: Code.OK"] ERROR_RESPONSE --> END(["return Response<br/>エラー終了"]) SUCCESS_RESPONSE --> END_SUCCESS(["return Response<br/>正常終了"]) %% --- Apply Styles --- START:::info CHECK_TOUCH:::info IMG_TOUCH:::info IMG_NORMAL:::info CREATE_DSM_TOUCH:::info CREATE_DSM_NORMAL:::info DSM_BLIT:::info ERROR_CHECK:::info ERROR_RESPONSE:::error SUCCESS_RESPONSE:::success END:::error END_SUCCESS:::success- 戻り値:
ロードボタンの表示位置を含むレスポンスオブジェクト
- 戻り値の型:
Response
- disp_start_button()
画面上のスタートボタンの表示位置を取得する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 %% --- Main Flow --- START(["開始: disp_start_button"]) --> CHECK_TOUCH{"self._start_touch?<br/>スタートボタンタッチ状態判定"} CHECK_TOUCH -->|True| IMG_TOUCH["START_TOUCH画像を選択<br/>ButtonIndex.START_TOUCH"] CHECK_TOUCH -->|False| IMG_NORMAL["通常画像を選択<br/>ButtonIndex.START"] IMG_TOUCH --> CREATE_DSM_TOUCH["Dsm作成・実行<br/>screen: self._screen<br/>img: START_TOUCH<br/>pos: ButtonPosition.START_BUTTON"] IMG_NORMAL --> CREATE_DSM_NORMAL["Dsm作成・実行<br/>screen: self._screen<br/>img: START<br/>pos: ButtonPosition.START_BUTTON"] CREATE_DSM_TOUCH --> DSM_BLIT["error_flg = Dsm(...).blit()<br/>DisplayScreenManager描画実行"] CREATE_DSM_NORMAL --> DSM_BLIT DSM_BLIT --> ERROR_CHECK{"error_flg?<br/>描画エラー判定"} ERROR_CHECK -->|True| ERROR_RESPONSE["Response生成<br/>data: ButtonPosition.ERROR<br/>result: Code.SCREEN_ERROR"] ERROR_CHECK -->|False| SUCCESS_RESPONSE["Response生成<br/>data: ButtonPosition.START_BUTTON<br/>result: Code.OK"] ERROR_RESPONSE --> END(["return Response<br/>エラー終了"]) SUCCESS_RESPONSE --> END_SUCCESS(["return Response<br/>正常終了"]) %% --- Apply Styles --- START:::info CHECK_TOUCH:::info IMG_TOUCH:::info IMG_NORMAL:::info CREATE_DSM_TOUCH:::info CREATE_DSM_NORMAL:::info DSM_BLIT:::info ERROR_CHECK:::info ERROR_RESPONSE:::error SUCCESS_RESPONSE:::success END:::error END_SUCCESS:::success- 戻り値:
スタートボタンの表示位置を含むレスポンスオブジェクト
- 戻り値の型:
Response
- class common.home.service.sound.Sound(request: HomeSoundRequest)
ベースクラス:
objectホーム画面のサウンド関連のアクションを実行するクラス。
ユーザーの操作に基づいてサウンドの再生を開始し、ホーム画面のサウンド関連の状態を更新する。
注釈
このクラスはサウンドの再生処理を担当し、実際のサウンドの管理や停止処理は他のクラスで行われる。
- start() Response
ユーザーの操作に基づいてサウンド再生を実行する。タッチがある場合はクリック音を再生し、処理結果を返す。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 %% --- Main Flow --- START(["開始: start"]) --> CHECK_ANY_TOUCH{"any(self._touch_list)?<br/>いずれかのタッチが発生?"} CHECK_ANY_TOUCH -->|False| RETURN_OK_NO_SOUND["return Response(<br/>data=None,<br/>result=Code.OK)<br/>サウンド再生なし"] CHECK_ANY_TOUCH -->|True| TRY_START["try:<br/>サウンド再生処理開始"] TRY_START --> CREATE_SCM["Scm = SoundChannelManager(<br/>mp3_path=self._sound_list[SoundIndex.CLICK],<br/>volume=self._volume<br/>)<br/>マネージャーインスタンス作成"] CREATE_SCM --> START_SOUND["Scm.start()<br/>サウンド再生開始"] START_SOUND --> RETURN_OK["return Response(<br/>data=None,<br/>result=Code.OK)<br/>再生成功"] TRY_START --> EXCEPT_START["except Exception as e:<br/>例外キャッチ"] EXCEPT_START --> LOG_ERROR["ERROR_LOG(<br/>f'サウンド再生エラー:<br/>サウンドを再生できませんでした。 {e}'<br/>)<br/>エラーログ記録"] LOG_ERROR --> RETURN_ERROR["return Response(<br/>data=None,<br/>result=Code.SOUND_ERROR)"] RETURN_OK_NO_SOUND --> END(["終了<br/>Response返却"]) RETURN_OK --> END RETURN_ERROR --> END %% --- Apply Styles --- START:::info CHECK_ANY_TOUCH:::info TRY_START:::info CREATE_SCM:::info START_SOUND:::info EXCEPT_START:::error LOG_ERROR:::error RETURN_OK_NO_SOUND:::success RETURN_OK:::success RETURN_ERROR:::error END:::info- 戻り値:
サウンド関連の処理結果を含む
Responseオブジェクト。data は常にNone。result は処理結果のコード(OK:再生成功、SOUND_ERROR:再生エラー)- 戻り値の型:
Response
- class common.home.service.status.Status(request: HomeStatusRequest)
ベースクラス:
objectホーム画面の次の状態を決定するクラス。
クリック状態(スタート・設定・終了・ロード)を評価し、対応する次の画面状態を返す。 いずれのクリックも検出されない場合はホーム状態のまま変化なしとして返す。
- get_next_status() Response
次の状態を取得する。ユーザーの操作に基づいて次の状態を判断し、対応する状態を返す。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 %% --- Main Flow --- START(["開始: get_next_status"]) --> CHECK_START{"self._start_click?<br/>スタートクリック判定"} CHECK_START -->|True| RETURN_DUNGEON["return Response(<br/>data=STATUS.DUNGEON(),<br/>result=Code.OK<br/>)<br/>ダンジョン状態を返す"] CHECK_START -->|False| CHECK_CONFIG{"self._config_click?<br/>設定クリック判定"} CHECK_CONFIG -->|True| RETURN_CONFIG["return Response(<br/>data=STATUS.CONFIG(),<br/>result=Code.OK<br/>)<br/>設定状態を返す"] CHECK_CONFIG -->|False| CHECK_EXIT{"self._exit_click?<br/>終了クリック判定"} CHECK_EXIT -->|True| RETURN_EXIT["return Response(<br/>data=STATUS.EXIT(),<br/>result=Code.OK<br/>)<br/>終了状態を返す"] CHECK_EXIT -->|False| CHECK_LOAD{"self._load_click?<br/>ロードクリック判定"} CHECK_LOAD -->|True| RETURN_SAVE["return Response(<br/>data=STATUS.SAVE(),<br/>result=Code.OK<br/>)<br/>セーブ状態を返す"] CHECK_LOAD -->|False| RETURN_HOME["return Response(<br/>data=STATUS.HOME(),<br/>result=Code.DO_NOTHING<br/>)<br/>ホーム状態を返す(変化なし)"] RETURN_DUNGEON --> END(["終了<br/>Response を返す"]) RETURN_CONFIG --> END RETURN_EXIT --> END RETURN_SAVE --> END RETURN_HOME --> END %% --- Apply Styles --- START:::info CHECK_START:::info CHECK_CONFIG:::info CHECK_EXIT:::info CHECK_LOAD:::info RETURN_DUNGEON:::success RETURN_CONFIG:::success RETURN_EXIT:::success RETURN_SAVE:::success RETURN_HOME:::info END:::success- 戻り値:
ホーム画面の次の状態を示す
Responseオブジェクト。data は次の状態を示す。result は処理結果のコード(OK:状態取得成功、DO_NOTHING:状態変更なし)- 戻り値の型:
Response
Component層
Validator系
- class common.home.service.component.displayRequestValidator.RequestValidator(_request: HomeDisplayRequest)
ベースクラス:
AbstractRequestValidatorリクエストの妥当性を検証するクラス。
- パラメータ:
_request (
HomeDisplayRequest) -- 検証対象のリクエスト
注釈
このクラスは
dataclassのfrozen=Trueとして定義されており、作成後にフィールド値を変更することはできない。- raise_if_invalid() None
リクエストの妥当性を検証する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 %% --- Main Flow --- START(["開始: raise_if_invalid"]) --> INIT_ATTRS["bool属性リスト初期化<br/>start_touch, load_touch,<br/>config_touch, exit_touch"] INIT_ATTRS --> LOOP_START["for attr in bool_attributes:<br/>各bool属性の検証ループ開始"] LOOP_START --> CHECK_HASATTR{"hasattr(self._request, attr)?<br/>属性存在確認"} CHECK_HASATTR -->|False| LOG_MISSING["ERROR_LOG:<br/>[RequestValidator] Request missing<br/>required attribute: {attr}"] CHECK_HASATTR -->|True| GET_VALUE["value = getattr(self._request, attr)<br/>属性値を取得"] LOG_MISSING --> RAISE_MISSING["ValueError:<br/>RequestValidator: Missing<br/>attribute '{attr}'"] GET_VALUE --> CHECK_NONE{"value is None?<br/>None値チェック"} CHECK_NONE -->|True| LOG_NONE["ERROR_LOG:<br/>[RequestValidator] Request attribute<br/>'{attr}' is None"] CHECK_NONE -->|False| CHECK_BOOL{"isinstance(value, bool)?<br/>bool型チェック"} LOG_NONE --> RAISE_NONE["ValueError:<br/>RequestValidator: Attribute<br/>'{attr}' cannot be None"] CHECK_BOOL -->|False| LOG_TYPE_ERROR["ERROR_LOG:<br/>[RequestValidator] Request attribute<br/>'{attr}' has invalid type: {type(value)}"] CHECK_BOOL -->|True| NEXT_ATTR["次の属性へ<br/>ループ継続"] LOG_TYPE_ERROR --> RAISE_TYPE_ERROR["ValueError:<br/>RequestValidator: Invalid type for<br/>attribute '{attr}', expected bool"] NEXT_ATTR --> LOOP_CHECK{"全bool属性チェック完了?"} LOOP_CHECK -->|No| CHECK_HASATTR LOOP_CHECK -->|Yes| CHECK_SCREEN_HASATTR{"hasattr(self._request, 'screen')?<br/>screen属性存在確認"} CHECK_SCREEN_HASATTR -->|False| LOG_SCREEN_MISSING["ERROR_LOG:<br/>[RequestValidator] Request missing<br/>'screen' attribute"] CHECK_SCREEN_HASATTR -->|True| CHECK_SCREEN_NONE{"self._request.screen is None?<br/>screen値のNoneチェック"} LOG_SCREEN_MISSING --> RAISE_SCREEN_MISSING["ValueError:<br/>RequestValidator: Missing<br/>'screen' attribute"] CHECK_SCREEN_NONE -->|True| LOG_SCREEN_NONE["ERROR_LOG:<br/>[RequestValidator] Request attribute<br/>'screen' is None"] CHECK_SCREEN_NONE -->|False| CHECK_SCREEN_TYPE{"isinstance(self._request.screen, Surface)?<br/>Surface型チェック"} LOG_SCREEN_NONE --> RAISE_SCREEN_NONE["ValueError:<br/>RequestValidator: 'screen'<br/>attribute cannot be None"] CHECK_SCREEN_TYPE -->|False| LOG_SCREEN_TYPE["ERROR_LOG:<br/>[RequestValidator] Request attribute<br/>'screen' has invalid type:<br/>{type(self._request.screen)}"] CHECK_SCREEN_TYPE -->|True| CHECK_IMGLIST_HASATTR{"hasattr(self._request, 'img_list')?<br/>img_list属性存在確認"} LOG_SCREEN_TYPE --> RAISE_SCREEN_TYPE["ValueError:<br/>RequestValidator: Invalid type for<br/>attribute 'screen', expected Surface"] CHECK_IMGLIST_HASATTR -->|False| LOG_IMGLIST_MISSING["ERROR_LOG:<br/>[RequestValidator] Request missing<br/>'img_list' attribute"] CHECK_IMGLIST_HASATTR -->|True| CHECK_IMGLIST_NONE{"self._request.img_list is None?<br/>img_list値のNoneチェック"} LOG_IMGLIST_MISSING --> RAISE_IMGLIST_MISSING["ValueError:<br/>RequestValidator: Missing<br/>'img_list' attribute"] CHECK_IMGLIST_NONE -->|True| LOG_IMGLIST_NONE["ERROR_LOG:<br/>[RequestValidator] Request attribute<br/>'img_list' is None"] CHECK_IMGLIST_NONE -->|False| CHECK_IMGLIST_TYPE{"isinstance(self._request.img_list, list)?<br/>list型チェック"} LOG_IMGLIST_NONE --> RAISE_IMGLIST_NONE["ValueError:<br/>RequestValidator: 'img_list'<br/>attribute cannot be None"] CHECK_IMGLIST_TYPE -->|False| LOG_IMGLIST_TYPE["ERROR_LOG:<br/>[RequestValidator] Request attribute<br/>'img_list' has invalid type:<br/>{type(self._request.img_list)}"] CHECK_IMGLIST_TYPE -->|True| VALIDATION_SUCCESS["検証完了<br/>例外なし<br/>return None"] LOG_IMGLIST_TYPE --> RAISE_IMGLIST_TYPE["ValueError:<br/>RequestValidator: Invalid type for<br/>attribute 'img_list', expected list"] VALIDATION_SUCCESS --> END(["正常終了"]) RAISE_MISSING --> ERROR_END(["例外で終了"]) RAISE_NONE --> ERROR_END RAISE_TYPE_ERROR --> ERROR_END RAISE_SCREEN_MISSING --> ERROR_END RAISE_SCREEN_NONE --> ERROR_END RAISE_SCREEN_TYPE --> ERROR_END RAISE_IMGLIST_MISSING --> ERROR_END RAISE_IMGLIST_NONE --> ERROR_END RAISE_IMGLIST_TYPE --> ERROR_END %% --- Apply Styles --- START:::info INIT_ATTRS:::info LOOP_START:::info CHECK_HASATTR:::info GET_VALUE:::info CHECK_NONE:::info CHECK_BOOL:::info NEXT_ATTR:::info LOOP_CHECK:::info CHECK_SCREEN_HASATTR:::info CHECK_SCREEN_NONE:::info CHECK_SCREEN_TYPE:::info CHECK_IMGLIST_HASATTR:::info CHECK_IMGLIST_NONE:::info CHECK_IMGLIST_TYPE:::info VALIDATION_SUCCESS:::success LOG_MISSING:::error LOG_NONE:::error LOG_TYPE_ERROR:::error LOG_SCREEN_MISSING:::error LOG_SCREEN_NONE:::error LOG_SCREEN_TYPE:::error LOG_IMGLIST_MISSING:::error LOG_IMGLIST_NONE:::error LOG_IMGLIST_TYPE:::error RAISE_MISSING:::error RAISE_NONE:::error RAISE_TYPE_ERROR:::error RAISE_SCREEN_MISSING:::error RAISE_SCREEN_NONE:::error RAISE_SCREEN_TYPE:::error RAISE_IMGLIST_MISSING:::error RAISE_IMGLIST_NONE:::error RAISE_IMGLIST_TYPE:::error END:::success ERROR_END:::error- 例外:
ValueError -- リクエストが無効な場合に発生
注釈
厳密な型チェックを行い、bool、Surface、listの型を正確に検証する。
- class common.home.service.component.soundRequestValidator.RequestValidator(_request: HomeSoundRequest)
ベースクラス:
AbstractRequestValidatorリクエストの妥当性を検証するクラス。
- パラメータ:
_request (
HomeSoundRequest) -- 検証対象のリクエスト
注釈
このクラスは
dataclassのfrozen=Trueとして定義されており、作成後にフィールド値を変更することはできない。- raise_if_invalid() None
リクエストの妥当性を検証する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 %% --- Main Flow --- START(["開始: raise_if_invalid"]) --> INIT_ATTRS["bool_attributes = (<br/>'start_click', 'config_click',<br/>'exit_click', 'load_click'<br/>)<br/>bool属性リスト初期化"] INIT_ATTRS --> LOOP_START["for attr in bool_attributes:<br/>各bool属性の検証ループ開始"] LOOP_START --> CHECK_HASATTR{"hasattr(self._request, attr)?<br/>属性存在確認"} CHECK_HASATTR -->|False| LOG_MISSING["ERROR_LOG:<br/>[RequestValidator] Request missing<br/>required attribute: {attr}"] CHECK_HASATTR -->|True| GET_VALUE["value = getattr(self._request, attr)<br/>属性値を取得"] LOG_MISSING --> RAISE_MISSING["ValueError:<br/>RequestValidator: Missing<br/>attribute '{attr}'"] GET_VALUE --> CHECK_NONE{"value is None?<br/>None値チェック"} CHECK_NONE -->|True| LOG_NONE["ERROR_LOG:<br/>[RequestValidator] Request attribute<br/>'{attr}' is None"] CHECK_NONE -->|False| CHECK_BOOL{"isinstance(value, bool)?<br/>bool型チェック"} LOG_NONE --> RAISE_NONE["ValueError:<br/>RequestValidator: Attribute<br/>'{attr}' cannot be None"] CHECK_BOOL -->|False| LOG_TYPE_ERROR["ERROR_LOG:<br/>[RequestValidator] Request attribute<br/>'{attr}' has invalid type: {type(value)}"] CHECK_BOOL -->|True| NEXT_ATTR["次の属性へ<br/>ループ継続"] LOG_TYPE_ERROR --> RAISE_TYPE_ERROR["ValueError:<br/>RequestValidator: Invalid type for<br/>attribute '{attr}', expected bool"] NEXT_ATTR --> LOOP_CHECK{"全bool属性チェック完了?"} LOOP_CHECK -->|No| CHECK_HASATTR LOOP_CHECK -->|Yes| CHECK_VOLUME_HASATTR{"hasattr(self._request, 'volume')?<br/>volume属性存在確認"} CHECK_VOLUME_HASATTR -->|False| LOG_VOLUME_MISSING["ERROR_LOG:<br/>[RequestValidator] Request missing<br/>'volume' attribute"] CHECK_VOLUME_HASATTR -->|True| CHECK_VOLUME_NONE{"self._request.volume is None?<br/>volume値のNoneチェック"} LOG_VOLUME_MISSING --> RAISE_VOLUME_MISSING["ValueError:<br/>RequestValidator: Missing<br/>'volume' attribute"] CHECK_VOLUME_NONE -->|True| LOG_VOLUME_NONE["ERROR_LOG:<br/>[RequestValidator] Request attribute<br/>'volume' is None"] CHECK_VOLUME_NONE -->|False| CHECK_VOLUME_TYPE{"isinstance(self._request.volume, int)?<br/>int型チェック"} LOG_VOLUME_NONE --> RAISE_VOLUME_NONE["ValueError:<br/>RequestValidator: 'volume'<br/>attribute cannot be None"] CHECK_VOLUME_TYPE -->|False| LOG_VOLUME_TYPE["ERROR_LOG:<br/>[RequestValidator] Request attribute<br/>'volume' has invalid type:<br/>{type(self._request.volume)}"] CHECK_VOLUME_TYPE -->|True| CHECK_SOUNDLIST_HASATTR{"hasattr(self._request, 'sound_list')?<br/>sound_list属性存在確認"} LOG_VOLUME_TYPE --> RAISE_VOLUME_TYPE["ValueError:<br/>RequestValidator: Invalid type for<br/>attribute 'volume', expected int"] CHECK_SOUNDLIST_HASATTR -->|False| LOG_SOUNDLIST_MISSING["ERROR_LOG:<br/>[RequestValidator] Request missing<br/>'sound_list' attribute"] CHECK_SOUNDLIST_HASATTR -->|True| CHECK_SOUNDLIST_NONE{"self._request.sound_list is None?<br/>sound_list値のNoneチェック"} LOG_SOUNDLIST_MISSING --> RAISE_SOUNDLIST_MISSING["ValueError:<br/>RequestValidator: Missing<br/>'sound_list' attribute"] CHECK_SOUNDLIST_NONE -->|True| LOG_SOUNDLIST_NONE["ERROR_LOG:<br/>[RequestValidator] Request attribute<br/>'sound_list' is None"] CHECK_SOUNDLIST_NONE -->|False| CHECK_SOUNDLIST_TYPE{"isinstance(self._request.sound_list, list)?<br/>list型チェック"} LOG_SOUNDLIST_NONE --> RAISE_SOUNDLIST_NONE["ValueError:<br/>RequestValidator: 'sound_list'<br/>attribute cannot be None"] CHECK_SOUNDLIST_TYPE -->|False| LOG_SOUNDLIST_TYPE["ERROR_LOG:<br/>[RequestValidator] Request attribute<br/>'sound_list' has invalid type:<br/>{type(self._request.sound_list)}"] CHECK_SOUNDLIST_TYPE -->|True| VALIDATION_SUCCESS["検証完了<br/>例外なし<br/>return None"] LOG_SOUNDLIST_TYPE --> RAISE_SOUNDLIST_TYPE["ValueError:<br/>RequestValidator: Invalid type for<br/>attribute 'sound_list', expected list"] VALIDATION_SUCCESS --> END(["正常終了"]) RAISE_MISSING --> ERROR_END(["例外で終了"]) RAISE_NONE --> ERROR_END RAISE_TYPE_ERROR --> ERROR_END RAISE_VOLUME_MISSING --> ERROR_END RAISE_VOLUME_NONE --> ERROR_END RAISE_VOLUME_TYPE --> ERROR_END RAISE_SOUNDLIST_MISSING --> ERROR_END RAISE_SOUNDLIST_NONE --> ERROR_END RAISE_SOUNDLIST_TYPE --> ERROR_END %% --- Apply Styles --- START:::info INIT_ATTRS:::info LOOP_START:::info CHECK_HASATTR:::info GET_VALUE:::info CHECK_NONE:::info CHECK_BOOL:::info NEXT_ATTR:::info LOOP_CHECK:::info CHECK_VOLUME_HASATTR:::info CHECK_VOLUME_NONE:::info CHECK_VOLUME_TYPE:::info CHECK_SOUNDLIST_HASATTR:::info CHECK_SOUNDLIST_NONE:::info CHECK_SOUNDLIST_TYPE:::info VALIDATION_SUCCESS:::success LOG_MISSING:::error LOG_NONE:::error LOG_TYPE_ERROR:::error LOG_VOLUME_MISSING:::error LOG_VOLUME_NONE:::error LOG_VOLUME_TYPE:::error LOG_SOUNDLIST_MISSING:::error LOG_SOUNDLIST_NONE:::error LOG_SOUNDLIST_TYPE:::error RAISE_MISSING:::error RAISE_NONE:::error RAISE_TYPE_ERROR:::error RAISE_VOLUME_MISSING:::error RAISE_VOLUME_NONE:::error RAISE_VOLUME_TYPE:::error RAISE_SOUNDLIST_MISSING:::error RAISE_SOUNDLIST_NONE:::error RAISE_SOUNDLIST_TYPE:::error END:::success ERROR_END:::error- 例外:
ValueError -- リクエストが無効な場合に発生
注釈
厳密な型チェックを行い、bool、int、listの型を正確に検証する。
Manager系
- class common.home.service.component.displayScreenManager.DisplayScreenManager(_screen: Surface | None = None, _img: Surface | None = None, _pos: tuple[int, int] | None = None)
ベースクラス:
AbstractScreenComponent画面の描画を管理するクラス。
- パラメータ:
_screen (
Surface) -- 描画対象の画面_img (
Surface) -- 描画する画像_pos (
tuple[int, int]) -- 描画位置 (x, y)
- blit() bool
画面に画像を描画する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 %% --- Validation Phase --- START(["開始: blit"]) --> CHECK_SCREEN{"self._screen is None?<br/>画面オブジェクトの存在確認"} CHECK_SCREEN -->|True| LOG_SCREEN_ERROR["ERROR_LOG:<br/>[DisplayScreenManager] Screen is not set."] CHECK_SCREEN -->|False| CHECK_IMG{"self._img is None?<br/>画像オブジェクトの存在確認"} LOG_SCREEN_ERROR --> RETURN_SCREEN_ERROR["return True<br/>バリデーションエラー"] CHECK_IMG -->|True| LOG_IMG_ERROR["ERROR_LOG:<br/>[DisplayScreenManager] Image is not set."] CHECK_IMG -->|False| CHECK_POS{"self._pos is None?<br/>位置情報の存在確認"} LOG_IMG_ERROR --> RETURN_IMG_ERROR["return True<br/>バリデーションエラー"] CHECK_POS -->|True| LOG_POS_ERROR["ERROR_LOG:<br/>[DisplayScreenManager] Position is not set."] CHECK_POS -->|False| TRY_BLIT["try:<br/>self._screen.blit(self._img, self._pos)<br/>画面描画実行"] LOG_POS_ERROR --> RETURN_POS_ERROR["return True<br/>バリデーションエラー"] %% --- Main Blit Execution --- TRY_BLIT --> BLIT_SUCCESS["描画成功<br/>return False"] TRY_BLIT --> PYGAME_ERROR["pygame.error発生<br/>画面描画エラー"] TRY_BLIT --> MEMORY_ERROR["MemoryError発生<br/>メモリ不足"] TRY_BLIT --> GENERAL_ERROR["Exception発生<br/>その他例外"] %% --- Pygame Error Recovery Chain --- PYGAME_ERROR --> TRY_PYGAME_RECOVERY["try:<br/>self._handle_pygame_error(e)"] TRY_PYGAME_RECOVERY --> CHECK_ERROR_TYPE{"エラーメッセージ判定<br/>str(error).lower()"} CHECK_ERROR_TYPE -->|"surface" + "size/dimension"| EXECUTE_SURFACE_RECOVERY_CHAIN["Surface size関連<br/>self._execute_recovery_chain()"] CHECK_ERROR_TYPE -->|"format" or "depth"| DIRECT_FORMAT_CONVERSION["Format/Depth関連<br/>self._try_format_conversion()"] CHECK_ERROR_TYPE -->|その他| EXECUTE_GENERAL_RECOVERY_CHAIN["その他のエラー<br/>self._execute_recovery_chain()"] %% --- Direct Format Conversion Path --- DIRECT_FORMAT_CONVERSION -->|Success| FORMAT_CONVERSION_SUCCESS["フォーマット変換成功<br/>return False"] DIRECT_FORMAT_CONVERSION -->|Fail| FORMAT_CONVERSION_FAILED["フォーマット変換失敗<br/>return True"] %% --- Surface Size Recovery Chain --- EXECUTE_SURFACE_RECOVERY_CHAIN --> SURFACE_RECOVERY_METHODS["Surface size用<br/>リカバリーチェーン実行"] SURFACE_RECOVERY_METHODS --> SURFACE_TRY_POSITION["1. _try_position_recovery()<br/>位置調整リカバリー"] SURFACE_TRY_POSITION -->|Success| SURFACE_RECOVERY_SUCCESS_1["位置調整成功<br/>return False"] SURFACE_TRY_POSITION -->|Fail| SURFACE_TRY_FORMAT["2. _try_format_conversion()<br/>フォーマット変換リカバリー"] SURFACE_TRY_FORMAT -->|Success| SURFACE_RECOVERY_SUCCESS_2["フォーマット変換成功<br/>return False"] SURFACE_TRY_FORMAT -->|Fail| SURFACE_TRY_SCALING["3. _try_scaling_recovery()<br/>スケーリングリカバリー"] SURFACE_TRY_SCALING -->|Success| SURFACE_RECOVERY_SUCCESS_3["スケーリング成功<br/>return False"] SURFACE_TRY_SCALING -->|Fail| SURFACE_TRY_CLIPPING["4. _try_clipping_recovery()<br/>クリッピングリカバリー"] SURFACE_TRY_CLIPPING -->|Success| SURFACE_RECOVERY_SUCCESS_4["クリッピング成功<br/>return False"] SURFACE_TRY_CLIPPING -->|Fail| SURFACE_TRY_FALLBACK["5. _try_fallback_recovery()<br/>フォールバック処理"] SURFACE_TRY_FALLBACK -->|Success| SURFACE_RECOVERY_SUCCESS_5["フォールバック成功<br/>return False<br/>赤い矩形描画"] SURFACE_TRY_FALLBACK -->|Fail| SURFACE_ALL_RECOVERY_FAILED["Surface size用<br/>全リカバリー失敗<br/>return True"] %% --- General Recovery Chain --- EXECUTE_GENERAL_RECOVERY_CHAIN --> GENERAL_RECOVERY_METHODS["一般用<br/>リカバリーチェーン実行"] GENERAL_RECOVERY_METHODS --> GENERAL_TRY_POSITION["1. _try_position_recovery()<br/>位置調整リカバリー"] GENERAL_TRY_POSITION -->|Success| GENERAL_RECOVERY_SUCCESS_1["位置調整成功<br/>return False"] GENERAL_TRY_POSITION -->|Fail| GENERAL_TRY_FORMAT["2. _try_format_conversion()<br/>フォーマット変換リカバリー"] GENERAL_TRY_FORMAT -->|Success| GENERAL_RECOVERY_SUCCESS_2["フォーマット変換成功<br/>return False"] GENERAL_TRY_FORMAT -->|Fail| GENERAL_TRY_SCALING["3. _try_scaling_recovery()<br/>スケーリングリカバリー"] GENERAL_TRY_SCALING -->|Success| GENERAL_RECOVERY_SUCCESS_3["スケーリング成功<br/>return False"] GENERAL_TRY_SCALING -->|Fail| GENERAL_TRY_CLIPPING["4. _try_clipping_recovery()<br/>クリッピングリカバリー"] GENERAL_TRY_CLIPPING -->|Success| GENERAL_RECOVERY_SUCCESS_4["クリッピング成功<br/>return False"] GENERAL_TRY_CLIPPING -->|Fail| GENERAL_TRY_FALLBACK["5. _try_fallback_recovery()<br/>フォールバック処理"] GENERAL_TRY_FALLBACK -->|Success| GENERAL_RECOVERY_SUCCESS_5["フォールバック成功<br/>return False<br/>赤い矩形描画"] GENERAL_TRY_FALLBACK -->|Fail| GENERAL_ALL_RECOVERY_FAILED["一般用<br/>全リカバリー失敗<br/>return True"] %% --- Recovery Exception Handling --- TRY_PYGAME_RECOVERY --> PYGAME_RECOVERY_ERROR["Exception発生<br/>リカバリー処理例外"] PYGAME_RECOVERY_ERROR --> LOG_PYGAME_RECOVERY_ERROR["ERROR_LOG:<br/>Error during pygame error recovery"] LOG_PYGAME_RECOVERY_ERROR --> PYGAME_FINAL_ERROR["return True<br/>リカバリー例外エラー"] %% --- Memory Error Handling --- MEMORY_ERROR --> TRY_MEMORY_RECOVERY["try:<br/>self._handle_memory_error(e)"] TRY_MEMORY_RECOVERY --> MEMORY_HANDLER_RESULT["メモリエラーハンドリング<br/>通常return True"] TRY_MEMORY_RECOVERY --> MEMORY_RECOVERY_ERROR["Exception発生<br/>メモリリカバリー例外"] MEMORY_RECOVERY_ERROR --> LOG_MEMORY_RECOVERY_ERROR["ERROR_LOG:<br/>Error during memory error recovery"] LOG_MEMORY_RECOVERY_ERROR --> MEMORY_FINAL_ERROR["return True<br/>メモリリカバリー例外"] %% --- General Error Handling --- GENERAL_ERROR --> TRY_GENERAL_RECOVERY["try:<br/>self._handle_general_error(e)"] TRY_GENERAL_RECOVERY --> GENERAL_HANDLER_RESULT["一般例外ハンドリング<br/>通常return True"] TRY_GENERAL_RECOVERY --> GENERAL_RECOVERY_ERROR["Exception発生<br/>一般リカバリー例外"] GENERAL_RECOVERY_ERROR --> LOG_GENERAL_RECOVERY_ERROR["ERROR_LOG:<br/>Error during general error recovery"] LOG_GENERAL_RECOVERY_ERROR --> GENERAL_FINAL_ERROR["return True<br/>一般リカバリー例外"] %% --- End States --- BLIT_SUCCESS --> SUCCESS_END(["正常終了"]) FORMAT_CONVERSION_SUCCESS --> SUCCESS_END SURFACE_RECOVERY_SUCCESS_1 --> SUCCESS_END SURFACE_RECOVERY_SUCCESS_2 --> SUCCESS_END SURFACE_RECOVERY_SUCCESS_3 --> SUCCESS_END SURFACE_RECOVERY_SUCCESS_4 --> SUCCESS_END SURFACE_RECOVERY_SUCCESS_5 --> SUCCESS_END GENERAL_RECOVERY_SUCCESS_1 --> SUCCESS_END GENERAL_RECOVERY_SUCCESS_2 --> SUCCESS_END GENERAL_RECOVERY_SUCCESS_3 --> SUCCESS_END GENERAL_RECOVERY_SUCCESS_4 --> SUCCESS_END GENERAL_RECOVERY_SUCCESS_5 --> SUCCESS_END RETURN_SCREEN_ERROR --> ERROR_END(["エラー終了"]) RETURN_IMG_ERROR --> ERROR_END RETURN_POS_ERROR --> ERROR_END FORMAT_CONVERSION_FAILED --> ERROR_END SURFACE_ALL_RECOVERY_FAILED --> ERROR_END GENERAL_ALL_RECOVERY_FAILED --> ERROR_END PYGAME_FINAL_ERROR --> ERROR_END MEMORY_HANDLER_RESULT --> ERROR_END MEMORY_FINAL_ERROR --> ERROR_END GENERAL_HANDLER_RESULT --> ERROR_END GENERAL_FINAL_ERROR --> ERROR_END %% --- Apply Styles --- START:::info CHECK_SCREEN:::info CHECK_IMG:::info CHECK_POS:::info LOG_SCREEN_ERROR:::error LOG_IMG_ERROR:::error LOG_POS_ERROR:::error RETURN_SCREEN_ERROR:::error RETURN_IMG_ERROR:::error RETURN_POS_ERROR:::error TRY_BLIT:::info BLIT_SUCCESS:::success PYGAME_ERROR:::error MEMORY_ERROR:::error GENERAL_ERROR:::error TRY_PYGAME_RECOVERY:::info CHECK_ERROR_TYPE:::info EXECUTE_SURFACE_RECOVERY_CHAIN:::info DIRECT_FORMAT_CONVERSION:::info EXECUTE_GENERAL_RECOVERY_CHAIN:::info FORMAT_CONVERSION_SUCCESS:::success FORMAT_CONVERSION_FAILED:::error SURFACE_RECOVERY_METHODS:::info SURFACE_TRY_POSITION:::info SURFACE_TRY_FORMAT:::info SURFACE_TRY_SCALING:::info SURFACE_TRY_CLIPPING:::info SURFACE_TRY_FALLBACK:::info SURFACE_RECOVERY_SUCCESS_1:::success SURFACE_RECOVERY_SUCCESS_2:::success SURFACE_RECOVERY_SUCCESS_3:::success SURFACE_RECOVERY_SUCCESS_4:::success SURFACE_RECOVERY_SUCCESS_5:::success SURFACE_ALL_RECOVERY_FAILED:::error GENERAL_RECOVERY_METHODS:::info GENERAL_TRY_POSITION:::info GENERAL_TRY_FORMAT:::info GENERAL_TRY_SCALING:::info GENERAL_TRY_CLIPPING:::info GENERAL_TRY_FALLBACK:::info GENERAL_RECOVERY_SUCCESS_1:::success GENERAL_RECOVERY_SUCCESS_2:::success GENERAL_RECOVERY_SUCCESS_3:::success GENERAL_RECOVERY_SUCCESS_4:::success GENERAL_RECOVERY_SUCCESS_5:::success GENERAL_ALL_RECOVERY_FAILED:::error PYGAME_RECOVERY_ERROR:::error LOG_PYGAME_RECOVERY_ERROR:::error PYGAME_FINAL_ERROR:::error TRY_MEMORY_RECOVERY:::info MEMORY_HANDLER_RESULT:::error MEMORY_RECOVERY_ERROR:::error LOG_MEMORY_RECOVERY_ERROR:::error MEMORY_FINAL_ERROR:::error TRY_GENERAL_RECOVERY:::info GENERAL_HANDLER_RESULT:::error GENERAL_RECOVERY_ERROR:::error LOG_GENERAL_RECOVERY_ERROR:::error GENERAL_FINAL_ERROR:::error SUCCESS_END:::success ERROR_END:::error- 戻り値:
描画処理が成功したかどうかを示すフラグ (True: エラー発生, False: 成功)
- 戻り値の型:
- class common.home.service.component.soundChannelManager.SoundChannelManager(mp3_path: str | None = None, volume: int | None = None)
ベースクラス:
AbstractSoundManager音声再生を管理するクラス。
注釈
このクラスは
dataclassのfrozen=Trueとして定義されており、作成後にフィールド値を変更することはできない。- start() None
音声再生を開始するメソッド。
引数(volume および mp3_path)が有効であれば、指定されたMP3ファイルを再生し、音量を設定する。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 %% --- Main Flow --- START(["開始: start"]) --> CHECK_BOTH{"super()._is_volume_valid(self.volume)<br/>and<br/>super()._is_mp3_path_valid(self.mp3_path)?<br/>音量とMP3パスの妥当性チェック"} CHECK_BOTH -->|False| RAISE_VALUE_ERROR["ValueError発生<br/>引数不備エラー:<br/>volume={self.volume},<br/>mp3_path={self.mp3_path}"] CHECK_BOTH -->|True| TRY_START["try:<br/>音声再生ブロック開始"] TRY_START --> LOAD_MUSIC["pygame.mixer.music.load(<br/>self.mp3_path)<br/>MP3ファイル読み込み"] LOAD_MUSIC --> SET_VOLUME["pygame.mixer.music.set_volume(<br/>self.volume / VolumeSliderSize.VOLUME_MAX<br/>)<br/>音量設定"] SET_VOLUME --> PLAY["pygame.mixer.music.play()<br/>再生開始"] PLAY --> SUCCESS_END(["再生成功<br/>終了"]) TRY_START --> EXCEPT_BLOCK["except Exception as e:<br/>例外キャッチ<br/>(load, set_volume, play<br/>のいずれかで発生)"] EXCEPT_BLOCK --> RAISE_EXCEPTION["Exception発生<br/>音声再生エラー: 音声を再生できませんでした。<br/>エラー: {e}"] RAISE_VALUE_ERROR --> ERROR_END(["例外で終了"]) RAISE_EXCEPTION --> ERROR_END %% --- Apply Styles --- START:::info CHECK_BOTH:::info TRY_START:::info LOAD_MUSIC:::info SET_VOLUME:::info PLAY:::info EXCEPT_BLOCK:::error SUCCESS_END:::success RAISE_VALUE_ERROR:::error RAISE_EXCEPTION:::error ERROR_END:::error- 例外:
Exception -- 音声再生に失敗した場合の一般的な例外
ValueError -- 引数の不備(volumeが
VolumeSliderSizeの範囲外、mp3_pathがNoneなど)がある場合
- stop() None
音声再生を停止するメソッド(本クラスではサポートされていない)。
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 %% --- Main Flow --- START(["開始: stop"]) --> RAISE_EXCEPTION["NotImplementedError発生<br/>このクラスは音声再生専用で、<br/>停止処理はサポートされていません。"] RAISE_EXCEPTION --> ERROR_END(["例外で終了"]) %% --- Apply Styles --- START:::info RAISE_EXCEPTION:::error ERROR_END:::error
SAVEモジュール
セーブ・ロード機能のAPI仕様です。
Controller層
Service層
- class common.save.service.display.Display(request: SaveDisplayRequest)
ベースクラス:
objectセーブ画面の表示を処理するクラス。
バックボタン、ホームボタン、セーブデータのリスト、セーブボタン、ロードボタン、デリートボタンなどの表示位置を取得する。
注釈
このクラスは表示処理のビジネスロジックを担当し、実際の画面描画は各メソッド内で行う。
- disp_back_button() Response
- バックボタンを表示する。
タッチされている場合は、タッチされた状態の画像を表示する
タッチされていない場合は、通常の画像を表示する
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: disp_back_button"]):::info CHECK_TOUCH{"back_button_touch<br/>が True?"}:::info TOUCH_IMG["DisplayScreenManager 生成<br/>(タッチ状態の画像を使用)"]:::info NORMAL_IMG["DisplayScreenManager 生成<br/>(通常状態の画像を使用)"]:::info BLIT["Dsm.blit() で画面描画"]:::info CHECK_ERROR{"error_flg<br/>== True?"}:::info CREATE_RESPONSE_OK["Response 生成<br/>data = Position.BACK_BUTTON<br/>result = Code.OK"]:::success CREATE_RESPONSE_ERROR["Response 生成<br/>data = Position.ERROR<br/>result = Code.SCREEN_ERROR"]:::error RETURN(["Response を返却"]):::success END(["処理完了"]):::success START --> CHECK_TOUCH CHECK_TOUCH -- yes --> TOUCH_IMG CHECK_TOUCH -- no --> NORMAL_IMG TOUCH_IMG --> BLIT NORMAL_IMG --> BLIT BLIT --> CHECK_ERROR CHECK_ERROR -- yes --> CREATE_RESPONSE_ERROR --> RETURN CHECK_ERROR -- no --> CREATE_RESPONSE_OK --> RETURN RETURN --> END- 戻り値:
バックボタンの位置を返す
- 戻り値の型:
Response
- disp_delete_button(index: int) Response
- デリートボタンを表示する。
タッチされている場合は、タッチされた状態の画像を表示する
タッチされていない場合は、通常の画像を表示する
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: disp_delete_button"]):::info PARAM["パラメータ受け取り<br/>index: int"]:::info GET_DISP_LIST["self._disp_list[index] から取得<br/>flag, text = self._disp_list[index]"]:::info CHECK_FLAG{"flag<br/>== True?"}:::info DELETE_ENABLED["削除ボタン有効<br/>セーブデータが存在"]:::success CHECK_TOUCH{"self._delete_touch_list[index]<br/>== True?"}:::info TOUCH_IMG["DisplayScreenManager 生成<br/>SaveButtonIndex.DELETE_TOUCH"]:::info NORMAL_IMG["DisplayScreenManager 生成<br/>SaveButtonIndex.DELETE"]:::info BLIT_ENABLED["Dsm.blit() で画面描画<br/>error_flg を取得"]:::info DELETE_DISABLED["削除ボタン無効<br/>セーブデータが未存在"]:::error DISABLE_IMG["DisplayScreenManager 生成<br/>SaveButtonIndex.DELETE_DISABLE"]:::info BLIT_DISABLED["Dsm.blit() で画面描画<br/>error_flg を取得"]:::info CHECK_ERROR_ENABLED{"error_flg<br/>== True?"} CREATE_RESPONSE_ERROR_ENABLED["Display.__create_response<br/>(error_flg, Position.DELETE_BUTTON_LIST[index])"]:::error CREATE_RESPONSE_OK_ENABLED["Display.__create_response<br/>(error_flg, Position.DELETE_BUTTON_LIST[index])"]:::success CHECK_ERROR_DISABLED{"error_flg<br/>== True?"} CREATE_RESPONSE_ERROR_DISABLED["Display.__create_response<br/>(error_flg, Position.DISABLE)"]:::error CREATE_RESPONSE_OK_DISABLED["Display.__create_response<br/>(error_flg, Position.DISABLE)"]:::success RETURN(["Response を返却"]):::success END(["処理完了"]):::success START --> PARAM --> GET_DISP_LIST --> CHECK_FLAG CHECK_FLAG -- yes --> DELETE_ENABLED --> CHECK_TOUCH CHECK_TOUCH -- yes --> TOUCH_IMG CHECK_TOUCH -- no --> NORMAL_IMG TOUCH_IMG --> BLIT_ENABLED NORMAL_IMG --> BLIT_ENABLED BLIT_ENABLED --> CHECK_ERROR_ENABLED CHECK_ERROR_ENABLED -- yes --> CREATE_RESPONSE_ERROR_ENABLED --> RETURN CHECK_ERROR_ENABLED -- no --> CREATE_RESPONSE_OK_ENABLED --> RETURN CHECK_FLAG -- no --> DELETE_DISABLED --> DISABLE_IMG --> BLIT_DISABLED --> CHECK_ERROR_DISABLED CHECK_ERROR_DISABLED -- yes --> CREATE_RESPONSE_ERROR_DISABLED --> RETURN CHECK_ERROR_DISABLED -- no --> CREATE_RESPONSE_OK_DISABLED --> RETURN RETURN --> END- パラメータ:
index (int) -- 表示するリストのインデックス
- 戻り値:
デリートボタンの位置を返す
- 戻り値の型:
Response
- disp_home_button() Response
- ホームボタンを表示する。
タッチされている場合は、タッチされた状態の画像を表示する
タッチされていない場合は、通常の画像を表示する
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: disp_home_button"]):::info CHECK_TOUCH{"home_button_touch<br/>が True?"}:::info TOUCH_IMG["DisplayScreenManager 生成<br/>(タッチ状態の画像を使用)"]:::info NORMAL_IMG["DisplayScreenManager 生成<br/>(通常状態の画像を使用)"]:::info BLIT["Dsm.blit() で画面描画"]:::info CHECK_ERROR{"error_flg<br/>== True?"}:::info CREATE_RESPONSE_OK["Response 生成<br/>data = Position.HOME_BUTTON<br/>result = Code.OK"]:::success CREATE_RESPONSE_ERROR["Response 生成<br/>data = Position.ERROR<br/>result = Code.SCREEN_ERROR"]:::error RETURN(["Response を返却"]):::success END(["処理完了"]):::success START --> CHECK_TOUCH CHECK_TOUCH -- yes --> TOUCH_IMG CHECK_TOUCH -- no --> NORMAL_IMG TOUCH_IMG --> BLIT NORMAL_IMG --> BLIT BLIT --> CHECK_ERROR CHECK_ERROR -- yes --> CREATE_RESPONSE_ERROR --> RETURN CHECK_ERROR -- no --> CREATE_RESPONSE_OK --> RETURN RETURN --> END- 戻り値:
ホームボタンの位置を返す
- 戻り値の型:
Response
- disp_init() Response
セーブ画面の初期表示を行う。
処理フロー図を確認する
flowchart TD %% ファイル: common/save/service/display.py %% クラス: Display %% メソッド: disp_init %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: disp_init"]):::info CREATE_DSM["DisplayScreenManager 生成<br/>screen, img_list[SAVE][0], (0, 0)"]:::info CALL_BLIT["error_flg = dsm.blit()"]:::info CREATE_RESPONSE["Display.__create_response(error_flg, (0, 0))"]:::info CHECK_ERROR{"error_flg == True?"}:::info RES_ERROR["Response<br/>data=Position.ERROR<br/>result=Code.SCREEN_ERROR"]:::error RES_OK["Response<br/>data=(0, 0)<br/>result=Code.OK"]:::success END(["処理完了"]):::success START --> CREATE_DSM --> CALL_BLIT --> CREATE_RESPONSE --> CHECK_ERROR CHECK_ERROR -- yes --> RES_ERROR --> END CHECK_ERROR -- no --> RES_OK --> END- 戻り値:
初期表示の位置を返す
- 戻り値の型:
Response
- disp_list(index: int) Response
- セーブデータのリストを表示する。
index に対応するセーブデータのリストを表示する
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: disp_list"]):::info PARAM["パラメータ受け取り<br/>index: int"]:::info CREATE_DSM["DisplayScreenManager 生成<br/>img_list[LIST][0]<br/>CardPosition.CARD_LIST[index]"]:::info BLIT["Dsm.blit() で画面描画"]:::info CHECK_ERROR{"error_flg<br/>== True?"}:::info CREATE_RESPONSE_OK["Response 生成<br/>data = CardPosition.CARD_LIST[index]<br/>result = Code.OK"]:::success CREATE_RESPONSE_ERROR["Response 生成<br/>data = Position.ERROR<br/>result = Code.SCREEN_ERROR"]:::error RETURN(["Response を返却"]):::success END(["処理完了"]):::success START --> PARAM --> CREATE_DSM --> BLIT --> CHECK_ERROR CHECK_ERROR -- yes --> CREATE_RESPONSE_ERROR --> RETURN CHECK_ERROR -- no --> CREATE_RESPONSE_OK --> RETURN RETURN --> END- パラメータ:
index (int) -- 表示するリストのインデックス
- 戻り値:
リストの位置を返す
- 戻り値の型:
Response
- disp_list_text(index: int) Response
- セーブデータのリストにテキストを表示する。
index に対応するセーブデータのリストにテキストを表示する
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: disp_list_text"]):::info PARAM["パラメータ受け取り<br/>index: int"]:::info GET_DISP_LIST["self._disp_list[index] から取得<br/>flag, text = self._disp_list[index]"]:::info CHECK_FLAG{"flag<br/>== True?"}:::info SET_TEXT_DATA["disp_text = text"]:::success SET_TEXT_NO_DATA["disp_text = Text.NO_DATA"]:::info CREATE_DTM["DisplayTextManager 生成<br/>_screen, _font, _text, _pos を設定"]:::info BLIT["Dtm.blit() でテキスト描画<br/>error_flg を取得"]:::info CHECK_ERROR{"error_flg<br/>== True?"} CREATE_RESPONSE_ERROR["Response 生成<br/>data = disp_text<br/>result = Code.SCREEN_ERROR"]:::error CREATE_RESPONSE_OK["Response 生成<br/>data = disp_text<br/>result = Code.OK"]:::success RETURN(["Response を返却"]):::success END(["処理完了"]):::success START --> PARAM --> GET_DISP_LIST --> CHECK_FLAG CHECK_FLAG -- yes --> SET_TEXT_DATA --> CREATE_DTM CHECK_FLAG -- no --> SET_TEXT_NO_DATA --> CREATE_DTM CREATE_DTM --> BLIT --> CHECK_ERROR CHECK_ERROR -- yes --> CREATE_RESPONSE_ERROR --> RETURN CHECK_ERROR -- no --> CREATE_RESPONSE_OK --> RETURN RETURN --> END- パラメータ:
index (int) -- 表示するリストのインデックス
- 戻り値:
表示するテキストを返す
- 戻り値の型:
Response
- disp_load_button(index: int) Response
ロードボタンを表示する。
処理フロー図を確認する
flowchart TD %% ファイル: common/save/service/display.py %% クラス: Display %% メソッド: disp_load_button %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: disp_load_button"]):::info PARAM["パラメータ受け取り<br/>index: int"]:::info GET_DISP_LIST["self._disp_list[index] から取得<br/>flag, text = self._disp_list[index]"]:::info CHECK_FLAG{"flag == True?"}:::info LOAD_ENABLED["ロードボタン有効<br/>セーブデータが存在"]:::success CHECK_TOUCH{"self._load_touch_list[index]<br/>== True?"}:::info TOUCH_IMG["DisplayScreenManager 生成<br/>SaveButtonIndex.LOAD_TOUCH"]:::info NORMAL_IMG["DisplayScreenManager 生成<br/>SaveButtonIndex.LOAD"]:::info BLIT_ENABLED["Dsm.blit() で画面描画<br/>error_flg を取得"]:::info LOAD_DISABLED["ロードボタン無効<br/>セーブデータが未存在"]:::error DISABLE_IMG["DisplayScreenManager 生成<br/>SaveButtonIndex.LOAD_DISABLE"]:::info BLIT_DISABLED["Dsm.blit() で画面描画<br/>error_flg を取得"]:::info CHECK_ERROR_ENABLED{"error_flg == True?"}:::info CREATE_RESP_ERR_EN["Display.__create_response<br/>(error_flg, Position.LOAD_BUTTON_LIST[index])"]:::error CREATE_RESP_OK_EN["Display.__create_response<br/>(error_flg, Position.LOAD_BUTTON_LIST[index])"]:::success CHECK_ERROR_DISABLED{"error_flg == True?"}:::info CREATE_RESP_ERR_DIS["Display.__create_response<br/>(error_flg, Position.DISABLE)"]:::error CREATE_RESP_OK_DIS["Display.__create_response<br/>(error_flg, Position.DISABLE)"]:::success RETURN(["Response を返却"]):::success END(["処理完了"]):::success START --> PARAM --> GET_DISP_LIST --> CHECK_FLAG CHECK_FLAG -- yes --> LOAD_ENABLED --> CHECK_TOUCH CHECK_TOUCH -- yes --> TOUCH_IMG CHECK_TOUCH -- no --> NORMAL_IMG TOUCH_IMG --> BLIT_ENABLED NORMAL_IMG --> BLIT_ENABLED BLIT_ENABLED --> CHECK_ERROR_ENABLED CHECK_ERROR_ENABLED -- yes --> CREATE_RESP_ERR_EN --> RETURN CHECK_ERROR_ENABLED -- no --> CREATE_RESP_OK_EN --> RETURN CHECK_FLAG -- no --> LOAD_DISABLED --> DISABLE_IMG --> BLIT_DISABLED --> CHECK_ERROR_DISABLED CHECK_ERROR_DISABLED -- yes --> CREATE_RESP_ERR_DIS --> RETURN CHECK_ERROR_DISABLED -- no --> CREATE_RESP_OK_DIS --> RETURN RETURN --> END- パラメータ:
index (int) -- 表示するリストのインデックス
- 戻り値:
ロードボタンの位置を返す
- 戻り値の型:
Response
- disp_save_button(index: int) Response
- セーブボタンを表示する。
タッチされている場合は、タッチされた状態の画像を表示する
処理フロー図を確認する
flowchart TD %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: disp_save_button"]):::info PARAM["パラメータ受け取り<br/>index: int"]:::info CHECK_INPUT{"self._input_data<br/>== Text.INIT_DATA?"}:::info SAVE_ENABLED["セーブボタン有効<br/>input_data が INIT_DATA でない"]:::success CHECK_TOUCH{"self._save_touch_list[index]<br/>== True?"}:::info TOUCH_IMG["DisplayScreenManager 生成<br/>SaveButtonIndex.SAVE_TOUCH"]:::info NORMAL_IMG["DisplayScreenManager 生成<br/>SaveButtonIndex.SAVE"]:::info BLIT_ENABLED["Dsm.blit() で画面描画<br/>error_flg を取得"]:::info SAVE_DISABLED["セーブボタン無効<br/>input_data == INIT_DATA"]:::error DISABLE_IMG["DisplayScreenManager 生成<br/>SaveButtonIndex.SAVE_DISABLE"]:::info BLIT_DISABLED["Dsm.blit() で画面描画<br/>error_flg を取得"]:::info CHECK_ERROR_ENABLED{"error_flg<br/>== True?"} CREATE_RESPONSE_ERROR_ENABLED["Display.__create_response<br/>(error_flg, Position.SAVE_BUTTON_LIST[index])"]:::error CREATE_RESPONSE_OK_ENABLED["Display.__create_response<br/>(error_flg, Position.SAVE_BUTTON_LIST[index])"]:::success CHECK_ERROR_DISABLED{"error_flg<br/>== True?"} CREATE_RESPONSE_ERROR_DISABLED["Display.__create_response<br/>(error_flg, Position.DISABLE)"]:::error CREATE_RESPONSE_OK_DISABLED["Display.__create_response<br/>(error_flg, Position.DISABLE)"]:::success RETURN(["Response を返却"]):::success END(["処理完了"]):::success START --> PARAM --> CHECK_INPUT CHECK_INPUT -- no --> SAVE_ENABLED --> CHECK_TOUCH CHECK_TOUCH -- yes --> TOUCH_IMG CHECK_TOUCH -- no --> NORMAL_IMG TOUCH_IMG --> BLIT_ENABLED NORMAL_IMG --> BLIT_ENABLED BLIT_ENABLED --> CHECK_ERROR_ENABLED CHECK_ERROR_ENABLED -- yes --> CREATE_RESPONSE_ERROR_ENABLED --> RETURN CHECK_ERROR_ENABLED -- no --> CREATE_RESPONSE_OK_ENABLED --> RETURN CHECK_INPUT -- yes --> SAVE_DISABLED --> DISABLE_IMG --> BLIT_DISABLED --> CHECK_ERROR_DISABLED CHECK_ERROR_DISABLED -- yes --> CREATE_RESPONSE_ERROR_DISABLED --> RETURN CHECK_ERROR_DISABLED -- no --> CREATE_RESPONSE_OK_DISABLED --> RETURN RETURN --> END- パラメータ:
index (int) -- 表示するリストのインデックス
- 戻り値:
セーブボタンの位置を返す
- 戻り値の型:
Response
- class common.save.service.sound.Sound(request: SaveSoundRequest)
ベースクラス:
objectセーブ画面のサウンド関連のサービスクラス。
リクエストを検証し、タッチ状態に基づいてサウンドの再生・停止を行い、結果を
Responseで返す。注釈
このクラスはサウンド処理のビジネスロジックを担当し、結果を
Responseで返す。エラー時のログ記録は、再生開始(start)ではこのクラスが直接行い、停止(stop)では委譲先のSoundChannelManagerが担う。実際のチャンネル制御は専用のマネージャークラスに委譲する。- start() Response
タッチ状態に応じて音声再生の開始可否を判定し、再生結果を
Responseで返す。処理フロー図を確認する
flowchart TD %% ファイル: common/save/service/sound.py %% クラス: Sound %% メソッド: start %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: Sound.start"]):::info LOOP_TOUCH["_touch_list の各 touch を順に確認"]:::info CHECK_TOUCH{"touch == True?"}:::info NEXT_OR_END["次の touch へ / リストが終了"]:::info CHECK_BUSY_FLAG{"self._touch_busy_flag<br/>== True?"}:::info GET_BUSY_BUSY["is_channel_busy =<br/>self._channel.get_busy() if self._channel is not None else False"]:::info RETURN_DO_NOTHING_BUSY["Response 返却<br/>data=(False, is_channel_busy, self._channel)<br/>result=Code.DO_NOTHING"]:::info CHECK_CAN_START{"SoundChannelCheck<br/>.can_sound_start()?"}:::info TRY_PLAY["try: Channel(0) 生成<br/>Scm.start() で再生"]:::info PLAY_SUCCESS["再生成功<br/>LOG 出力"]:::success RETURN_OK["Response 返却<br/>data=(True, channel.get_busy(), channel)<br/>result=Code.OK"]:::success CATCH_PLAY_ERR["Exception 例外キャッチ<br/>ERROR_LOG 出力"]:::error RETURN_SOUND_ERROR["Response 返却<br/>data=(False, False, None)<br/>result=Code.SOUND_ERROR"]:::error LOG_PENDING["LOG 出力<br/>再生開始できなかった"]:::info GET_BUSY_PENDING["is_channel_busy =<br/>self._channel.get_busy() if self._channel is not None else False"]:::info RETURN_PENDING["Response 返却<br/>data=(False, is_channel_busy, self._channel)<br/>result=Code.SOUND_PENDING"]:::info GET_BUSY_NOTOUCHED["is_channel_busy =<br/>self._channel.get_busy() if self._channel is not None else False"]:::info RETURN_DO_NOTHING_NOTOUCHED["Response 返却<br/>data=(False, is_channel_busy, self._channel)<br/>result=Code.DO_NOTHING"]:::info END(["処理完了"]):::success START --> LOOP_TOUCH --> CHECK_TOUCH CHECK_TOUCH -- no --> NEXT_OR_END --> LOOP_TOUCH LOOP_TOUCH -- タッチなし全件確認済 --> GET_BUSY_NOTOUCHED --> RETURN_DO_NOTHING_NOTOUCHED --> END CHECK_TOUCH -- yes --> CHECK_BUSY_FLAG CHECK_BUSY_FLAG -- yes --> GET_BUSY_BUSY --> RETURN_DO_NOTHING_BUSY --> END CHECK_BUSY_FLAG -- no --> CHECK_CAN_START CHECK_CAN_START -- yes --> TRY_PLAY --> PLAY_SUCCESS --> RETURN_OK --> END TRY_PLAY -- Exception --> CATCH_PLAY_ERR --> RETURN_SOUND_ERROR --> END CHECK_CAN_START -- no --> LOG_PENDING --> GET_BUSY_PENDING --> RETURN_PENDING --> END- 戻り値:
タッチ状態に応じた再生結果を含む
Responseオブジェクト- 戻り値の型:
Response
- static stop(channel: Channel | None) Response
指定チャンネルの再生停止を試みる。チャンネルが None の場合は何もしない。失敗時はチャンネルマネージャ内でログ出力のみ行う。
処理フロー図を確認する
flowchart TD %% ファイル: common/save/service/sound.py %% クラス: Sound %% メソッド: stop (staticmethod) %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: Sound.stop"]):::info PARAM["パラメータ受け取り<br/>channel: Channel または None"]:::info CHECK_CHANNEL{"channel<br/>is not None?"}:::info RETURN_DO_NOTHING["Response 返却<br/>data=None<br/>result=Code.DO_NOTHING"]:::info CALL_SCM["Scm(channel=channel).stop()<br/>失敗時はマネージャ内でログ出力"]:::info LOG_STOP["LOG 出力: 再生停止"]:::success RETURN_OK["Response 返却<br/>data=None<br/>result=Code.OK"]:::success END(["処理完了"]):::success START --> PARAM --> CHECK_CHANNEL CHECK_CHANNEL -- no --> RETURN_DO_NOTHING --> END CHECK_CHANNEL -- yes --> CALL_SCM --> LOG_STOP --> RETURN_OK --> END- パラメータ:
channel (
Channel| None) -- 停止対象のサウンドチャンネル。None の場合は停止処理を行わない- 戻り値:
チャンネルが None でない場合は
Code.OK、None の場合はCode.DO_NOTHINGを返す- 戻り値の型:
Response
Component層
Validator系
- class common.save.service.component.displayRequestValidator.RequestValidator(_request: SaveDisplayRequest)
ベースクラス:
AbstractRequestValidatorリクエストの妥当性を検証するクラス。
- パラメータ:
_request (
SaveDisplayRequest) -- 検証対象のリクエスト
注釈
このクラスは
dataclassのfrozen=Trueとして定義されており、作成後にフィールド値を変更することはできない。- raise_if_invalid() None
リクエストの妥当性を検証する。
処理フロー図を確認する
flowchart TD %% ファイル: common/save/service/component/displayRequestValidator.py %% クラス: RequestValidator %% メソッド: raise_if_invalid %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: raise_if_invalid"]):::info CHECK_BACK_BUTTON["back_button_touch 属性確認"]:::info BACK_BUTTON_HASATTR{"hasattr(request,<br/>back_button_touch)?"} BACK_BUTTON_MISSING["ERROR_LOG 出力<br/>属性が見つからない"]:::error RAISE_BACK_BUTTON["ValueError を raise"]:::error BACK_BUTTON_VALUE["back_button_touch の値を取得"]:::info BACK_BUTTON_NONE{"値が None?"} BACK_BUTTON_LOG_NONE["ERROR_LOG 出力<br/>値が None"]:::error RAISE_BACK_NONE["ValueError を raise"]:::error BACK_BUTTON_ISINSTANCE{"isinstance(値,<br/>bool)?"} BACK_BUTTON_LOG_TYPE["ERROR_LOG 出力<br/>型が bool でない"]:::error RAISE_BACK_TYPE["ValueError を raise"]:::error CHECK_HOME_BUTTON["home_button_touch 属性確認"]:::info HOME_BUTTON_HASATTR{"hasattr(request,<br/>home_button_touch)?"} HOME_BUTTON_MISSING["ERROR_LOG 出力<br/>属性が見つからない"]:::error RAISE_HOME_BUTTON["ValueError を raise"]:::error HOME_BUTTON_VALUE["home_button_touch の値を取得"]:::info HOME_BUTTON_NONE{"値が None?"} HOME_BUTTON_LOG_NONE["ERROR_LOG 出力<br/>値が None"]:::error RAISE_HOME_NONE["ValueError を raise"]:::error HOME_BUTTON_ISINSTANCE{"isinstance(値,<br/>bool)?"} HOME_BUTTON_LOG_TYPE["ERROR_LOG 出力<br/>型が bool でない"]:::error RAISE_HOME_TYPE["ValueError を raise"]:::error CHECK_SCREEN["screen 属性確認"]:::info SCREEN_HASATTR{"hasattr(request,<br/>screen)?"} SCREEN_MISSING["ERROR_LOG 出力<br/>属性が見つからない"]:::error RAISE_SCREEN["ValueError を raise"]:::error SCREEN_VALUE["screen の値を取得"]:::info SCREEN_NONE{"値が None?"} SCREEN_LOG_NONE["ERROR_LOG 出力<br/>値が None"]:::error RAISE_SCREEN_NONE["ValueError を raise"]:::error SCREEN_ISINSTANCE{"isinstance(値,<br/>Surface)?"} SCREEN_LOG_TYPE["ERROR_LOG 出力<br/>型が Surface でない"]:::error RAISE_SCREEN_TYPE["ValueError を raise"]:::error CHECK_FONT["font 属性確認"]:::info FONT_HASATTR{"hasattr(request,<br/>font)?"} FONT_MISSING["ERROR_LOG 出力<br/>属性が見つからない"]:::error RAISE_FONT["ValueError を raise"]:::error FONT_VALUE["font の値を取得"]:::info FONT_NONE{"値が None?"} FONT_LOG_NONE["ERROR_LOG 出力<br/>値が None"]:::error RAISE_FONT_NONE["ValueError を raise"]:::error CHECK_IMG_LIST["img_list 属性確認"]:::info IMG_LIST_HASATTR{"hasattr(request,<br/>img_list)?"} IMG_LIST_MISSING["ERROR_LOG 出力<br/>属性が見つからない"]:::error RAISE_IMG_LIST["ValueError を raise"]:::error IMG_LIST_VALUE["img_list の値を取得"]:::info IMG_LIST_NONE{"値が None?"} IMG_LIST_LOG_NONE["ERROR_LOG 出力<br/>値が None"]:::error RAISE_IMG_LIST_NONE["ValueError を raise"]:::error IMG_LIST_ISINSTANCE{"isinstance(値,<br/>list)?"} IMG_LIST_LOG_TYPE["ERROR_LOG 出力<br/>型が list でない"]:::error RAISE_IMG_LIST_TYPE["ValueError を raise"]:::error CHECK_INPUT_DATA["input_data 属性確認"]:::info INPUT_DATA_HASATTR{"hasattr(request,<br/>input_data)?"} INPUT_DATA_MISSING["ERROR_LOG 出力<br/>属性が見つからない"]:::error RAISE_INPUT_DATA["ValueError を raise"]:::error INPUT_DATA_VALUE["input_data の値を取得"]:::info INPUT_DATA_NONE{"値が None?"} INPUT_DATA_LOG_NONE["ERROR_LOG 出力<br/>値が None"]:::error RAISE_INPUT_DATA_NONE["ValueError を raise"]:::error INPUT_DATA_ISINSTANCE{"isinstance(値,<br/>str)?"} INPUT_DATA_LOG_TYPE["ERROR_LOG 出力<br/>型が str でない"]:::error RAISE_INPUT_DATA_TYPE["ValueError を raise"]:::error CHECK_SAVE_DISP_LIST["save_disp_list 属性確認"]:::info SAVE_DISP_LIST_HASATTR{"hasattr(request,<br/>save_disp_list)?"} SAVE_DISP_LIST_MISSING["ERROR_LOG 出力<br/>属性が見つからない"]:::error RAISE_SAVE_DISP_LIST["ValueError を raise"]:::error SAVE_DISP_LIST_VALUE["save_disp_list の値を取得"]:::info SAVE_DISP_LIST_NONE{"値が None?"} SAVE_DISP_LIST_LOG_NONE["ERROR_LOG 出力<br/>値が None"]:::error RAISE_SAVE_DISP_LIST_NONE["ValueError を raise"]:::error SAVE_DISP_LIST_ISINSTANCE{"isinstance(値,<br/>list)?"} SAVE_DISP_LIST_LOG_TYPE["ERROR_LOG 出力<br/>型が list でない"]:::error RAISE_SAVE_DISP_LIST_TYPE["ValueError を raise"]:::error CHECK_SAVE_TOUCH_LIST["save_touch_list 属性確認"]:::info SAVE_TOUCH_LIST_HASATTR{"hasattr(request,<br/>save_touch_list)?"} SAVE_TOUCH_LIST_MISSING["ERROR_LOG 出力<br/>属性が見つからない"]:::error RAISE_SAVE_TOUCH_LIST["ValueError を raise"]:::error SAVE_TOUCH_LIST_VALUE["save_touch_list の値を取得"]:::info SAVE_TOUCH_LIST_NONE{"値が None?"} SAVE_TOUCH_LIST_LOG_NONE["ERROR_LOG 出力<br/>値が None"]:::error RAISE_SAVE_TOUCH_LIST_NONE["ValueError を raise"]:::error SAVE_TOUCH_LIST_ISINSTANCE{"isinstance(値,<br/>list)?"} SAVE_TOUCH_LIST_LOG_TYPE["ERROR_LOG 出力<br/>型が list でない"]:::error RAISE_SAVE_TOUCH_LIST_TYPE["ValueError を raise"]:::error CHECK_LOAD_TOUCH_LIST["load_touch_list 属性確認"]:::info LOAD_TOUCH_LIST_HASATTR{"hasattr(request,<br/>load_touch_list)?"} LOAD_TOUCH_LIST_MISSING["ERROR_LOG 出力<br/>属性が見つからない"]:::error RAISE_LOAD_TOUCH_LIST["ValueError を raise"]:::error LOAD_TOUCH_LIST_VALUE["load_touch_list の値を取得"]:::info LOAD_TOUCH_LIST_NONE{"値が None?"} LOAD_TOUCH_LIST_LOG_NONE["ERROR_LOG 出力<br/>値が None"]:::error RAISE_LOAD_TOUCH_LIST_NONE["ValueError を raise"]:::error LOAD_TOUCH_LIST_ISINSTANCE{"isinstance(値,<br/>list)?"} LOAD_TOUCH_LIST_LOG_TYPE["ERROR_LOG 出力<br/>型が list でない"]:::error RAISE_LOAD_TOUCH_LIST_TYPE["ValueError を raise"]:::error CHECK_DELETE_TOUCH_LIST["delete_touch_list 属性確認"]:::info DELETE_TOUCH_LIST_HASATTR{"hasattr(request,<br/>delete_touch_list)?"} DELETE_TOUCH_LIST_MISSING["ERROR_LOG 出力<br/>属性が見つからない"]:::error RAISE_DELETE_TOUCH_LIST["ValueError を raise"]:::error DELETE_TOUCH_LIST_VALUE["delete_touch_list の値を取得"]:::info DELETE_TOUCH_LIST_NONE{"値が None?"} DELETE_TOUCH_LIST_LOG_NONE["ERROR_LOG 出力<br/>値が None"]:::error RAISE_DELETE_TOUCH_LIST_NONE["ValueError を raise"]:::error DELETE_TOUCH_LIST_ISINSTANCE{"isinstance(値,<br/>list)?"} DELETE_TOUCH_LIST_LOG_TYPE["ERROR_LOG 出力<br/>型が list でない"]:::error RAISE_DELETE_TOUCH_LIST_TYPE["ValueError を raise"]:::error ALL_VALID["全属性が有効"]:::success END(["検証完了<br/>(例外発生なし)"]):::success START --> CHECK_BACK_BUTTON --> BACK_BUTTON_HASATTR BACK_BUTTON_HASATTR -- no --> BACK_BUTTON_MISSING --> RAISE_BACK_BUTTON BACK_BUTTON_HASATTR -- yes --> BACK_BUTTON_VALUE --> BACK_BUTTON_NONE BACK_BUTTON_NONE -- yes --> BACK_BUTTON_LOG_NONE --> RAISE_BACK_NONE BACK_BUTTON_NONE -- no --> BACK_BUTTON_ISINSTANCE BACK_BUTTON_ISINSTANCE -- no --> BACK_BUTTON_LOG_TYPE --> RAISE_BACK_TYPE BACK_BUTTON_ISINSTANCE -- yes --> CHECK_HOME_BUTTON CHECK_HOME_BUTTON --> HOME_BUTTON_HASATTR HOME_BUTTON_HASATTR -- no --> HOME_BUTTON_MISSING --> RAISE_HOME_BUTTON HOME_BUTTON_HASATTR -- yes --> HOME_BUTTON_VALUE --> HOME_BUTTON_NONE HOME_BUTTON_NONE -- yes --> HOME_BUTTON_LOG_NONE --> RAISE_HOME_NONE HOME_BUTTON_NONE -- no --> HOME_BUTTON_ISINSTANCE HOME_BUTTON_ISINSTANCE -- no --> HOME_BUTTON_LOG_TYPE --> RAISE_HOME_TYPE HOME_BUTTON_ISINSTANCE -- yes --> CHECK_SCREEN CHECK_SCREEN --> SCREEN_HASATTR SCREEN_HASATTR -- no --> SCREEN_MISSING --> RAISE_SCREEN SCREEN_HASATTR -- yes --> SCREEN_VALUE --> SCREEN_NONE SCREEN_NONE -- yes --> SCREEN_LOG_NONE --> RAISE_SCREEN_NONE SCREEN_NONE -- no --> SCREEN_ISINSTANCE SCREEN_ISINSTANCE -- no --> SCREEN_LOG_TYPE --> RAISE_SCREEN_TYPE SCREEN_ISINSTANCE -- yes --> CHECK_FONT CHECK_FONT --> FONT_HASATTR FONT_HASATTR -- no --> FONT_MISSING --> RAISE_FONT FONT_HASATTR -- yes --> FONT_VALUE --> FONT_NONE FONT_NONE -- yes --> FONT_LOG_NONE --> RAISE_FONT_NONE FONT_NONE -- no --> CHECK_IMG_LIST CHECK_IMG_LIST --> IMG_LIST_HASATTR IMG_LIST_HASATTR -- no --> IMG_LIST_MISSING --> RAISE_IMG_LIST IMG_LIST_HASATTR -- yes --> IMG_LIST_VALUE --> IMG_LIST_NONE IMG_LIST_NONE -- yes --> IMG_LIST_LOG_NONE --> RAISE_IMG_LIST_NONE IMG_LIST_NONE -- no --> IMG_LIST_ISINSTANCE IMG_LIST_ISINSTANCE -- no --> IMG_LIST_LOG_TYPE --> RAISE_IMG_LIST_TYPE IMG_LIST_ISINSTANCE -- yes --> CHECK_INPUT_DATA CHECK_INPUT_DATA --> INPUT_DATA_HASATTR INPUT_DATA_HASATTR -- no --> INPUT_DATA_MISSING --> RAISE_INPUT_DATA INPUT_DATA_HASATTR -- yes --> INPUT_DATA_VALUE --> INPUT_DATA_NONE INPUT_DATA_NONE -- yes --> INPUT_DATA_LOG_NONE --> RAISE_INPUT_DATA_NONE INPUT_DATA_NONE -- no --> INPUT_DATA_ISINSTANCE INPUT_DATA_ISINSTANCE -- no --> INPUT_DATA_LOG_TYPE --> RAISE_INPUT_DATA_TYPE INPUT_DATA_ISINSTANCE -- yes --> CHECK_SAVE_DISP_LIST CHECK_SAVE_DISP_LIST --> SAVE_DISP_LIST_HASATTR SAVE_DISP_LIST_HASATTR -- no --> SAVE_DISP_LIST_MISSING --> RAISE_SAVE_DISP_LIST SAVE_DISP_LIST_HASATTR -- yes --> SAVE_DISP_LIST_VALUE --> SAVE_DISP_LIST_NONE SAVE_DISP_LIST_NONE -- yes --> SAVE_DISP_LIST_LOG_NONE --> RAISE_SAVE_DISP_LIST_NONE SAVE_DISP_LIST_NONE -- no --> SAVE_DISP_LIST_ISINSTANCE SAVE_DISP_LIST_ISINSTANCE -- no --> SAVE_DISP_LIST_LOG_TYPE --> RAISE_SAVE_DISP_LIST_TYPE SAVE_DISP_LIST_ISINSTANCE -- yes --> CHECK_SAVE_TOUCH_LIST CHECK_SAVE_TOUCH_LIST --> SAVE_TOUCH_LIST_HASATTR SAVE_TOUCH_LIST_HASATTR -- no --> SAVE_TOUCH_LIST_MISSING --> RAISE_SAVE_TOUCH_LIST SAVE_TOUCH_LIST_HASATTR -- yes --> SAVE_TOUCH_LIST_VALUE --> SAVE_TOUCH_LIST_NONE SAVE_TOUCH_LIST_NONE -- yes --> SAVE_TOUCH_LIST_LOG_NONE --> RAISE_SAVE_TOUCH_LIST_NONE SAVE_TOUCH_LIST_NONE -- no --> SAVE_TOUCH_LIST_ISINSTANCE SAVE_TOUCH_LIST_ISINSTANCE -- no --> SAVE_TOUCH_LIST_LOG_TYPE --> RAISE_SAVE_TOUCH_LIST_TYPE SAVE_TOUCH_LIST_ISINSTANCE -- yes --> CHECK_LOAD_TOUCH_LIST CHECK_LOAD_TOUCH_LIST --> LOAD_TOUCH_LIST_HASATTR LOAD_TOUCH_LIST_HASATTR -- no --> LOAD_TOUCH_LIST_MISSING --> RAISE_LOAD_TOUCH_LIST LOAD_TOUCH_LIST_HASATTR -- yes --> LOAD_TOUCH_LIST_VALUE --> LOAD_TOUCH_LIST_NONE LOAD_TOUCH_LIST_NONE -- yes --> LOAD_TOUCH_LIST_LOG_NONE --> RAISE_LOAD_TOUCH_LIST_NONE LOAD_TOUCH_LIST_NONE -- no --> LOAD_TOUCH_LIST_ISINSTANCE LOAD_TOUCH_LIST_ISINSTANCE -- no --> LOAD_TOUCH_LIST_LOG_TYPE --> RAISE_LOAD_TOUCH_LIST_TYPE LOAD_TOUCH_LIST_ISINSTANCE -- yes --> CHECK_DELETE_TOUCH_LIST CHECK_DELETE_TOUCH_LIST --> DELETE_TOUCH_LIST_HASATTR DELETE_TOUCH_LIST_HASATTR -- no --> DELETE_TOUCH_LIST_MISSING --> RAISE_DELETE_TOUCH_LIST DELETE_TOUCH_LIST_HASATTR -- yes --> DELETE_TOUCH_LIST_VALUE --> DELETE_TOUCH_LIST_NONE DELETE_TOUCH_LIST_NONE -- yes --> DELETE_TOUCH_LIST_LOG_NONE --> RAISE_DELETE_TOUCH_LIST_NONE DELETE_TOUCH_LIST_NONE -- no --> DELETE_TOUCH_LIST_ISINSTANCE DELETE_TOUCH_LIST_ISINSTANCE -- no --> DELETE_TOUCH_LIST_LOG_TYPE --> RAISE_DELETE_TOUCH_LIST_TYPE DELETE_TOUCH_LIST_ISINSTANCE -- yes --> ALL_VALID --> END- 例外:
ValueError -- リクエストが無効な場合に発生
注釈
厳密な型チェックを行い、bool、Surface、listの型を正確に検証する。
Manager系
- class common.save.service.component.displayScreenManager.DisplayScreenManager(_screen: Surface | None = None, _img: Surface | None = None, _pos: tuple[int, int] | None = None)
ベースクラス:
AbstractScreenComponent画面の描画を管理するクラス。
- パラメータ:
_screen (
Surface) -- 描画対象の画面_img (
Surface) -- 描画する画像_pos (
tuple[int, int]) -- 描画位置 (x, y)
- blit() bool
画面に画像を描画する。
処理フロー図を確認する
flowchart TD %% ファイル: common/save/service/component/displayScreenManager.py %% クラス: DisplayScreenManager %% メソッド: blit %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: DisplayScreenManager.blit"]):::info CHECK_SCREEN{"self._screen<br/>== None?"}:::info LOG_SCREEN["ERROR_LOG 出力<br/>Screen is not set."]:::error RETURN_ERROR_SCREEN["True を返却<br/>(エラー)"]:::error CHECK_IMG{"self._img<br/>== None?"}:::info LOG_IMG["ERROR_LOG 出力<br/>Image is not set."]:::error RETURN_ERROR_IMG["True を返却<br/>(エラー)"]:::error CHECK_POS{"self._pos<br/>== None?"}:::info LOG_POS["ERROR_LOG 出力<br/>Position is not set."]:::error RETURN_ERROR_POS["True を返却<br/>(エラー)"]:::error TRY_BLIT["try: screen.blit(img, pos)"]:::info BLIT_SUCCESS["描画成功"]:::success RETURN_SUCCESS["False を返却<br/>(成功)"]:::success CATCH_PYGAME["pygame.error 例外キャッチ"]:::error TRY_PYGAME_HANDLER["try: _handle_pygame_error(e)"]:::info CHECK_PYGAME_RESULT{"handler result<br/>== True?"}:::info RETURN_PYGAME_ERROR["True を返却<br/>(エラー)"]:::error RETURN_PYGAME_SUCCESS["False を返却<br/>(成功)"]:::success RECOVERY_PYGAME["ハンドラ自体が例外 raise"]:::error LOG_RECOVERY_PYGAME["ERROR_LOG 出力<br/>recovery_error"]:::error RETURN_RECOVERY_PYGAME["True を返却<br/>(エラー)"]:::error CATCH_MEMORY["MemoryError 例外キャッチ"]:::error TRY_MEMORY_HANDLER["try: _handle_memory_error(e)"]:::info CHECK_MEMORY_RESULT{"handler result<br/>== True?"}:::info RETURN_MEMORY_ERROR["True を返却<br/>(エラー)"]:::error RETURN_MEMORY_SUCCESS["False を返却<br/>(成功)"]:::success RECOVERY_MEMORY["ハンドラ自体が例外 raise"]:::error LOG_RECOVERY_MEMORY["ERROR_LOG 出力<br/>recovery_error"]:::error RETURN_RECOVERY_MEMORY["True を返却<br/>(エラー)"]:::error CATCH_GENERAL["Exception 例外キャッチ"]:::error TRY_GENERAL_HANDLER["try: _handle_general_error(e)"]:::info CHECK_GENERAL_RESULT{"handler result<br/>== True?"}:::info RETURN_GENERAL_ERROR["True を返却<br/>(エラー)"]:::error RETURN_GENERAL_SUCCESS["False を返却<br/>(成功)"]:::success RECOVERY_GENERAL["ハンドラ自体が例外 raise"]:::error LOG_RECOVERY_GENERAL["ERROR_LOG 出力<br/>recovery_error"]:::error RETURN_RECOVERY_GENERAL["True を返却<br/>(エラー)"]:::error END(["処理完了"]):::success START --> CHECK_SCREEN CHECK_SCREEN -- yes --> LOG_SCREEN --> RETURN_ERROR_SCREEN --> END CHECK_SCREEN -- no --> CHECK_IMG CHECK_IMG -- yes --> LOG_IMG --> RETURN_ERROR_IMG --> END CHECK_IMG -- no --> CHECK_POS CHECK_POS -- yes --> LOG_POS --> RETURN_ERROR_POS --> END CHECK_POS -- no --> TRY_BLIT TRY_BLIT --> BLIT_SUCCESS --> RETURN_SUCCESS --> END TRY_BLIT -- pygame.error --> CATCH_PYGAME --> TRY_PYGAME_HANDLER TRY_PYGAME_HANDLER -- 正常完了 --> CHECK_PYGAME_RESULT TRY_PYGAME_HANDLER -- Exceptionが発生 --> RECOVERY_PYGAME --> LOG_RECOVERY_PYGAME --> RETURN_RECOVERY_PYGAME --> END CHECK_PYGAME_RESULT -- yes --> RETURN_PYGAME_ERROR --> END CHECK_PYGAME_RESULT -- no --> RETURN_PYGAME_SUCCESS --> END TRY_BLIT -- MemoryError --> CATCH_MEMORY --> TRY_MEMORY_HANDLER TRY_MEMORY_HANDLER -- 正常完了 --> CHECK_MEMORY_RESULT TRY_MEMORY_HANDLER -- Exceptionが発生 --> RECOVERY_MEMORY --> LOG_RECOVERY_MEMORY --> RETURN_RECOVERY_MEMORY --> END CHECK_MEMORY_RESULT -- yes --> RETURN_MEMORY_ERROR --> END CHECK_MEMORY_RESULT -- no --> RETURN_MEMORY_SUCCESS --> END TRY_BLIT -- Exception --> CATCH_GENERAL --> TRY_GENERAL_HANDLER TRY_GENERAL_HANDLER -- 正常完了 --> CHECK_GENERAL_RESULT TRY_GENERAL_HANDLER -- Exceptionが発生 --> RECOVERY_GENERAL --> LOG_RECOVERY_GENERAL --> RETURN_RECOVERY_GENERAL --> END CHECK_GENERAL_RESULT -- yes --> RETURN_GENERAL_ERROR --> END CHECK_GENERAL_RESULT -- no --> RETURN_GENERAL_SUCCESS --> END- 戻り値:
描画処理が成功したかどうかを示すフラグ (True: エラー発生, False: 成功)
- 戻り値の型:
- class common.save.service.component.displayTextManager.DisplayTextManager(_screen: Surface | None, _font: Font | None, _text: str | None, _pos: tuple[int, int] | None)
ベースクラス:
AbstractTextComponent画面の描画を管理するクラス。
- パラメータ:
_screen (
Surface) -- 描画対象の画面_font (
Font) -- 描画に使用するフォント_text (
str) -- 描画するテキスト_pos (
tuple[int, int]) -- 描画位置 (x, y)
- blit() bool
画面にテキストを描画する。
処理フロー図を確認する
flowchart TD %% ファイル: common/save/service/component/displayTextManager.py %% クラス: DisplayTextManager %% メソッド: blit %% --- Common Styles --- classDef error fill:#f96,stroke:#333,stroke-width:2px classDef success fill:#9f9,stroke:#333,stroke-width:2px classDef info fill:#eee,stroke:#999,stroke-dasharray: 5 5 START(["開始: DisplayTextManager.blit"]):::info CHECK_SCREEN{"self._screen<br/>== None?"}:::info LOG_SCREEN["ERROR_LOG 出力<br/>Screen is not set."]:::error RETURN_ERROR_SCREEN["True を返却<br/>(エラー)"]:::error CHECK_FONT{"self._font<br/>== None?"}:::info LOG_FONT["ERROR_LOG 出力<br/>Font is not set."]:::error RETURN_ERROR_FONT["True を返却<br/>(エラー)"]:::error CHECK_TEXT{"self._text<br/>== None?"}:::info LOG_TEXT["ERROR_LOG 出力<br/>Text is not set."]:::error RETURN_ERROR_TEXT["True を返却<br/>(エラー)"]:::error CHECK_POS{"self._pos<br/>== None?"}:::info LOG_POS["ERROR_LOG 出力<br/>Position is not set."]:::error RETURN_ERROR_POS["True を返却<br/>(エラー)"]:::error TRY_UNPACK["try: x, y = self._pos"]:::info UNPACK_SUCCESS["座標を展開"]:::success TRY_RENDER["try: font.render(text)"]:::info RENDER["text_surface を取得"]:::success GET_RECT["text_rect = text_surface.get_rect<br/>(center=(x + width/2, y))"]:::success BLIT["screen.blit(text_surface, text_rect)"]:::success RETURN_SUCCESS["False を返却<br/>(成功)"]:::success CATCH_UNPACK["TypeError/ValueError<br/>例外キャッチ"]:::error LOG_UNPACK["ERROR_LOG 出力<br/>Invalid position"]:::error RETURN_ERROR_UNPACK["True を返却<br/>(エラー)"]:::error CATCH_PYGAME["pygame.error<br/>例外キャッチ"]:::error LOG_PYGAME["ERROR_LOG 出力<br/>Pygame error during rendering"]:::error RETURN_ERROR_PYGAME["True を返却<br/>(エラー)"]:::error CATCH_MEMORY["MemoryError<br/>例外キャッチ"]:::error LOG_MEMORY["ERROR_LOG 出力<br/>Memory error during rendering"]:::error RETURN_ERROR_MEMORY["True を返却<br/>(エラー)"]:::error CATCH_GENERAL["Exception<br/>例外キャッチ"]:::error LOG_GENERAL["ERROR_LOG 出力<br/>Unexpected error during rendering"]:::error RETURN_ERROR_GENERAL["True を返却<br/>(エラー)"]:::error END(["処理完了"]):::success START --> CHECK_SCREEN CHECK_SCREEN -- yes --> LOG_SCREEN --> RETURN_ERROR_SCREEN --> END CHECK_SCREEN -- no --> CHECK_FONT CHECK_FONT -- yes --> LOG_FONT --> RETURN_ERROR_FONT --> END CHECK_FONT -- no --> CHECK_TEXT CHECK_TEXT -- yes --> LOG_TEXT --> RETURN_ERROR_TEXT --> END CHECK_TEXT -- no --> CHECK_POS CHECK_POS -- yes --> LOG_POS --> RETURN_ERROR_POS --> END CHECK_POS -- no --> TRY_UNPACK TRY_UNPACK --> UNPACK_SUCCESS --> TRY_RENDER TRY_UNPACK -- TypeError/ValueError --> CATCH_UNPACK --> LOG_UNPACK --> RETURN_ERROR_UNPACK --> END TRY_RENDER --> RENDER --> GET_RECT --> BLIT --> RETURN_SUCCESS --> END TRY_RENDER -- pygame.error --> CATCH_PYGAME --> LOG_PYGAME --> RETURN_ERROR_PYGAME --> END TRY_RENDER -- MemoryError --> CATCH_MEMORY --> LOG_MEMORY --> RETURN_ERROR_MEMORY --> END TRY_RENDER -- Exception --> CATCH_GENERAL --> LOG_GENERAL --> RETURN_ERROR_GENERAL --> END- 戻り値:
描画処理が成功したかどうかを示すフラグ (True: エラー発生, False: 成功)
- 戻り値の型:
ENDモジュール
終了処理機能のAPI仕様です。
Controller層
Service層
共通モジュール
レイヤー間通信
- class common.layer.response.response.Response(data: Any, result: Code)
ベースクラス:
objectRepresents a response with associated data and result code. .. attribute:: _data
The data associated with the response.
- type:
Any
- is_argument_error() bool
「引数エラー」結果を示すかどうかをチェックするメソッド。 :returns: True if the result is ARGUMENT_ERROR, False otherwise. :rtype: bool
- is_do_nothing() bool
「何もしない」結果を示すかどうかをチェックするメソッド。 :returns: True if the result is DO_NOTHING, False otherwise. :rtype: bool
- is_not_ok() bool
「正常でない」結果を示すかどうかをチェックするメソッド。 :returns: True if the result is not OK and not DO_NOTHING, False otherwise. :rtype: bool
- is_ok() bool
「正常」な結果を示すかどうかをチェックするメソッド。 :returns: True if the result is OK, False otherwise. :rtype: bool
- is_screen_error() bool
「画面エラー」結果を示すかどうかをチェックするメソッド。 :returns: True if the result is SCREEN_ERROR, False otherwise. :rtype: bool
定数・列挙型
- class common.config.constants.ButtonPosition
ベースクラス:
objectButton positions for configuration screen.
- BACK_BUTTON = (540, 670)
- GO_BUTTON = [(50, 320), (260, 320)]
- OK_BUTTON = (750, 670)
- SLIDER = (50, 180)
- STEP_BUTTON = [(50, 460), (260, 460)]
- TAB = [(50, 100), (300, 100)]
- TEST_BUTTON = (555, 140)
- WAY_BUTTON = [(50, 180), (260, 180)]
- class common.config.constants.ConfigButtonIndex(value)
ベースクラス:
IntEnumConfig button indices for configuration screen.
- TAB_SELECT = 0
- TAB_TOUCH = 1
- TAB_UNSELECT = 2
- class common.config.constants.GoKeyTypes(value)
ベースクラス:
IntEnumGo key operation types.
- MAX = 1
- TYPE_1 = 0
- TYPE_2 = 1
- class common.config.constants.SetButtonIndex(value)
ベースクラス:
IntEnumSet button indices for configuration screen.
- CANCEL = 8
- CANCEL_TOUCH = 9
- NOW_SELECT = 0
- OK = 6
- OK_DISABLE = 5
- OK_TOUCH = 7
- PLAYING = 12
- TEST = 10
- TEST_TOUCH = 11
- TYPE1 = 1
- TYPE1_TOUCH = 2
- TYPE2 = 3
- TYPE2_TOUCH = 4
- class common.config.constants.SliderPosition
ベースクラス:
objectSlider positions for configuration screen.
- HEIGHT = 10
- MAX = 100
- MIN = 0
- STEP = 1
- WIDTH = 400
- X = 50
- Y = 195
- class common.config.constants.StepKeyTypes(value)
ベースクラス:
IntEnumStep key operation types.
- MAX = 1
- TYPE_1 = 0
- TYPE_2 = 1
- class common.config.constants.TabTypes(value)
ベースクラス:
IntEnumTab types for configuration screen.
- MAX = 1
- OPERATION = 0
- SOUND = 1
- class common.config.constants.TextContents
ベースクラス:
objectText constants for configuration screen.
- GO_KEY_TYPE = '直進キー入力タイプ…'
- OPERATION_LIST = ['スペース押下', 'エンター押下']
- SE_VOLUME = 'SE VOLUME'
- STEP_KEY_TYPE = '足踏み入力タイプ…'
- WAY_KEY_TYPE = '方向キー入力タイプ…'
- WAY_LIST = ['WASD操作', '方向キー操作']
- class common.config.constants.TextPosition
ベースクラス:
objectText positions for configuration screen.
- GO_KEY_TYPE = (50, 285)
- SE_VOLUME = (50, 150)
- STEP_KEY_TYPE = (50, 420)
- VOLUME_COUNT = (475, 190)
- WAY_KEY_TYPE = (50, 150)
- class common.config.constants.VolumeSliderSize(value)
ベースクラス:
IntEnumVolume slider size and range.
- DIV = 4
- POS_X_MAX = 450
- POS_X_MIN = 50
- VOLUME_MAX = 100
- VOLUME_MIN = 0
- class common.config.constants.WayKeyTypes(value)
ベースクラス:
IntEnumDirection key operation types.
- MAX = 1
- TYPE_1 = 0
- TYPE_2 = 1
- class common.constants.ButtonIndex
ベースクラス:
objectボタンのインデックスを定義するクラス。 このクラスは、各種ボタンのインデックスを定数として提供します。
- BACK = 14
- BACK_TOUCH = 15
- CONFIG = 10
- CONFIG_TOUCH = 11
- EXIT = 0
- EXIT_TOUCH = 1
- HOME = 4
- HOME_TOUCH = 5
- LOAD = 6
- LOAD_TOUCH = 7
- RETRY = 12
- RETRY_TOUCH = 13
- SAVE = 8
- SAVE_TOUCH = 9
- START = 2
- START_TOUCH = 3
- class common.constants.Colors
ベースクラス:
object色の定数を定義するクラス。 このクラスは、RGB形式で色を表す定数を提供します。
- BLACK = (0, 0, 0)
- GREEN = (0, 255, 0)
- RED = (255, 0, 0)
- WHITE = (255, 255, 255)
- class common.constants.DefaultButtonSize
ベースクラス:
object- ERROR_HEIGHT = 0
- ERROR_WIDTH = 0
- HEIGHT = 80
- WIDTH = 200
共通機能
- common.debug.debug.init()