Esempio n. 1
0
        }                                                                                               //

        // CStage 実装

        public override void On活性化()
        {
            Trace.TraceInformation("コンフィグステージを活性化します。");
            Trace.Indent();
            try
            {
                this.n現在のメニュー番号 = 0;                                                                    //
                if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName))
                {
                    this.ftフォント = new Font(TJAPlayer3.ConfigIni.FontName, 18.0f, FontStyle.Bold, GraphicsUnit.Pixel);
                }

                for (int i = 0; i < 4; i++)                                                                             //
                {                                                                                                       //
                    this.ctキー反復用[i] = new CCounter(0, 0, 0, TJAPlayer3.Timer);                                          //
                }                                                                                                       //
                this.bメニューにフォーカス中  = true;                                                                              // ここまでOPTIONと共通
                this.eItemPanelモード = EItemPanelモード.パッド一覧;
                Discord.UpdatePresence("", "Config", TJAPlayer3.StartupTime);
            }
            finally
            {
                Trace.TraceInformation("コンフィグステージの活性化を完了しました。");
                Trace.Unindent();
            }
            base.On活性化();                       // 2011.3.14 yyagi: On活性化()をtryの中から外に移動
        }
Esempio n. 2
0
        public override void On活性化()
        {
            n確定された曲の難易度 = new int[] { 0, 0 };
            Trace.TraceInformation("選曲ステージを活性化します。");
            Trace.Indent();
            try
            {
                this.eフェードアウト完了時の戻り値 = E戻り値.継続;
                this.bBGM再生済み        = false;
                this.ftフォント          = new Font("MS UI Gothic", 26f, GraphicsUnit.Pixel);
                for (int i = 0; i < 4; i++)
                {
                    this.ctキー反復用[i] = new CCounter(0, 0, 0, TJAPlayer3.Timer);
                }

                //this.act難易度選択画面.bIsDifficltSelect = true;
                base.On活性化();

                this.actステータスパネル.t選択曲が変更された();                  // 最大ランクを更新
                // Discord Presenceの更新
                Discord.UpdatePresence("", Properties.Discord.Stage_SongSelect, TJAPlayer3.StartupTime);
            }
            finally
            {
                TJAPlayer3.ConfigIni.eScrollMode   = EScrollMode.Normal;
                TJAPlayer3.ConfigIni.bスクロールモードを上書き = false;
                Trace.TraceInformation("選曲ステージの活性化を完了しました。");
                Trace.Unindent();
            }
        }
Esempio n. 3
0
        public override void On活性化()
        {
            Trace.TraceInformation("選曲ステージを活性化します。");
            Trace.Indent();
            try
            {
                TJAPlayer3.Skin.bgm選曲画面In.t再生する();
                TJAPlayer3.Skin.soundSongSelectChara.t再生する();
                this.eフェードアウト完了時の戻り値 = E戻り値.継続;
                this.bBGM再生済み        = false;
                this.ftフォント          = new Font("MS UI Gothic", 26f, GraphicsUnit.Pixel);
                for (int i = 0; i < 6; i++)
                {
                    this.ctキー反復用[i] = new CCounter(0, 0, 0, TJAPlayer3.Timer);
                }

                this.ctDonchanNormal = new CCounter(0, TJAPlayer3.Tx.SongSelect_Donchan_Normal.Length - 1, 1000 / 45, TJAPlayer3.Timer);
                this.ctDonchanSelect = new CCounter();
                this.ctDonchanStart  = new CCounter();
                ctDiffSelect移動待ち     = new CCounter();
                //this.act難易度選択画面.bIsDifficltSelect = true;
                base.On活性化();

                // Discord Presenceの更新
                Discord.UpdatePresence("", Properties.Discord.Stage_SongSelect, TJAPlayer3.StartupTime);
            }
            finally
            {
                TJAPlayer3.ConfigIni.eScrollMode   = EScrollMode.Normal;
                TJAPlayer3.ConfigIni.bスクロールモードを上書き = false;
                Trace.TraceInformation("選曲ステージの活性化を完了しました。");
                Trace.Unindent();
            }
        }
Esempio n. 4
0
        // CStage 実装

        public override void On活性化()
        {
            Trace.TraceInformation("メンテナンスステージを活性化します。");
            Trace.Indent();
            try
            {
                Discord.UpdatePresence("", "Maintenance", TJAPlayer3.StartupTime);
                base.On活性化();
            }
            finally
            {
                Trace.TraceInformation("メンテナンスの活性化を完了しました。");
                Trace.Unindent();
            }
        }
