Пример #1
0
 //* -----------------------------------------------------------------------*
 /// <summary>1フレーム分の更新処理を実行します。</summary>
 ///
 /// <param name="entity">この状態を適用されているオブジェクト。</param>
 /// <param name="privateMembers">
 /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
 /// </param>
 /// <param name="gameTime">前フレームが開始してからの経過時間。</param>
 public override void update(CXNAInput <_T> entity,
                             CXNAInput <_T> .CPrivateMembers privateMembers, GameTime gameTime)
 {
     privateMembers.prevState = privateMembers.nowState;
     privateMembers.nowState  = getState();
     privateMembers.aiForce.update(gameTime);
 }
Пример #2
0
        //* ────────────-_______________________*
        //* constructor & destructor ───────────────────────*

        //* -----------------------------------------------------------------------*
        /// <summary>コンストラクタ。</summary>
        ///
        /// <param name="stateList">状態のコレクション。</param>
        public CXBOX360InputCollection(IList stateList)
        {
            int length = stateList.Count;

            CXNAInput <_T>[] array = new CXNAInput <_T> [length];
            for (int i = length; --i >= 0;)
            {
                array[i] = new CXNAInput <_T>((IState)stateList[i]);
            }
            inputList = new List <CXNAInput <_T> >(array).AsReadOnly();
        }
        //* -----------------------------------------------------------------------*
        /// <summary>1フレーム分の更新処理を実行します。</summary>
        ///
        /// <param name="entity">この状態を適用されているオブジェクト。</param>
        /// <param name="privateMembers">
        /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
        /// </param>
        /// <param name="gameTime">前フレームが開始してからの経過時間。</param>
        public override void update(
            CEntity entity, CXNAInput <_T> privateMembers, GameTime gameTime)
        {
            int counter = entity.counter;

            GamePad.SetVibration(privateMembers.playerIndex,
                                 privateMembers.force.strengthL.smooth(counter, privateMembers.force.durationL),
                                 privateMembers.force.strengthS.smooth(counter, privateMembers.force.durationS));
            if (counter > privateMembers.force.duration)
            {
                entity.nextState = CState.empty;
            }
        }
Пример #4
0
        //* -----------------------------------------------------------------------*
        /// <summary>ボタン入力を検出します。</summary>
        /// <remarks>
        /// 注意: このメソッドを呼び出すと、自動的に登録されているクラスに対して
        /// <c>update()</c>が実行されます。レガシ ゲームパッドが高位入力管理クラスにて
        /// アクティブの状態でこのメソッドを呼び出すと、高位入力側の判定が
        /// 1フレーム分欠落します。
        /// </remarks>
        ///
        /// <param name="gameTime">前フレームが開始してからの経過時間。</param>
        /// <returns>
        /// ボタン入力が検出されたデバイスの管理クラス。検出しなかった場合、<c>null</c>。
        /// </returns>
        public CXNAInput <_T> detectInput(GameTime gameTime)
        {
            CXNAInput <_T> result = null;

            for (int i = inputList.Count; --i >= 0 && result == null;)
            {
                CXNAInput <_T> input = inputList[i];
                input.update(gameTime);
                if (isInput(input.nowInputState, input.prevInputState))
                {
                    result = input;
                }
            }
            return(result);
        }
 //* -----------------------------------------------------------------------*
 /// <summary>1フレーム分の描画処理を実行します。</summary>
 ///
 /// <param name="entity">この状態を適用されているオブジェクト。</param>
 /// <param name="privateMembers">
 /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
 /// </param>
 /// <param name="gameTime">前フレームが開始してからの経過時間。</param>
 public override void draw(CEntity entity, CXNAInput <_T> privateMembers, GameTime gameTime)
 {
 }
        //* ────________________________________*
        //* methods ───────────────────────────────-*

        //* -----------------------------------------------------------------------*
        /// <summary>
        /// <para>状態が開始された時に呼び出されます。</para>
        /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para>
        /// </summary>
        ///
        /// <param name="entity">この状態を適用されたオブジェクト。</param>
        /// <param name="privateMembers">
        /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
        /// </param>
        public override void setup(CEntity entity, CXNAInput <_T> privateMembers)
        {
            entity.resetCounter();
        }
 //* -----------------------------------------------------------------------*
 /// <summary>
 /// <para>オブジェクトが別の状態へ移行する時に呼び出されます。</para>
 /// <para>このメソッドは、遷移先の<c>setup</c>よりも先に呼び出されます。</para>
 /// </summary>
 ///
 /// <param name="entity">この状態を終了したオブジェクト。</param>
 /// <param name="privateMembers">
 /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
 /// </param>
 /// <param name="nextState">オブジェクトが次に適用する状態。</param>
 public override void teardown(
     CEntity entity, CXNAInput <_T> privateMembers, IState nextState)
 {
     GamePad.SetVibration(privateMembers.playerIndex, 0, 0);
 }
Пример #8
0
 //* -----------------------------------------------------------------------*
 /// <summary>
 /// <para>オブジェクトが別の状態へ移行する時に呼び出されます。</para>
 /// <para>このメソッドは、遷移先の<c>setup</c>よりも先に呼び出されます。</para>
 /// </summary>
 ///
 /// <param name="entity">この状態を終了したオブジェクト。</param>
 /// <param name="privateMembers">
 /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
 /// </param>
 /// <param name="nextState">オブジェクトが次に適用する状態。</param>
 public override void teardown(
     CXNAInput <_T> entity, CXNAInput <_T> .CPrivateMembers privateMembers, IState nextState)
 {
     // 入力されたデータだけは破棄する
     privateMembers.Dispose();
 }
Пример #9
0
 //* -----------------------------------------------------------------------*
 /// <summary>1フレーム分の描画処理を実行します。</summary>
 ///
 /// <param name="entity">この状態を適用されているオブジェクト。</param>
 /// <param name="privateMembers">
 /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
 /// </param>
 /// <param name="gameTime">前フレームが開始してからの経過時間。</param>
 public override void draw(CXNAInput <_T> entity,
                           CXNAInput <_T> .CPrivateMembers privateMembers, GameTime gameTime)
 {
 }
Пример #10
0
        //* ────________________________________*
        //* methods ───────────────────────────────-*

        //* -----------------------------------------------------------------------*
        /// <summary>
        /// <para>状態が開始された時に呼び出されます。</para>
        /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para>
        /// </summary>
        ///
        /// <param name="entity">この状態を適用されたオブジェクト。</param>
        /// <param name="privateMembers">
        /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
        /// </param>
        public override void setup(
            CXNAInput <_T> entity, CXNAInput <_T> .CPrivateMembers privateMembers)
        {
        }
Пример #11
0
 //* -----------------------------------------------------------------------*
 /// <summary>
 /// <para>状態が開始された時に呼び出されます。</para>
 /// <para>このメソッドは、遷移元の<c>teardown</c>よりも後に呼び出されます。</para>
 /// </summary>
 ///
 /// <param name="entity">この状態を適用されたオブジェクト。</param>
 /// <param name="privateMembers">
 /// オブジェクトと状態クラスのみがアクセス可能なフィールド。
 /// </param>
 public override void setup(
     CXNAInput <GamePadState> entity, CXNAInput <GamePadState> .CPrivateMembers privateMembers)
 {
     privateMembers.playerIndex = playerIndex;
     base.setup(entity, privateMembers);
 }