//* -----------------------------------------------------------------------* /// <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>方向ボタンの状態を更新します。</summary> /// /// <param name="state">最新の入力情報。</param> /// <param name="entity">この状態を適用されているオブジェクト。</param> /// <param name="privateMembers"> /// オブジェクトと状態クラスのみがアクセス可能なフィールド。 /// </param> /// <param name="gameTime">前フレームが開始してからの経過時間。</param> protected override void refleshAxis( GamePadState state, CInputXBOX360 entity, CInputXBOX360.CPrivateMembers privateMembers, GameTime gameTime) { privateMembers.axisVector = vectorGetter(state.ThumbSticks); for (int i = buttons.Length; --i >= 0;) { entity.dirInputState[i].refresh(state.IsButtonDown(buttons[i])); } EDirectionFlags axisFlags; CHelper.createVector(entity.dirInputState, out axisFlags); privateMembers.axisFlag = axisFlags; }
//* ────________________________________* //* methods ───────────────────────────────-* //* -----------------------------------------------------------------------* /// <summary>方向ボタンの状態を更新します。</summary> /// /// <param name="state">最新の入力情報。</param> /// <param name="entity">この状態を適用されているオブジェクト。</param> /// <param name="privateMembers"> /// オブジェクトと状態クラスのみがアクセス可能なフィールド。 /// </param> /// <param name="gameTime">前フレームが開始してからの経過時間。</param> protected override void refleshAxis( GamePadState state, CInputXBOX360 entity, CInputXBOX360.CPrivateMembers privateMembers, GameTime gameTime) { GamePadDPad dpad = state.DPad; for (int i = entity.dirInputState.Length; --i >= 0;) { entity.dirInputState[i].refresh(matchList[i](dpad)); } EDirectionFlags axisFlags; Vector2 axisVector; CHelper.createVector(entity.dirInputState, out axisVector, out axisFlags); privateMembers.axisVector = axisVector; privateMembers.axisFlag = axisFlags; }
//* ────________________________________* //* methods ───────────────────────────────-* //* -----------------------------------------------------------------------* /// <summary>方向ボタンの状態を更新します。</summary> /// <remarks>この状態では方向ボタンを持たないので、何も処理しません。</remarks> /// /// <param name="state">最新の入力情報。</param> /// <param name="entity">この状態を適用されているオブジェクト。</param> /// <param name="privateMembers"> /// オブジェクトと状態クラスのみがアクセス可能なフィールド。 /// </param> /// <param name="gameTime">前フレームが開始してからの経過時間。</param> protected override void refleshAxis( GamePadState state, CInputXBOX360 entity, CInputXBOX360.CPrivateMembers privateMembers, GameTime gameTime) { }