public override int On進行描画()
        {
            if (this.b活性化してない)
            {
                return(0);
            }

            #region [ 初めての進行描画 ]
            //-----------------
            if (this.b初めての進行描画)
            {
                for (int i = 0; i < 13; i++)
                {
                    this.ct登場アニメ用[i] = new CCounter(-i * 10, 100, 3, TJAPlayer3.Timer);
                }
                this.nスクロールタイマ = CSound管理.rc演奏用タイマ.n現在時刻;
                TJAPlayer3.stage選曲.t選択曲変更通知();

                this.n矢印スクロール用タイマ値 = CSound管理.rc演奏用タイマ.n現在時刻;
                this.ct三角矢印アニメ.t開始(0, 19, 40, TJAPlayer3.Timer);

                this.soundSelectAnnounce.tサウンドを再生する();
                base.b初めての進行描画 = false;
            }
            //-----------------
            #endregion

            // 本ステージは、(1)登場アニメフェーズ → (2)通常フェーズ と二段階にわけて進む。
            // 2つしかフェーズがないので CStage.eフェーズID を使ってないところがまた本末転倒。


            // 進行。
            //this.ct三角矢印アニメ.t進行Loop();

            if (this.tx背景 != null)
            {
                this.tx背景.t2D描画(TJAPlayer3.app.Device, 0, 0);
            }

            if (!this.b登場アニメ全部完了)
            {
                #region [ (1) 登場アニメフェーズの進行。]
                //-----------------
                for (int i = 0; i < 13; i++)                    // パネルは全13枚。
                {
                    this.ct登場アニメ用[i].t進行();

                    if (this.ct登場アニメ用[i].b終了値に達した)
                    {
                        this.ct登場アニメ用[i].t停止();
                    }
                }

                // 全部の進行が終わったら、this.b登場アニメ全部完了 を true にする。

                this.b登場アニメ全部完了 = true;
                for (int i = 0; i < 13; i++)                    // パネルは全13枚。
                {
                    if (this.ct登場アニメ用[i].b進行中)
                    {
                        this.b登場アニメ全部完了 = false;                                // まだ進行中のアニメがあるなら false のまま。
                        break;
                    }
                }
                //-----------------
                #endregion
            }
            else
            {
                #region [ (2) 通常フェーズの進行。]
                //-----------------

                //キー操作
                if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.RightArrow))
                {
                    this.t次に移動();
                }
                else if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.LeftArrow))
                {
                    this.t前に移動();
                }
                else if ((TJAPlayer3.Pad.b押されたDGB(Eパッド.Decide) ||
                          ((TJAPlayer3.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return)))))
                {
                    TJAPlayer3.stage選曲.actPresound.tサウンド停止();
                    switch (TJAPlayer3.stage選曲.r現在選択中の曲.eノード種別)
                    {
                    case C曲リストノード.Eノード種別.SCORE:
                    {
                        TJAPlayer3.Skin.sound決定音.t再生する();
                        TJAPlayer3.stage選曲.t曲を選択する(this.n現在の選択行);
                    }
                    break;

                    case C曲リストノード.Eノード種別.RANDOM:
                    {
                        TJAPlayer3.Skin.sound曲決定音.t再生する();
                        TJAPlayer3.stage選曲.t曲を選択する(this.n現在の選択行);
                    }
                    break;
                    }
                }

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


            // 描画。

            int i選曲バーX座標  = 673; //選曲バーの座標用
            int i選択曲バーX座標 = 665; //選択曲バーの座標用


            if (!this.b登場アニメ全部完了)
            {
                #region [ (1) 登場アニメフェーズの描画。]
                //-----------------
                for (int i = 0; i < 4; i++)                     // パネルは全13枚。
                {
                }
                //-----------------
                #endregion
            }
            else
            {
                #region [ (2) 通常フェーズの描画。]
                //-----------------
                int nバー基準X = 64;
                TJAPlayer3.act文字コンソール.tPrint(0, 32, C文字コンソール.Eフォント種別.白, this.n現在の選択行.ToString());

                for (int i = 0; i < (int)Difficulty.Total; i++)
                {
                    if (TJAPlayer3.stage選曲.r現在選択中の曲.arスコア[i] == null)
                    {
                        continue;
                    }

                    string           strFlag    = this.n現在の選択行 == i ? "NowSelect" : "UnSelect";
                    C文字コンソール.Eフォント種別 bColorFlag = this.n現在の選択行 == i ? C文字コンソール.Eフォント種別.赤 : C文字コンソール.Eフォント種別.灰;

                    nバー基準X = nバー基準X + 16;
                    TJAPlayer3.act文字コンソール.tPrint(0, nバー基準X, bColorFlag, strFlag);
                }

                //1→3→5→2→4の順で描画する。

                for (int j = 0; j < (int)Difficulty.Total; j++)
                {
                    if (TJAPlayer3.stage選曲.r現在選択中の曲.arスコア[n描画順[j]] == null)
                    {
                        continue;
                    }
                    //if( j == 4 )
                    //    break;

                    if (this.tx踏み台[n描画順[j]] != null)
                    {
                        bool bEven = false;
                        if (n描画順[j] % 2 == 0 && n描画順[j] != 0)
                        {
                            bEven = true;
                        }

                        this.tx踏み台[n描画順[j]].t2D描画(TJAPlayer3.app.Device, n踏み台座標[j], 720 - this.tx踏み台[n描画順[j]].szテクスチャサイズ.Height + (bEven ? 35 : 0));
                    }
                }


                //-----------------
                #endregion
            }
            if (this.txヘッダー != null)
            {
                this.txヘッダー.t2D描画(TJAPlayer3.app.Device, 0, 0);
            }
            if (this.txフッター != null)
            {
                this.txフッター.t2D描画(TJAPlayer3.app.Device, 0, 720 - this.txフッター.sz画像サイズ.Height);
            }

            if (this.tx説明背景 != null)
            {
                this.tx説明背景.t2D描画(TJAPlayer3.app.Device, 340, 600);
            }
            if (this.tx説明1 != null)
            {
                this.tx説明1.t2D描画(TJAPlayer3.app.Device, 340, 600);
            }

            return(0);
        }
