public override void OnManagedリソースの解放()
 {
     Dan_Plate?.Dispose();
     Sound_Section?.t解放する();
     Sound_Failed?.t解放する();
     base.OnManagedリソースの解放();
 }
Ejemplo n.º 2
0
 public override void OnManagedリソースの解放()
 {
     if (!this.b活性化してない)
     {
         TJAPlayer3.t安全にDisposeする(ref Dan_Plate);
         Sound_Section?.t解放する();
         Sound_Failed?.t解放する();
         base.OnManagedリソースの解放();
     }
 }
Ejemplo n.º 3
0
 public override void OnManagedリソースの解放()
 {
     if (TJAPlayer4.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan)
     {
         return;
     }
     Dan_Plate?.Dispose();
     Sound_Section?.t解放する();
     Sound_Failed?.t解放する();
     base.OnManagedリソースの解放();
 }
Ejemplo n.º 4
0
        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サウンドを先頭から再生する();
                }
            }
        }
Ejemplo n.º 6
0
        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
        }