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