Exemple #1
0
 public void Hit(EInstrumentPart inst, int nTime, EJudgement judge)
 {
     if (judge == EJudgement.Perfect || judge == EJudgement.Great || judge == EJudgement.Good)
     {
         listProgressSection[(int)inst][nTime * nSectionIntervalCount / nLastChipTime].nHitCount++;
     }
 }
        protected override EJudgement tProcessChipHit(long nHitTime, CDTX.CChip pChip, bool bCorrectLane)
        {
            EJudgement eJudgeResult = tProcessChipHit(nHitTime, pChip, EInstrumentPart.GUITAR, bCorrectLane);

            if (pChip.eInstrumentPart == EInstrumentPart.GUITAR && CDTXMania.ConfigIni.bGraph有効.Guitar)
            {
                if (CDTXMania.ConfigIni.nSkillMode == 0)
                {
                    this.actGraph.dbグラフ値現在_渡 = CScoreIni.tCalculatePlayingSkillOld(CDTXMania.DTX.nVisibleChipsCount.Guitar, this.nHitCount_ExclAuto.Guitar.Perfect, this.nHitCount_ExclAuto.Guitar.Great, this.nHitCount_ExclAuto.Guitar.Good, this.nHitCount_ExclAuto.Guitar.Poor, this.nHitCount_ExclAuto.Guitar.Miss, this.actCombo.nCurrentCombo.HighestValue.Guitar, EInstrumentPart.GUITAR, bIsAutoPlay);
                }
                else
                {
                    this.actGraph.dbグラフ値現在_渡 = CScoreIni.tCalculatePlayingSkill(CDTXMania.DTX.nVisibleChipsCount.Guitar, this.nHitCount_ExclAuto.Guitar.Perfect, this.nHitCount_ExclAuto.Guitar.Great, this.nHitCount_ExclAuto.Guitar.Good, this.nHitCount_ExclAuto.Guitar.Poor, this.nHitCount_ExclAuto.Guitar.Miss, this.actCombo.nCurrentCombo.HighestValue.Guitar, EInstrumentPart.GUITAR, bIsAutoPlay);
                }

                if (CDTXMania.listTargetGhsotLag.Guitar != null &&
                    CDTXMania.ConfigIni.eTargetGhost.Guitar == ETargetGhostData.ONLINE &&
                    CDTXMania.DTX.nVisibleChipsCount.Guitar > 0)
                {
                    this.actGraph.dbグラフ値現在_渡 = 100 *
                                               (this.nHitCount_ExclAuto.Guitar.Perfect * 17 +
                                                this.nHitCount_ExclAuto.Guitar.Great * 7 +
                                                this.actCombo.nCurrentCombo.HighestValue.Guitar * 3) / (20.0 * CDTXMania.DTX.nVisibleChipsCount.Guitar);
                }

                this.actGraph.n現在のAutoを含まない判定数_渡[0] = this.nHitCount_ExclAuto.Guitar.Perfect;
                this.actGraph.n現在のAutoを含まない判定数_渡[1] = this.nHitCount_ExclAuto.Guitar.Great;
                this.actGraph.n現在のAutoを含まない判定数_渡[2] = this.nHitCount_ExclAuto.Guitar.Good;
                this.actGraph.n現在のAutoを含まない判定数_渡[3] = this.nHitCount_ExclAuto.Guitar.Poor;
                this.actGraph.n現在のAutoを含まない判定数_渡[4] = this.nHitCount_ExclAuto.Guitar.Miss;
            }
            else if (pChip.eInstrumentPart == EInstrumentPart.BASS && CDTXMania.ConfigIni.bGraph有効.Bass)
            {
                if (CDTXMania.ConfigIni.nSkillMode == 0)
                {
                    this.actGraph.dbグラフ値現在_渡 = CScoreIni.tCalculatePlayingSkillOld(CDTXMania.DTX.nVisibleChipsCount.Bass, this.nHitCount_ExclAuto.Bass.Perfect, this.nHitCount_ExclAuto.Bass.Great, this.nHitCount_ExclAuto.Bass.Good, this.nHitCount_ExclAuto.Bass.Poor, this.nHitCount_ExclAuto.Bass.Miss, this.actCombo.nCurrentCombo.HighestValue.Bass, EInstrumentPart.BASS, bIsAutoPlay);
                }
                else
                {
                    this.actGraph.dbグラフ値現在_渡 = CScoreIni.tCalculatePlayingSkill(CDTXMania.DTX.nVisibleChipsCount.Bass, this.nHitCount_ExclAuto.Bass.Perfect, this.nHitCount_ExclAuto.Bass.Great, this.nHitCount_ExclAuto.Bass.Good, this.nHitCount_ExclAuto.Bass.Poor, this.nHitCount_ExclAuto.Bass.Miss, this.actCombo.nCurrentCombo.HighestValue.Bass, EInstrumentPart.BASS, bIsAutoPlay);
                }

                if (CDTXMania.listTargetGhsotLag.Bass != null &&
                    CDTXMania.ConfigIni.eTargetGhost.Bass == ETargetGhostData.ONLINE &&
                    CDTXMania.DTX.nVisibleChipsCount.Bass > 0)
                {
                    this.actGraph.dbグラフ値現在_渡 = 100 *
                                               (this.nHitCount_ExclAuto.Bass.Perfect * 17 +
                                                this.nHitCount_ExclAuto.Bass.Great * 7 +
                                                this.actCombo.nCurrentCombo.HighestValue.Bass * 3) / (20.0 * CDTXMania.DTX.nVisibleChipsCount.Bass);
                }

                this.actGraph.n現在のAutoを含まない判定数_渡[0] = this.nHitCount_ExclAuto.Bass.Perfect;
                this.actGraph.n現在のAutoを含まない判定数_渡[1] = this.nHitCount_ExclAuto.Bass.Great;
                this.actGraph.n現在のAutoを含まない判定数_渡[2] = this.nHitCount_ExclAuto.Bass.Good;
                this.actGraph.n現在のAutoを含まない判定数_渡[3] = this.nHitCount_ExclAuto.Bass.Poor;
                this.actGraph.n現在のAutoを含まない判定数_渡[4] = this.nHitCount_ExclAuto.Bass.Miss;
            }
            return(eJudgeResult);
        }
 public InspectResult(EJudgement judgement, IEnumerable <SubResult> subResults, string waferID = null, string resultmessage = "", string folderPath = "")
 {
     Judgement  = judgement;
     SubResults = subResults;
     WaferID    = waferID;
     //Modify.ach.20210601.Camera 결과값 매개변수 추가.Start...
     Resultmessage = resultmessage;
     FolderPath    = folderPath;
     //Modify.ach.20210601.Camera 결과값 매개변수 추가.End...
 }
        // メソッド

        public virtual void Start(int nLane, EJudgement judge, int lag)
        {
            if ((nLane < 0) || (nLane > 14))
            {
                throw new IndexOutOfRangeException("有効範囲は 0~14 です。");
            }
            if (((nLane >= 10) || (((EType)CDTXMania.ConfigIni.JudgementStringPosition.Drums) != EType.C)) && (((nLane != 13) || (((EType)CDTXMania.ConfigIni.JudgementStringPosition.Guitar) != EType.D)) && ((nLane != 14) || (((EType)CDTXMania.ConfigIni.JudgementStringPosition.Bass) != EType.D))))
            {
                if (CDTXMania.ConfigIni.nJudgeAnimeType != 0)
                {
                    this.st状態[nLane].ct進行 = new CCounter(0, CDTXMania.ConfigIni.nJudgeFrames - 1, CDTXMania.ConfigIni.nJudgeInterval, CDTXMania.Timer);
                }
                else
                {
                    this.st状態[nLane].ct進行 = new CCounter(0, 300, 1, CDTXMania.Timer);
                }
                this.st状態[nLane].judge   = judge;
                this.st状態[nLane].fX方向拡大率 = 1f;
                this.st状態[nLane].fY方向拡大率 = 1f;
                this.st状態[nLane].fZ軸回転度  = 0f;
                this.st状態[nLane].n相対X座標  = 0;
                this.st状態[nLane].n相対Y座標  = 0;
                this.st状態[nLane].n透明度    = 0xff;

                this.st状態[nLane].fX方向拡大率B = 1f;
                this.st状態[nLane].fY方向拡大率B = 1f;
                this.st状態[nLane].n相対X座標B  = 0;
                this.st状態[nLane].n相対Y座標B  = 0;
                this.st状態[nLane].n透明度B    = 0xff;

                this.st状態[nLane].fZ軸回転度_棒  = 0f;
                this.st状態[nLane].fX方向拡大率_棒 = 0;
                this.st状態[nLane].fY方向拡大率_棒 = 0;
                this.st状態[nLane].n相対X座標_棒  = 0;
                this.st状態[nLane].n相対Y座標_棒  = 0;

                this.st状態[nLane].nLag = lag;
            }
        }