Esempio n. 5
0
        // CStage 実装

        public override void On活性化()
        {
            Trace.TraceInformation("終了ステージを活性化します。");
            Trace.Indent();
            try
            {
                this.ctAnimation = new CCounter();
                Discord.UpdatePresence("", "Ending", TJAPlayer3.StartupTime);
                base.On活性化();
            }
            finally
            {
                Trace.TraceInformation("終了ステージの活性化を完了しました。");
                Trace.Unindent();
            }
        }
Esempio n. 6
0
        // CStage 実装

        public override void On活性化()
        {
            this.voice終了画面 = new CSkin.Cシステムサウンド(@"Sounds\EndVoice.ogg", false, false, ESoundGroup.Voice);
            Trace.TraceInformation("終了ステージを活性化します。");
            Trace.Indent();
            try
            {
                this.ctAnimation = new CCounter();
                Discord.UpdatePresence("", "Ending", TJAPlayer3.StartupTime);
                base.On活性化();
            }
            finally
            {
                Trace.TraceInformation("終了ステージの活性化を完了しました。");
                Trace.Unindent();
            }
        }
        // CStage 実装

        public override void On活性化()
        {
            Trace.TraceInformation("タイトルステージを活性化します。");
            Trace.Indent();
            try
            {
                for (int i = 0; i < 4; i++)
                {
                    this.ctキー反復用[i] = new CCounter(0, 0, 0, TJAPlayer3.Timer);
                }
                this.ct上移動用 = new CCounter();
                this.ct下移動用 = new CCounter();

                base.On活性化();
                Discord.UpdatePresence("", "Title", TJAPlayer3.StartupTime);
            }
            finally
            {
                Trace.TraceInformation("タイトルステージの活性化を完了しました。");
                Trace.Unindent();
            }
        }
