//* ────________________________________*
        //* methods ───────────────────────────────-*

        //* -----------------------------------------------------------------------*
        /// <summary>
        /// <typeparamref name="_T"/>型の入力制御・管理クラスが登録されていたら取得します。
        /// </summary>
        /// <remarks>自動認識状態のコレクションから取得する時に便利です。</remarks>
        ///
        /// <typeparam name="_T">取得したい入力制御・管理クラスの型。</typeparam>
        /// <param name="collection">入力制御・管理コレクション</param>
        /// <returns>
        /// <typeparamref name="_T"/>型の入力制御・管理クラス。存在しない場合、<c>null</c>。
        /// </returns>
        public static _T getInstance <_T>(this CInputCollection collection) where _T : CInput
        {
            _T input = null;

            if (collection != null)
            {
                int nTotal = collection.Count;
                if (nTotal > 0)
                {
                    Type typeExpect = typeof(_T);
                    if (nTotal == 1)
                    {
                        CInput _input  = collection.childList[0];
                        Type   typeGot = _input.GetType();
                        if (typeExpect == typeGot || typeExpect.IsSubclassOf(typeGot))
                        {
                            input = (_T)_input;
                        }
                    }
                    else
                    {
                        input = (_T)collection.FirstOrDefault(_input =>
                                                              _input.GetType() == typeExpect ||
                                                              typeExpect.IsSubclassOf(_input.GetType()));
                    }
                }
            }
            return(input);
        }
예제 #2
0
 //* -----------------------------------------------------------------------*
 /// <summary>管理している子入力クラスを全て解放します。</summary>
 ///
 /// <exception cref="System.NotSupportedException">
 /// 読み取り専用状態でこのメソッドを実行した場合。
 /// </exception>
 public override void Clear()
 {
     m_inputDevice         = EInputDevice.None;
     m_inputKeyboard       = null;
     m_inputMouse          = null;
     m_inputXbox360        = null;
     m_inputXbox360Chatpad = null;
     m_inputLegacy         = null;
     base.Clear();
 }
예제 #3
0
        //* -----------------------------------------------------------------------*
        /// <summary>
        /// レガシ ゲーム コントローラの自動認識・入力制御・管理クラスを生成します。
        /// </summary>
        ///
        /// <returns>
        /// レガシ ゲーム コントローラの自動認識・入力制御・管理クラス。
        /// </returns>
        private CInputCollection createLegacyInstance()
        {
            CInputCollection collection = CInputLegacy.createDetector(playerNumber);

            collection.changedChildCount += (sender, count) =>
            {
                if (count > 0)
                {
                    CInputLegacy input = ((CInputCollection)sender).getInstance <CInputLegacy>();
                    input.assignList = legacyAssign;
                    input.useForAxis = legacyAxisAssign;
                }
            };
            return(collection);
        }
예제 #4
0
        //* -----------------------------------------------------------------------*
        /// <summary>
        /// XBOX360ゲーム コントローラの自動認識・入力制御・管理クラスを生成します。
        /// </summary>
        ///
        /// <returns>
        /// XBOX360ゲーム コントローラの自動認識・入力制御・管理クラス。
        /// </returns>
        private CInputCollection createXBOX360Instance()
        {
            CInputCollection collection = CInputXBOX360.createDetector(playerNumber);

            collection.changedChildCount += (sender, count) =>
            {
                if (count > 0)
                {
                    CInputXBOX360 input = ((CInputCollection)sender).getInstance <CInputXBOX360>();
                    input.assignList = xbox360Assign;
                    input.useForAxis = xbox360AxisAssign;
                }
            };
            return(collection);
        }
예제 #5
0
            //* ────────────-_______________________*
            //* constructor & destructor ───────────────────────*

            //* -----------------------------------------------------------------------*
            /// <summary>コンストラクタ。</summary>
            ///
            /// <param name="collection">XBOX360ゲーム コントローラ入力制御・管理クラス。</param>
            public CPrivateMembers(CInputCollection collection)
            {
                this.collection = collection;
                buttonStateList = collection._buttonStateList;
                childs          = collection.childs;
            }