예제 #1
0
        private チップ _指定された時刻に一番近いチップを返す(double 時刻sec, ドラム入力種別 drumType)
        {
            var チップtoプロパティ = App.ユーザ管理.ログオン中のユーザ.ドラムチッププロパティ管理.チップtoプロパティ;

            var 一番近いチップ            = (チップ)null;
            var 一番近いチップの時刻差の絶対値sec = (double)0.0;

            for (int i = 0; i < App.演奏スコア.チップリスト.Count; i++)
            {
                var chip = App.演奏スコア.チップリスト[i];

                if (チップtoプロパティ[chip.チップ種別].ドラム入力種別 != drumType)
                {
                    continue;   // 指定されたドラム入力種別ではないチップは無視。
                }
                if (null != 一番近いチップ)
                {
                    var 今回の時刻差の絶対値sec = Math.Abs(chip.描画時刻sec - 時刻sec);

                    if (一番近いチップの時刻差の絶対値sec < 今回の時刻差の絶対値sec)
                    {
                        // 時刻差の絶対値が前回より増えた → 前回のチップが指定時刻への再接近だった
                        break;
                    }
                }

                一番近いチップ            = chip;
                一番近いチップの時刻差の絶対値sec = Math.Abs(一番近いチップ.描画時刻sec - 時刻sec);
            }

            return(一番近いチップ);
        }
        private void comboBoxパッドリスト_SelectedIndexChanged(object sender, EventArgs e)
        {
            this._現在選択されているドラム入力種別 =
                (ドラム入力種別)Enum.Parse(typeof(ドラム入力種別), (string)this.comboBoxパッドリスト.SelectedItem);

            this._割り当て済みリストを更新する();
        }
예제 #3
0
 /// <summary>
 ///		現在の<see cref="ポーリング結果"/>に、指定したドラム入力イベントが含まれているかを確認する。
 /// </summary>
 /// <param name="イベント">調べるドラム入力イベント。</param>
 /// <returns><see cref="ポーリング結果"/>に含まれていれば true。</returns>
 public bool ドラムが入力された(ドラム入力種別 drumType)
 {
     if (0 == this.ポーリング結果.Count)                // 0 であることが大半だと思われるので、特別扱い。
     {
         return(false);
     }
     else
     {
         return(null != this.ポーリング結果.FirstOrDefault((ev) => (ev.Type == drumType)));
     }
 }
예제 #4
0
        // 押下チェック


        /// <summary>
        ///		現在の<see cref="ポーリング結果"/>に、指定したドラム入力イベントが含まれているかを確認する。
        /// </summary>
        /// <param name="イベント">調べるドラム入力イベント。</param>
        /// <returns><see cref="ポーリング結果"/>に含まれていれば true。</returns>
        public bool ドラムが入力された(ドラム入力種別 drumType)
        {
            if (0 == this.ポーリング結果.Count)    // 0 であることが大半だと思われるので、特別扱い。
            {
                return(false);
            }
            else
            {
                return(0 <= this.ポーリング結果.FindIndex((ev) => (ev.Type == drumType && ev.InputEvent.押された)));
            }
        }
예제 #5
0
        public チップ 一番最後のチップを返す(ドラム入力種別 drumType)
        {
            var チップtoプロパティ = App進行描画.ユーザ管理.ログオン中のユーザ.ドラムチッププロパティ管理.チップtoプロパティ;

            // チップリストの後方から先頭に向かって検索。
            for (int i = App進行描画.演奏スコア.チップリスト.Count - 1; i >= 0; i--)
            {
                var chip = App進行描画.演奏スコア.チップリスト[i];

                if (チップtoプロパティ[chip.チップ種別].ドラム入力種別 == drumType)
                {
                    return(chip);    // 見つけた
                }
            }

            return(null);    // 見つからなかった
        }
예제 #6
0
        /// <summary>
        ///     指定された <see cref="ドラム入力種別"/> のうちのいずれかに対応するチップのうち、一番最後に現れるものを返す。
        /// </summary>
        /// <param name="drumType">チップに対応する <see cref="ドラム入力種別"/> の集合。</param>
        /// <returns>一番最後に現れたチップ。見つからなかったら null。</returns>
        private SSTF.チップ?_一番最後のチップを返す(ドラム入力種別 drumType)
        {
            var チップtoプロパティ = Global.App.ログオン中のユーザ.ドラムチッププロパティリスト.チップtoプロパティ;

            // チップリストの後方から先頭に向かって検索。
            for (int i = Global.App.演奏スコア.チップリスト.Count - 1; i >= 0; i--)
            {
                var chip = Global.App.演奏スコア.チップリスト[i];

                if (チップtoプロパティ[chip.チップ種別].ドラム入力種別 == drumType)
                {
                    return(chip);    // 見つけた
                }
            }

            return(null);    // 見つからなかった
        }
예제 #7
0
            // ストロークはシーケンスの構成単位。ここでは「指定されたドラム入力種別に対応するドラム入力イベント」と同義である。
            // ドラム入力種別 と ドラム入力イベント は、1 対 N の関係である。

            static bool 適合する(ドラム入力種別 drumType, ドラム入力イベント drumEvent)
            => (drumEvent.Type == drumType && drumEvent.InputEvent.押された);
 public ドラム入力イベント(InputEvent 入力イベント, ドラム入力種別 ドラム入力種別)
 {
     this.Type       = ドラム入力種別;
     this.InputEvent = 入力イベント;
 }
 public void Reset()
 {
     this.InputEvent = new InputEvent();
     this.Type = ドラム入力種別.Unknown;
 }