Esempio n. 8
0
        // CStage 実装

        public override void On活性化()
        {
            Trace.TraceInformation("結果ステージを活性化します。");
            Trace.Indent();
            var random = rng.Next(1, 99);

            if (random <= 24)
            {
                this.bgm結果画面 = new CSkin.Cシステムサウンド(@"Sounds\Result BGM.ogg", false, false, ESoundGroup.SongPlayback);
            }
            else if (random <= 50 && random >= 25)
            {
                this.bgm結果画面 = new CSkin.Cシステムサウンド(@"Sounds\Result BGM_1.ogg", false, false, ESoundGroup.SongPlayback);
            }
            else if (random <= 75 && random >= 51)
            {
                this.bgm結果画面 = new CSkin.Cシステムサウンド(@"Sounds\Result BGM_2.ogg", false, false, ESoundGroup.SongPlayback);
            }
            else if (random <= 99 && random >= 76)
            {
                this.bgm結果画面 = new CSkin.Cシステムサウンド(@"Sounds\Result BGM_3.ogg", false, false, ESoundGroup.SongPlayback);
            }
            try
            {
                #region [ 初期化 ]
                //---------------------
                this.eフェードアウト完了時の戻り値 = E戻り値.継続;
                this.bアニメが完了         = false;
                this.bIsCheckedWhetherResultScreenShouldSaveOrNot = false;                                              // #24609 2011.3.14 yyagi
                this.b新記録スキル = false;
                this.b新記録ランク = false;
                //---------------------
                #endregion

                #region [ 結果の計算 ]
                //---------------------
                for (int i = 0; i < 1; i++)
                {
                    this.nランク値     = -1;
                    this.fPerfect率 = this.fGreat率 = this.fGood率 = this.fPoor率 = this.fMiss率 = 0.0f;                     // #28500 2011.5.24 yyagi
                    if ((((i != 0) || (TJAPlayer3.DTX[0].bチップがある.Drums))))
                    {
                        CScoreIni.C演奏記録 part = this.st演奏記録[0];

                        bool bIsAutoPlay = true;
                        bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0];

                        this.fPerfect率 = bIsAutoPlay ? 0f : ((100f * part.nPerfect数) / ((float)part.n全チップ数));
                        this.fGreat率   = bIsAutoPlay ? 0f : ((100f * part.nGreat数) / ((float)part.n全チップ数));
                        this.fGood率    = bIsAutoPlay ? 0f : ((100f * part.nGood数) / ((float)part.n全チップ数));
                        this.fPoor率    = bIsAutoPlay ? 0f : ((100f * part.nPoor数) / ((float)part.n全チップ数));
                        this.fMiss率    = bIsAutoPlay ? 0f : ((100f * part.nMiss数) / ((float)part.n全チップ数));
                        this.nランク値     = CScoreIni.tランク値を計算して返す(part);
                    }
                }
                this.n総合ランク値 = CScoreIni.t総合ランク値を計算して返す(this.st演奏記録[0]);
                //---------------------
                #endregion

                #region [ .score.ini の作成と出力 ]
                //---------------------
                string    str = TJAPlayer3.DTX[0].strファイル名の絶対パス + ".score.ini";
                CScoreIni ini = new CScoreIni(str);

                bool b今までにフルコンボしたことがある = false;

                for (int i = 0; i < 1; i++)
                {
                    // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10)

                    b今までにフルコンボしたことがある = ini.stセクション.HiScoreDrums.bフルコンボである | ini.stセクション.HiSkillDrums.bフルコンボである;

                    // #24459 上記の条件だと[HiSkill.***]でのランクしかチェックしていないので、BestRankと比較するよう変更。
                    if (this.nランク値 >= 0 && ini.stファイル.BestRank > this.nランク値)                                    // #24459 2011.3.1 yyagi update BestRank
                    {
                        this.b新記録ランク        = true;
                        ini.stファイル.BestRank = this.nランク値;
                    }

                    // 新記録スコアチェック
                    if ((this.st演奏記録[0].nハイスコア[TJAPlayer3.stage選曲.n確定された曲の難易度[0]] > ini.stセクション.HiScoreDrums.nハイスコア[TJAPlayer3.stage選曲.n確定された曲の難易度[0]]) && !TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0])                       //2020.04.18 Mr-Ojii それぞれの難易度のハイスコアでハイスコアを変更するように修正
                    {
                        ini.stセクション.HiScoreDrums = this.st演奏記録[0];
                    }

                    // 新記録スキルチェック
                    if (this.st演奏記録[0].db演奏型スキル値 > ini.stセクション.HiSkillDrums.db演奏型スキル値)
                    {
                        this.b新記録スキル             = true;
                        ini.stセクション.HiSkillDrums = this.st演奏記録[0];
                    }

                    // ラストプレイ #23595 2011.1.9 ikanick
                    // オートじゃなければプレイ結果を書き込む
                    if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0] == false)
                    {
                        ini.stセクション.LastPlayDrums = this.st演奏記録[0];
                    }

                    // #23596 10.11.16 add ikanick オートじゃないならクリア回数を1増やす
                    //        11.02.05 bオート to t更新条件を取得する use      ikanick
                    bool b更新が必要か否か = false;
                    CScoreIni.t更新条件を取得する(out b更新が必要か否か);

                    if (b更新が必要か否か)
                    {
                        switch (i)
                        {
                        case 0:
                            ini.stファイル.ClearCountDrums++;
                            break;

                        default:
                            throw new Exception("クリア回数増加のk(0)が範囲外です。");
                        }
                    }
                    //---------------------------------------------------------------------/
                }
                if (TJAPlayer3.ConfigIni.bScoreIniを出力する)
                {
                    ini.t書き出し(str);
                }
                //---------------------
                #endregion

                #region [ 選曲画面の譜面情報の更新 ]
                //---------------------

                {
                    Cスコア cスコア      = TJAPlayer3.stage選曲.r確定されたスコア;
                    bool b更新が必要か否か = false;
                    CScoreIni.t更新条件を取得する(out b更新が必要か否か);
                    for (int m = 0; m < 1; m++)
                    {
                        if (b更新が必要か否か)
                        {
                            // FullCombo した記録を FullCombo なしで超えた場合、FullCombo マークが消えてしまう。
                            // → FullCombo は、最新記録と関係なく、一度達成したらずっとつくようにする。(2010.9.11)
                            cスコア.譜面情報.フルコンボ = this.st演奏記録[0].bフルコンボである | b今までにフルコンボしたことがある;

                            if (this.b新記録スキル)
                            {
                                cスコア.譜面情報.最大スキル = this.st演奏記録[0].db演奏型スキル値;
                            }

                            if (this.b新記録ランク)
                            {
                                cスコア.譜面情報.最大ランク = this.nランク値;
                            }
                            cスコア.譜面情報.n王冠    = st演奏記録[0].n王冠;                         //2020.05.22 Mr-Ojii データが保存されない問題の解決策。
                            cスコア.譜面情報.nハイスコア = st演奏記録[0].nハイスコア;
                        }
                    }
                    TJAPlayer3.stage選曲.r確定されたスコア = cスコア;
                }
                //---------------------
                #endregion

                // Discord Presenseの更新
                Discord.UpdatePresence(TJAPlayer3.DTX[0].TITLE + TJAPlayer3.DTX[0].EXTENSION, Properties.Discord.Stage_Result + (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0] == true ? " (" + Properties.Discord.Info_IsAuto + ")" : ""), TJAPlayer3.StartupTime);

                base.On活性化();
            }
            finally
            {
                Trace.TraceInformation("結果ステージの活性化を完了しました。");
                Trace.Unindent();
            }
        }
