public override void OnManagedリソースの解放() { Dan_Plate?.Dispose(); Sound_Section?.t解放する(); Sound_Failed?.t解放する(); base.OnManagedリソースの解放(); }
public override void OnManagedリソースの解放() { if (!this.b活性化してない) { TJAPlayer3.t安全にDisposeする(ref Dan_Plate); Sound_Section?.t解放する(); Sound_Failed?.t解放する(); base.OnManagedリソースの解放(); } }
public override void OnManagedリソースの解放() { if (TJAPlayer4.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan) { return; } Dan_Plate?.Dispose(); Sound_Section?.t解放する(); Sound_Failed?.t解放する(); base.OnManagedリソースの解放(); }
private void GaugeUpdate() { if (TJAPlayer4.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan) { return; } #region [ ゲージの条件 ] for (int n = 0; n < 3; n++) { if (Challenge_Gauge == null || !Challenge_Gauge.GetEnable()) { return; } var oldReached = Challenge_Gauge.GetReached(); Challenge_Gauge.Update((int)TJAPlayer4.stage演奏ドラム画面.actGauge.db現在のゲージ値[0]); // 条件の達成見込みがあるかどうか判断する。 if (Challenge_Gauge.GetExamRange() == Exam.Range.Less) { Challenge_Gauge.SetReached(!Challenge_Gauge.IsCleared[0]); } else { var notesRemain = TJAPlayer4.DTX[0].nノーツ数[3] - (TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含む[0].Drums.Perfect + TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含まない[0].Drums.Perfect) - (TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含む[0].Drums.Great + TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含まない[0].Drums.Great) - (TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含む[0].Drums.Miss + TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含まない[0].Drums.Miss); if (Challenge_Gauge.Amount < Challenge_Gauge.Value[0] && notesRemain <= 0) { Challenge_Gauge.SetReached(true); //残り音符が0の時 } } if (oldReached == false && Challenge_Gauge.GetReached() == true) { Sound_Failed?.tサウンドを先頭から再生する(); } } #endregion }
public void Update() { for (int i = 0; i < 4; i++) { if (Challenge[i] == null || !Challenge[i].GetEnable()) { return; } var oldReached = Challenge[i].GetReached(); var isChangedAmount = false; switch (Challenge[i].GetExamType()) { case Exam.Type.Gauge: isChangedAmount = Challenge[i].Update((int)TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[0]); break; case Exam.Type.JudgePerfect: isChangedAmount = Challenge[i].Update((int)TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Perfect + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect); break; case Exam.Type.JudgeGood: isChangedAmount = Challenge[i].Update((int)TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Great + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great); break; case Exam.Type.JudgeBad: isChangedAmount = Challenge[i].Update((int)TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss); break; case Exam.Type.Score: isChangedAmount = Challenge[i].Update((int)TJAPlayer3.stage演奏ドラム画面.actScore.GetScore(0)); break; case Exam.Type.Roll: isChangedAmount = Challenge[i].Update((int)(TJAPlayer3.stage演奏ドラム画面.GetRoll(0))); break; case Exam.Type.Hit: isChangedAmount = Challenge[i].Update((int)(TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Perfect + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Great + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great + TJAPlayer3.stage演奏ドラム画面.GetRoll(0))); break; case Exam.Type.Combo: isChangedAmount = Challenge[i].Update((int)TJAPlayer3.stage演奏ドラム画面.actCombo.n現在のコンボ数.P1最高値); break; default: break; } // 値が変更されていたらアニメーションを行う。 if (isChangedAmount) { if (Status[i].Timer_Amount != null && Status[i].Timer_Amount.b終了値に達してない) { Status[i].Timer_Amount = new CCounter(0, 11, 12, TJAPlayer3.Timer); Status[i].Timer_Amount.n現在の値 = 1; } else { Status[i].Timer_Amount = new CCounter(0, 11, 12, TJAPlayer3.Timer); } } // 条件の達成見込みがあるかどうか判断する。 if (Challenge[i].GetExamRange() == Exam.Range.Less) { Challenge[i].SetReached(!Challenge[i].IsCleared[0]); } else { var notesRemain = TJAPlayer3.DTX.nノーツ数[3] - (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Perfect + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect) - (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Great + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great) - (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Miss + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss); // 残り音符数が0になったときに判断されるやつ if (notesRemain <= 0) { // 残り音符数ゼロ switch (Challenge[i].GetExamType()) { case Exam.Type.Gauge: if (Challenge[i].Amount < Challenge[i].Value[0]) { Challenge[i].SetReached(true); } break; case Exam.Type.Score: if (Challenge[i].Amount < Challenge[i].Value[0]) { Challenge[i].SetReached(true); } break; default: // 何もしない break; } } // 常に監視されるやつ。 switch (Challenge[i].GetExamType()) { case Exam.Type.JudgePerfect: case Exam.Type.JudgeGood: case Exam.Type.JudgeBad: if (notesRemain < (Challenge[i].Value[0] - Challenge[i].Amount)) { Challenge[i].SetReached(true); } break; case Exam.Type.Combo: if (notesRemain + TJAPlayer3.stage演奏ドラム画面.actCombo.n現在のコンボ数.P1 < ((Challenge[i].Value[0])) && TJAPlayer3.stage演奏ドラム画面.actCombo.n現在のコンボ数.P1最高値 < (Challenge[i].Value[0])) { Challenge[i].SetReached(true); } break; default: break; } // 音源が終了したやつの分岐。 // ( CDTXMania.DTX.listChip.Count > 0 ) ? CDTXMania.DTX.listChip[ CDTXMania.DTX.listChip.Count - 1 ].n発声時刻ms : 0; if (!IsEnded) { if (TJAPlayer3.DTX.listChip.Count <= 0) { continue; } if (TJAPlayer3.DTX.listChip[TJAPlayer3.DTX.listChip.Count - 1].n発声時刻ms < TJAPlayer3.Timer.n現在時刻) { switch (Challenge[i].GetExamType()) { case Exam.Type.Score: case Exam.Type.Roll: case Exam.Type.Hit: if (Challenge[i].Amount < Challenge[i].Value[0]) { Challenge[i].SetReached(true); } break; default: break; } IsEnded = true; } } } if (oldReached == false && Challenge[i].GetReached() == true) { Sound_Failed?.tサウンドを先頭から再生する(); } } }
public void Update(bool Animetion = true) { if (TJAPlayer4.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan) { return; } #region [ 曲ごとの条件 ] for (int i = 0; i <= NowShowingNumber; i++) { for (int n = 0; n < 3; n++) { if (Challenge[i][n] == null || !Challenge[i][n].GetEnable()) { return; } var oldReached = Challenge[i][n].GetReached(); var isChangedAmount = false; switch (Challenge[i][n].GetExamType()) { case Exam.Type.Gauge: isChangedAmount = Challenge[i][n].Update((int)TJAPlayer4.stage演奏ドラム画面.actGauge.db現在のゲージ値[0]); break; case Exam.Type.JudgePerfect: isChangedAmount = Challenge[i][n].Update(TJAPlayer4.DTX[0].ExamChange[n] ? nPerfect[i] : (int)TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含む[0].Drums.Perfect + TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含まない[0].Drums.Perfect); break; case Exam.Type.JudgeGood: isChangedAmount = Challenge[i][n].Update(TJAPlayer4.DTX[0].ExamChange[n] ? nGood[i] : (int)TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含む[0].Drums.Great + TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含まない[0].Drums.Great); break; case Exam.Type.JudgeBad: isChangedAmount = Challenge[i][n].Update(TJAPlayer4.DTX[0].ExamChange[n] ? nMiss[i] : (int)TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含まない[0].Drums.Miss); break; case Exam.Type.Score: isChangedAmount = Challenge[i][n].Update(TJAPlayer4.DTX[0].ExamChange[n] ? nScore[i] : (int)TJAPlayer4.stage演奏ドラム画面.actScore.GetScore(0)); break; case Exam.Type.Roll: isChangedAmount = Challenge[i][n].Update(TJAPlayer4.DTX[0].ExamChange[n] ? nRoll[i] : (int)TJAPlayer4.stage演奏ドラム画面.GetRoll(0)); break; case Exam.Type.Hit: isChangedAmount = Challenge[i][n].Update(TJAPlayer4.DTX[0].ExamChange[n] ? (int)(nPerfect[i] + nGood[i] + nRoll[i]) : (int)(TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含む[0].Drums.Perfect + TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含まない[0].Drums.Perfect + TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含む[0].Drums.Great + TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含まない[0].Drums.Great + TJAPlayer4.stage演奏ドラム画面.GetRoll(0))); break; case Exam.Type.Combo: isChangedAmount = Challenge[i][n].Update(TJAPlayer4.DTX[0].ExamChange[n] ? nCombo[i] : (int)TJAPlayer4.stage演奏ドラム画面.actCombo.n現在のコンボ数.最高値[0]); break; default: break; } // 値が変更されていたらアニメーションを行う。 if (isChangedAmount && Animetion) { if (Status[n].Timer_Amount != null && Status[n].Timer_Amount.b終了値に達してない) { Status[n].Timer_Amount = new CCounter(0, 11, 12, TJAPlayer4.Timer); Status[n].Timer_Amount.n現在の値 = 1; } else { Status[n].Timer_Amount = new CCounter(0, 11, 12, TJAPlayer4.Timer); } } // 条件の達成見込みがあるかどうか判断する。 if (Challenge[i][n].GetExamRange() == Exam.Range.Less) { Challenge[i][n].SetReached(!Challenge[i][n].IsCleared[0]); } else { var notesRemain = TJAPlayer4.DTX[0].nノーツ数[3] - (TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含む[0].Drums.Perfect + TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含まない[0].Drums.Perfect) - (TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含む[0].Drums.Great + TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含まない[0].Drums.Great) - (TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含む[0].Drums.Miss + TJAPlayer4.stage演奏ドラム画面.nヒット数_Auto含まない[0].Drums.Miss); var notes = TJAPlayer4.DTX[0].DanNotes[3][NowShowingNumber] - nPerfect[NowShowingNumber] - nGood[NowShowingNumber] - nMiss[NowShowingNumber]; switch (Challenge[i][n].GetExamType()) { case Exam.Type.Gauge: if (Challenge[i][n].Amount < Challenge[i][n].Value[0] && (TJAPlayer4.DTX[0].ExamChange[n] ? notes : notesRemain) <= 0) { Challenge[i][n].SetReached(true); //残り音符が0の時 } break; case Exam.Type.JudgePerfect: case Exam.Type.JudgeGood: case Exam.Type.JudgeBad: if ((TJAPlayer4.DTX[0].ExamChange[n] ? notes : notesRemain) < (Challenge[i][n].Value[0] - Challenge[i][n].Amount)) { Challenge[i][n].SetReached(true); } break; case Exam.Type.Combo: if ((TJAPlayer4.DTX[0].ExamChange[n] ? notes : notesRemain) + TJAPlayer4.stage演奏ドラム画面.actCombo.n現在のコンボ数.P1 < Challenge[i][n].Value[0] && TJAPlayer4.stage演奏ドラム画面.actCombo.n現在のコンボ数.最高値[0] < Challenge[i][n].Value[0]) { Challenge[i][n].SetReached(true); } break; case Exam.Type.Score: case Exam.Type.Hit: if (((TJAPlayer4.DTX[0].ExamChange[n] ? TJAPlayer4.DTX[0].LastRoll[3][NowShowingNumber] : TJAPlayer4.DTX[0].LastRoll[3][TJAPlayer4.DTX[0].List_DanSongs.Count - 1]) < CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer4.ConfigIni.n演奏速度) / 20.0)) && (TJAPlayer4.DTX[0].ExamChange[n] ? notes : notesRemain) <= 0 && Challenge[i][n].Amount < Challenge[i][n].Value[0]) { Challenge[i][n].SetReached(true); //最後のノーツが通過したとき } break; case Exam.Type.Roll: if ((TJAPlayer4.DTX[0].ExamChange[n] ? TJAPlayer4.DTX[0].LastRoll[3][NowShowingNumber] : TJAPlayer4.DTX[0].LastRoll[3][TJAPlayer4.DTX[0].List_DanSongs.Count - 1]) < CSound管理.rc演奏用タイマ.n現在時刻 * ((double)TJAPlayer4.ConfigIni.n演奏速度 / 20.0) && Challenge[i][n].Amount < Challenge[i][n].Value[0]) { Challenge[i][n].SetReached(true); //最後の連打ノーツが通過したとき } break; default: break; } } if (oldReached == false && Challenge[NowShowingNumber][n].GetReached() == true) { Sound_Failed?.tサウンドを先頭から再生する(); } } } #endregion }