Ejemplo n.º 2
0
        public override int On進行描画()
        {
            if (this.b活性化してない)
            {
                return(0);
            }

            #region [ 初めての進行描画 ]
            //-----------------
            if (this.b初めての進行描画)
            {
                for (int i = 0; i < 13; i++)
                {
                    this.ct登場アニメ用[i] = new CCounter(-i * 10, 100, 3, CDTXMania.Timer);
                }
                this.ct譜面分岐.t開始(1, 200, 10, CDTXMania.Timer);
                this.nスクロールタイマ = CSound管理.rc演奏用タイマ.n現在時刻;
                CDTXMania.stage選曲.t選択曲変更通知();

                this.n矢印スクロール用タイマ値 = CSound管理.rc演奏用タイマ.n現在時刻;
                this.ct三角矢印アニメ.t開始(0, 19, 40, CDTXMania.Timer);

                // 現在位置をかんたん~おに(エディット)の間に移動させる
#if DEBUG
                this.n現在の選択行 = 0;
#else
                this.n現在の選択行 = 3 + CDTXMania.stage選曲.act曲リスト.n現在選択中の曲の現在の難易度レベル;
#endif

                Point[] ptパネル座標 = new Point[]
                {
                    new Point(450, 84),
                    new Point(550, 84),
                    new Point(650, 84),
                    new Point(750, 84),
                    new Point(850, 84)
                };

                for (int j = 3; j < 7; j++)
                {
                    ST難易度選択項目 stDiffList = new ST難易度選択項目();

                    stDiffList.b選択可      = CDTXMania.stage選曲.act曲リスト.r現在選択中の曲.arスコア[j - 3] != null ? true : false;
                    stDiffList.b譜面分岐     = CDTXMania.stage選曲.act曲リスト.r現在選択中の曲.arスコア[j - 3] != null ? CDTXMania.stage選曲.act曲リスト.r現在選択中の曲.arスコア[j - 3].譜面情報.b譜面分岐[j - 3] : false;
                    stDiffList.e項目種類     = (E項目種類)(j - 3);
                    stDiffList.str項目名    = "Diff:" + j;
                    stDiffList.ptパネル座標   = ptパネル座標[j - 3];
                    stDiffList.rectパネル位置 = new Rectangle(0, 0, 0, 0);
                    stDiffList.txパネル     = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_diffboard_" + (j - 2) + ".png"));

                    this.list難易度選択項目[j] = stDiffList;
                }

                this.soundSelectAnnounce?.tサウンドを再生する();

                base.b初めての進行描画 = false;
            }
            //-----------------
            #endregion


            // 進行。
            //this.ct三角矢印アニメ.t進行Loop();
            this.ct譜面分岐?.t進行Loop();

            //if( this.tx背景 != null )
            //    this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );

            //if( !this.b登場アニメ全部完了 )
            //{
            //             #region [ (1) 登場アニメフェーズの進行。]
            //             //-----------------


            //	//-----------------
            //	#endregion
            //}
            //else
            {
                #region [ (2) 通常フェーズの進行。]
                //-----------------

                //キー操作
                if (CDTXMania.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.RightArrow))
                {
                    CDTXMania.Skin.soundカーソル移動音.t再生する();
                    this.t次に移動();
                }
                else if (CDTXMania.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.LeftArrow))
                {
                    CDTXMania.Skin.soundカーソル移動音.t再生する();
                    this.t前に移動();
                }
                else if ((CDTXMania.Pad.b押されたDGB(Eパッド.Decide) ||
                          ((CDTXMania.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && CDTXMania.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return)))))
                {
                    if (this.list難易度選択項目[this.n現在の選択行].b選択可)
                    {
                        //CDTXMania.stage選曲.actPresound.tサウンド停止();
                        switch (this.list難易度選択項目[this.n現在の選択行].e項目種類)
                        {
                        case E項目種類.かんたん:
                        case E項目種類.ふつう:
                        case E項目種類.むずかしい:
                        case E項目種類.おに:
                        case E項目種類.エディット:
                        {
                            switch (CDTXMania.stage選曲.r現在選択中の曲.eノード種別)
                            {
                            case C曲リストノード.Eノード種別.SCORE:
                            {
                                CDTXMania.Skin.sound決定音.t再生する();
                                CDTXMania.stage選曲.t曲を選択する((int)this.list難易度選択項目[this.n現在の選択行].e項目種類);
                            }
                            break;

                            case C曲リストノード.Eノード種別.RANDOM:
                            {
                                CDTXMania.Skin.sound曲決定音.t再生する();
                                //CDTXMania.stage選曲.n確定された曲の難易度 = (int)this.list難易度選択項目[this.n現在の選択行].e項目種類;
                                CDTXMania.stage選曲.act曲リスト.n現在のアンカ難易度レベル_渡((int)this.list難易度選択項目[this.n現在の選択行].e項目種類);
                                CDTXMania.stage選曲.t曲をランダム選択する();
                            }
                            break;
                            }
                        }
                        break;

                        case E項目種類.戻る:
                            CDTXMania.stage選曲.t難易度選択画面を閉じる();
                            break;

                        case E項目種類.オプション:
                            break;

                        case E項目種類.音色:
                            break;
                        }
                    }
                    else
                    {
                        // 選択できない項目だった
                        CDTXMania.Skin.sound選択不可音.t再生する();
                    }
                }
                else if (CDTXMania.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape))
                {
                    CDTXMania.stage選曲.t難易度選択画面を閉じる();
                }
                #region [ F2 簡易オプション ]
                if (CDTXMania.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F2))
                {
                    CDTXMania.Skin.sound変更音.t再生する();
                    CDTXMania.stage選曲.actQuickConfig.tActivatePopupMenu(E楽器パート.DRUMS);
                }
                #endregion
                #region [ F3 オートON/OFF ]
                if (CDTXMania.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F3))
                {                       // [ESC]
                    CDTXMania.Skin.sound変更音.t再生する();
                    C共通.bToggleBoolian(ref CDTXMania.ConfigIni.b太鼓パートAutoPlay);
                }
                #endregion
                #region [ F4 ゲージ ]
                if (CDTXMania.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F4))
                {
                    CDTXMania.Skin.sound変更音.t再生する();
                    if (CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.Normal)
                    {
                        CDTXMania.ConfigIni.eGaugeMode = Eゲージモード.IIDX;
                    }
                    else if (CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.IIDX)
                    {
                        CDTXMania.ConfigIni.eGaugeMode = Eゲージモード.HARD;
                    }
                    else if (CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.HARD)
                    {
                        CDTXMania.ConfigIni.eGaugeMode = Eゲージモード.EXHARD;
                    }
                    else if (CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.EXHARD)
                    {
                        CDTXMania.ConfigIni.eGaugeMode = Eゲージモード.DEATH;
                    }
                    else if (CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.DEATH)
                    {
                        CDTXMania.ConfigIni.eGaugeMode = Eゲージモード.Normal;
                    }
                }
                #endregion

                foreach (var item in this.list難易度選択項目)
                {
                    if (item.txパネル != null)
                    {
                        item.txパネル.n透明度 = item.b選択可 ? 255 : 127;
                        item.txパネル.t2D描画(CDTXMania.app.Device, item.ptパネル座標.X, item.ptパネル座標.Y);
                        if (item.b譜面)
                        {
                            if (item.b譜面分岐 ? (this.ct譜面分岐.n現在の値 >= 0 && this.ct譜面分岐.n現在の値 < 100) : false)
                            {
                                this.tx譜面分岐?.t2D描画(CDTXMania.app.Device, item.ptパネル座標.X, item.ptパネル座標.Y);
                                //CDTXMania.act文字コンソール.tPrint( CDTXMania.Skin.nSelectSongDiffIconX + (60 * i), 343, C文字コンソール.Eフォント種別.赤, "B\nr\na\nn\nc\nh" );
                            }
                            else
                            {
                                for (int i = 0; i < CDTXMania.stage選曲.r現在選択中のスコア.譜面情報.nレベル[(int)item.e項目種類]; i++)
                                {
                                    this.txレベル星.t2D描画(CDTXMania.app.Device, item.ptパネル座標.X + 40, (item.ptパネル座標.Y + 392) - (20 * i));
                                }
                            }
                        }
                    }
                }

                switch (this.list難易度選択項目[this.n現在の選択行].e項目種類)
                {
                case E項目種類.かんたん:
                case E項目種類.ふつう:
                case E項目種類.むずかしい:
                case E項目種類.おに:
                case E項目種類.エディット:
                    if (this.txカーソル大 != null)
                    {
                        this.txカーソル大.t2D描画(CDTXMania.app.Device, this.list難易度選択項目[this.n現在の選択行].ptパネル座標.X, this.list難易度選択項目[this.n現在の選択行].ptパネル座標.Y, new Rectangle(0, 0, 102, 530));
                    }
                    break;

                case E項目種類.戻る:
                case E項目種類.オプション:
                case E項目種類.音色:
                    if (this.txカーソル小 != null)
                    {
                        this.txカーソル小.t2D描画(CDTXMania.app.Device, this.list難易度選択項目[this.n現在の選択行].ptパネル座標.X, this.list難易度選択項目[this.n現在の選択行].ptパネル座標.Y, new Rectangle(0, 0, 70, 310));
                    }
                    break;
                }



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

            #region [ デバッグ用表示 ]
            //-----------------
#if DEBUG
            int nバー基準Y = 64;
            CDTXMania.act文字コンソール.tPrint(0, 32, C文字コンソール.Eフォント種別.白, this.n現在の選択行.ToString());

            for (int i = 0; i < this.list難易度選択項目.Count; i++)
            {
                C文字コンソール.Eフォント種別 bColorFlag = this.n現在の選択行 == i ? C文字コンソール.Eフォント種別.赤 : (this.list難易度選択項目[i].b選択可 ? C文字コンソール.Eフォント種別.白 : C文字コンソール.Eフォント種別.灰);

                nバー基準Y = nバー基準Y + 16;
                CDTXMania.act文字コンソール.tPrint(0, nバー基準Y, bColorFlag, this.list難易度選択項目[i].str項目名);
            }
            //-----------------
#endif
            #endregion

            if (this.txフッター != null)
            {
                this.txフッター.t2D描画(CDTXMania.app.Device, 0, 720 - this.txフッター.sz画像サイズ.Height);
            }

            return(0);
        }