Esempio n. 9
0
        // CStage 実装

        public override void On活性化()
        {
            Trace.TraceInformation("結果ステージを活性化します。");
            Trace.Indent();
            try
            {
                {
                    #region [ 初期化 ]
                    //---------------------
                    this.eフェードアウト完了時の戻り値 = E戻り値.継続;
                    this.bアニメが完了         = false;
                    this.bIsCheckedWhetherResultScreenShouldSaveOrNot = false;                                  // #24609 2011.3.14 yyagi
                    this.n最後に再生したHHのWAV番号   = -1;
                    this.n最後に再生したHHのチャンネル番号 = 0;
                    for (int i = 0; i < 3; i++)
                    {
                        this.b新記録スキル[i] = false;
                        this.b新記録スコア[i] = false;
                        this.b新記録ランク[i] = false;
                    }
                    //---------------------
                    #endregion

                    #region [ 結果の計算 ]
                    //---------------------
                    for (int i = 0; i < 3; i++)
                    {
                        this.nランク値[i]     = -1;
                        this.fPerfect率[i] = this.fGreat率[i] = this.fGood率[i] = this.fPoor率[i] = this.fMiss率[i] = 0.0f;                          // #28500 2011.5.24 yyagi
                        if ((((i != 0) || (TJAPlayer3.DTX.bチップがある.Drums))))
                        {
                            CScoreIni.C演奏記録 part        = this.st演奏記録[i];
                            bool            bIsAutoPlay = true;
                            switch (i)
                            {
                            case 0:
                                bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay;
                                break;

                            case 1:
                                bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay;
                                break;

                            case 2:
                                bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay;
                                break;
                            }
                            this.fPerfect率[i] = bIsAutoPlay ? 0f : ((100f * part.nPerfect数) / ((float)part.n全チップ数));
                            this.fGreat率[i]   = bIsAutoPlay ? 0f : ((100f * part.nGreat数) / ((float)part.n全チップ数));
                            this.fGood率[i]    = bIsAutoPlay ? 0f : ((100f * part.nGood数) / ((float)part.n全チップ数));
                            this.fPoor率[i]    = bIsAutoPlay ? 0f : ((100f * part.nPoor数) / ((float)part.n全チップ数));
                            this.fMiss率[i]    = bIsAutoPlay ? 0f : ((100f * part.nMiss数) / ((float)part.n全チップ数));
                            this.bオート[i]      = bIsAutoPlay;                        // #23596 10.11.16 add ikanick そのパートがオートなら1
                            //        10.11.17 change (int to bool) ikanick
                            this.nランク値[i] = CScoreIni.tランク値を計算して返す(part);
                        }
                    }
                    this.n総合ランク値 = CScoreIni.t総合ランク値を計算して返す(this.st演奏記録.Drums, this.st演奏記録.Guitar, this.st演奏記録.Bass);
                    //---------------------
                    #endregion

                    #region [ .score.ini の作成と出力 ]
                    //---------------------
                    string    str = TJAPlayer3.DTX.strファイル名の絶対パス + ".score.ini";
                    CScoreIni ini = new CScoreIni(str);

                    bool[] b今までにフルコンボしたことがある = new bool[] { false, false, false };

                    // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10)

                    b今までにフルコンボしたことがある[0] = ini.stセクション[0].bフルコンボである | ini.stセクション[0].bフルコンボである;

                    // #24459 上記の条件だと[HiSkill.***]でのランクしかチェックしていないので、BestRankと比較するよう変更。
                    if (this.nランク値[0] >= 0 && ini.stファイル.BestRank[0] > this.nランク値[0])                           // #24459 2011.3.1 yyagi update BestRank
                    {
                        this.b新記録ランク[0]        = true;
                        ini.stファイル.BestRank[0] = this.nランク値[0];
                    }

                    // 新記録スコアチェック
                    if ((this.st演奏記録[0].nスコア > ini.stセクション[0].nスコア) && !TJAPlayer3.ConfigIni.b太鼓パートAutoPlay)
                    {
                        this.b新記録スコア[0] = true;
                        ini.stセクション[0]  = this.st演奏記録[0];
                    }

                    if (TJAPlayer3.stage選曲.n確定された曲の難易度 != (int)Difficulty.Dan && TJAPlayer3.stage選曲.n確定された曲の難易度 != (int)Difficulty.Tower)
                    {
                        if (this.st演奏記録[0].nスコア > ini.stセクション[0].nスコア)
                        {
                            this.st演奏記録[0].nハイスコア[TJAPlayer3.stage選曲.n確定された曲の難易度] = (int)st演奏記録[0].nスコア;
                        }
                    }

                    // 新記録スキルチェック
                    if (this.st演奏記録[0].db演奏型スキル値 > ini.stセクション[0].db演奏型スキル値)
                    {
                        this.b新記録スキル[0] = true;
                        ini.stセクション[0]  = this.st演奏記録[0];
                    }

                    if (TJAPlayer3.stage選曲.n確定された曲の難易度 != (int)Difficulty.Dan && TJAPlayer3.stage選曲.n確定された曲の難易度 != (int)Difficulty.Tower && !TJAPlayer3.ConfigIni.b太鼓パートAutoPlay)
                    {
                        if (st演奏記録[0].fゲージ >= 80.0f)
                        {
                            if (st演奏記録[0].nMiss数 == 0 && st演奏記録[0].nPoor数 == 0 && st演奏記録[0].nGreat数 == 0 && st演奏記録[0].fゲージ >= 100.0f)
                            {
                                this.st演奏記録[0].bIsDondaFullCombo[TJAPlayer3.stage選曲.n確定された曲の難易度] = true;
                                this.st演奏記録[0].bIsFullCombo[TJAPlayer3.stage選曲.n確定された曲の難易度]      = true;
                                this.st演奏記録[0].bIsClear[TJAPlayer3.stage選曲.n確定された曲の難易度]          = true;
                            }
                            else if (st演奏記録[0].nMiss数 == 0 && st演奏記録[0].nPoor数 == 0 && st演奏記録[0].fゲージ >= 100.0f)
                            {
                                this.st演奏記録[0].bIsDondaFullCombo[TJAPlayer3.stage選曲.n確定された曲の難易度] = false;
                                this.st演奏記録[0].bIsFullCombo[TJAPlayer3.stage選曲.n確定された曲の難易度]      = true;
                                this.st演奏記録[0].bIsClear[TJAPlayer3.stage選曲.n確定された曲の難易度]          = true;
                            }
                            else
                            {
                                this.st演奏記録[0].bIsDondaFullCombo[TJAPlayer3.stage選曲.n確定された曲の難易度] = false;
                                this.st演奏記録[0].bIsFullCombo[TJAPlayer3.stage選曲.n確定された曲の難易度]      = false;
                                this.st演奏記録[0].bIsClear[TJAPlayer3.stage選曲.n確定された曲の難易度]          = true;
                            }
                            ini.stセクション[0] = this.st演奏記録[0];
                        }
                    }

                    // ラストプレイ #23595 2011.1.9 ikanick
                    // オートじゃなければプレイ結果を書き込む
                    if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay == false)
                    {
                        ini.stセクション[0] = this.st演奏記録[0];
                    }

                    // #23596 10.11.16 add ikanick オートじゃないならクリア回数を1増やす
                    //        11.02.05 bオート to t更新条件を取得する use      ikanick
                    bool[] b更新が必要か否か = new bool[3];
                    CScoreIni.t更新条件を取得する(out b更新が必要か否か[0], out b更新が必要か否か[1], out b更新が必要か否か[2]);

                    if (b更新が必要か否か[0])
                    {
                        ini.stファイル.ClearCountDrums++;
                    }
                    //---------------------------------------------------------------------/
                    if (TJAPlayer3.ConfigIni.bScoreIniを出力する)
                    {
                        ini.t書き出し(str);
                    }

                    //---------------------
                    #endregion

                    #region [ リザルト画面への演奏回数の更新 #24281 2011.1.30 yyagi]
                    if (TJAPlayer3.ConfigIni.bScoreIniを出力する)
                    {
                        this.n演奏回数.Drums  = ini.stファイル.PlayCountDrums;
                        this.n演奏回数.Guitar = ini.stファイル.PlayCountGuitar;
                        this.n演奏回数.Bass   = ini.stファイル.PlayCountBass;
                    }
                    #endregion
                }

                #region [ 選曲画面の譜面情報の更新 ]
                //---------------------
                if (!TJAPlayer3.bコンパクトモード)
                {
                    Cスコア cスコア = TJAPlayer3.stage選曲.r確定されたスコア;
                }
                //---------------------
                #endregion

                // Discord Presenseの更新
                Discord.UpdatePresence(TJAPlayer3.DTX.TITLE + ".tja", Properties.Discord.Stage_Result + (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay == true ? " (" + Properties.Discord.Info_IsAuto + ")" : ""), TJAPlayer3.StartupTime);

                base.On活性化();
            }
            finally
            {
                Trace.TraceInformation("結果ステージの活性化を完了しました。");
                Trace.Unindent();
            }
        }
