//* -----------------------------------------------------------------------* /// <summary>1フレーム分の更新処理を実行します。</summary> /// /// <param name="entity">この状態を適用されているオブジェクト。</param> /// <param name="privateMembers"> /// オブジェクトと状態クラスのみがアクセス可能なフィールド。 /// </param> /// <param name="gameTime">前フレームが開始してからの経過時間。</param> public override void update( CAI <CInputDetector> entity, CInputCollection.CPrivateMembers privateMembers, GameTime gameTime ) { CInputCollection collection = entity.owner; if (collection.Count == 0) { foreach (PlayerIndex playerIndex in CInputXBOX360.allPlayerIndex) { GamePadState state = GamePad.GetState(playerIndex); if (state.IsConnected && state.getPress() != 0) { collection.Add(CInputXBOX360.getInstance( playerIndex, collection.playerNumber)); break; } } } if (collection.Count != 0) { setCapacity(collection); entity.nextState = CStateWait.instance; } base.update(entity, privateMembers, gameTime); }
//* ────________________________________* //* methods ───────────────────────────────-* //* -----------------------------------------------------------------------* /// <summary> /// <para>状態が開始された時に呼び出されます。</para> /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para> /// </summary> /// /// <param name="entity">この状態を適用されたオブジェクト。</param> /// <param name="privateMembers"> /// オブジェクトと状態クラスのみがアクセス可能なフィールド。 /// </param> public override void setup(CAI <CInputDetector> entity, CInputCollection.CPrivateMembers privateMembers) { CInputCollection collection = entity.owner; setCapacity(collection); collection.releaseAwayController = true; base.setup(entity, privateMembers); }
//* -----------------------------------------------------------------------* /// <summary>子入力クラスとして受け入れる最大値を初期化します。</summary> /// /// <param name="collection">この状態を終了したオブジェクト。</param> /// <exception cref="System.InvalidOperationException"> /// 現在の保有個数が2個以上の場合。 /// </exception> private void setCapacity(CInputCollection collection) { try { collection.capacity = 1; } catch (Exception e) { throw new InvalidOperationException(Resources.ERR_INPUT_DETECT_DUPLICATION, e); } }
//* -----------------------------------------------------------------------* /// <summary>1フレーム分の更新処理を実行します。</summary> /// /// <param name="entity">この状態を適用されているオブジェクト。</param> /// <param name="privateMembers"> /// オブジェクトと状態クラスのみがアクセス可能なフィールド。 /// </param> /// <param name="gameTime">前フレームが開始してからの経過時間。</param> public override void update(CAI <CInputDetector> entity, CInputCollection.CPrivateMembers privateMembers, GameTime gameTime) { CInputCollection collection = entity.owner; if (collection.Count == 0) { entity.nextState = (CState <CAI <CInputDetector>, CInputCollection.CPrivateMembers>) entity.previousState; } base.update(entity, privateMembers, gameTime); }
//* -----------------------------------------------------------------------* /// <summary>1フレーム分の更新処理を実行します。</summary> /// /// <param name="entity">この状態を適用されているオブジェクト。</param> /// <param name="privateMembers"> /// オブジェクトと状態クラスのみがアクセス可能なフィールド。 /// </param> /// <param name="gameTime">前フレームが開始してからの経過時間。</param> public override void update( CAI <CInputDetector> entity, CInputCollection.CPrivateMembers privateMembers, GameTime gameTime ) { CInputCollection collection = entity.owner; if (collection.Count == 0) { CInputLegacy input = instanceList.FirstOrDefault( item => item.isPushAnyKey(detectPOV, detectSlider)); if (input != null) { collection.Add(input); } } if (collection.Count != 0) { setCapacity(collection); entity.nextState = CStateWait.instance; } base.update(entity, privateMembers, gameTime); }