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._割り当て済みリストを更新する(); }
/// <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))); } }
// 押下チェック /// <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.押された))); } }
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); // 見つからなかった }
/// <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); // 見つからなかった }
// ストロークはシーケンスの構成単位。ここでは「指定されたドラム入力種別に対応するドラム入力イベント」と同義である。 // ドラム入力種別 と ドラム入力イベント は、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; }