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) && TJAPlayer4.ConfigIni.bランダムセレクトで子BOXを検索対象とする) { this.t指定された曲の子リストの曲を列挙する_孫リスト含む(c曲リストノード, ref list); } } } }
private List <C曲リストノード> t指定された曲が存在する場所の曲を列挙する_子リスト含む(C曲リストノード song) { List <C曲リストノード> list = new List <C曲リストノード>(); song = song.r親ノード; if ((song == null) && (TJAPlayer4.Songs管理.list曲ルート.Count > 0)) { foreach (C曲リストノード c曲リストノード in TJAPlayer4.Songs管理.list曲ルート) { if ((c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE) || (c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE_MIDI)) { list.Add(c曲リストノード); } if ((c曲リストノード.list子リスト != null) && TJAPlayer4.ConfigIni.bランダムセレクトで子BOXを検索対象とする) { this.t指定された曲の子リストの曲を列挙する_孫リスト含む(c曲リストノード, ref list); } } return(list); } this.t指定された曲の子リストの曲を列挙する_孫リスト含む(song, ref list); return(list); }
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 = TJAPlayer4.Random.Next(count); int num5 = TJAPlayer4.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 (TJAPlayer4.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()]; for (int nPlayer = 0; nPlayer < TJAPlayer4.ConfigIni.nPlayerCount; nPlayer++) { this.n確定された曲の難易度[nPlayer] = this.act曲リスト.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(this.r確定された曲, nPlayer); } this.r確定されたスコア = this.r確定された曲.arスコア[this.n確定された曲の難易度[0]]; this.str確定された曲のジャンル = this.r確定された曲.strジャンル; this.eフェードアウト完了時の戻り値 = E戻り値.選曲した; this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略 base.eフェーズID = CStage.Eフェーズ.選曲_NowLoading画面へのフェードアウト; if (TJAPlayer4.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()); } TJAPlayer4.Skin.bgm選曲画面.t停止する(); }
/// <summary> /// 一時的に使用禁止。 /// </summary> private void t描画処理_ジャンル文字列() { C曲リストノード c曲リストノード = TJAPlayer4.stage選曲.r現在選択中の曲; Cスコア cスコア = TJAPlayer4.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; } TJAPlayer4.act文字コンソール.tPrint(this.n本体X + 0x12, this.n本体Y - 1, C文字コンソール.Eフォント種別.赤細, str); } }