Esempio n. 10
0
// CStage 実装

        public override void On活性化()
        {
            Trace.TraceInformation("結果ステージを活性化します。");
            Trace.Indent();
            try
            {
                #region [ 初期化 ]
                //---------------------
                this.eフェードアウト完了時の戻り値 = E戻り値.継続;
                this.bアニメが完了         = false;
                this.bIsCheckedWhetherResultScreenShouldSaveOrNot = false;                              // #24609 2011.3.14 yyagi
                this.n最後に再生したHHのWAV番号   = -1;
                this.n最後に再生したHHのチャンネル番号 = 0;
                for (int i = 0; i < 3; i++)
                {
                    this.b新記録スキル[i] = false;
                    this.b新記録スコア[i] = false;
                    this.b新記録ランク[i] = false;
                }
                //---------------------
                #endregion

                #region [ 結果の計算 ]
                //---------------------
                for (int i = 0; i < 3; i++)
                {
                    this.nランク値[i]     = -1;
                    this.fPerfect率[i] = this.fGreat率[i] = this.fGood率[i] = this.fPoor率[i] = this.fMiss率[i] = 0.0f;                      // #28500 2011.5.24 yyagi
                    if ((((i != 0) || (TJAPlayer3.DTX.bチップがある.Drums))))
                    {
                        CScoreIni.C演奏記録 part        = this.st演奏記録[i];
                        bool            bIsAutoPlay = true;
                        switch (i)
                        {
                        case 0:
                            bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay;
                            break;

                        case 1:
                            bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay;
                            break;

                        case 2:
                            bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay;
                            break;
                        }
                        this.fPerfect率[i] = bIsAutoPlay ? 0f : ((100f * part.nPerfect数) / ((float)part.n全チップ数));
                        this.fGreat率[i]   = bIsAutoPlay ? 0f : ((100f * part.nGreat数) / ((float)part.n全チップ数));
                        this.fGood率[i]    = bIsAutoPlay ? 0f : ((100f * part.nGood数) / ((float)part.n全チップ数));
                        this.fPoor率[i]    = bIsAutoPlay ? 0f : ((100f * part.nPoor数) / ((float)part.n全チップ数));
                        this.fMiss率[i]    = bIsAutoPlay ? 0f : ((100f * part.nMiss数) / ((float)part.n全チップ数));
                        this.bオート[i]      = bIsAutoPlay;                    // #23596 10.11.16 add ikanick そのパートがオートなら1
                        //        10.11.17 change (int to bool) ikanick
                        this.nランク値[i] = CScoreIni.tランク値を計算して返す(part);
                    }
                }
                this.n総合ランク値 = CScoreIni.t総合ランク値を計算して返す(this.st演奏記録.Drums, this.st演奏記録.Guitar, this.st演奏記録.Bass);
                //---------------------
                #endregion

                #region [ .score.ini の作成と出力 ]
                //---------------------
                string    str = TJAPlayer3.DTX.strファイル名の絶対パス + ".score.ini";
                CScoreIni ini = new CScoreIni(str);

                bool[] b今までにフルコンボしたことがある = new bool[] { false, false, false };

                for (int i = 0; i < 3; i++)
                {
                    // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10)

                    b今までにフルコンボしたことがある[i] = ini.stセクション[i * 2].bフルコンボである | ini.stセクション[i * 2 + 1].bフルコンボである;

                    #region [deleted by #24459]
                    //		if( this.nランク値[ i ] <= CScoreIni.tランク値を計算して返す( ini.stセクション[ ( i * 2 ) + 1 ] ) )
                    //		{
                    //			this.b新記録ランク[ i ] = true;
                    //		}
                    #endregion
                    // #24459 上記の条件だと[HiSkill.***]でのランクしかチェックしていないので、BestRankと比較するよう変更。
                    if (this.nランク値[i] >= 0 && ini.stファイル.BestRank[i] > this.nランク値[i])                           // #24459 2011.3.1 yyagi update BestRank
                    {
                        this.b新記録ランク[i]        = true;
                        ini.stファイル.BestRank[i] = this.nランク値[i];
                    }

                    // 新記録スコアチェック
                    if ((this.st演奏記録[i].nスコア > ini.stセクション[i * 2].nスコア) && !TJAPlayer3.ConfigIni.b太鼓パートAutoPlay)
                    {
                        this.b新記録スコア[i]    = true;
                        ini.stセクション[i * 2] = this.st演奏記録[i];
                    }

                    // 新記録スキルチェック
                    if (this.st演奏記録[i].db演奏型スキル値 > ini.stセクション[(i * 2) + 1].db演奏型スキル値)
                    {
                        this.b新記録スキル[i]          = true;
                        ini.stセクション[(i * 2) + 1] = this.st演奏記録[i];
                    }

                    // ラストプレイ #23595 2011.1.9 ikanick
                    // オートじゃなければプレイ結果を書き込む
                    if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay == false)
                    {
                        ini.stセクション[i + 6] = this.st演奏記録[i];
                    }

                    // #23596 10.11.16 add ikanick オートじゃないならクリア回数を1増やす
                    //        11.02.05 bオート to t更新条件を取得する use      ikanick
                    bool[] b更新が必要か否か = new bool[3];
                    CScoreIni.t更新条件を取得する(out b更新が必要か否か[0], out b更新が必要か否か[1], out b更新が必要か否か[2]);

                    if (b更新が必要か否か[i])
                    {
                        switch (i)
                        {
                        case 0:
                            ini.stファイル.ClearCountDrums++;
                            break;

                        case 1:
                            ini.stファイル.ClearCountGuitar++;
                            break;

                        case 2:
                            ini.stファイル.ClearCountBass++;
                            break;

                        default:
                            throw new Exception("クリア回数増加のk(0-2)が範囲外です。");
                        }
                    }
                    //---------------------------------------------------------------------/
                }
                if (TJAPlayer3.ConfigIni.bScoreIniを出力する)
                {
                    ini.t書き出し(str);
                }
                //---------------------
                #endregion

                #region [ リザルト画面への演奏回数の更新 #24281 2011.1.30 yyagi]
                if (TJAPlayer3.ConfigIni.bScoreIniを出力する)
                {
                    this.n演奏回数.Drums  = ini.stファイル.PlayCountDrums;
                    this.n演奏回数.Guitar = ini.stファイル.PlayCountGuitar;
                    this.n演奏回数.Bass   = ini.stファイル.PlayCountBass;
                }
                #endregion
                #region [ 選曲画面の譜面情報の更新 ]
                //---------------------
                if (!TJAPlayer3.bコンパクトモード)
                {
                    Cスコア   cスコア      = TJAPlayer3.stage選曲.r確定されたスコア;
                    bool[] b更新が必要か否か = new bool[3];
                    CScoreIni.t更新条件を取得する(out b更新が必要か否か[0], out b更新が必要か否か[1], out b更新が必要か否か[2]);
                    for (int m = 0; m < 3; m++)
                    {
                        if (b更新が必要か否か[m])
                        {
                            // FullCombo した記録を FullCombo なしで超えた場合、FullCombo マークが消えてしまう。
                            // → FullCombo は、最新記録と関係なく、一度達成したらずっとつくようにする。(2010.9.11)
                            cスコア.譜面情報.フルコンボ[m] = this.st演奏記録[m].bフルコンボである | b今までにフルコンボしたことがある[m];

                            if (this.b新記録スキル[m])
                            {
                                cスコア.譜面情報.最大スキル[m] = this.st演奏記録[m].db演奏型スキル値;
                            }

                            if (this.b新記録ランク[m])
                            {
                                cスコア.譜面情報.最大ランク[m] = this.nランク値[m];
                            }
                            cスコア.譜面情報.n王冠 = st演奏記録[0].n王冠;
                        }
                    }
                }
                //---------------------
                #endregion

                // Discord Presenseの更新
                Discord.UpdatePresence(TJAPlayer3.DTX.TITLE + ".tja", Properties.Discord.Stage_Result + (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay == true ? " (" + Properties.Discord.Info_IsAuto + ")" : ""), TJAPlayer3.StartupTime);

                base.On活性化();
            }
            finally
            {
                Trace.TraceInformation("結果ステージの活性化を完了しました。");
                Trace.Unindent();
            }
            this.ctどんちゃん連番アニメーション = new CCounter(0, 60, 20, TJAPlayer3.Timer);
        }