Exemple #5
0
        // ----------------------------------
        #endregion
#endif

        public void Damage(EInstrumentPart screenmode, EInstrumentPart part, EJudgement e今回の判定)
        {
            double fDamage;

#if true                                             // DAMAGELEVELTUNING
            if (CDTXMania.ConfigIni.nSkillMode == 1) // 0: Classic 1: XG
            {
                fDamageGaugeDelta[0, 0] = 0.005f;
                fDamageGaugeDelta[1, 0] = 0.001f;
                fDamageGaugeDelta[3, 0] = -0.017f;
                fDamageGaugeDelta[4, 0] = -0.041f;
            }
            switch (e今回の判定)
            {
            case EJudgement.Perfect:
            {
                fDamage = bRisky ? 0 : fDamageGaugeDelta[(int)e今回の判定, (int)part];
                break;
            }

            case EJudgement.Great:

                if (CDTXMania.ConfigIni.bHAZARD)
                {
                    if (bRisky)
                    {
                        fDamage = (nRiskyTimes == 1) ? 0 : -GAUGE_MAX / (nRiskyTimes_Initial - 1);      // Risky=1のときは1Miss即閉店なのでダメージ計算しない
                        if (nRiskyTimes >= 0)
                        {
                            nRiskyTimes--;                                      // 念のため-1未満には減らないようにしておく
                        }
                    }
                    else
                    {
                        fDamage = fDamageGaugeDelta[(int)4, (int)part];
                    }
                }
                else
                {
                    fDamage = bRisky ? 0 : fDamageGaugeDelta[(int)e今回の判定, (int)part];
                }
                break;

            case EJudgement.Good:

                if (CDTXMania.ConfigIni.bHAZARD)
                {
                    if (bRisky)
                    {
                        fDamage = (nRiskyTimes == 1) ? 0 : -GAUGE_MAX / (nRiskyTimes_Initial - 1);      // Risky=1のときは1Miss即閉店なのでダメージ計算しない
                        if (nRiskyTimes >= 0)
                        {
                            nRiskyTimes--;                                      // 念のため-1未満には減らないようにしておく
                        }
                    }
                    else
                    {
                        fDamage = fDamageGaugeDelta[(int)4, (int)part];
                    }
                }
                else
                {
                    fDamage = bRisky ? 0 : fDamageGaugeDelta[(int)e今回の判定, (int)part];
                }
                break;

            case EJudgement.Poor:
            case EJudgement.Miss:
                if (bRisky)
                {
                    fDamage = (nRiskyTimes == 1)? 0 : -GAUGE_MAX / (nRiskyTimes_Initial - 1);                                   // Risky=1のときは1Miss即閉店なのでダメージ計算しない
                    if (nRiskyTimes >= 0)
                    {
                        nRiskyTimes--;                                                          // 念のため-1未満には減らないようにしておく
                    }
                }
                else
                {
                    fDamage = fDamageGaugeDelta[(int)e今回の判定, (int)part];
                }
                if (e今回の判定 == EJudgement.Miss && !bRisky)
                {
                    fDamage *= fDamageLevelFactor[(int)CDTXMania.ConfigIni.eDamageLevel];
                }
                break;

            default:
                fDamage = 0.0f;
                break;
            }
#else                                                                                                   // before applying #23625 modifications
            switch (e今回の判定)
            {
            case E判定.Perfect:
                fDamage = (part == E楽器パート.DRUMS) ? 0.01 : 0.015;
                break;

            case E判定.Great:
                fDamage = (part == E楽器パート.DRUMS) ? 0.006 : 0.009;
                break;

            case E判定.Good:
                fDamage = (part == E楽器パート.DRUMS) ? 0.002 : 0.003;
                break;

            case E判定.Poor:
                fDamage = (part == E楽器パート.DRUMS) ? 0.0 : 0.0;
                break;

            case E判定.Miss:
                fDamage = (part == E楽器パート.DRUMS) ? -0.035 : -0.035;
                switch (CDTXMania.ConfigIni.eダメージレベル)
                {
                case Eダメージレベル.少ない:
                    fDamage *= 0.6;
                    break;

                case Eダメージレベル.普通:
                    fDamage *= 1.0;
                    break;

                case Eダメージレベル.大きい:
                    fDamage *= 1.6;
                    break;
                }
                break;

            default:
                fDamage = 0.0;
                break;
            }
#endif
            if (screenmode == EInstrumentPart.DRUMS)                            // ドラム演奏画面なら、ギター/ベースのダメージも全部ドラムのゲージに集約する
            {
                part = EInstrumentPart.DRUMS;
                this.db現在のゲージ値[(int)part] += fDamage;
            }
            else
            {
                if (this.bRisky)                                                                // ギター画面且つRISKYなら、ギターとベースのゲージをセットで減少
                {
                    this.db現在のゲージ値[(int)EInstrumentPart.GUITAR] += fDamage;
                    this.db現在のゲージ値[(int)EInstrumentPart.BASS]   += fDamage;
                }
                else
                {
                    this.db現在のゲージ値[(int)part] += fDamage;
                }
            }

            if (this.db現在のゲージ値[(int)part] > GAUGE_MAX)                          // RISKY時は決してゲージが増加しないので、ギタレボモード時のギター/ベース両チェック(上限チェック)はしなくて良い
            {
                this.db現在のゲージ値[(int)part] = GAUGE_MAX;
            }
        }