Exemplo n.º 1
0
 private void t指定された曲の子リストの曲を列挙する_孫リスト含む(C曲リストノード r親, ref List <C曲リストノード> list)
 {
     if ((r親 != null) && (r親.list子リスト != null))
     {
         foreach (C曲リストノード c曲リストノード in r親.list子リスト)
         {
             if ((c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE) || (c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE_MIDI))
             {
                 list.Add(c曲リストノード);
             }
             if ((c曲リストノード.list子リスト != null) && CDTXMania.ConfigIni.bランダムセレクトで子BOXを検索対象とする)
             {
                 this.t指定された曲の子リストの曲を列挙する_孫リスト含む(c曲リストノード, ref list);
             }
         }
     }
 }
Exemplo n.º 2
0
        private List <C曲リストノード> t指定された曲が存在する場所の曲を列挙する_子リスト含む(C曲リストノード song)
        {
            List <C曲リストノード> list = new List <C曲リストノード>();

            song = song.r親ノード;
            if ((song == null) && (CDTXMania.Songs管理.list曲ルート.Count > 0))
            {
                foreach (C曲リストノード c曲リストノード in CDTXMania.Songs管理.list曲ルート)
                {
                    if ((c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE) || (c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE_MIDI))
                    {
                        list.Add(c曲リストノード);
                    }
                    if ((c曲リストノード.list子リスト != null) && CDTXMania.ConfigIni.bランダムセレクトで子BOXを検索対象とする)
                    {
                        this.t指定された曲の子リストの曲を列挙する_孫リスト含む(c曲リストノード, ref list);
                    }
                }
                return(list);
            }
            this.t指定された曲の子リストの曲を列挙する_孫リスト含む(song, ref list);
            return(list);
        }
        /// <summary>
        /// 一時的に使用禁止。
        /// </summary>
        private void t描画処理_ジャンル文字列()
        {
            C曲リストノード c曲リストノード = CDTXMania.stage選曲.r現在選択中の曲;
            Cスコア     cスコア     = CDTXMania.stage選曲.r現在選択中のスコア;

            if ((c曲リストノード != null) && (cスコア != null))
            {
                string str = "";
                switch (c曲リストノード.eノード種別)
                {
                case C曲リストノード.Eノード種別.SCORE:
                    if ((c曲リストノード.strジャンル == null) || (c曲リストノード.strジャンル.Length <= 0))
                    {
                        if ((cスコア.譜面情報.ジャンル != null) && (cスコア.譜面情報.ジャンル.Length > 0))
                        {
                            str = cスコア.譜面情報.ジャンル;
                        }
#if false       // #32644 2013.12.21 yyagi "Unknown"なジャンル表示を削除。DTX/BMSなどの種別表示もしない。
                        else
                        {
                            switch (cスコア.譜面情報.曲種別)
                            {
                            case CDTX.E種別.DTX:
                                str = "DTX";
                                break;

                            case CDTX.E種別.GDA:
                                str = "GDA";
                                break;

                            case CDTX.E種別.G2D:
                                str = "G2D";
                                break;

                            case CDTX.E種別.BMS:
                                str = "BMS";
                                break;

                            case CDTX.E種別.BME:
                                str = "BME";
                                break;
                            }
                            str = "Unknown";
                        }
#endif
                        break;
                    }
                    str = c曲リストノード.strジャンル;
                    break;

                case C曲リストノード.Eノード種別.SCORE_MIDI:
                    str = "MIDI";
                    break;

                case C曲リストノード.Eノード種別.BOX:
                    str = "MusicBox";
                    break;

                case C曲リストノード.Eノード種別.BACKBOX:
                    str = "BackBox";
                    break;

                case C曲リストノード.Eノード種別.RANDOM:
                    str = "Random";
                    break;

                default:
                    str = "Unknown";
                    break;
                }
                CDTXMania.act文字コンソール.tPrint(this.n本体X + 0x12, this.n本体Y - 1, C文字コンソール.Eフォント種別.赤細, str);
            }
        }
Exemplo n.º 4
0
        private void t曲をランダム選択する()
        {
            C曲リストノード song = this.act曲リスト.r現在選択中の曲;

            if ((song.stackランダム演奏番号.Count == 0) || (song.listランダム用ノードリスト == null))
            {
                if (song.listランダム用ノードリスト == null)
                {
                    song.listランダム用ノードリスト = this.t指定された曲が存在する場所の曲を列挙する_子リスト含む(song);
                }
                int count = song.listランダム用ノードリスト.Count;
                if (count == 0)
                {
                    return;
                }
                int[] numArray = new int[count];
                for (int i = 0; i < count; i++)
                {
                    numArray[i] = i;
                }
                for (int j = 0; j < (count * 1.5); j++)
                {
                    int index = CDTXMania.Random.Next(count);
                    int num5  = CDTXMania.Random.Next(count);
                    int num6  = numArray[num5];
                    numArray[num5]  = numArray[index];
                    numArray[index] = num6;
                }
                for (int k = 0; k < count; k++)
                {
                    song.stackランダム演奏番号.Push(numArray[k]);
                }
                if (CDTXMania.ConfigIni.bLogDTX詳細ログ出力)
                {
                    StringBuilder builder = new StringBuilder(0x400);
                    builder.Append(string.Format("ランダムインデックスリストを作成しました: {0}曲: ", song.stackランダム演奏番号.Count));
                    for (int m = 0; m < count; m++)
                    {
                        builder.Append(string.Format("{0} ", numArray[m]));
                    }
                    Trace.TraceInformation(builder.ToString());
                }
            }
            this.r確定された曲         = song.listランダム用ノードリスト[song.stackランダム演奏番号.Pop()];
            this.n確定された曲の難易度     = this.act曲リスト.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(this.r確定された曲);
            this.r確定されたスコア       = this.r確定された曲.arスコア[this.n確定された曲の難易度];
            this.eフェードアウト完了時の戻り値 = E戻り値.選曲した;
            this.actFOtoNowLoading.tフェードアウト開始();                                                // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
            base.eフェーズID = CStage.Eフェーズ.選曲_NowLoading画面へのフェードアウト;
            if (CDTXMania.ConfigIni.bLogDTX詳細ログ出力)
            {
                int[]         numArray2 = song.stackランダム演奏番号.ToArray();
                StringBuilder builder2  = new StringBuilder(0x400);
                builder2.Append("ランダムインデックスリスト残り: ");
                if (numArray2.Length > 0)
                {
                    for (int n = 0; n < numArray2.Length; n++)
                    {
                        builder2.Append(string.Format("{0} ", numArray2[n]));
                    }
                }
                else
                {
                    builder2.Append("(なし)");
                }
                Trace.TraceInformation(builder2.ToString());
            }
            CDTXMania.Skin.bgm選曲画面.t停止する();
        }