Chore/601 Refactor random song selection (#645)
* Refactor random song selection * Found remaining references, removed and refactored
This commit is contained in:
parent
a87343ca46
commit
56e830ea32
@ -64,7 +64,6 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
public int Openindex;
|
public int Openindex;
|
||||||
public bool bIsOpenFolder;
|
public bool bIsOpenFolder;
|
||||||
public Stack<int> stackランダム演奏番号 = new Stack<int>();
|
|
||||||
public string strジャンル = "";
|
public string strジャンル = "";
|
||||||
public string str本当のジャンル = "";
|
public string str本当のジャンル = "";
|
||||||
public CLocalizationData ldTitle = new CLocalizationData();
|
public CLocalizationData ldTitle = new CLocalizationData();
|
||||||
|
@ -354,54 +354,28 @@ namespace TJAPlayer3
|
|||||||
var mandatoryDiffs = new List<int>();
|
var mandatoryDiffs = new List<int>();
|
||||||
CSongListNode song = 段位リスト.currentBar;
|
CSongListNode song = 段位リスト.currentBar;
|
||||||
|
|
||||||
song.stackランダム演奏番号.Clear();
|
|
||||||
song.listランダム用ノードリスト = null;
|
|
||||||
|
|
||||||
if ((song.stackランダム演奏番号.Count == 0) || (song.listランダム用ノードリスト == null))
|
|
||||||
{
|
|
||||||
if (song.listランダム用ノードリスト == null)
|
|
||||||
{
|
|
||||||
List<CSongListNode> songs = new List<CSongListNode>();
|
List<CSongListNode> songs = new List<CSongListNode>();
|
||||||
TJAPlayer3.stageSongSelect.t指定された曲の子リストの曲を列挙する_孫リスト含む(song.rParentNode, ref songs, ref mandatoryDiffs, true);
|
TJAPlayer3.stageSongSelect.t指定された曲の子リストの曲を列挙する_孫リスト含む(song.rParentNode, ref songs, ref mandatoryDiffs, true);
|
||||||
song.listランダム用ノードリスト = songs;
|
song.listランダム用ノードリスト = songs;
|
||||||
}
|
|
||||||
int count = song.listランダム用ノードリスト.Count;
|
int selectableSongCount = song.listランダム用ノードリスト.Count;
|
||||||
if (count == 0)
|
|
||||||
|
if (selectableSongCount == 0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
int[] numArray = new int[count];
|
|
||||||
for (int i = 0; i < count; i++)
|
int randomSongIndex = TJAPlayer3.Random.Next(selectableSongCount);
|
||||||
{
|
|
||||||
numArray[i] = i;
|
|
||||||
}
|
|
||||||
for (int j = 0; j < (count * 1.5); j++)
|
|
||||||
{
|
|
||||||
int index = TJAPlayer3.Random.Next(count);
|
|
||||||
int num5 = TJAPlayer3.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 (TJAPlayer3.ConfigIni.bLogDTX詳細ログ出力)
|
if (TJAPlayer3.ConfigIni.bLogDTX詳細ログ出力)
|
||||||
{
|
{
|
||||||
StringBuilder builder = new StringBuilder(0x400);
|
StringBuilder builder = new StringBuilder(0x400);
|
||||||
builder.Append(string.Format("ランダムインデックスリストを作成しました: {0}曲: ", song.stackランダム演奏番号.Count));
|
builder.Append(string.Format("Total number of songs to randomly choose from {0}. Randomly selected index {0}.", selectableSongCount, randomSongIndex));
|
||||||
for (int m = 0; m < count; m++)
|
|
||||||
{
|
|
||||||
builder.Append(string.Format("{0} ", numArray[m]));
|
|
||||||
}
|
|
||||||
Trace.TraceInformation(builder.ToString());
|
Trace.TraceInformation(builder.ToString());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Third assignment
|
// Third assignment
|
||||||
TJAPlayer3.stageSongSelect.rChoosenSong = song.listランダム用ノードリスト[song.stackランダム演奏番号.Pop()];
|
TJAPlayer3.stageSongSelect.rChoosenSong = song.listランダム用ノードリスト[randomSongIndex];
|
||||||
TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] = (int)Difficulty.Dan;
|
TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] = (int)Difficulty.Dan;
|
||||||
|
|
||||||
TJAPlayer3.stageSongSelect.r確定されたスコア = TJAPlayer3.stageSongSelect.rChoosenSong.arスコア[TJAPlayer3.stageSongSelect.actSongList.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(TJAPlayer3.stageSongSelect.rChoosenSong)];
|
TJAPlayer3.stageSongSelect.r確定されたスコア = TJAPlayer3.stageSongSelect.rChoosenSong.arスコア[TJAPlayer3.stageSongSelect.actSongList.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(TJAPlayer3.stageSongSelect.rChoosenSong)];
|
||||||
@ -413,29 +387,6 @@ namespace TJAPlayer3
|
|||||||
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
|
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
|
||||||
base.ePhaseID = CStage.EPhase.SongSelect_FadeOutToNowLoading;
|
base.ePhaseID = CStage.EPhase.SongSelect_FadeOutToNowLoading;
|
||||||
|
|
||||||
#region [Log]
|
|
||||||
|
|
||||||
if (TJAPlayer3.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());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
CSongSelectSongManager.stopSong();
|
CSongSelectSongManager.stopSong();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -1797,53 +1797,25 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
CSongListNode song = this.actSongList.rCurrentlySelectedSong;
|
CSongListNode song = this.actSongList.rCurrentlySelectedSong;
|
||||||
|
|
||||||
song.stackランダム演奏番号.Clear();
|
|
||||||
song.listランダム用ノードリスト = null;
|
|
||||||
|
|
||||||
if ((song.stackランダム演奏番号.Count == 0) || (song.listランダム用ノードリスト == null))
|
|
||||||
{
|
|
||||||
if (song.listランダム用ノードリスト == null)
|
|
||||||
{
|
|
||||||
song.listランダム用ノードリスト = this.t指定された曲が存在する場所の曲を列挙する_子リスト含む(song, ref mandatoryDiffs);
|
song.listランダム用ノードリスト = this.t指定された曲が存在する場所の曲を列挙する_子リスト含む(song, ref mandatoryDiffs);
|
||||||
}
|
int selectableSongCount = song.listランダム用ノードリスト.Count;
|
||||||
int count = song.listランダム用ノードリスト.Count;
|
|
||||||
|
|
||||||
if (count == 0)
|
if (selectableSongCount == 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int[] numArray = new int[count];
|
|
||||||
for (int i = 0; i < count; i++)
|
int randomSongIndex = TJAPlayer3.Random.Next(selectableSongCount);
|
||||||
{
|
|
||||||
numArray[i] = i;
|
|
||||||
}
|
|
||||||
for (int j = 0; j < (count * 1.5); j++)
|
|
||||||
{
|
|
||||||
int index = TJAPlayer3.Random.Next(count);
|
|
||||||
int num5 = TJAPlayer3.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 (TJAPlayer3.ConfigIni.bLogDTX詳細ログ出力)
|
if (TJAPlayer3.ConfigIni.bLogDTX詳細ログ出力)
|
||||||
{
|
{
|
||||||
StringBuilder builder = new StringBuilder(0x400);
|
StringBuilder builder = new StringBuilder(0x400);
|
||||||
builder.Append(string.Format("ランダムインデックスリストを作成しました: {0}曲: ", song.stackランダム演奏番号.Count));
|
builder.Append(string.Format("Total number of songs to randomly choose from {0}. Randomly selected index {0}.", selectableSongCount, randomSongIndex));
|
||||||
for (int m = 0; m < count; m++)
|
|
||||||
{
|
|
||||||
builder.Append(string.Format("{0} ", numArray[m]));
|
|
||||||
}
|
|
||||||
Trace.TraceInformation(builder.ToString());
|
Trace.TraceInformation(builder.ToString());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Third assignment
|
// Third assignment
|
||||||
this.rNowSelectedSong = song.listランダム用ノードリスト[song.stackランダム演奏番号.Pop()];
|
this.rNowSelectedSong = song.listランダム用ノードリスト[randomSongIndex];
|
||||||
|
|
||||||
actSongList.t現在選択中の曲を元に曲バーを再構成する();
|
actSongList.t現在選択中の曲を元に曲バーを再構成する();
|
||||||
actSongList.t選択曲が変更された(false);
|
actSongList.t選択曲が変更された(false);
|
||||||
|
@ -233,54 +233,28 @@ namespace TJAPlayer3
|
|||||||
var mandatoryDiffs = new List<int>();
|
var mandatoryDiffs = new List<int>();
|
||||||
CSongListNode song = currentSong;
|
CSongListNode song = currentSong;
|
||||||
|
|
||||||
song.stackランダム演奏番号.Clear();
|
|
||||||
song.listランダム用ノードリスト = null;
|
|
||||||
|
|
||||||
if ((song.stackランダム演奏番号.Count == 0) || (song.listランダム用ノードリスト == null))
|
|
||||||
{
|
|
||||||
if (song.listランダム用ノードリスト == null)
|
|
||||||
{
|
|
||||||
List<CSongListNode> songs = new List<CSongListNode>();
|
List<CSongListNode> songs = new List<CSongListNode>();
|
||||||
TJAPlayer3.stageSongSelect.t指定された曲の子リストの曲を列挙する_孫リスト含む(song.rParentNode, ref songs, ref mandatoryDiffs, true, Difficulty.Tower);
|
TJAPlayer3.stageSongSelect.t指定された曲の子リストの曲を列挙する_孫リスト含む(song.rParentNode, ref songs, ref mandatoryDiffs, true, Difficulty.Tower);
|
||||||
song.listランダム用ノードリスト = songs;
|
song.listランダム用ノードリスト = songs;
|
||||||
}
|
|
||||||
int count = song.listランダム用ノードリスト.Count;
|
int selectableSongCount = song.listランダム用ノードリスト.Count;
|
||||||
if (count == 0)
|
|
||||||
|
if (selectableSongCount == 0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
int[] numArray = new int[count];
|
|
||||||
for (int i = 0; i < count; i++)
|
int randomSongIndex = TJAPlayer3.Random.Next(selectableSongCount);
|
||||||
{
|
|
||||||
numArray[i] = i;
|
|
||||||
}
|
|
||||||
for (int j = 0; j < (count * 1.5); j++)
|
|
||||||
{
|
|
||||||
int index = TJAPlayer3.Random.Next(count);
|
|
||||||
int num5 = TJAPlayer3.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 (TJAPlayer3.ConfigIni.bLogDTX詳細ログ出力)
|
if (TJAPlayer3.ConfigIni.bLogDTX詳細ログ出力)
|
||||||
{
|
{
|
||||||
StringBuilder builder = new StringBuilder(0x400);
|
StringBuilder builder = new StringBuilder(0x400);
|
||||||
builder.Append(string.Format("ランダムインデックスリストを作成しました: {0}曲: ", song.stackランダム演奏番号.Count));
|
builder.Append(string.Format("Total number of songs to randomly choose from {0}. Randomly selected index {0}.", selectableSongCount, randomSongIndex));
|
||||||
for (int m = 0; m < count; m++)
|
|
||||||
{
|
|
||||||
builder.Append(string.Format("{0} ", numArray[m]));
|
|
||||||
}
|
|
||||||
Trace.TraceInformation(builder.ToString());
|
Trace.TraceInformation(builder.ToString());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Third assignment
|
// Third assignment
|
||||||
TJAPlayer3.stageSongSelect.rChoosenSong = song.listランダム用ノードリスト[song.stackランダム演奏番号.Pop()];
|
TJAPlayer3.stageSongSelect.rChoosenSong = song.listランダム用ノードリスト[randomSongIndex];
|
||||||
TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] = (int)Difficulty.Tower;
|
TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] = (int)Difficulty.Tower;
|
||||||
|
|
||||||
CFloorManagement.reinitialize(TJAPlayer3.stageSongSelect.rChoosenSong.arスコア[(int)Difficulty.Tower].譜面情報.nLife);
|
CFloorManagement.reinitialize(TJAPlayer3.stageSongSelect.rChoosenSong.arスコア[(int)Difficulty.Tower].譜面情報.nLife);
|
||||||
@ -293,29 +267,6 @@ namespace TJAPlayer3
|
|||||||
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
|
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
|
||||||
base.ePhaseID = CStage.EPhase.SongSelect_FadeOutToNowLoading;
|
base.ePhaseID = CStage.EPhase.SongSelect_FadeOutToNowLoading;
|
||||||
|
|
||||||
#region [Log]
|
|
||||||
|
|
||||||
if (TJAPlayer3.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());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
CSongSelectSongManager.stopSong();
|
CSongSelectSongManager.stopSong();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user