Esempio n. 11
0
        // CStage 実装

        public override void On活性化()
        {
            Trace.TraceInformation("結果ステージを活性化します。");
            Trace.Indent();
            try
            {
                #region [ 初期化 ]
                //---------------------
                this.eフェードアウト完了時の戻り値 = E戻り値.継続;
                this.bアニメが完了         = false;
                this.bIsCheckedWhetherResultScreenShouldSaveOrNot = false;                                              // #24609 2011.3.14 yyagi
                this.b新記録ランク = false;
                //---------------------
                #endregion

                #region [ 結果の計算 ]
                //---------------------
                for (int i = 0; i < 1; i++)
                {
                    this.nランク値     = -1;
                    this.fPerfect率 = this.fGreat率 = this.fGood率 = this.fPoor率 = this.fMiss率 = 0.0f;                     // #28500 2011.5.24 yyagi
                    if ((i != 0))
                    {
                        CScoreIni.C演奏記録 part = this.st演奏記録[0];

                        bool bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0];

                        this.fPerfect率 = bIsAutoPlay ? 0f : ((100f * part.nPerfect数) / ((float)part.n全チップ数));
                        this.fGreat率   = bIsAutoPlay ? 0f : ((100f * part.nGreat数) / ((float)part.n全チップ数));
                        this.fGood率    = bIsAutoPlay ? 0f : ((100f * part.nGood数) / ((float)part.n全チップ数));
                        this.fPoor率    = bIsAutoPlay ? 0f : ((100f * part.nPoor数) / ((float)part.n全チップ数));
                        this.fMiss率    = bIsAutoPlay ? 0f : ((100f * part.nMiss数) / ((float)part.n全チップ数));
                        this.nランク値     = CScoreIni.tランク値を計算して返す(part);
                    }
                }
                //---------------------
                #endregion

                #region [ .score.ini の作成と出力 ]
                //---------------------
                string    str = TJAPlayer3.DTX[0].strファイル名の絶対パス + ".score.ini";
                CScoreIni ini = new CScoreIni(str);

                bool b今までにフルコンボしたことがある = false;

                for (int i = 0; i < 1; i++)
                {
                    // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10)

                    b今までにフルコンボしたことがある = ini.stセクション.HiScore.bフルコンボである;

                    // #24459 上記の条件だと[HiSkill.***]でのランクしかチェックしていないので、BestRankと比較するよう変更。
                    if (this.nランク値 >= 0 && ini.stファイル.BestRank > this.nランク値)                                    // #24459 2011.3.1 yyagi update BestRank
                    {
                        this.b新記録ランク        = true;
                        ini.stファイル.BestRank = this.nランク値;
                    }

                    if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0] == false && this.st演奏記録[0].b途中でAutoを切り替えたか == false)
                    {
                        ini.stセクション.HiScore = this.st演奏記録[0];
                    }

                    // ラストプレイ #23595 2011.1.9 ikanick
                    // オートじゃなければプレイ結果を書き込む
                    if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0] == false)
                    {
                        ini.stセクション.LastPlay = this.st演奏記録[0];
                    }

                    // #23596 10.11.16 add ikanick オートじゃないならクリア回数を1増やす
                    //        11.02.05 bオート to t更新条件を取得する use      ikanick
                    CScoreIni.t更新条件を取得する(out bool b更新が必要か否か);

                    if (b更新が必要か否か)
                    {
                        ini.stファイル.ClearCountDrums++;
                    }
                    //---------------------------------------------------------------------/
                }
                if (TJAPlayer3.ConfigIni.bScoreIniを出力する)
                {
                    ini.t書き出し(str);
                }
                //---------------------
                #endregion

                #region [ 選曲画面の譜面情報の更新 ]
                //---------------------

                {
                    Cスコア cスコア = TJAPlayer3.stage選曲.r確定されたスコア;

                    CScoreIni.t更新条件を取得する(out bool b更新が必要か否か);

                    if (b更新が必要か否か)
                    {
                        // FullCombo した記録を FullCombo なしで超えた場合、FullCombo マークが消えてしまう。
                        // → FullCombo は、最新記録と関係なく、一度達成したらずっとつくようにする。(2010.9.11)
                        cスコア.譜面情報.フルコンボ = this.st演奏記録[0].bフルコンボである | b今までにフルコンボしたことがある;

                        cスコア.譜面情報.最大ランク = this.nランク値;
                        cスコア.譜面情報.最大スキル = this.st演奏記録[0].db演奏型スキル値;

                        cスコア.譜面情報.n王冠          = st演奏記録[0].n王冠;               //2020.05.22 Mr-Ojii データが保存されない問題の解決策。
                        cスコア.譜面情報.nハイスコア       = st演奏記録[0].nハイスコア;
                        cスコア.譜面情報.nSecondScore = st演奏記録[0].nSecondScore;
                        cスコア.譜面情報.nThirdScore  = st演奏記録[0].nThirdScore;

                        cスコア.譜面情報.strHiScorerName     = st演奏記録[0].strHiScorerName;
                        cスコア.譜面情報.strSecondScorerName = st演奏記録[0].strSecondScorerName;
                        cスコア.譜面情報.strThirdScorerName  = st演奏記録[0].strThirdScorerName;
                    }

                    TJAPlayer3.stage選曲.r確定されたスコア = cスコア;
                }
                //---------------------
                #endregion

                // Discord Presenseの更新
                Discord.UpdatePresence(TJAPlayer3.DTX[0].TITLE + TJAPlayer3.DTX[0].EXTENSION, "Result" + (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0] == true ? " (Auto)" : ""), TJAPlayer3.StartupTime);

                base.On活性化();
            }
            finally
            {
                Trace.TraceInformation("結果ステージの活性化を完了しました。");
                Trace.Unindent();
            }
        }