Skip to content

MyLib.KeyStatus ​

入力関連 / 入力情報の管理

所属:mylibのAPI解説 · 全モジュール索引

読み方 ​

このページは実ファイルから生成したソース照合用資料です。公開関数の引数・戻り値の型、オーバーロード、列挙値を確認できます。public/protected/privateを区別し、privateメンバーを呼び出し例に使わないでください。コメントは原文であり、古い説明や誤記を含む場合があります。利用条件・訂正は上記のAPI解説と既知の制約を優先してください。

元ファイル:ProjectName/include/MyLib/KeyStatus/KeyStatus.ixx。確認基準:08f9fa53。

インターフェースとインライン実装 ​

cpp
export module MyLib.KeyStatus;

import <unordered_map>;

export import MyLib.KeyStatus.KeyTag;

export constexpr int8_t ON_RELEASE = 0x0001;      //未入力時
export constexpr int8_t RELEASING = 0x0002;       //未入力中
export constexpr int8_t ON_PRESS = 0x0004;        //入力時
export constexpr int8_t PRESSING = 0x0008;        //入力中

/// <summary>
/// 入力関連
/// </summary>
export namespace input
{
    /// <summary>
    /// 入力情報の管理
    /// </summary>
    export class KeyStatus final
    {
    public:
        /// <summary>
        /// コピー禁止令
        /// </summary>
        KeyStatus(const KeyStatus&) = delete;
        KeyStatus(KeyStatus&&) = delete;

        /// <summary>
        /// 代入禁止令
        /// </summary>
        KeyStatus& operator=(const KeyStatus&) = delete;
        KeyStatus& operator=(KeyStatus&&) = delete;

        /// <summary>
        /// キー情報更新
        /// </summary>
        static void UpdateKeyState()
        {
            Instance().UpdateKeyStateImpl();
        }

        /// <summary>
        /// キー情報判定
        /// </summary>
        /// <param name="key">対象キー</param>
        /// <param name="state">対象ステータス</param>
        /// <returns>一致:true|不一致:false</returns>
        [[nodiscard]] static bool CheckKey(const int key, const int state)
        {
            return Instance().CheckKeyImpl(key, state);
        }

        /// <summary>
        /// デストラクタ
        /// </summary>
        ~KeyStatus() = default;

    private:
        /// <summary>
        /// インスタンスを返す
        /// </summary>
        /// <returns>自身のインスタンス</returns>
        static KeyStatus& Instance()
        {
            static KeyStatus instance;
            return instance;
        }

        /// <summary>
        /// コンストラクタ
        /// </summary>
        KeyStatus();

        // 実装用メソッド
        void UpdateKeyStateImpl();
        bool CheckKeyImpl(const int key, const int state)
        {
            //押下中判定結果を返す
            return (keyData[key] & state);
        }

        std::unordered_map<int, int> keyData;     //キー情報
    };

}

コード確認基準:08f9fa53 · C++実機検証は別途実施