englishify CSongListNode
This commit is contained in:
parent
d7ea86cd86
commit
cf8e228871
@ -20,7 +20,7 @@ internal class CSongDict {
|
||||
}
|
||||
|
||||
public static string[] tGetNodesByGenreName(string genreName) {
|
||||
return nodes.Where(_nd => _nd.Value.strジャンル == genreName).Select(_nd => _nd.Key).ToArray();
|
||||
return nodes.Where(_nd => _nd.Value.songGenre == genreName).Select(_nd => _nd.Key).ToArray();
|
||||
}
|
||||
|
||||
#region [General song dict methods]
|
||||
@ -74,7 +74,7 @@ internal class CSongDict {
|
||||
// Generate a back button
|
||||
public static CSongListNode tGenerateBackButton(CSongListNode parent, string path = "/", List<string> listStrBoxDef = null) {
|
||||
CSongListNode itemBack = new CSongListNode();
|
||||
itemBack.eノード種別 = CSongListNode.ENodeType.BACKBOX;
|
||||
itemBack.nodeType = CSongListNode.ENodeType.BACKBOX;
|
||||
|
||||
|
||||
// とじる
|
||||
@ -88,9 +88,9 @@ internal class CSongDict {
|
||||
itemBack.BgType = parent.BgType;
|
||||
itemBack.isChangedBgType = parent.isChangedBgType;
|
||||
|
||||
itemBack.strジャンル = parent.strジャンル;
|
||||
itemBack.songGenre = parent.songGenre;
|
||||
itemBack.strSelectBGPath = parent.strSelectBGPath;
|
||||
itemBack.nスコア数 = 1;
|
||||
itemBack.difficultiesCount = 1;
|
||||
itemBack.rParentNode = parent;
|
||||
itemBack.strSkinPath = (parent.rParentNode == null) ?
|
||||
"" : parent.rParentNode.strSkinPath;
|
||||
@ -103,27 +103,27 @@ internal class CSongDict {
|
||||
itemBack.strBreadcrumbs = (itemBack.rParentNode == null) ?
|
||||
itemBack.ldTitle.GetString("") : itemBack.rParentNode.strBreadcrumbs + " > " + itemBack.ldTitle.GetString("");
|
||||
|
||||
itemBack.arスコア[0] = new Cスコア();
|
||||
itemBack.arスコア[0].ファイル情報.フォルダの絶対パス = "";
|
||||
itemBack.arスコア[0].譜面情報.タイトル = itemBack.ldTitle.GetString("");
|
||||
itemBack.arスコア[0].譜面情報.コメント = "";
|
||||
itemBack.score[0] = new CScore();
|
||||
itemBack.score[0].ファイル情報.フォルダの絶対パス = "";
|
||||
itemBack.score[0].譜面情報.タイトル = itemBack.ldTitle.GetString("");
|
||||
itemBack.score[0].譜面情報.コメント = "";
|
||||
|
||||
return (itemBack);
|
||||
}
|
||||
|
||||
public static CSongListNode tGenerateRandomButton(CSongListNode parent, string path = "/") {
|
||||
CSongListNode itemRandom = new CSongListNode();
|
||||
itemRandom.eノード種別 = CSongListNode.ENodeType.RANDOM;
|
||||
itemRandom.nodeType = CSongListNode.ENodeType.RANDOM;
|
||||
|
||||
itemRandom.ldTitle = CLangManager.GetAllStringsAsLocalizationDataWithArgs("SONGSELECT_RANDOM_PATH", path, path);
|
||||
|
||||
itemRandom.nスコア数 = (int)Difficulty.Total;
|
||||
itemRandom.difficultiesCount = (int)Difficulty.Total;
|
||||
itemRandom.rParentNode = parent;
|
||||
|
||||
itemRandom.strBreadcrumbs = (itemRandom.rParentNode == null) ?
|
||||
itemRandom.ldTitle.GetString("") : itemRandom.rParentNode.strBreadcrumbs + " > " + itemRandom.ldTitle.GetString("");
|
||||
|
||||
itemRandom.arスコア[0] = new Cスコア();
|
||||
itemRandom.score[0] = new CScore();
|
||||
|
||||
return itemRandom;
|
||||
}
|
||||
@ -131,7 +131,7 @@ internal class CSongDict {
|
||||
// Reset the position of all back buttons, also adds a random button at the end
|
||||
public static List<CSongListNode> tReinsertBackButtons(CSongListNode parent, List<CSongListNode> songList, string path = "/", List<string> listStrBoxDef = null) {
|
||||
// Remove all the existing back boxes currently existing
|
||||
songList.RemoveAll(e => e.eノード種別 == CSongListNode.ENodeType.BACKBOX || e.eノード種別 == CSongListNode.ENodeType.RANDOM);
|
||||
songList.RemoveAll(e => e.nodeType == CSongListNode.ENodeType.BACKBOX || e.nodeType == CSongListNode.ENodeType.RANDOM);
|
||||
|
||||
int songCount = songList.Count;
|
||||
|
||||
|
@ -298,7 +298,7 @@ public static class ImGuiDebugWindow {
|
||||
ImGui.SeparatorText("Tower Mode");
|
||||
ImGui.Text("Side: " + dtx.SIDE);
|
||||
ImGui.Text("Life: " + dtx.LIFE);
|
||||
ImGui.Text("Floor Count: " + OpenTaiko.stageSongSelect.rNowSelectedSong.arスコア[5].譜面情報.nTotalFloor);
|
||||
ImGui.Text("Floor Count: " + OpenTaiko.stageSongSelect.rNowSelectedSong.score[5].譜面情報.nTotalFloor);
|
||||
break;
|
||||
default:
|
||||
ImGui.SeparatorText(OpenTaiko.ConfigIni.nGameType[i] == EGameType.Konga ? "Konga Mode" : "Taiko Mode");
|
||||
|
@ -178,52 +178,6 @@ internal class OpenTaiko : Game {
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
#region [ 入力範囲ms ]
|
||||
public static int nPerfect範囲ms {
|
||||
get {
|
||||
if (stageSongSelect.rChoosenSong != null) {
|
||||
CSongListNode c曲リストノード = stageSongSelect.rChoosenSong.rParentNode;
|
||||
if (((c曲リストノード != null) && (c曲リストノード.eノード種別 == CSongListNode.ENodeType.BOX)) && (c曲リストノード.nPerfect範囲ms >= 0)) {
|
||||
return c曲リストノード.nPerfect範囲ms;
|
||||
}
|
||||
}
|
||||
return ConfigIni.nHitRangeMs.Perfect;
|
||||
}
|
||||
}
|
||||
public static int nGreat範囲ms {
|
||||
get {
|
||||
if (stageSongSelect.rChoosenSong != null) {
|
||||
CSongListNode c曲リストノード = stageSongSelect.rChoosenSong.rParentNode;
|
||||
if (((c曲リストノード != null) && (c曲リストノード.eノード種別 == CSongListNode.ENodeType.BOX)) && (c曲リストノード.nGreat範囲ms >= 0)) {
|
||||
return c曲リストノード.nGreat範囲ms;
|
||||
}
|
||||
}
|
||||
return ConfigIni.nHitRangeMs.Great;
|
||||
}
|
||||
}
|
||||
public static int nGood範囲ms {
|
||||
get {
|
||||
if (stageSongSelect.rChoosenSong != null) {
|
||||
CSongListNode c曲リストノード = stageSongSelect.rChoosenSong.rParentNode;
|
||||
if (((c曲リストノード != null) && (c曲リストノード.eノード種別 == CSongListNode.ENodeType.BOX)) && (c曲リストノード.nGood範囲ms >= 0)) {
|
||||
return c曲リストノード.nGood範囲ms;
|
||||
}
|
||||
}
|
||||
return ConfigIni.nHitRangeMs.Good;
|
||||
}
|
||||
}
|
||||
public static int nPoor範囲ms {
|
||||
get {
|
||||
if (stageSongSelect.rChoosenSong != null) {
|
||||
CSongListNode c曲リストノード = stageSongSelect.rChoosenSong.rParentNode;
|
||||
if (((c曲リストノード != null) && (c曲リストノード.eノード種別 == CSongListNode.ENodeType.BOX)) && (c曲リストノード.nPoor範囲ms >= 0)) {
|
||||
return c曲リストノード.nPoor範囲ms;
|
||||
}
|
||||
}
|
||||
return ConfigIni.nHitRangeMs.Poor;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
public static CPad Pad {
|
||||
get;
|
||||
private set;
|
||||
|
@ -321,7 +321,7 @@ class CSongReplay {
|
||||
// Chart metadata
|
||||
ChartUniqueID = OpenTaiko.stageSongSelect.rChoosenSong.uniqueId.data.id;
|
||||
ChartDifficulty = (byte)OpenTaiko.stageSongSelect.nChoosenSongDifficulty[storedPlayer];
|
||||
ChartLevel = (byte)Math.Min(255, OpenTaiko.stageSongSelect.rChoosenSong.arスコア[ChartDifficulty].譜面情報.nレベル[ChartDifficulty]);
|
||||
ChartLevel = (byte)Math.Min(255, OpenTaiko.stageSongSelect.rChoosenSong.score[ChartDifficulty].譜面情報.nレベル[ChartDifficulty]);
|
||||
// Online score ID used for online leaderboards linking, given by the server (Defaulted to 0 for now)
|
||||
OnlineScoreID = 0;
|
||||
// Replay Checksum (Calculate at the end)
|
||||
|
@ -291,12 +291,12 @@ internal class DBSaves {
|
||||
|
||||
{
|
||||
currentPlay.ChartUniqueId = choosenSong.uniqueId.data.id;
|
||||
currentPlay.ChartGenre = choosenSong.strジャンル;
|
||||
currentPlay.ChartGenre = choosenSong.songGenre;
|
||||
currentPlay.Charter = choosenSong.strNotesDesigner[choosenDifficulty];
|
||||
currentPlay.Artist = choosenSong.ldSubtitle.GetString(""); // There is no direct Artist tag on the .tja format, so we directly use the subtitle as a guess
|
||||
currentPlay.PlayMods = ModIcons.tModsToPlayModsFlags(player);
|
||||
currentPlay.ChartDifficulty = choosenDifficulty;
|
||||
currentPlay.ChartLevel = choosenSong.arスコア[choosenDifficulty].譜面情報.nレベル[choosenDifficulty];
|
||||
currentPlay.ChartLevel = choosenSong.score[choosenDifficulty].譜面情報.nレベル[choosenDifficulty];
|
||||
currentPlay.ClearStatus = clearStatus;
|
||||
currentPlay.ScoreRank = scoreRank;
|
||||
currentPlay.HighScore = chartScore.nScore;
|
||||
|
@ -80,7 +80,7 @@ internal class DBSongUnlockables : CSavableT<Dictionary<string, SongUnlockable>>
|
||||
Modal.EModalType.Song,
|
||||
HRarity.tRarityToModalInt(item.Value.rarity),
|
||||
_node,
|
||||
OpenTaiko.stageSongSelect.actPreimageパネル.tGenerateAndGetPreimage(_node?.arスコア[0] ?? null)
|
||||
OpenTaiko.stageSongSelect.actPreimageパネル.tGenerateAndGetPreimage(_node?.score[0] ?? null)
|
||||
),
|
||||
_player);
|
||||
|
||||
|
@ -405,7 +405,7 @@ class HGaugeMethods {
|
||||
var _dif = OpenTaiko.stageSongSelect.nChoosenSongDifficulty[player];
|
||||
return tNormaCheck(
|
||||
(Difficulty)_dif,
|
||||
OpenTaiko.stageSongSelect.rChoosenSong.arスコア[_dif].譜面情報.nレベル[_dif],
|
||||
OpenTaiko.stageSongSelect.rChoosenSong.score[_dif].譜面情報.nレベル[_dif],
|
||||
tGetGaugeTypeEnum(chara.effect.tGetGaugeType()),
|
||||
(float)OpenTaiko.stage演奏ドラム画面.actGauge.db現在のゲージ値[player],
|
||||
UNSAFE_KillZonePercent(player)
|
||||
@ -436,7 +436,7 @@ class HGaugeMethods {
|
||||
// Difficulty
|
||||
int _dif = OpenTaiko.stageSongSelect.nChoosenSongDifficulty[player];
|
||||
Difficulty difficulty = (Difficulty)_dif;
|
||||
int level = OpenTaiko.stageSongSelect.rChoosenSong.arスコア[_dif].譜面情報.nレベル[_dif];
|
||||
int level = OpenTaiko.stageSongSelect.rChoosenSong.score[_dif].譜面情報.nレベル[_dif];
|
||||
|
||||
return tHardGaugeGetKillscreenRatio(
|
||||
difficulty,
|
||||
@ -542,7 +542,7 @@ class HGaugeMethods {
|
||||
// Difficulty
|
||||
int _dif = OpenTaiko.stageSongSelect.nChoosenSongDifficulty[player];
|
||||
Difficulty difficulty = (Difficulty)_dif;
|
||||
int level = OpenTaiko.stageSongSelect.rChoosenSong.arスコア[_dif].譜面情報.nレベル[_dif];
|
||||
int level = OpenTaiko.stageSongSelect.rChoosenSong.score[_dif].譜面情報.nレベル[_dif];
|
||||
|
||||
// Current percent
|
||||
float currentPercent = (float)OpenTaiko.stage演奏ドラム画面.actGauge.db現在のゲージ値[player];
|
||||
@ -626,7 +626,7 @@ class HGaugeMethods {
|
||||
// Difficulty
|
||||
int _dif = OpenTaiko.stageSongSelect.nChoosenSongDifficulty[player];
|
||||
Difficulty difficulty = (Difficulty)_dif;
|
||||
int level = OpenTaiko.stageSongSelect.rChoosenSong.arスコア[_dif].譜面情報.nレベル[_dif];
|
||||
int level = OpenTaiko.stageSongSelect.rChoosenSong.score[_dif].譜面情報.nレベル[_dif];
|
||||
|
||||
int gauge_x;
|
||||
int gauge_y;
|
||||
|
@ -4,17 +4,17 @@ class HSongTraverse {
|
||||
public static List<string> SpecialFolders = new List<string> { "Favorite", "最近遊んだ曲", "SearchD" };
|
||||
|
||||
public static bool IsRegularFolder(CSongListNode node) {
|
||||
if (node.eノード種別 != CSongListNode.ENodeType.BOX) return false;
|
||||
if (SpecialFolders.Contains(node.strジャンル)) return false;
|
||||
if (node.nodeType != CSongListNode.ENodeType.BOX) return false;
|
||||
if (SpecialFolders.Contains(node.songGenre)) return false;
|
||||
return true;
|
||||
|
||||
}
|
||||
public static int GetSongsMatchingCondition(CSongListNode parentBox, Func<CSongListNode, bool> payload) {
|
||||
int count = 0;
|
||||
|
||||
foreach (CSongListNode child in parentBox.list子リスト) {
|
||||
foreach (CSongListNode child in parentBox.childrenList) {
|
||||
if (IsRegularFolder(child)) count += GetSongsMatchingCondition(child, payload);
|
||||
else if (child.eノード種別 == CSongListNode.ENodeType.SCORE && payload(child)) count += 1;
|
||||
else if (child.nodeType == CSongListNode.ENodeType.SCORE && payload(child)) count += 1;
|
||||
}
|
||||
|
||||
return count;
|
||||
|
@ -5,7 +5,10 @@ using FDK;
|
||||
namespace OpenTaiko;
|
||||
|
||||
[Serializable]
|
||||
internal class Cスコア {
|
||||
internal class CScore {
|
||||
// Old DTX class, to deprecate ASAP and handle everything on CSongListNode
|
||||
|
||||
|
||||
// Properties
|
||||
|
||||
public STScoreIni情報 ScoreIni情報;
|
||||
@ -214,7 +217,7 @@ internal class Cスコア {
|
||||
|
||||
// Constructor
|
||||
|
||||
public Cスコア() {
|
||||
public CScore() {
|
||||
this.ScoreIni情報 = new STScoreIni情報(DateTime.MinValue, 0L);
|
||||
this.bSongDBにキャッシュがあった = false;
|
||||
this.ファイル情報 = new STファイル情報("", "", DateTime.MinValue, 0L);
|
@ -6,7 +6,7 @@ namespace OpenTaiko;
|
||||
internal class CSongListNode {
|
||||
// Properties
|
||||
|
||||
public ENodeType eノード種別 = ENodeType.UNKNOWN;
|
||||
public ENodeType nodeType = ENodeType.UNKNOWN;
|
||||
public enum ENodeType {
|
||||
SCORE,
|
||||
SCORE_MIDI,
|
||||
@ -16,19 +16,10 @@ internal class CSongListNode {
|
||||
UNKNOWN
|
||||
}
|
||||
public int nID { get; private set; }
|
||||
public Cスコア[] arスコア = new Cスコア[(int)Difficulty.Total];
|
||||
public CScore[] score = new CScore[(int)Difficulty.Total];
|
||||
|
||||
public string[] difficultyLabel = new string[(int)Difficulty.Total];
|
||||
|
||||
public string[] ar難易度ラベル = new string[(int)Difficulty.Total];
|
||||
public bool bDTXFilesで始まるフォルダ名のBOXである;
|
||||
public bool bBoxDefで作成されたBOXである {
|
||||
get {
|
||||
return !this.bDTXFilesで始まるフォルダ名のBOXである;
|
||||
}
|
||||
set {
|
||||
this.bDTXFilesで始まるフォルダ名のBOXである = !value;
|
||||
}
|
||||
}
|
||||
public Color col文字色 = Color.White;
|
||||
public Color ForeColor = Color.White;
|
||||
public Color BackColor = Color.Black;
|
||||
public Color BoxColor = Color.White;
|
||||
@ -45,35 +36,39 @@ internal class CSongListNode {
|
||||
public bool IsChangedForeColor;
|
||||
public bool IsChangedBackColor;
|
||||
public bool isChangedBoxColor;
|
||||
public List<CSongListNode> listランダム用ノードリスト;
|
||||
public List<CSongListNode> list子リスト;
|
||||
public int nGood範囲ms = -1;
|
||||
public int nGreat範囲ms = -1;
|
||||
public int nPerfect範囲ms = -1;
|
||||
public int nPoor範囲ms = -1;
|
||||
public int nスコア数;
|
||||
public List<CSongListNode> randomList;
|
||||
public List<CSongListNode> childrenList;
|
||||
|
||||
public int difficultiesCount; // 4~5 if AD
|
||||
|
||||
public CSongListNode rParentNode;
|
||||
|
||||
// Internal
|
||||
public int Openindex;
|
||||
public bool bIsOpenFolder;
|
||||
public string strジャンル = "";
|
||||
public string str本当のジャンル = "";
|
||||
public string strBreadcrumbs = ""; // Removable?
|
||||
public string strSkinPath = ""; // Removable?
|
||||
|
||||
// Metadata
|
||||
public string songGenre = "";
|
||||
public string songGenrePanel = ""; // Used only for the panel under the song title
|
||||
public CLocalizationData ldTitle = new CLocalizationData();
|
||||
public List<CDTX.DanSongs> DanSongs;
|
||||
public Dan_C[] Dan_C;
|
||||
public CLocalizationData ldSubtitle = new CLocalizationData();
|
||||
public string strMaker = "";
|
||||
public string[] strNotesDesigner = new string[(int)Difficulty.Total] { "", "", "", "", "", "", "" };
|
||||
public CDTX.ESide nSide = CDTX.ESide.eEx;
|
||||
public bool bExplicit = false;
|
||||
public bool bMovie = false;
|
||||
public string strBreadcrumbs = ""; // #27060 2011.2.27 yyagi; MUSIC BOXのパンくずリスト (曲リスト構造内の絶対位置捕捉のために使う)
|
||||
public string strSkinPath = ""; // #28195 2012.5.4 yyagi; box.defでのスキン切り替え対応
|
||||
public bool bBranch = false;
|
||||
public int[] nLevel = new int[(int)Difficulty.Total] { 0, 0, 0, 0, 0, 0, 0 };
|
||||
public CDTX.ELevelIcon[] nLevelIcon = new CDTX.ELevelIcon[(int)Difficulty.Total] { CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone, CDTX.ELevelIcon.eNone };
|
||||
|
||||
// Branches
|
||||
public bool bBranch = false;
|
||||
|
||||
// Dan
|
||||
public List<CDTX.DanSongs> DanSongs;
|
||||
public Dan_C[] Dan_C;
|
||||
|
||||
// Tower Lives
|
||||
public int nLife = 5;
|
||||
public int nTotalFloor = 140;
|
||||
|
@ -8,8 +8,8 @@ internal sealed class CSongListNodeComparerLevel : IComparer<CSongListNode> {
|
||||
}
|
||||
|
||||
public int Compare(CSongListNode n1, CSongListNode n2) {
|
||||
int _n1s = (n1.eノード種別 != CSongListNode.ENodeType.SCORE) ? 0 : 1;
|
||||
int _n2s = (n2.eノード種別 != CSongListNode.ENodeType.SCORE) ? 0 : 1;
|
||||
int _n1s = (n1.nodeType != CSongListNode.ENodeType.SCORE) ? 0 : 1;
|
||||
int _n2s = (n2.nodeType != CSongListNode.ENodeType.SCORE) ? 0 : 1;
|
||||
|
||||
|
||||
if (_n1s == 0 || _n2s == 0) {
|
||||
|
@ -8,8 +8,8 @@ internal sealed class CSongListNodeComparerLevelIcon : IComparer<CSongListNode>
|
||||
}
|
||||
|
||||
public int Compare(CSongListNode n1, CSongListNode n2) {
|
||||
int _n1s = (n1.eノード種別 != CSongListNode.ENodeType.SCORE) ? 0 : 1;
|
||||
int _n2s = (n2.eノード種別 != CSongListNode.ENodeType.SCORE) ? 0 : 1;
|
||||
int _n1s = (n1.nodeType != CSongListNode.ENodeType.SCORE) ? 0 : 1;
|
||||
int _n2s = (n2.nodeType != CSongListNode.ENodeType.SCORE) ? 0 : 1;
|
||||
|
||||
|
||||
if (_n1s == 0 || _n2s == 0) {
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
internal sealed class CSongListNodeComparerNodeType : IComparer<CSongListNode> {
|
||||
public int Compare(CSongListNode x, CSongListNode y) {
|
||||
return ToComparable(x.eノード種別).CompareTo(ToComparable(y.eノード種別));
|
||||
return ToComparable(x.nodeType).CompareTo(ToComparable(y.nodeType));
|
||||
}
|
||||
|
||||
private static int ToComparable(CSongListNode.ENodeType nodeType) {
|
||||
|
@ -8,8 +8,8 @@ internal sealed class CSongListNodeComparerPath : IComparer<CSongListNode> {
|
||||
}
|
||||
|
||||
public int Compare(CSongListNode n1, CSongListNode n2) {
|
||||
if ((n1.eノード種別 == CSongListNode.ENodeType.BOX) && (n2.eノード種別 == CSongListNode.ENodeType.BOX)) {
|
||||
return _order * n1.arスコア[0].ファイル情報.フォルダの絶対パス.CompareTo(n2.arスコア[0].ファイル情報.フォルダの絶対パス);
|
||||
if ((n1.nodeType == CSongListNode.ENodeType.BOX) && (n2.nodeType == CSongListNode.ENodeType.BOX)) {
|
||||
return _order * n1.score[0].ファイル情報.フォルダの絶対パス.CompareTo(n2.score[0].ファイル情報.フォルダの絶対パス);
|
||||
}
|
||||
|
||||
var str = filePath(n1);
|
||||
@ -20,8 +20,8 @@ internal sealed class CSongListNodeComparerPath : IComparer<CSongListNode> {
|
||||
|
||||
private static string filePath(CSongListNode songNode) {
|
||||
for (int i = 0; i < (int)Difficulty.Total; i++) {
|
||||
if (songNode.arスコア[i] != null) {
|
||||
return songNode.arスコア[i].ファイル情報.ファイルの絶対パス ?? "";
|
||||
if (songNode.score[i] != null) {
|
||||
return songNode.score[i].ファイル情報.ファイルの絶対パス ?? "";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,8 +3,8 @@
|
||||
internal sealed class CSongListNodeComparerUnlockStatus : IComparer<CSongListNode> {
|
||||
|
||||
public int Compare(CSongListNode n1, CSongListNode n2) {
|
||||
int _n1s = (n1.eノード種別 != CSongListNode.ENodeType.SCORE) ? 0 : 1;
|
||||
int _n2s = (n2.eノード種別 != CSongListNode.ENodeType.SCORE) ? 0 : 1;
|
||||
int _n1s = (n1.nodeType != CSongListNode.ENodeType.SCORE) ? 0 : 1;
|
||||
int _n2s = (n2.nodeType != CSongListNode.ENodeType.SCORE) ? 0 : 1;
|
||||
|
||||
|
||||
if (_n1s == 0 || _n2s == 0) {
|
||||
|
@ -67,26 +67,26 @@ internal class CSongs管理 {
|
||||
|
||||
CSongListNode downloadBox = null;
|
||||
for (int i = 0; i < OpenTaiko.Songs管理.list曲ルート.Count; i++) {
|
||||
if (OpenTaiko.Songs管理.list曲ルート[i].strジャンル == "Download") {
|
||||
if (OpenTaiko.Songs管理.list曲ルート[i].songGenre == "Download") {
|
||||
downloadBox = OpenTaiko.Songs管理.list曲ルート[i];
|
||||
if (downloadBox.rParentNode != null) downloadBox = downloadBox.rParentNode;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (downloadBox != null && downloadBox.list子リスト != null) {
|
||||
if (downloadBox != null && downloadBox.childrenList != null) {
|
||||
|
||||
var flatten = OpenTaiko.stageSongSelect.actSongList.flattenList(downloadBox.list子リスト);
|
||||
var flatten = OpenTaiko.stageSongSelect.actSongList.flattenList(downloadBox.childrenList);
|
||||
|
||||
// Works because flattenList creates a new List
|
||||
for (int i = 0; i < downloadBox.list子リスト.Count; i++) {
|
||||
CSongDict.tRemoveSongNode(downloadBox.list子リスト[i].uniqueId);
|
||||
downloadBox.list子リスト.Remove(downloadBox.list子リスト[i]);
|
||||
for (int i = 0; i < downloadBox.childrenList.Count; i++) {
|
||||
CSongDict.tRemoveSongNode(downloadBox.childrenList[i].uniqueId);
|
||||
downloadBox.childrenList.Remove(downloadBox.childrenList[i]);
|
||||
i--;
|
||||
}
|
||||
|
||||
|
||||
var path = downloadBox.arスコア[0].ファイル情報.フォルダの絶対パス;
|
||||
var path = downloadBox.score[0].ファイル情報.フォルダの絶対パス;
|
||||
|
||||
if (flatten.Count > 0) {
|
||||
int index = list曲ルート.IndexOf(flatten[0]);
|
||||
@ -95,9 +95,9 @@ internal class CSongs管理 {
|
||||
list曲ルート.Insert(index, downloadBox);
|
||||
}
|
||||
|
||||
t曲を検索してリストを作成する(path, true, downloadBox.list子リスト, downloadBox);
|
||||
this.tSongListPostprocessing(downloadBox.list子リスト, $"/{downloadBox.ldTitle.GetString("")}/");
|
||||
downloadBox.list子リスト.Insert(0, CSongDict.tGenerateBackButton(downloadBox, $"/{downloadBox.ldTitle.GetString("")}/"));
|
||||
t曲を検索してリストを作成する(path, true, downloadBox.childrenList, downloadBox);
|
||||
this.tSongListPostprocessing(downloadBox.childrenList, $"/{downloadBox.ldTitle.GetString("")}/");
|
||||
downloadBox.childrenList.Insert(0, CSongDict.tGenerateBackButton(downloadBox, $"/{downloadBox.ldTitle.GetString("")}/"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -142,20 +142,20 @@ internal class CSongs管理 {
|
||||
|
||||
|
||||
CSongListNode c曲リストノード = new CSongListNode();
|
||||
c曲リストノード.eノード種別 = CSongListNode.ENodeType.SCORE;
|
||||
c曲リストノード.nodeType = CSongListNode.ENodeType.SCORE;
|
||||
|
||||
bool b = false;
|
||||
for (int n = 0; n < (int)Difficulty.Total; n++) {
|
||||
CDTX dtx = new CDTX(fileinfo.FullName, false, 1.0, 0, 1);
|
||||
if (dtx.b譜面が存在する[n]) {
|
||||
c曲リストノード.nスコア数++;
|
||||
c曲リストノード.difficultiesCount++;
|
||||
c曲リストノード.rParentNode = node親;
|
||||
c曲リストノード.strBreadcrumbs = (c曲リストノード.rParentNode == null) ?
|
||||
str基点フォルダ + fileinfo.Name : c曲リストノード.rParentNode.strBreadcrumbs + " > " + str基点フォルダ + fileinfo.Name;
|
||||
|
||||
c曲リストノード.ldTitle = dtx.TITLE;
|
||||
c曲リストノード.ldSubtitle = dtx.SUBTITLE;
|
||||
c曲リストノード.strジャンル = dtx.GENRE;
|
||||
c曲リストノード.songGenre = dtx.GENRE;
|
||||
c曲リストノード.strMaker = dtx.MAKER;
|
||||
|
||||
c曲リストノード.strNotesDesigner = dtx.NOTESDESIGNER.Select(x => x.Equals("") ? c曲リストノード.strMaker : x).ToArray();
|
||||
@ -163,8 +163,8 @@ internal class CSongs管理 {
|
||||
c曲リストノード.nSide = dtx.SIDE;
|
||||
c曲リストノード.bExplicit = dtx.EXPLICIT;
|
||||
c曲リストノード.bMovie = !string.IsNullOrEmpty(dtx.strBGVIDEO_PATH);
|
||||
if (c曲リストノード.rParentNode != null && c曲リストノード.rParentNode.strジャンル != "") {
|
||||
c曲リストノード.strジャンル = c曲リストノード.rParentNode.strジャンル;
|
||||
if (c曲リストノード.rParentNode != null && c曲リストノード.rParentNode.songGenre != "") {
|
||||
c曲リストノード.songGenre = c曲リストノード.rParentNode.songGenre;
|
||||
}
|
||||
c曲リストノード.strSelectBGPath = $@"{fileinfo.FullName}{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}{dtx.SELECTBG}";
|
||||
if (!File.Exists(c曲リストノード.strSelectBGPath)) c曲リストノード.strSelectBGPath = null;
|
||||
@ -189,12 +189,12 @@ internal class CSongs管理 {
|
||||
|
||||
}
|
||||
c曲リストノード.nTotalFloor++;
|
||||
c曲リストノード.str本当のジャンル = c曲リストノード.strジャンル;
|
||||
c曲リストノード.arスコア[n] = new Cスコア();
|
||||
c曲リストノード.arスコア[n].ファイル情報.ファイルの絶対パス = str基点フォルダ + fileinfo.Name;
|
||||
c曲リストノード.arスコア[n].ファイル情報.フォルダの絶対パス = str基点フォルダ;
|
||||
c曲リストノード.arスコア[n].ファイル情報.ファイルサイズ = fileinfo.Length;
|
||||
c曲リストノード.arスコア[n].ファイル情報.最終更新日時 = fileinfo.LastWriteTime;
|
||||
c曲リストノード.songGenrePanel = c曲リストノード.songGenre;
|
||||
c曲リストノード.score[n] = new CScore();
|
||||
c曲リストノード.score[n].ファイル情報.ファイルの絶対パス = str基点フォルダ + fileinfo.Name;
|
||||
c曲リストノード.score[n].ファイル情報.フォルダの絶対パス = str基点フォルダ;
|
||||
c曲リストノード.score[n].ファイル情報.ファイルサイズ = fileinfo.Length;
|
||||
c曲リストノード.score[n].ファイル情報.最終更新日時 = fileinfo.LastWriteTime;
|
||||
|
||||
LoadChartInfo(c曲リストノード, dtx, n);
|
||||
|
||||
@ -284,12 +284,12 @@ internal class CSongs管理 {
|
||||
} else {
|
||||
CDTX dtx = new CDTX(filePath, false, 1.0, 0, 0);
|
||||
CSongListNode c曲リストノード = new CSongListNode();
|
||||
c曲リストノード.eノード種別 = CSongListNode.ENodeType.SCORE;
|
||||
c曲リストノード.nodeType = CSongListNode.ENodeType.SCORE;
|
||||
|
||||
bool b = false;
|
||||
for (int n = 0; n < (int)Difficulty.Total; n++) {
|
||||
if (dtx.b譜面が存在する[n]) {
|
||||
c曲リストノード.nスコア数++;
|
||||
c曲リストノード.difficultiesCount++;
|
||||
c曲リストノード.rParentNode = node親;
|
||||
c曲リストノード.strBreadcrumbs = (c曲リストノード.rParentNode == null) ?
|
||||
str基点フォルダ + fileinfo.Name : c曲リストノード.rParentNode.strBreadcrumbs + " > " + str基点フォルダ + fileinfo.Name;
|
||||
@ -314,15 +314,15 @@ internal class CSongs管理 {
|
||||
|
||||
if (!string.IsNullOrEmpty(dtx.GENRE)) {
|
||||
if (c曲リストノード.rParentNode != null) {
|
||||
c曲リストノード.strジャンル = c曲リストノード.rParentNode.strジャンル;
|
||||
c曲リストノード.str本当のジャンル = dtx.GENRE;
|
||||
c曲リストノード.songGenre = c曲リストノード.rParentNode.songGenre;
|
||||
c曲リストノード.songGenrePanel = dtx.GENRE;
|
||||
} else {
|
||||
c曲リストノード.strジャンル = dtx.GENRE;
|
||||
c曲リストノード.str本当のジャンル = dtx.GENRE;
|
||||
c曲リストノード.songGenre = dtx.GENRE;
|
||||
c曲リストノード.songGenrePanel = dtx.GENRE;
|
||||
}
|
||||
} else {
|
||||
c曲リストノード.strジャンル = c曲リストノード.rParentNode.strジャンル;
|
||||
c曲リストノード.str本当のジャンル = c曲リストノード.rParentNode.strジャンル;
|
||||
c曲リストノード.songGenre = c曲リストノード.rParentNode.songGenre;
|
||||
c曲リストノード.songGenrePanel = c曲リストノード.rParentNode.songGenre;
|
||||
}
|
||||
|
||||
if (c曲リストノード.strSelectBGPath == null || !File.Exists(str基点フォルダ + dtx.SELECTBG)) {
|
||||
@ -367,7 +367,7 @@ internal class CSongs管理 {
|
||||
}
|
||||
|
||||
|
||||
switch (CStrジャンルtoNum.ForAC15(c曲リストノード.strジャンル)) {
|
||||
switch (CStrジャンルtoNum.ForAC15(c曲リストノード.songGenre)) {
|
||||
case 0:
|
||||
c曲リストノード.ForeColor = OpenTaiko.Skin.SongSelect_ForeColor_JPOP;
|
||||
c曲リストノード.BackColor = OpenTaiko.Skin.SongSelect_BackColor_JPOP;
|
||||
@ -411,14 +411,14 @@ internal class CSongs管理 {
|
||||
|
||||
CSongDict.tAddSongNode(c曲リストノード.uniqueId, c曲リストノード);
|
||||
|
||||
c曲リストノード.arスコア[n] = new Cスコア();
|
||||
c曲リストノード.arスコア[n].ファイル情報.ファイルの絶対パス = str基点フォルダ + fileinfo.Name;
|
||||
c曲リストノード.arスコア[n].ファイル情報.フォルダの絶対パス = str基点フォルダ;
|
||||
c曲リストノード.arスコア[n].ファイル情報.ファイルサイズ = fileinfo.Length;
|
||||
c曲リストノード.arスコア[n].ファイル情報.最終更新日時 = fileinfo.LastWriteTime;
|
||||
c曲リストノード.score[n] = new CScore();
|
||||
c曲リストノード.score[n].ファイル情報.ファイルの絶対パス = str基点フォルダ + fileinfo.Name;
|
||||
c曲リストノード.score[n].ファイル情報.フォルダの絶対パス = str基点フォルダ;
|
||||
c曲リストノード.score[n].ファイル情報.ファイルサイズ = fileinfo.Length;
|
||||
c曲リストノード.score[n].ファイル情報.最終更新日時 = fileinfo.LastWriteTime;
|
||||
|
||||
if (c曲リストノード.rParentNode != null && String.IsNullOrEmpty(c曲リストノード.arスコア[n].譜面情報.Preimage)) {
|
||||
c曲リストノード.arスコア[n].譜面情報.Preimage = c曲リストノード.rParentNode.arスコア[0].譜面情報.Preimage;
|
||||
if (c曲リストノード.rParentNode != null && String.IsNullOrEmpty(c曲リストノード.score[n].譜面情報.Preimage)) {
|
||||
c曲リストノード.score[n].譜面情報.Preimage = c曲リストノード.rParentNode.score[0].譜面情報.Preimage;
|
||||
}
|
||||
|
||||
LoadChartInfo(c曲リストノード, dtx, n);
|
||||
@ -449,10 +449,9 @@ internal class CSongs管理 {
|
||||
if (File.Exists(infoDir.FullName + @$"{Path.DirectorySeparatorChar}box.def")) {
|
||||
CBoxDef boxdef = new CBoxDef(infoDir.FullName + @$"{Path.DirectorySeparatorChar}box.def");
|
||||
CSongListNode c曲リストノード = new CSongListNode();
|
||||
c曲リストノード.eノード種別 = CSongListNode.ENodeType.BOX;
|
||||
c曲リストノード.bDTXFilesで始まるフォルダ名のBOXである = false;
|
||||
c曲リストノード.nodeType = CSongListNode.ENodeType.BOX;
|
||||
c曲リストノード.ldTitle = boxdef.Title;
|
||||
c曲リストノード.strジャンル = boxdef.Genre;
|
||||
c曲リストノード.songGenre = boxdef.Genre;
|
||||
c曲リストノード.strScenePreset = boxdef.ScenePreset;
|
||||
c曲リストノード.strSelectBGPath = infoDir.FullName + Path.DirectorySeparatorChar + boxdef.SelectBG;
|
||||
if (!File.Exists(c曲リストノード.strSelectBGPath)) c曲リストノード.strSelectBGPath = null;
|
||||
@ -493,7 +492,7 @@ internal class CSongs管理 {
|
||||
c曲リストノード.strBoxText[i] = boxdef.strBoxText[i];
|
||||
}
|
||||
}
|
||||
switch (CStrジャンルtoNum.ForAC15(c曲リストノード.strジャンル)) {
|
||||
switch (CStrジャンルtoNum.ForAC15(c曲リストノード.songGenre)) {
|
||||
case 0:
|
||||
c曲リストノード.ForeColor = OpenTaiko.Skin.SongSelect_ForeColor_JPOP;
|
||||
c曲リストノード.BackColor = OpenTaiko.Skin.SongSelect_BackColor_JPOP;
|
||||
@ -532,13 +531,13 @@ internal class CSongs管理 {
|
||||
|
||||
|
||||
|
||||
c曲リストノード.nスコア数 = 1;
|
||||
c曲リストノード.arスコア[0] = new Cスコア();
|
||||
c曲リストノード.arスコア[0].ファイル情報.フォルダの絶対パス = infoDir.FullName + Path.DirectorySeparatorChar;
|
||||
c曲リストノード.arスコア[0].譜面情報.タイトル = boxdef.Title.GetString("");
|
||||
c曲リストノード.arスコア[0].譜面情報.ジャンル = boxdef.Genre;
|
||||
c曲リストノード.difficultiesCount = 1;
|
||||
c曲リストノード.score[0] = new CScore();
|
||||
c曲リストノード.score[0].ファイル情報.フォルダの絶対パス = infoDir.FullName + Path.DirectorySeparatorChar;
|
||||
c曲リストノード.score[0].譜面情報.タイトル = boxdef.Title.GetString("");
|
||||
c曲リストノード.score[0].譜面情報.ジャンル = boxdef.Genre;
|
||||
if (!String.IsNullOrEmpty(boxdef.DefaultPreimage))
|
||||
c曲リストノード.arスコア[0].譜面情報.Preimage = boxdef.DefaultPreimage;
|
||||
c曲リストノード.score[0].譜面情報.Preimage = boxdef.DefaultPreimage;
|
||||
c曲リストノード.rParentNode = node親;
|
||||
|
||||
|
||||
@ -546,7 +545,7 @@ internal class CSongs管理 {
|
||||
c曲リストノード.ldTitle.GetString("") : c曲リストノード.rParentNode.strBreadcrumbs + " > " + c曲リストノード.ldTitle.GetString("");
|
||||
|
||||
|
||||
c曲リストノード.list子リスト = new List<CSongListNode>();
|
||||
c曲リストノード.childrenList = new List<CSongListNode>();
|
||||
listノードリスト.Add(c曲リストノード);
|
||||
if (OpenTaiko.ConfigIni.bOutputSongSearchLog) {
|
||||
Trace.TraceInformation("box.def検出 : {0}", infoDir.FullName + @$"{Path.DirectorySeparatorChar}box.def");
|
||||
@ -560,8 +559,8 @@ internal class CSongs管理 {
|
||||
sb.Append("(onRoot):");
|
||||
}
|
||||
sb.Append("BOX, Title=" + c曲リストノード.ldTitle.GetString(""));
|
||||
if ((c曲リストノード.strジャンル != null) && (c曲リストノード.strジャンル.Length > 0)) {
|
||||
sb.Append(", Genre=" + c曲リストノード.strジャンル);
|
||||
if ((c曲リストノード.songGenre != null) && (c曲リストノード.songGenre.Length > 0)) {
|
||||
sb.Append(", Genre=" + c曲リストノード.songGenre);
|
||||
}
|
||||
if (c曲リストノード.IsChangedForeColor) {
|
||||
sb.Append(", ForeColor=" + c曲リストノード.ForeColor.ToString());
|
||||
@ -590,7 +589,7 @@ internal class CSongs管理 {
|
||||
}
|
||||
}
|
||||
if (b子BOXへ再帰する) {
|
||||
this.t曲を検索してリストを作成する(infoDir.FullName + Path.DirectorySeparatorChar, b子BOXへ再帰する, c曲リストノード.list子リスト, c曲リストノード);
|
||||
this.t曲を検索してリストを作成する(infoDir.FullName + Path.DirectorySeparatorChar, b子BOXへ再帰する, c曲リストノード.childrenList, c曲リストノード);
|
||||
}
|
||||
}
|
||||
//-----------------------------
|
||||
@ -609,58 +608,58 @@ internal class CSongs管理 {
|
||||
#endregion
|
||||
|
||||
private void LoadChartInfo(CSongListNode c曲リストノード, CDTX cdtx, int i) {
|
||||
if ((c曲リストノード.arスコア[i] != null) && !c曲リストノード.arスコア[i].bSongDBにキャッシュがあった) {
|
||||
if ((c曲リストノード.score[i] != null) && !c曲リストノード.score[i].bSongDBにキャッシュがあった) {
|
||||
#region [ DTX ファイルのヘッダだけ読み込み、Cスコア.譜面情報 を設定する ]
|
||||
//-----------------
|
||||
string path = c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス;
|
||||
string path = c曲リストノード.score[i].ファイル情報.ファイルの絶対パス;
|
||||
if (File.Exists(path)) {
|
||||
try {
|
||||
c曲リストノード.arスコア[i].譜面情報.タイトル = cdtx.TITLE.GetString("");
|
||||
c曲リストノード.score[i].譜面情報.タイトル = cdtx.TITLE.GetString("");
|
||||
|
||||
|
||||
c曲リストノード.arスコア[i].譜面情報.アーティスト名 = cdtx.ARTIST;
|
||||
c曲リストノード.arスコア[i].譜面情報.コメント = cdtx.COMMENT;
|
||||
c曲リストノード.arスコア[i].譜面情報.ジャンル = cdtx.GENRE;
|
||||
c曲リストノード.score[i].譜面情報.アーティスト名 = cdtx.ARTIST;
|
||||
c曲リストノード.score[i].譜面情報.コメント = cdtx.COMMENT;
|
||||
c曲リストノード.score[i].譜面情報.ジャンル = cdtx.GENRE;
|
||||
if (!String.IsNullOrEmpty(cdtx.PREIMAGE))
|
||||
c曲リストノード.arスコア[i].譜面情報.Preimage = cdtx.PREIMAGE;
|
||||
c曲リストノード.arスコア[i].譜面情報.Presound = cdtx.PREVIEW;
|
||||
c曲リストノード.arスコア[i].譜面情報.Backgound = ((cdtx.BACKGROUND != null) && (cdtx.BACKGROUND.Length > 0)) ? cdtx.BACKGROUND : cdtx.BACKGROUND_GR;
|
||||
c曲リストノード.arスコア[i].譜面情報.レベル.Drums = cdtx.LEVEL.Drums;
|
||||
c曲リストノード.arスコア[i].譜面情報.レベル.Guitar = cdtx.LEVEL.Guitar;
|
||||
c曲リストノード.arスコア[i].譜面情報.レベル.Bass = cdtx.LEVEL.Bass;
|
||||
c曲リストノード.arスコア[i].譜面情報.レベルを非表示にする = cdtx.HIDDENLEVEL;
|
||||
c曲リストノード.arスコア[i].譜面情報.Bpm = cdtx.BPM;
|
||||
c曲リストノード.arスコア[i].譜面情報.BaseBpm = cdtx.BASEBPM;
|
||||
c曲リストノード.arスコア[i].譜面情報.MinBpm = cdtx.MinBPM;
|
||||
c曲リストノード.arスコア[i].譜面情報.MaxBpm = cdtx.MaxBPM;
|
||||
c曲リストノード.arスコア[i].譜面情報.Duration = 0; // (cdtx.listChip == null)? 0 : cdtx.listChip[ cdtx.listChip.Count - 1 ].n発声時刻ms;
|
||||
c曲リストノード.arスコア[i].譜面情報.strBGMファイル名 = cdtx.strBGM_PATH;
|
||||
c曲リストノード.arスコア[i].譜面情報.SongVol = cdtx.SongVol;
|
||||
c曲リストノード.arスコア[i].譜面情報.SongLoudnessMetadata = cdtx.SongLoudnessMetadata;
|
||||
c曲リストノード.arスコア[i].譜面情報.nデモBGMオフセット = cdtx.nデモBGMオフセット;
|
||||
c曲リストノード.arスコア[i].譜面情報.strサブタイトル = cdtx.SUBTITLE.GetString("");
|
||||
c曲リストノード.score[i].譜面情報.Preimage = cdtx.PREIMAGE;
|
||||
c曲リストノード.score[i].譜面情報.Presound = cdtx.PREVIEW;
|
||||
c曲リストノード.score[i].譜面情報.Backgound = ((cdtx.BACKGROUND != null) && (cdtx.BACKGROUND.Length > 0)) ? cdtx.BACKGROUND : cdtx.BACKGROUND_GR;
|
||||
c曲リストノード.score[i].譜面情報.レベル.Drums = cdtx.LEVEL.Drums;
|
||||
c曲リストノード.score[i].譜面情報.レベル.Guitar = cdtx.LEVEL.Guitar;
|
||||
c曲リストノード.score[i].譜面情報.レベル.Bass = cdtx.LEVEL.Bass;
|
||||
c曲リストノード.score[i].譜面情報.レベルを非表示にする = cdtx.HIDDENLEVEL;
|
||||
c曲リストノード.score[i].譜面情報.Bpm = cdtx.BPM;
|
||||
c曲リストノード.score[i].譜面情報.BaseBpm = cdtx.BASEBPM;
|
||||
c曲リストノード.score[i].譜面情報.MinBpm = cdtx.MinBPM;
|
||||
c曲リストノード.score[i].譜面情報.MaxBpm = cdtx.MaxBPM;
|
||||
c曲リストノード.score[i].譜面情報.Duration = 0; // (cdtx.listChip == null)? 0 : cdtx.listChip[ cdtx.listChip.Count - 1 ].n発声時刻ms;
|
||||
c曲リストノード.score[i].譜面情報.strBGMファイル名 = cdtx.strBGM_PATH;
|
||||
c曲リストノード.score[i].譜面情報.SongVol = cdtx.SongVol;
|
||||
c曲リストノード.score[i].譜面情報.SongLoudnessMetadata = cdtx.SongLoudnessMetadata;
|
||||
c曲リストノード.score[i].譜面情報.nデモBGMオフセット = cdtx.nデモBGMオフセット;
|
||||
c曲リストノード.score[i].譜面情報.strサブタイトル = cdtx.SUBTITLE.GetString("");
|
||||
for (int k = 0; k < (int)Difficulty.Total; k++) {
|
||||
c曲リストノード.arスコア[i].譜面情報.b譜面分岐[k] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[k];
|
||||
c曲リストノード.arスコア[i].譜面情報.nレベル[k] = cdtx.LEVELtaiko[k];
|
||||
c曲リストノード.arスコア[i].譜面情報.nLevelIcon[k] = cdtx.LEVELtaikoIcon[k];
|
||||
c曲リストノード.score[i].譜面情報.b譜面分岐[k] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[k];
|
||||
c曲リストノード.score[i].譜面情報.nレベル[k] = cdtx.LEVELtaiko[k];
|
||||
c曲リストノード.score[i].譜面情報.nLevelIcon[k] = cdtx.LEVELtaikoIcon[k];
|
||||
}
|
||||
|
||||
// Tower Lives
|
||||
c曲リストノード.arスコア[i].譜面情報.nLife = cdtx.LIFE;
|
||||
c曲リストノード.score[i].譜面情報.nLife = cdtx.LIFE;
|
||||
|
||||
c曲リストノード.arスコア[i].譜面情報.nTowerType = cdtx.TOWERTYPE;
|
||||
c曲リストノード.score[i].譜面情報.nTowerType = cdtx.TOWERTYPE;
|
||||
|
||||
c曲リストノード.arスコア[i].譜面情報.nDanTick = cdtx.DANTICK;
|
||||
c曲リストノード.arスコア[i].譜面情報.cDanTickColor = cdtx.DANTICKCOLOR;
|
||||
c曲リストノード.score[i].譜面情報.nDanTick = cdtx.DANTICK;
|
||||
c曲リストノード.score[i].譜面情報.cDanTickColor = cdtx.DANTICKCOLOR;
|
||||
|
||||
c曲リストノード.arスコア[i].譜面情報.nTotalFloor = 0;
|
||||
c曲リストノード.score[i].譜面情報.nTotalFloor = 0;
|
||||
for (int k = 0; k < cdtx.listChip.Count; k++) {
|
||||
CDTX.CChip pChip = cdtx.listChip[k];
|
||||
|
||||
if (pChip.n整数値_内部番号 > c曲リストノード.arスコア[i].譜面情報.nTotalFloor && pChip.nチャンネル番号 == 0x50)
|
||||
c曲リストノード.arスコア[i].譜面情報.nTotalFloor = pChip.n整数値_内部番号;
|
||||
if (pChip.n整数値_内部番号 > c曲リストノード.score[i].譜面情報.nTotalFloor && pChip.nチャンネル番号 == 0x50)
|
||||
c曲リストノード.score[i].譜面情報.nTotalFloor = pChip.n整数値_内部番号;
|
||||
}
|
||||
c曲リストノード.arスコア[i].譜面情報.nTotalFloor++;
|
||||
c曲リストノード.score[i].譜面情報.nTotalFloor++;
|
||||
|
||||
|
||||
|
||||
@ -671,23 +670,23 @@ internal class CSongs管理 {
|
||||
if (OpenTaiko.ConfigIni.bOutputSongSearchLog) {
|
||||
StringBuilder sb = new StringBuilder(0x400);
|
||||
sb.Append(string.Format("曲データファイルから譜面情報を転記しました。({0})", path));
|
||||
sb.Append("(title=" + c曲リストノード.arスコア[i].譜面情報.タイトル);
|
||||
sb.Append(", artist=" + c曲リストノード.arスコア[i].譜面情報.アーティスト名);
|
||||
sb.Append(", comment=" + c曲リストノード.arスコア[i].譜面情報.コメント);
|
||||
sb.Append(", genre=" + c曲リストノード.arスコア[i].譜面情報.ジャンル);
|
||||
sb.Append(", preimage=" + c曲リストノード.arスコア[i].譜面情報.Preimage);
|
||||
sb.Append(", premovie=" + c曲リストノード.arスコア[i].譜面情報.Premovie);
|
||||
sb.Append(", presound=" + c曲リストノード.arスコア[i].譜面情報.Presound);
|
||||
sb.Append(", background=" + c曲リストノード.arスコア[i].譜面情報.Backgound);
|
||||
sb.Append(", lvDr=" + c曲リストノード.arスコア[i].譜面情報.レベル.Drums);
|
||||
sb.Append(", lvGt=" + c曲リストノード.arスコア[i].譜面情報.レベル.Guitar);
|
||||
sb.Append(", lvBs=" + c曲リストノード.arスコア[i].譜面情報.レベル.Bass);
|
||||
sb.Append(", lvHide=" + c曲リストノード.arスコア[i].譜面情報.レベルを非表示にする);
|
||||
sb.Append(", type=" + c曲リストノード.arスコア[i].譜面情報.曲種別);
|
||||
sb.Append(", bpm=" + c曲リストノード.arスコア[i].譜面情報.Bpm);
|
||||
sb.Append(", basebpm=" + c曲リストノード.arスコア[i].譜面情報.BaseBpm);
|
||||
sb.Append(", minbpm=" + c曲リストノード.arスコア[i].譜面情報.MinBpm);
|
||||
sb.Append(", maxbpm=" + c曲リストノード.arスコア[i].譜面情報.MaxBpm);
|
||||
sb.Append("(title=" + c曲リストノード.score[i].譜面情報.タイトル);
|
||||
sb.Append(", artist=" + c曲リストノード.score[i].譜面情報.アーティスト名);
|
||||
sb.Append(", comment=" + c曲リストノード.score[i].譜面情報.コメント);
|
||||
sb.Append(", genre=" + c曲リストノード.score[i].譜面情報.ジャンル);
|
||||
sb.Append(", preimage=" + c曲リストノード.score[i].譜面情報.Preimage);
|
||||
sb.Append(", premovie=" + c曲リストノード.score[i].譜面情報.Premovie);
|
||||
sb.Append(", presound=" + c曲リストノード.score[i].譜面情報.Presound);
|
||||
sb.Append(", background=" + c曲リストノード.score[i].譜面情報.Backgound);
|
||||
sb.Append(", lvDr=" + c曲リストノード.score[i].譜面情報.レベル.Drums);
|
||||
sb.Append(", lvGt=" + c曲リストノード.score[i].譜面情報.レベル.Guitar);
|
||||
sb.Append(", lvBs=" + c曲リストノード.score[i].譜面情報.レベル.Bass);
|
||||
sb.Append(", lvHide=" + c曲リストノード.score[i].譜面情報.レベルを非表示にする);
|
||||
sb.Append(", type=" + c曲リストノード.score[i].譜面情報.曲種別);
|
||||
sb.Append(", bpm=" + c曲リストノード.score[i].譜面情報.Bpm);
|
||||
sb.Append(", basebpm=" + c曲リストノード.score[i].譜面情報.BaseBpm);
|
||||
sb.Append(", minbpm=" + c曲リストノード.score[i].譜面情報.MinBpm);
|
||||
sb.Append(", maxbpm=" + c曲リストノード.score[i].譜面情報.MaxBpm);
|
||||
// sb.Append( ", duration=" + c曲リストノード.arスコア[ i ].譜面情報.Duration );
|
||||
Trace.TraceInformation(sb.ToString());
|
||||
}
|
||||
@ -695,8 +694,8 @@ internal class CSongs管理 {
|
||||
#endregion
|
||||
} catch (Exception exception) {
|
||||
Trace.TraceError(exception.ToString());
|
||||
c曲リストノード.arスコア[i] = null;
|
||||
c曲リストノード.nスコア数--;
|
||||
c曲リストノード.score[i] = null;
|
||||
c曲リストノード.difficultiesCount--;
|
||||
this.n検索されたスコア数--;
|
||||
Trace.TraceError("曲データファイルの読み込みに失敗しました。({0})", path);
|
||||
}
|
||||
@ -720,37 +719,37 @@ internal class CSongs管理 {
|
||||
|
||||
for (int p = 0; p < list曲ルート.Count; p++) {
|
||||
var c曲リストノード = list曲ルート[p];
|
||||
if (c曲リストノード.eノード種別 == CSongListNode.ENodeType.BOX) {
|
||||
if (c曲リストノード.strジャンル == "段位道場") {
|
||||
if (c曲リストノード.nodeType == CSongListNode.ENodeType.BOX) {
|
||||
if (c曲リストノード.songGenre == "段位道場") {
|
||||
if (OpenTaiko.ConfigIni.bDanTowerHide) {
|
||||
list曲ルート.Remove(c曲リストノード);
|
||||
p--;
|
||||
}
|
||||
|
||||
// Add to dojo
|
||||
list曲ルート_Dan = c曲リストノード.list子リスト;
|
||||
} else if (c曲リストノード.strジャンル == "太鼓タワー") {
|
||||
list曲ルート_Dan = c曲リストノード.childrenList;
|
||||
} else if (c曲リストノード.songGenre == "太鼓タワー") {
|
||||
if (OpenTaiko.ConfigIni.bDanTowerHide) {
|
||||
list曲ルート.Remove(c曲リストノード);
|
||||
p--;
|
||||
}
|
||||
|
||||
list曲ルート_Tower = c曲リストノード.list子リスト;
|
||||
list曲ルート_Tower = c曲リストノード.childrenList;
|
||||
} else {
|
||||
for (int i = 0; i < c曲リストノード.list子リスト.Count; i++) {
|
||||
if (c曲リストノード.list子リスト[i].arスコア[6] != null) {
|
||||
list曲ルート_Dan.Add(c曲リストノード.list子リスト[i]);
|
||||
for (int i = 0; i < c曲リストノード.childrenList.Count; i++) {
|
||||
if (c曲リストノード.childrenList[i].score[6] != null) {
|
||||
list曲ルート_Dan.Add(c曲リストノード.childrenList[i]);
|
||||
|
||||
if (OpenTaiko.ConfigIni.bDanTowerHide)
|
||||
c曲リストノード.list子リスト.Remove(c曲リストノード.list子リスト[i]);
|
||||
c曲リストノード.childrenList.Remove(c曲リストノード.childrenList[i]);
|
||||
|
||||
continue;
|
||||
}
|
||||
if (c曲リストノード.list子リスト[i].arスコア[5] != null) {
|
||||
list曲ルート_Tower.Add(c曲リストノード.list子リスト[i]);
|
||||
if (c曲リストノード.childrenList[i].score[5] != null) {
|
||||
list曲ルート_Tower.Add(c曲リストノード.childrenList[i]);
|
||||
|
||||
if (OpenTaiko.ConfigIni.bDanTowerHide)
|
||||
c曲リストノード.list子リスト.Remove(c曲リストノード.list子リスト[i]);
|
||||
c曲リストノード.childrenList.Remove(c曲リストノード.childrenList[i]);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -795,16 +794,16 @@ internal class CSongs管理 {
|
||||
|
||||
#region [ Append "Back" buttons to the included folders ]
|
||||
//-----------------------------
|
||||
if (songNode.eノード種別 == CSongListNode.ENodeType.BOX) {
|
||||
if (songNode.nodeType == CSongListNode.ENodeType.BOX) {
|
||||
|
||||
tSongListSortByPath(songNode.list子リスト);
|
||||
tSongListSortByPath(songNode.childrenList);
|
||||
|
||||
string newPath = parentName + songNode.ldTitle.GetString("") + "/";
|
||||
|
||||
CSongDict.tReinsertBackButtons(songNode, songNode.list子リスト, newPath, listStrBoxDefSkinSubfolderFullName);
|
||||
CSongDict.tReinsertBackButtons(songNode, songNode.childrenList, newPath, listStrBoxDefSkinSubfolderFullName);
|
||||
|
||||
// Process subfolders recussively
|
||||
tSongListPostprocessing(songNode.list子リスト, newPath, false);
|
||||
tSongListPostprocessing(songNode.childrenList, newPath, false);
|
||||
|
||||
continue;
|
||||
}
|
||||
@ -816,7 +815,7 @@ internal class CSongs管理 {
|
||||
//-----------------------------
|
||||
if (string.IsNullOrEmpty(songNode.ldTitle.GetString(""))) {
|
||||
for (int j = 0; j < (int)Difficulty.Total; j++) {
|
||||
if ((songNode.arスコア[j] != null) && !string.IsNullOrEmpty(songNode.arスコア[j].譜面情報.タイトル)) {
|
||||
if ((songNode.score[j] != null) && !string.IsNullOrEmpty(songNode.score[j].譜面情報.タイトル)) {
|
||||
songNode.ldTitle = new CLocalizationData();
|
||||
|
||||
if (OpenTaiko.ConfigIni.bOutputSongSearchLog)
|
||||
@ -844,8 +843,8 @@ internal class CSongs管理 {
|
||||
tSongListSortByPath(nodeList, 1, 0);
|
||||
|
||||
foreach (CSongListNode songNode in nodeList) {
|
||||
if ((songNode.list子リスト != null) && (songNode.list子リスト.Count > 1)) {
|
||||
tSongListSortByPath(songNode.list子リスト);
|
||||
if ((songNode.childrenList != null) && (songNode.childrenList.Count > 1)) {
|
||||
tSongListSortByPath(songNode.childrenList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -683,13 +683,13 @@ class CActSelect段位リスト : CStage {
|
||||
}
|
||||
|
||||
public void tOpenFolder(CSongListNode song) {
|
||||
listSongs = song.list子リスト;
|
||||
listSongs = song.childrenList;
|
||||
n現在の選択行 = 0;
|
||||
tUpdateSongs();
|
||||
}
|
||||
|
||||
public void tCloseFolder(CSongListNode song) {
|
||||
listSongs = song.rParentNode.rParentNode.list子リスト;
|
||||
listSongs = song.rParentNode.rParentNode.childrenList;
|
||||
n現在の選択行 = 0;
|
||||
tUpdateSongs();
|
||||
}
|
||||
@ -703,8 +703,8 @@ class CActSelect段位リスト : CStage {
|
||||
for (int i = 0; i < stバー情報.Length; i++) {
|
||||
var song = listSongs[i];
|
||||
|
||||
stバー情報[i].eノード種別 = song.eノード種別;
|
||||
switch (song.eノード種別) {
|
||||
stバー情報[i].eノード種別 = song.nodeType;
|
||||
switch (song.nodeType) {
|
||||
case CSongListNode.ENodeType.SCORE: {
|
||||
stバー情報[i].ttkタイトル = new TitleTextureKey[listSongs[i].DanSongs.Count + 1];
|
||||
stバー情報[i].n曲難易度 = new int[listSongs[i].DanSongs.Count];
|
||||
@ -721,14 +721,14 @@ class CActSelect段位リスト : CStage {
|
||||
|
||||
stバー情報[i].ttkタイトル[listSongs[i].DanSongs.Count] = new TitleTextureKey(tmp, pfDanSong, Color.Black, Color.Transparent, 700);
|
||||
|
||||
stバー情報[i].nDanTick = song.arスコア[6].譜面情報.nDanTick;
|
||||
stバー情報[i].cDanTickColor = song.arスコア[6].譜面情報.cDanTickColor;
|
||||
stバー情報[i].nDanTick = song.score[6].譜面情報.nDanTick;
|
||||
stバー情報[i].cDanTickColor = song.score[6].譜面情報.cDanTickColor;
|
||||
|
||||
//stバー情報[i].clearGrade = song.arスコア[6].譜面情報.nクリア[0];
|
||||
var TableEntry = OpenTaiko.SaveFileInstances[OpenTaiko.SaveFile].data.tGetSongSelectTableEntry(song.tGetUniqueId());
|
||||
stバー情報[i].clearGrade = TableEntry.ClearStatuses[(int)Difficulty.Dan];
|
||||
|
||||
string barCenter = Path.GetDirectoryName(song.arスコア[6].ファイル情報.ファイルの絶対パス) + @$"${Path.DirectorySeparatorChar}Bar_Center.png";
|
||||
string barCenter = Path.GetDirectoryName(song.score[6].ファイル情報.ファイルの絶対パス) + @$"${Path.DirectorySeparatorChar}Bar_Center.png";
|
||||
if (BarTexCache.TryGetValue(barCenter, out CTexture texture1)) {
|
||||
stバー情報[i].txBarCenter = texture1;
|
||||
} else {
|
||||
@ -736,7 +736,7 @@ class CActSelect段位リスト : CStage {
|
||||
BarTexCache.Add(barCenter, stバー情報[i].txBarCenter);
|
||||
}
|
||||
|
||||
string danPlate = Path.GetDirectoryName(song.arスコア[6].ファイル情報.ファイルの絶対パス) + @$"${Path.DirectorySeparatorChar}Dan_Plate.png";
|
||||
string danPlate = Path.GetDirectoryName(song.score[6].ファイル情報.ファイルの絶対パス) + @$"${Path.DirectorySeparatorChar}Dan_Plate.png";
|
||||
if (BarTexCache.TryGetValue(danPlate, out CTexture texture2)) {
|
||||
stバー情報[i].txDanPlate = texture2;
|
||||
} else {
|
||||
|
@ -176,7 +176,7 @@ class CStage段位選択 : CStage {
|
||||
|
||||
if (OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Return) ||
|
||||
OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.Decide)) {
|
||||
switch (段位リスト.currentBar.eノード種別) {
|
||||
switch (段位リスト.currentBar.nodeType) {
|
||||
case CSongListNode.ENodeType.SCORE:
|
||||
case CSongListNode.ENodeType.RANDOM: {
|
||||
//this.t段位を選択する();
|
||||
@ -192,7 +192,7 @@ class CStage段位選択 : CStage {
|
||||
}
|
||||
break;
|
||||
case CSongListNode.ENodeType.BACKBOX: {
|
||||
if (OpenTaiko.Songs管理.list曲ルート.Contains(段位リスト.currentBar.rParentNode) && 段位リスト.currentBar.rParentNode.strジャンル == "段位道場") {
|
||||
if (OpenTaiko.Songs管理.list曲ルート.Contains(段位リスト.currentBar.rParentNode) && 段位リスト.currentBar.rParentNode.songGenre == "段位道場") {
|
||||
return returnTitle();
|
||||
} else {
|
||||
OpenTaiko.Skin.soundDecideSFX.tPlay();
|
||||
@ -253,7 +253,7 @@ class CStage段位選択 : CStage {
|
||||
if (段位挑戦選択画面.bOption) actPlayOption.On進行描画(0);
|
||||
|
||||
if (ct待機.CurrentValue >= 3000) {
|
||||
if (段位リスト.currentBar.eノード種別 == CSongListNode.ENodeType.RANDOM) {
|
||||
if (段位リスト.currentBar.nodeType == CSongListNode.ENodeType.RANDOM) {
|
||||
if (!tSelectSongRandomly()) {
|
||||
bDifficultyIn = false;
|
||||
b選択した = false;
|
||||
@ -293,9 +293,9 @@ class CStage段位選択 : CStage {
|
||||
public void t段位を選択する() {
|
||||
this.b選択した = true;
|
||||
OpenTaiko.stageSongSelect.rChoosenSong = 段位リスト.listSongs[段位リスト.n現在の選択行];
|
||||
OpenTaiko.stageSongSelect.r確定されたスコア = 段位リスト.listSongs[段位リスト.n現在の選択行].arスコア[(int)Difficulty.Dan];
|
||||
OpenTaiko.stageSongSelect.r確定されたスコア = 段位リスト.listSongs[段位リスト.n現在の選択行].score[(int)Difficulty.Dan];
|
||||
OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] = (int)Difficulty.Dan;
|
||||
OpenTaiko.stageSongSelect.str確定された曲のジャンル = 段位リスト.listSongs[段位リスト.n現在の選択行].strジャンル;
|
||||
OpenTaiko.stageSongSelect.str確定された曲のジャンル = 段位リスト.listSongs[段位リスト.n現在の選択行].songGenre;
|
||||
if ((OpenTaiko.stageSongSelect.rChoosenSong != null) && (OpenTaiko.stageSongSelect.r確定されたスコア != null)) {
|
||||
this.eフェードアウト完了時の戻り値 = E戻り値.選曲した;
|
||||
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
|
||||
@ -312,9 +312,9 @@ class CStage段位選択 : CStage {
|
||||
|
||||
List<CSongListNode> songs = new List<CSongListNode>();
|
||||
OpenTaiko.stageSongSelect.t指定された曲の子リストの曲を列挙する_孫リスト含む(song.rParentNode, ref songs, ref mandatoryDiffs, true);
|
||||
song.listランダム用ノードリスト = songs;
|
||||
song.randomList = songs;
|
||||
|
||||
int selectableSongCount = song.listランダム用ノードリスト.Count;
|
||||
int selectableSongCount = song.randomList.Count;
|
||||
|
||||
if (selectableSongCount == 0) {
|
||||
return false;
|
||||
@ -329,11 +329,11 @@ class CStage段位選択 : CStage {
|
||||
}
|
||||
|
||||
// Third assignment
|
||||
OpenTaiko.stageSongSelect.rChoosenSong = song.listランダム用ノードリスト[randomSongIndex];
|
||||
OpenTaiko.stageSongSelect.rChoosenSong = song.randomList[randomSongIndex];
|
||||
OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] = (int)Difficulty.Dan;
|
||||
|
||||
OpenTaiko.stageSongSelect.r確定されたスコア = OpenTaiko.stageSongSelect.rChoosenSong.arスコア[OpenTaiko.stageSongSelect.actSongList.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(OpenTaiko.stageSongSelect.rChoosenSong)];
|
||||
OpenTaiko.stageSongSelect.str確定された曲のジャンル = OpenTaiko.stageSongSelect.rChoosenSong.strジャンル;
|
||||
OpenTaiko.stageSongSelect.r確定されたスコア = OpenTaiko.stageSongSelect.rChoosenSong.score[OpenTaiko.stageSongSelect.actSongList.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(OpenTaiko.stageSongSelect.rChoosenSong)];
|
||||
OpenTaiko.stageSongSelect.str確定された曲のジャンル = OpenTaiko.stageSongSelect.rChoosenSong.songGenre;
|
||||
|
||||
//TJAPlayer3.Skin.sound曲決定音.t再生する();
|
||||
|
||||
|
@ -61,7 +61,7 @@ internal class CActSelectPreimageパネル : CActivity {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public CTexture? tGenerateAndGetPreimage(Cスコア? cScoreInst) {
|
||||
public CTexture? tGenerateAndGetPreimage(CScore? cScoreInst) {
|
||||
this.tUpdatePreimage(cScoreInst);
|
||||
return tGetPreimageTextureResized();
|
||||
}
|
||||
@ -105,7 +105,7 @@ internal class CActSelectPreimageパネル : CActivity {
|
||||
}
|
||||
}
|
||||
|
||||
private void tUpdatePreimage(Cスコア? cScoreInst) {
|
||||
private void tUpdatePreimage(CScore? cScoreInst) {
|
||||
if (cScoreInst != null && this.tBuildPreimageAssets(cScoreInst)) {
|
||||
return;
|
||||
}
|
||||
@ -114,7 +114,7 @@ internal class CActSelectPreimageパネル : CActivity {
|
||||
this.rCurrentlyDisplayedPreimage = this.txDefaultPreimage;
|
||||
this.strCurrentFilename = "";
|
||||
}
|
||||
private bool tBuildPreimageAssets(Cスコア cScoreInst) {
|
||||
private bool tBuildPreimageAssets(CScore cScoreInst) {
|
||||
if ((cScoreInst == null) || string.IsNullOrEmpty(cScoreInst.譜面情報.Preimage)) return false;
|
||||
|
||||
string str = ((!Path.IsPathRooted(cScoreInst.譜面情報.Preimage)) ? cScoreInst.ファイル情報.フォルダの絶対パス : "") + cScoreInst.譜面情報.Preimage;
|
||||
|
@ -17,7 +17,7 @@ internal class CActSelectPresound : CActivity {
|
||||
}
|
||||
}
|
||||
public void t選択曲が変更された() {
|
||||
Cスコア cスコア = OpenTaiko.stageSongSelect.r現在選択中のスコア;
|
||||
CScore cスコア = OpenTaiko.stageSongSelect.r現在選択中のスコア;
|
||||
|
||||
if ((cスコア != null) && ((!(cスコア.ファイル情報.フォルダの絶対パス + cスコア.譜面情報.strBGMファイル名).Equals(this.str現在のファイル名) || (this.sound == null)) || !this.sound.IsPlaying)) {
|
||||
this.tStopSound();
|
||||
@ -83,7 +83,7 @@ internal class CActSelectPresound : CActivity {
|
||||
this.t進行処理_プレビューサウンド();
|
||||
|
||||
if (this.sound != null) {
|
||||
Cスコア cスコア = OpenTaiko.stageSongSelect.r現在選択中のスコア;
|
||||
CScore cスコア = OpenTaiko.stageSongSelect.r現在選択中のスコア;
|
||||
if (long再生位置 == -1) {
|
||||
this.long再生開始時のシステム時刻 = SoundManager.PlayTimer.SystemTimeMs;
|
||||
this.long再生位置 = cスコア.譜面情報.nデモBGMオフセット;
|
||||
@ -133,7 +133,7 @@ internal class CActSelectPresound : CActivity {
|
||||
this.ctBGMフェードイン用.CurrentValue = OpenTaiko.Skin.bgm選曲画面.nAutomationLevel_現在のサウンド;
|
||||
}
|
||||
private void tプレビューサウンドの作成() {
|
||||
Cスコア cスコア = OpenTaiko.stageSongSelect.r現在選択中のスコア;
|
||||
CScore cスコア = OpenTaiko.stageSongSelect.r現在選択中のスコア;
|
||||
var HiddenIndex = OpenTaiko.Databases.DBSongUnlockables.tGetSongHiddenIndex(OpenTaiko.stageSongSelect.rNowSelectedSong);
|
||||
if ((cスコア != null)
|
||||
&& !string.IsNullOrEmpty(cスコア.譜面情報.strBGMファイル名)
|
||||
|
@ -39,11 +39,11 @@ class CActSelectSongInfo : CStage {
|
||||
}
|
||||
|
||||
public override int Draw() {
|
||||
if (OpenTaiko.stageSongSelect.rNowSelectedSong != null && OpenTaiko.stageSongSelect.rNowSelectedSong.eノード種別 == CSongListNode.ENodeType.SCORE) {
|
||||
if (OpenTaiko.stageSongSelect.rNowSelectedSong != null && OpenTaiko.stageSongSelect.rNowSelectedSong.nodeType == CSongListNode.ENodeType.SCORE) {
|
||||
int[] bpms = new int[3] {
|
||||
(int)OpenTaiko.stageSongSelect.rNowSelectedSong.arスコア[OpenTaiko.stageSongSelect.actSongList.tFetchDifficulty(OpenTaiko.stageSongSelect.rNowSelectedSong)].譜面情報.BaseBpm,
|
||||
(int)OpenTaiko.stageSongSelect.rNowSelectedSong.arスコア[OpenTaiko.stageSongSelect.actSongList.tFetchDifficulty(OpenTaiko.stageSongSelect.rNowSelectedSong)].譜面情報.MinBpm,
|
||||
(int)OpenTaiko.stageSongSelect.rNowSelectedSong.arスコア[OpenTaiko.stageSongSelect.actSongList.tFetchDifficulty(OpenTaiko.stageSongSelect.rNowSelectedSong)].譜面情報.MaxBpm
|
||||
(int)OpenTaiko.stageSongSelect.rNowSelectedSong.score[OpenTaiko.stageSongSelect.actSongList.tFetchDifficulty(OpenTaiko.stageSongSelect.rNowSelectedSong)].譜面情報.BaseBpm,
|
||||
(int)OpenTaiko.stageSongSelect.rNowSelectedSong.score[OpenTaiko.stageSongSelect.actSongList.tFetchDifficulty(OpenTaiko.stageSongSelect.rNowSelectedSong)].譜面情報.MinBpm,
|
||||
(int)OpenTaiko.stageSongSelect.rNowSelectedSong.score[OpenTaiko.stageSongSelect.actSongList.tFetchDifficulty(OpenTaiko.stageSongSelect.rNowSelectedSong)].譜面情報.MaxBpm
|
||||
};
|
||||
for (int i = 0; i < 3; i++) {
|
||||
tBPMNumberDraw(OpenTaiko.Skin.SongSelect_Bpm_X[i], OpenTaiko.Skin.SongSelect_Bpm_Y[i], bpms[i]);
|
||||
|
@ -41,8 +41,8 @@ class CActSelectTowerInfo : CStage {
|
||||
}
|
||||
|
||||
public override int Draw() {
|
||||
if (OpenTaiko.stageSongSelect.rNowSelectedSong.arスコア[5] != null)
|
||||
tFloorNumberDraw(OpenTaiko.Skin.SongSelect_FloorNum_X, OpenTaiko.Skin.SongSelect_FloorNum_Y, OpenTaiko.stageSongSelect.rNowSelectedSong.arスコア[5].譜面情報.nTotalFloor);
|
||||
if (OpenTaiko.stageSongSelect.rNowSelectedSong.score[5] != null)
|
||||
tFloorNumberDraw(OpenTaiko.Skin.SongSelect_FloorNum_X, OpenTaiko.Skin.SongSelect_FloorNum_Y, OpenTaiko.stageSongSelect.rNowSelectedSong.score[5].譜面情報.nTotalFloor);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -35,10 +35,10 @@ internal class CActSelect曲リスト : CActivity {
|
||||
return this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(this.rCurrentlySelectedSong);
|
||||
}
|
||||
}
|
||||
public Cスコア r現在選択中のスコア {
|
||||
public CScore r現在選択中のスコア {
|
||||
get {
|
||||
if (this.rCurrentlySelectedSong != null) {
|
||||
return this.rCurrentlySelectedSong.arスコア[this.n現在選択中の曲の現在の難易度レベル];
|
||||
return this.rCurrentlySelectedSong.score[this.n現在選択中の曲の現在の難易度レベル];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -100,10 +100,10 @@ internal class CActSelect曲リスト : CActivity {
|
||||
if (song == null)
|
||||
return this.n現在のアンカ難易度レベル; // 曲がまったくないよ
|
||||
|
||||
if (song.arスコア[this.n現在のアンカ難易度レベル] != null)
|
||||
if (song.score[this.n現在のアンカ難易度レベル] != null)
|
||||
return this.n現在のアンカ難易度レベル; // 難易度ぴったりの曲があったよ
|
||||
|
||||
if ((song.eノード種別 == CSongListNode.ENodeType.BOX) || (song.eノード種別 == CSongListNode.ENodeType.BACKBOX))
|
||||
if ((song.nodeType == CSongListNode.ENodeType.BOX) || (song.nodeType == CSongListNode.ENodeType.BACKBOX))
|
||||
return 0; // BOX と BACKBOX は関係無いよ
|
||||
|
||||
|
||||
@ -112,7 +112,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
int n最も近いレベル = this.n現在のアンカ難易度レベル;
|
||||
|
||||
for (int i = 0; i < (int)Difficulty.Total; i++) {
|
||||
if (song.arスコア[n最も近いレベル] != null)
|
||||
if (song.score[n最も近いレベル] != null)
|
||||
break; // 曲があった。
|
||||
|
||||
n最も近いレベル = (n最も近いレベル + 1) % (int)Difficulty.Total; // 曲がなかったので次の難易度レベルへGo。(5以上になったら0に戻る。)
|
||||
@ -128,7 +128,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
n最も近いレベル = this.n現在のアンカ難易度レベル;
|
||||
|
||||
for (int i = 0; i < (int)Difficulty.Total; i++) {
|
||||
if (song.arスコア[n最も近いレベル] != null)
|
||||
if (song.score[n最も近いレベル] != null)
|
||||
break; // 曲があった。
|
||||
|
||||
n最も近いレベル = ((n最も近いレベル - 1) + (int)Difficulty.Total) % (int)Difficulty.Total; // 曲がなかったので次の難易度レベルへGo。(0未満になったら4に戻る。)
|
||||
@ -151,8 +151,8 @@ internal class CActSelect曲リスト : CActivity {
|
||||
{
|
||||
return OpenTaiko.Songs管理.list曲ルート; // rootのリストを返す
|
||||
} else {
|
||||
if ((song.rParentNode.list子リスト != null) && (song.rParentNode.list子リスト.Count > 0)) {
|
||||
return song.rParentNode.list子リスト;
|
||||
if ((song.rParentNode.childrenList != null) && (song.rParentNode.childrenList.Count > 0)) {
|
||||
return song.rParentNode.childrenList;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
@ -177,11 +177,11 @@ internal class CActSelect曲リスト : CActivity {
|
||||
// this.r現在選択中の曲 = CDTXMania
|
||||
void addBackBox(List<CSongListNode> list, string parentName = "/") {
|
||||
foreach (CSongListNode node in list) {
|
||||
if (node.eノード種別 != CSongListNode.ENodeType.BOX) continue;
|
||||
if (node.nodeType != CSongListNode.ENodeType.BOX) continue;
|
||||
string newPath = parentName + node.ldTitle.GetString("") + "/";
|
||||
CSongDict.tReinsertBackButtons(node, node.list子リスト, newPath, OpenTaiko.Songs管理.listStrBoxDefSkinSubfolderFullName);
|
||||
CSongDict.tReinsertBackButtons(node, node.childrenList, newPath, OpenTaiko.Songs管理.listStrBoxDefSkinSubfolderFullName);
|
||||
|
||||
addBackBox(node.list子リスト, newPath);
|
||||
addBackBox(node.childrenList, newPath);
|
||||
}
|
||||
}
|
||||
addBackBox(OpenTaiko.Songs管理.list曲ルート);
|
||||
@ -228,10 +228,10 @@ internal class CActSelect曲リスト : CActivity {
|
||||
// INFO: This null check is added due to `list子リスト` might be null during rapid sorting
|
||||
// Despite what editor tell you here it is possible to be null
|
||||
if (rCurrentlySelectedSong != null &&
|
||||
rCurrentlySelectedSong.list子リスト != null &&
|
||||
rCurrentlySelectedSong.list子リスト.Count != 1) {
|
||||
rCurrentlySelectedSong.childrenList != null &&
|
||||
rCurrentlySelectedSong.childrenList.Count != 1) {
|
||||
if (OpenTaiko.ConfigIni.TJAP3FolderMode) {
|
||||
this.rCurrentlySelectedSong = this.rCurrentlySelectedSong.list子リスト[0];
|
||||
this.rCurrentlySelectedSong = this.rCurrentlySelectedSong.childrenList[0];
|
||||
nSelectSongIndex = 0;
|
||||
tChangeSong(this.rCurrentlySelectedSong.rParentNode.Openindex);
|
||||
} else {
|
||||
@ -241,7 +241,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
// Previous index
|
||||
int n回数 = this.rCurrentlySelectedSong.Openindex;
|
||||
if (this.rCurrentlySelectedSong.Openindex >= this.rCurrentlySelectedSong.list子リスト.Count())
|
||||
if (this.rCurrentlySelectedSong.Openindex >= this.rCurrentlySelectedSong.childrenList.Count())
|
||||
n回数 = 0;
|
||||
|
||||
tChangeSong(n回数);
|
||||
@ -288,7 +288,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
} else {
|
||||
// Reindex the parent node
|
||||
List<CSongListNode> currentSongList = flattenList(OpenTaiko.Songs管理.list曲ルート, true);
|
||||
this.rCurrentlySelectedSong.rParentNode.Openindex = currentSongList.IndexOf(this.rCurrentlySelectedSong) - currentSongList.IndexOf(this.rCurrentlySelectedSong.rParentNode.list子リスト[0]);
|
||||
this.rCurrentlySelectedSong.rParentNode.Openindex = currentSongList.IndexOf(this.rCurrentlySelectedSong) - currentSongList.IndexOf(this.rCurrentlySelectedSong.rParentNode.childrenList[0]);
|
||||
this.rCurrentlySelectedSong.rParentNode.bIsOpenFolder = false;
|
||||
tChangeSong(-this.rCurrentlySelectedSong.rParentNode.Openindex);
|
||||
|
||||
@ -311,9 +311,9 @@ internal class CActSelect曲リスト : CActivity {
|
||||
var e = list[i];
|
||||
if (!useOpenFlag || !e.bIsOpenFolder) ret.Add(e);
|
||||
|
||||
if (e.eノード種別 == CSongListNode.ENodeType.BOX &&
|
||||
if (e.nodeType == CSongListNode.ENodeType.BOX &&
|
||||
(!useOpenFlag || e.bIsOpenFolder)) {
|
||||
ret.AddRange(flattenList(e.list子リスト, useOpenFlag));
|
||||
ret.AddRange(flattenList(e.childrenList, useOpenFlag));
|
||||
}
|
||||
}
|
||||
|
||||
@ -364,14 +364,14 @@ internal class CActSelect曲リスト : CActivity {
|
||||
this.stバー情報[index].BoxChara = song.BoxChara;
|
||||
this.stバー情報[index].BoxCharaChanged = song.isChangedBoxChara;
|
||||
|
||||
this.stバー情報[index].strジャンル = song.strジャンル;
|
||||
this.stバー情報[index].strジャンル = song.songGenre;
|
||||
this.stバー情報[index].strサブタイトル = song.ldSubtitle.GetString("");
|
||||
this.stバー情報[index].ar難易度 = song.nLevel;
|
||||
this.stバー情報[index].nLevelIcon = song.nLevelIcon;
|
||||
|
||||
for (int f = 0; f < (int)Difficulty.Total; f++) {
|
||||
if (song.arスコア[f] != null)
|
||||
this.stバー情報[index].b分岐 = song.arスコア[f].譜面情報.b譜面分岐;
|
||||
if (song.score[f] != null)
|
||||
this.stバー情報[index].b分岐 = song.score[f].譜面情報.b譜面分岐;
|
||||
}
|
||||
|
||||
#region [Reroll cases]
|
||||
@ -413,7 +413,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
// 新しく最下部に表示されるパネル用のスキル値を取得。
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
this.stバー情報[index].nスキル値[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[i];
|
||||
this.stバー情報[index].nスキル値[i] = (int)song.score[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[i];
|
||||
|
||||
|
||||
// 1行(100カウント)移動完了。
|
||||
@ -426,7 +426,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
OpenTaiko.stageSongSelect.tNotifySelectedSongChange(); // スクロール完了=選択曲変更!
|
||||
ctBarOpen.Start(0, 260, 2, OpenTaiko.Timer);
|
||||
|
||||
OpenTaiko.stageSongSelect.NowGenre = this.rCurrentlySelectedSong.strジャンル;
|
||||
OpenTaiko.stageSongSelect.NowGenre = this.rCurrentlySelectedSong.songGenre;
|
||||
|
||||
OpenTaiko.stageSongSelect.NowBg = this.rCurrentlySelectedSong.BgType;
|
||||
|
||||
@ -488,12 +488,12 @@ internal class CActSelect曲リスト : CActivity {
|
||||
this.stバー情報[index].BoxCharaChanged = song.isChangedBoxChara;
|
||||
|
||||
this.stバー情報[index].strサブタイトル = song.ldSubtitle.GetString("");
|
||||
this.stバー情報[index].strジャンル = song.strジャンル;
|
||||
this.stバー情報[index].strジャンル = song.songGenre;
|
||||
this.stバー情報[index].ar難易度 = song.nLevel;
|
||||
this.stバー情報[index].nLevelIcon = song.nLevelIcon;
|
||||
for (int f = 0; f < (int)Difficulty.Total; f++) {
|
||||
if (song.arスコア[f] != null)
|
||||
this.stバー情報[index].b分岐 = song.arスコア[f].譜面情報.b譜面分岐;
|
||||
if (song.score[f] != null)
|
||||
this.stバー情報[index].b分岐 = song.score[f].譜面情報.b譜面分岐;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -549,7 +549,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
// 新しく最上部に表示されるパネル用のスキル値を取得。
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
this.stバー情報[index].nスキル値[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[i];
|
||||
this.stバー情報[index].nスキル値[i] = (int)song.score[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[i];
|
||||
|
||||
|
||||
this.t選択曲が変更された(false); // スクロールバー用に今何番目を選択しているかを更新
|
||||
@ -559,7 +559,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
OpenTaiko.stageSongSelect.tNotifySelectedSongChange(); // スクロール完了=選択曲変更!
|
||||
ctBarOpen.Start(0, 260, 2, OpenTaiko.Timer);
|
||||
OpenTaiko.stageSongSelect.NowGenre = this.rCurrentlySelectedSong.strジャンル;
|
||||
OpenTaiko.stageSongSelect.NowGenre = this.rCurrentlySelectedSong.songGenre;
|
||||
OpenTaiko.stageSongSelect.NowBg = this.rCurrentlySelectedSong.BgType;
|
||||
OpenTaiko.stageSongSelect.NowBgColor = this.rCurrentlySelectedSong.BgColor;
|
||||
OpenTaiko.stageSongSelect.NowUseGenre = !this.rCurrentlySelectedSong.isChangedBgType;
|
||||
@ -573,7 +573,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
this.b選択曲が変更された = true;
|
||||
}
|
||||
public void tUpdateCurSong() {
|
||||
if ((this.rGetSideSong(0).eノード種別 == CSongListNode.ENodeType.SCORE) || this.rGetSideSong(0).eノード種別 == CSongListNode.ENodeType.BACKBOX) {
|
||||
if ((this.rGetSideSong(0).nodeType == CSongListNode.ENodeType.SCORE) || this.rGetSideSong(0).nodeType == CSongListNode.ENodeType.BACKBOX) {
|
||||
OpenTaiko.stageSongSelect.bBGMIn再生した = false;
|
||||
|
||||
CSongSelectSongManager.disable();
|
||||
@ -584,7 +584,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
OpenTaiko.stageSongSelect.ctBackgroundFade.Start(0, 600, 1, OpenTaiko.Timer);
|
||||
if (this.ctBarOpen.CurrentValue >= 200 || OpenTaiko.stageSongSelect.ctBackgroundFade.CurrentValue >= 600 - 255) {
|
||||
OpenTaiko.stageSongSelect.OldGenre = this.rCurrentlySelectedSong.strジャンル;
|
||||
OpenTaiko.stageSongSelect.OldGenre = this.rCurrentlySelectedSong.songGenre;
|
||||
OpenTaiko.stageSongSelect.OldUseGenre = !this.rCurrentlySelectedSong.isChangedBgType;
|
||||
OpenTaiko.stageSongSelect.OldBg = this.rCurrentlySelectedSong.BgType;
|
||||
OpenTaiko.stageSongSelect.OldBgColor = this.rCurrentlySelectedSong.BgColor;
|
||||
@ -599,7 +599,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
this.b選択曲が変更された = true;
|
||||
}
|
||||
public void t難易度レベルをひとつ進める() {
|
||||
if ((this.rCurrentlySelectedSong == null) || (this.rCurrentlySelectedSong.nスコア数 <= 1))
|
||||
if ((this.rCurrentlySelectedSong == null) || (this.rCurrentlySelectedSong.difficultiesCount <= 1))
|
||||
return; // 曲にスコアが0~1個しかないなら進める意味なし。
|
||||
|
||||
|
||||
@ -609,7 +609,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
for (int i = 0; i < (int)Difficulty.Total; i++) {
|
||||
this.n現在のアンカ難易度レベル = (this.n現在のアンカ難易度レベル + 1) % (int)Difficulty.Total; // 5以上になったら0に戻る。
|
||||
if (this.rCurrentlySelectedSong.arスコア[this.n現在のアンカ難易度レベル] != null) // 曲が存在してるならここで終了。存在してないなら次のレベルへGo。
|
||||
if (this.rCurrentlySelectedSong.score[this.n現在のアンカ難易度レベル] != null) // 曲が存在してるならここで終了。存在してないなら次のレベルへGo。
|
||||
break;
|
||||
}
|
||||
|
||||
@ -621,7 +621,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
var song = this.rGetSideSong(i);
|
||||
int index = (i + OpenTaiko.Skin.SongSelect_Bar_Count) % OpenTaiko.Skin.SongSelect_Bar_Count;
|
||||
for (int m = 0; m < 3; m++) {
|
||||
this.stバー情報[index].nスキル値[m] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[m];
|
||||
this.stバー情報[index].nスキル値[m] = (int)song.score[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[m];
|
||||
}
|
||||
}
|
||||
|
||||
@ -634,7 +634,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
/// 不便だったから作った。
|
||||
/// </summary>
|
||||
public void t難易度レベルをひとつ戻す() {
|
||||
if ((this.rCurrentlySelectedSong == null) || (this.rCurrentlySelectedSong.nスコア数 <= 1))
|
||||
if ((this.rCurrentlySelectedSong == null) || (this.rCurrentlySelectedSong.difficultiesCount <= 1))
|
||||
return; // 曲にスコアが0~1個しかないなら進める意味なし。
|
||||
|
||||
|
||||
@ -652,7 +652,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
//2016.08.13 kairera0467 かんたん譜面が無い譜面(ふつう、むずかしいのみ)で、難易度を最上位に戻せない不具合の修正。
|
||||
bool bLabel0NotFound = true;
|
||||
for (int i = this.n現在のアンカ難易度レベル; i >= 0; i--) {
|
||||
if (this.rCurrentlySelectedSong.arスコア[i] != null) {
|
||||
if (this.rCurrentlySelectedSong.score[i] != null) {
|
||||
this.n現在のアンカ難易度レベル = i;
|
||||
bLabel0NotFound = false;
|
||||
break;
|
||||
@ -660,7 +660,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
}
|
||||
if (bLabel0NotFound) {
|
||||
for (int i = 4; i >= 0; i--) {
|
||||
if (this.rCurrentlySelectedSong.arスコア[i] != null) {
|
||||
if (this.rCurrentlySelectedSong.score[i] != null) {
|
||||
this.n現在のアンカ難易度レベル = i;
|
||||
break;
|
||||
}
|
||||
@ -674,7 +674,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
CSongListNode song = this.rGetSideSong(i);
|
||||
int index = (i + OpenTaiko.Skin.SongSelect_Bar_Count) % OpenTaiko.Skin.SongSelect_Bar_Count;
|
||||
for (int m = 0; m < 3; m++) {
|
||||
this.stバー情報[index].nスキル値[m] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[m];
|
||||
this.stバー情報[index].nスキル値[m] = (int)song.score[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[m];
|
||||
}
|
||||
}
|
||||
|
||||
@ -727,9 +727,9 @@ internal class CActSelect曲リスト : CActivity {
|
||||
foreach (CSongListNode n in ln) {
|
||||
if (n.strBreadcrumbs == bc) {
|
||||
return n;
|
||||
} else if (n.list子リスト != null && n.list子リスト.Count > 0) // 子リストが存在するなら、再帰で探す
|
||||
} else if (n.childrenList != null && n.childrenList.Count > 0) // 子リストが存在するなら、再帰で探す
|
||||
{
|
||||
CSongListNode r = searchCurrentBreadcrumbsPosition(n.list子リスト, bc);
|
||||
CSongListNode r = searchCurrentBreadcrumbsPosition(n.childrenList, bc);
|
||||
if (r != null) return r;
|
||||
}
|
||||
}
|
||||
@ -1412,7 +1412,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
|
||||
|
||||
if (rCurrentlySelectedSong.eノード種別 == CSongListNode.ENodeType.SCORE) {
|
||||
if (rCurrentlySelectedSong.nodeType == CSongListNode.ENodeType.SCORE) {
|
||||
#region [ Score ]
|
||||
|
||||
var IsSongLocked = OpenTaiko.Databases.DBSongUnlockables.tIsSongLocked(rCurrentlySelectedSong);
|
||||
@ -1433,7 +1433,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
// Mark
|
||||
|
||||
if (this.rCurrentlySelectedSong.arスコア[(int)Difficulty.Dan] != null) {
|
||||
if (this.rCurrentlySelectedSong.score[(int)Difficulty.Dan] != null) {
|
||||
//int[] clear = this.r現在選択中の曲.arスコア[(int)Difficulty.Dan].譜面情報.nクリア;
|
||||
|
||||
for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) {
|
||||
@ -1453,7 +1453,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
displayDanStatus((int)(x - centerMoveX / 1.1f), (int)(y - centerMove / 1.1f), currentRank, 0.2f);
|
||||
}
|
||||
|
||||
} else if (this.rCurrentlySelectedSong.arスコア[(int)Difficulty.Tower] != null) {
|
||||
} else if (this.rCurrentlySelectedSong.score[(int)Difficulty.Tower] != null) {
|
||||
//int[] clear = this.r現在選択中の曲.arスコア[(int)Difficulty.Tower].譜面情報.nクリア;
|
||||
|
||||
for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) {
|
||||
@ -1471,7 +1471,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
displayTowerStatus((int)(x - centerMoveX / 1.1f), (int)(y - centerMove / 1.1f), currentRank, 0.3f);
|
||||
}
|
||||
} else if (this.rCurrentlySelectedSong.arスコア[3] != null || this.rCurrentlySelectedSong.arスコア[4] != null) {
|
||||
} else if (this.rCurrentlySelectedSong.score[3] != null || this.rCurrentlySelectedSong.score[4] != null) {
|
||||
//var sr = this.rCurrentlySelectedSong.arスコア[n現在のアンカ難易度レベルに最も近い難易度レベルを返す(this.rCurrentlySelectedSong)];
|
||||
|
||||
for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) {
|
||||
@ -1526,7 +1526,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
#endregion
|
||||
}
|
||||
if (rCurrentlySelectedSong.eノード種別 == CSongListNode.ENodeType.BOX) {
|
||||
if (rCurrentlySelectedSong.nodeType == CSongListNode.ENodeType.BOX) {
|
||||
#region [ Box ]
|
||||
|
||||
//int boxType = nStrジャンルtoNum(r現在選択中の曲.strジャンル);
|
||||
@ -1541,14 +1541,14 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
#endregion
|
||||
}
|
||||
if (rCurrentlySelectedSong.eノード種別 == CSongListNode.ENodeType.BACKBOX) {
|
||||
if (rCurrentlySelectedSong.nodeType == CSongListNode.ENodeType.BACKBOX) {
|
||||
#region [ BackBox ]
|
||||
|
||||
DrawBarCenter(OpenTaiko.Tx.SongSelect_Bar_Genre_Back, OpenTaiko.Skin.SongSelect_Bar_X[barCenterNum], OpenTaiko.Skin.SongSelect_Bar_Y[barCenterNum], centerMoveX, centerMove, false, false, false);
|
||||
|
||||
#endregion
|
||||
}
|
||||
if (rCurrentlySelectedSong.eノード種別 == CSongListNode.ENodeType.RANDOM) {
|
||||
if (rCurrentlySelectedSong.nodeType == CSongListNode.ENodeType.RANDOM) {
|
||||
#region [Random box]
|
||||
|
||||
DrawBarCenter(OpenTaiko.Tx.SongSelect_Bar_Genre_Random, OpenTaiko.Skin.SongSelect_Bar_X[barCenterNum], OpenTaiko.Skin.SongSelect_Bar_Y[barCenterNum], centerMoveX, centerMove, false, false, false);
|
||||
@ -1558,7 +1558,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
#endregion
|
||||
|
||||
switch (rCurrentlySelectedSong.eノード種別) {
|
||||
switch (rCurrentlySelectedSong.nodeType) {
|
||||
case CSongListNode.ENodeType.SCORE: {
|
||||
var IsSongLocked = OpenTaiko.Databases.DBSongUnlockables.tIsSongLocked(rCurrentlySelectedSong);
|
||||
var HiddenIndex = OpenTaiko.Databases.DBSongUnlockables.tGetSongHiddenIndex(rCurrentlySelectedSong);
|
||||
@ -1910,7 +1910,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
//-----------------
|
||||
if (rCurrentlySelectedSong.ldTitle.GetString("") != "" && this.ttkSelectedSongTitle == null)
|
||||
this.ttkSelectedSongTitle = this.ttkGenerateSongNameTexture(rCurrentlySelectedSong.ldTitle.GetString(""), rCurrentlySelectedSong.ForeColor, rCurrentlySelectedSong.BackColor, rCurrentlySelectedSong.eノード種別 == CSongListNode.ENodeType.BOX ? this.pfBoxName : this.pfMusicName);
|
||||
this.ttkSelectedSongTitle = this.ttkGenerateSongNameTexture(rCurrentlySelectedSong.ldTitle.GetString(""), rCurrentlySelectedSong.ForeColor, rCurrentlySelectedSong.BackColor, rCurrentlySelectedSong.nodeType == CSongListNode.ENodeType.BOX ? this.pfBoxName : this.pfMusicName);
|
||||
if (rCurrentlySelectedSong.ldSubtitle.GetString("") != "" && this.ttkSelectedSongSubtitle == null)
|
||||
this.ttkSelectedSongSubtitle = this.ttkGenerateSubtitleTexture(rCurrentlySelectedSong.ldSubtitle.GetString(""), rCurrentlySelectedSong.ForeColor, rCurrentlySelectedSong.BackColor);
|
||||
if (rCurrentlySelectedSong.strMaker != "" && this.ttkSelectedSongMaker == null)
|
||||
@ -1958,8 +1958,8 @@ internal class CActSelect曲リスト : CActivity {
|
||||
}
|
||||
|
||||
txSelectedSongSubtitle.t2D拡大率考慮中央基準描画(
|
||||
xAnime + OpenTaiko.Skin.SongSelect_Bar_SubTitle_Offset[0] + (rCurrentlySelectedSong.eノード種別 == CSongListNode.ENodeType.BOX ? centerMoveX : centerMoveX / 1.1f),
|
||||
y + OpenTaiko.Skin.SongSelect_Bar_SubTitle_Offset[1] - (rCurrentlySelectedSong.eノード種別 == CSongListNode.ENodeType.BOX ? centerMove : centerMove / 1.1f));
|
||||
xAnime + OpenTaiko.Skin.SongSelect_Bar_SubTitle_Offset[0] + (rCurrentlySelectedSong.nodeType == CSongListNode.ENodeType.BOX ? centerMoveX : centerMoveX / 1.1f),
|
||||
y + OpenTaiko.Skin.SongSelect_Bar_SubTitle_Offset[1] - (rCurrentlySelectedSong.nodeType == CSongListNode.ENodeType.BOX ? centerMove : centerMove / 1.1f));
|
||||
|
||||
if (HiddenIndex >= DBSongUnlockables.EHiddenIndex.BLURED) {
|
||||
txSelectedSongSubtitle.bUseNoiseEffect = false;
|
||||
@ -1967,20 +1967,20 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
if (this.ttkSelectedSongTitle != null) {
|
||||
_title.t2D拡大率考慮中央基準描画(
|
||||
xAnime + GetTitleOffsetX(rCurrentlySelectedSong.eノード種別) +
|
||||
(rCurrentlySelectedSong.eノード種別 != CSongListNode.ENodeType.BACKBOX ? (rCurrentlySelectedSong.eノード種別 == CSongListNode.ENodeType.BOX ? centerMoveX : centerMoveX / 1.1f) : 0),
|
||||
xAnime + GetTitleOffsetX(rCurrentlySelectedSong.nodeType) +
|
||||
(rCurrentlySelectedSong.nodeType != CSongListNode.ENodeType.BACKBOX ? (rCurrentlySelectedSong.nodeType == CSongListNode.ENodeType.BOX ? centerMoveX : centerMoveX / 1.1f) : 0),
|
||||
|
||||
y + GetTitleOffsetY(rCurrentlySelectedSong.eノード種別) -
|
||||
(rCurrentlySelectedSong.eノード種別 != CSongListNode.ENodeType.BACKBOX ? (rCurrentlySelectedSong.eノード種別 == CSongListNode.ENodeType.BOX ? centerMove : centerMove / 1.1f) : 0));
|
||||
y + GetTitleOffsetY(rCurrentlySelectedSong.nodeType) -
|
||||
(rCurrentlySelectedSong.nodeType != CSongListNode.ENodeType.BACKBOX ? (rCurrentlySelectedSong.nodeType == CSongListNode.ENodeType.BOX ? centerMove : centerMove / 1.1f) : 0));
|
||||
}
|
||||
} else {
|
||||
if (this.ttkSelectedSongTitle != null) {
|
||||
_title.t2D拡大率考慮中央基準描画(
|
||||
xAnime + GetTitleOffsetX(this.stバー情報[nパネル番号].eバー種別) +
|
||||
(rCurrentlySelectedSong.eノード種別 != CSongListNode.ENodeType.BACKBOX ? (rCurrentlySelectedSong.eノード種別 == CSongListNode.ENodeType.BOX ? centerMoveX : centerMoveX / 1.1f) : 0),
|
||||
(rCurrentlySelectedSong.nodeType != CSongListNode.ENodeType.BACKBOX ? (rCurrentlySelectedSong.nodeType == CSongListNode.ENodeType.BOX ? centerMoveX : centerMoveX / 1.1f) : 0),
|
||||
|
||||
y + GetTitleOffsetY(this.stバー情報[nパネル番号].eバー種別) -
|
||||
(rCurrentlySelectedSong.eノード種別 != CSongListNode.ENodeType.BACKBOX ? (rCurrentlySelectedSong.eノード種別 == CSongListNode.ENodeType.BOX ? centerMove : centerMove / 1.1f) : 0));
|
||||
(rCurrentlySelectedSong.nodeType != CSongListNode.ENodeType.BACKBOX ? (rCurrentlySelectedSong.nodeType == CSongListNode.ENodeType.BOX ? centerMove : centerMove / 1.1f) : 0));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2531,7 +2531,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
private Eバー種別 e曲のバー種別を返す(CSongListNode song) {
|
||||
if (song != null) {
|
||||
switch (song.eノード種別) {
|
||||
switch (song.nodeType) {
|
||||
case CSongListNode.ENodeType.SCORE:
|
||||
case CSongListNode.ENodeType.SCORE_MIDI:
|
||||
return Eバー種別.Score;
|
||||
@ -2549,7 +2549,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
return Eバー種別.Other;
|
||||
}
|
||||
private void tChangeSong(int change) {
|
||||
List<CSongListNode> list = (OpenTaiko.ConfigIni.TJAP3FolderMode && rCurrentlySelectedSong.rParentNode != null) ? rCurrentlySelectedSong.rParentNode.list子リスト : flattenList(OpenTaiko.Songs管理.list曲ルート, true);
|
||||
List<CSongListNode> list = (OpenTaiko.ConfigIni.TJAP3FolderMode && rCurrentlySelectedSong.rParentNode != null) ? rCurrentlySelectedSong.rParentNode.childrenList : flattenList(OpenTaiko.Songs管理.list曲ルート, true);
|
||||
|
||||
int index = nSelectSongIndex + change;
|
||||
|
||||
@ -2577,7 +2577,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
public CSongListNode rGetSideSong(int change) {
|
||||
if (rCurrentlySelectedSong == null) return null;
|
||||
|
||||
List<CSongListNode> list = (OpenTaiko.ConfigIni.TJAP3FolderMode && rCurrentlySelectedSong.rParentNode != null) ? rCurrentlySelectedSong.rParentNode.list子リスト : flattenList(OpenTaiko.Songs管理.list曲ルート, true);
|
||||
List<CSongListNode> list = (OpenTaiko.ConfigIni.TJAP3FolderMode && rCurrentlySelectedSong.rParentNode != null) ? rCurrentlySelectedSong.rParentNode.childrenList : flattenList(OpenTaiko.Songs管理.list曲ルート, true);
|
||||
|
||||
if (list.Count <= 0) return null;
|
||||
|
||||
@ -2603,8 +2603,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
CSongListNode song = this.rGetSideSong(i - barCenterNum);
|
||||
if (song == null) continue;
|
||||
this.stバー情報[i].strタイトル文字列 = song.ldTitle.GetString("");
|
||||
this.stバー情報[i].strジャンル = song.strジャンル;
|
||||
this.stバー情報[i].col文字色 = song.col文字色;
|
||||
this.stバー情報[i].strジャンル = song.songGenre;
|
||||
this.stバー情報[i].ForeColor = song.ForeColor;
|
||||
this.stバー情報[i].BackColor = song.BackColor;
|
||||
|
||||
@ -2626,8 +2625,8 @@ internal class CActSelect曲リスト : CActivity {
|
||||
this.stバー情報[i].nLevelIcon = song.nLevelIcon;
|
||||
|
||||
for (int f = 0; f < (int)Difficulty.Total; f++) {
|
||||
if (song.arスコア[f] != null)
|
||||
this.stバー情報[i].b分岐 = song.arスコア[f].譜面情報.b譜面分岐;
|
||||
if (song.score[f] != null)
|
||||
this.stバー情報[i].b分岐 = song.score[f].譜面情報.b譜面分岐;
|
||||
}
|
||||
|
||||
#region [Reroll cases]
|
||||
@ -2660,7 +2659,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
|
||||
|
||||
for (int j = 0; j < 3; j++)
|
||||
this.stバー情報[i].nスキル値[j] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[j];
|
||||
this.stバー情報[i].nスキル値[j] = (int)song.score[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[j];
|
||||
|
||||
this.stバー情報[i].ttkタイトル = this.ttkGenerateSongNameTexture(this.stバー情報[i].strタイトル文字列, this.stバー情報[i].ForeColor, this.stバー情報[i].BackColor, stバー情報[i].eバー種別 == Eバー種別.Box ? this.pfBoxName : this.pfMusicName);
|
||||
}
|
||||
@ -2914,7 +2913,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
}
|
||||
|
||||
private TitleTextureKey ttkGenerateBPMTexture(CSongListNode node, Color forecolor, Color backcolor) {
|
||||
var _score = node.arスコア[tFetchDifficulty(node)].譜面情報;
|
||||
var _score = node.score[tFetchDifficulty(node)].譜面情報;
|
||||
var _speed = OpenTaiko.ConfigIni.SongPlaybackSpeed;
|
||||
|
||||
double[] bpms = new double[3] {
|
||||
@ -3042,7 +3041,7 @@ internal class CActSelect曲リスト : CActivity {
|
||||
var closest = this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song);
|
||||
int defaultTable = Math.Max(0, Math.Min((int)Difficulty.Edit + 1, OpenTaiko.ConfigIni.nDefaultCourse));
|
||||
|
||||
if (song.arスコア[defaultTable] == null)
|
||||
if (song.score[defaultTable] == null)
|
||||
return closest;
|
||||
return defaultTable;
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ internal class CActSelect演奏履歴パネル : CActivity {
|
||||
base.IsDeActivated = true;
|
||||
}
|
||||
public void t選択曲が変更された() {
|
||||
Cスコア cスコア = OpenTaiko.stageSongSelect.r現在選択中のスコア;
|
||||
CScore cスコア = OpenTaiko.stageSongSelect.r現在選択中のスコア;
|
||||
if ((cスコア != null) && !OpenTaiko.stageSongSelect.bCurrentlyScrolling) {
|
||||
try {
|
||||
foreach (var item in tx文字列パネル) {
|
||||
@ -130,7 +130,7 @@ internal class CActSelect演奏履歴パネル : CActivity {
|
||||
this.ct登場アニメ用.Tick();
|
||||
int x = 980;
|
||||
int y = 350;
|
||||
if (OpenTaiko.stageSongSelect.r現在選択中のスコア != null && this.ct登場アニメ用.CurrentValue >= 2000 && OpenTaiko.stageSongSelect.rNowSelectedSong.eノード種別 == CSongListNode.ENodeType.SCORE) {
|
||||
if (OpenTaiko.stageSongSelect.r現在選択中のスコア != null && this.ct登場アニメ用.CurrentValue >= 2000 && OpenTaiko.stageSongSelect.rNowSelectedSong.nodeType == CSongListNode.ENodeType.SCORE) {
|
||||
//CDTXMania.Tx.SongSelect_ScoreWindow_Text.n透明度 = ct登場アニメ用.n現在の値 - 1745;
|
||||
if (OpenTaiko.Tx.SongSelect_ScoreWindow[OpenTaiko.stageSongSelect.n現在選択中の曲の難易度] != null) {
|
||||
//CDTXMania.Tx.SongSelect_ScoreWindow[CDTXMania.stage選曲.n現在選択中の曲の難易度].n透明度 = ct登場アニメ用.n現在の値 - 1745;
|
||||
|
@ -358,7 +358,7 @@ internal class CActSelect難易度選択画面 : CActivity {
|
||||
|
||||
int p = OpenTaiko.GetActualPlayer(j);
|
||||
|
||||
Cスコア.ST譜面情報 idx = OpenTaiko.stageSongSelect.r現在選択中のスコア.譜面情報;
|
||||
CScore.ST譜面情報 idx = OpenTaiko.stageSongSelect.r現在選択中のスコア.譜面情報;
|
||||
|
||||
//var GPInfo = TJAPlayer3.stageSongSelect.r現在選択中のスコア.GPInfo[p];
|
||||
|
||||
|
@ -104,7 +104,7 @@ internal class CStage選曲 : CStage {
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Cスコア r確定されたスコア {
|
||||
public CScore r確定されたスコア {
|
||||
get;
|
||||
set;
|
||||
}
|
||||
@ -117,7 +117,7 @@ internal class CStage選曲 : CStage {
|
||||
return this.actSongList.n現在選択中の曲の現在の難易度レベル;
|
||||
}
|
||||
}
|
||||
public Cスコア r現在選択中のスコア {
|
||||
public CScore r現在選択中のスコア {
|
||||
get {
|
||||
return this.actSongList.r現在選択中のスコア;
|
||||
}
|
||||
@ -223,7 +223,7 @@ internal class CStage選曲 : CStage {
|
||||
var c曲リストノード = OpenTaiko.stageSongSelect.rNowSelectedSong;
|
||||
var cスコア = OpenTaiko.stageSongSelect.r現在選択中のスコア;
|
||||
|
||||
if (c曲リストノード != null && cスコア != null && c曲リストノード.eノード種別 == CSongListNode.ENodeType.SCORE) {
|
||||
if (c曲リストノード != null && cスコア != null && c曲リストノード.nodeType == CSongListNode.ENodeType.SCORE) {
|
||||
string str選択曲ファイル名 = cスコア.ファイル情報.ファイルの絶対パス;
|
||||
int n曲番号inブロック = OpenTaiko.stageSongSelect.actSongList.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(c曲リストノード);
|
||||
}
|
||||
@ -305,7 +305,7 @@ internal class CStage選曲 : CStage {
|
||||
|
||||
|
||||
if (rNowSelectedSong != null)
|
||||
NowGenre = rNowSelectedSong.strジャンル;
|
||||
NowGenre = rNowSelectedSong.songGenre;
|
||||
|
||||
AI_Background = new ScriptBG(CSkin.Path($@"{TextureLoader.BASE}{TextureLoader.SONGSELECT}{Path.DirectorySeparatorChar}AIBattle{Path.DirectorySeparatorChar}Script.lua"));
|
||||
AI_Background.Init();
|
||||
@ -422,9 +422,9 @@ internal class CStage選曲 : CStage {
|
||||
|
||||
#region [Song Panel]
|
||||
|
||||
if (this.rNowSelectedSong.eノード種別 == CSongListNode.ENodeType.BOX) {
|
||||
if (this.rNowSelectedSong.nodeType == CSongListNode.ENodeType.BOX) {
|
||||
OpenTaiko.Tx.SongSelect_Song_Panel[0]?.t2D描画(0, 0);
|
||||
} else if (this.rNowSelectedSong.eノード種別 == CSongListNode.ENodeType.SCORE) {
|
||||
} else if (this.rNowSelectedSong.nodeType == CSongListNode.ENodeType.SCORE) {
|
||||
var IsSongLocked = OpenTaiko.Databases.DBSongUnlockables.tIsSongLocked(this.rNowSelectedSong);
|
||||
var HiddenIndex = OpenTaiko.Databases.DBSongUnlockables.tGetSongHiddenIndex(this.rNowSelectedSong);
|
||||
|
||||
@ -459,8 +459,8 @@ internal class CStage選曲 : CStage {
|
||||
#region [Song Info]
|
||||
|
||||
if (this.rNowSelectedSong != null) {
|
||||
if (this.rNowSelectedSong.eノード種別 == CSongListNode.ENodeType.BOX) {
|
||||
} else if (this.rNowSelectedSong.eノード種別 == CSongListNode.ENodeType.SCORE) {
|
||||
if (this.rNowSelectedSong.nodeType == CSongListNode.ENodeType.BOX) {
|
||||
} else if (this.rNowSelectedSong.nodeType == CSongListNode.ENodeType.SCORE) {
|
||||
var IsSongLocked = OpenTaiko.Databases.DBSongUnlockables.tIsSongLocked(this.rNowSelectedSong);
|
||||
var HiddenIndex = OpenTaiko.Databases.DBSongUnlockables.tGetSongHiddenIndex(this.rNowSelectedSong);
|
||||
|
||||
@ -503,7 +503,7 @@ internal class CStage選曲 : CStage {
|
||||
#region [Preimage, upper lock layer and unlock conditions]
|
||||
|
||||
if (this.rNowSelectedSong != null
|
||||
&& this.rNowSelectedSong.eノード種別 == CSongListNode.ENodeType.SCORE) {
|
||||
&& this.rNowSelectedSong.nodeType == CSongListNode.ENodeType.SCORE) {
|
||||
var IsSongLocked = OpenTaiko.Databases.DBSongUnlockables.tIsSongLocked(this.rNowSelectedSong);
|
||||
var HiddenIndex = OpenTaiko.Databases.DBSongUnlockables.tGetSongHiddenIndex(this.rNowSelectedSong);
|
||||
|
||||
@ -658,9 +658,9 @@ internal class CStage選曲 : CStage {
|
||||
|
||||
var song = this.rNowSelectedSong;
|
||||
|
||||
if (song != null && song.eノード種別 == CSongListNode.ENodeType.SCORE) {
|
||||
if (song != null && song.nodeType == CSongListNode.ENodeType.SCORE) {
|
||||
var closest = this.actSongList.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song);
|
||||
var score = song.arスコア[closest];
|
||||
var score = song.score[closest];
|
||||
|
||||
if (score != null) {
|
||||
int displayedScore = 0;
|
||||
@ -723,7 +723,7 @@ internal class CStage選曲 : CStage {
|
||||
if (this.actSongList.latestContext == eMenuContext.SearchByDifficulty) {
|
||||
#region [Trigger context box]
|
||||
|
||||
this.actSongList.rCurrentlySelectedSong.list子リスト = CSongDict.tFetchSongsByDifficulty(
|
||||
this.actSongList.rCurrentlySelectedSong.childrenList = CSongDict.tFetchSongsByDifficulty(
|
||||
this.actSongList.rCurrentlySelectedSong,
|
||||
this.actSongList.tMenuContextGetVar(0),
|
||||
this.actSongList.tMenuContextGetVar(1));
|
||||
@ -846,7 +846,7 @@ internal class CStage選曲 : CStage {
|
||||
((OpenTaiko.ConfigIni.bEnterIsNotUsedInKeyAssignments && OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Return))))) {
|
||||
|
||||
if (this.actSongList.rCurrentlySelectedSong != null) {
|
||||
switch (this.actSongList.rCurrentlySelectedSong.eノード種別) {
|
||||
switch (this.actSongList.rCurrentlySelectedSong.nodeType) {
|
||||
case CSongListNode.ENodeType.SCORE: {
|
||||
var IsSongLocked = OpenTaiko.Databases.DBSongUnlockables.tIsSongLocked(this.rNowSelectedSong);
|
||||
|
||||
@ -883,7 +883,7 @@ internal class CStage選曲 : CStage {
|
||||
if (OpenTaiko.ConfigIni.nPlayerCount == 1 && !OpenTaiko.ConfigIni.bTokkunMode) {
|
||||
// Init tower variables
|
||||
if (this.n現在選択中の曲の難易度 == (int)Difficulty.Tower)
|
||||
CFloorManagement.reinitialize(this.rNowSelectedSong.arスコア[(int)Difficulty.Tower].譜面情報.nLife);
|
||||
CFloorManagement.reinitialize(this.rNowSelectedSong.score[(int)Difficulty.Tower].譜面情報.nLife);
|
||||
|
||||
OpenTaiko.Skin.soundDecideSFX.tPlay();
|
||||
OpenTaiko.Skin.voiceMenuSongDecide[OpenTaiko.SaveFile]?.tPlay();
|
||||
@ -909,11 +909,11 @@ internal class CStage選曲 : CStage {
|
||||
|
||||
#region [Pre-generated folders]
|
||||
|
||||
if (this.actSongList.rCurrentlySelectedSong.strジャンル == "Favorite") {
|
||||
this.actSongList.rCurrentlySelectedSong.list子リスト = CSongDict.tFetchFavoriteFolder(this.actSongList.rCurrentlySelectedSong);
|
||||
} else if (this.actSongList.rCurrentlySelectedSong.strジャンル == "最近遊んだ曲") {
|
||||
this.actSongList.rCurrentlySelectedSong.list子リスト = CSongDict.tFetchRecentlyPlayedSongsFolder(this.actSongList.rCurrentlySelectedSong);
|
||||
} else if (this.actSongList.rCurrentlySelectedSong.strジャンル == "SearchD") {
|
||||
if (this.actSongList.rCurrentlySelectedSong.songGenre == "Favorite") {
|
||||
this.actSongList.rCurrentlySelectedSong.childrenList = CSongDict.tFetchFavoriteFolder(this.actSongList.rCurrentlySelectedSong);
|
||||
} else if (this.actSongList.rCurrentlySelectedSong.songGenre == "最近遊んだ曲") {
|
||||
this.actSongList.rCurrentlySelectedSong.childrenList = CSongDict.tFetchRecentlyPlayedSongsFolder(this.actSongList.rCurrentlySelectedSong);
|
||||
} else if (this.actSongList.rCurrentlySelectedSong.songGenre == "SearchD") {
|
||||
this.actSongList.tMenuContextTrigger(eMenuContext.SearchByDifficulty);
|
||||
OpenTaiko.Skin.soundDecideSFX.tPlay();
|
||||
goto Decided;
|
||||
@ -1433,7 +1433,7 @@ internal class CStage選曲 : CStage {
|
||||
private CCommandHistory CommandHistory;
|
||||
|
||||
private void tカーソルを下へ移動する() {
|
||||
if ((this.actSongList.rGetSideSong(1).eノード種別 == CSongListNode.ENodeType.SCORE) || this.actSongList.rGetSideSong(1).eノード種別 == CSongListNode.ENodeType.BACKBOX) {
|
||||
if ((this.actSongList.rGetSideSong(1).nodeType == CSongListNode.ENodeType.SCORE) || this.actSongList.rGetSideSong(1).nodeType == CSongListNode.ENodeType.BACKBOX) {
|
||||
OpenTaiko.stageSongSelect.bBGMIn再生した = false;
|
||||
|
||||
CSongSelectSongManager.disable();
|
||||
@ -1443,7 +1443,7 @@ internal class CStage選曲 : CStage {
|
||||
}
|
||||
this.ctBackgroundFade.Start(0, 600, 1, OpenTaiko.Timer);
|
||||
if (this.actSongList.ctBarOpen.CurrentValue >= 200 || this.ctBackgroundFade.CurrentValue >= 600 - 255) {
|
||||
OpenTaiko.stageSongSelect.OldGenre = this.rNowSelectedSong.strジャンル;
|
||||
OpenTaiko.stageSongSelect.OldGenre = this.rNowSelectedSong.songGenre;
|
||||
OpenTaiko.stageSongSelect.OldUseGenre = !this.rNowSelectedSong.isChangedBgType;
|
||||
OpenTaiko.stageSongSelect.OldBg = this.rNowSelectedSong.BgType;
|
||||
OpenTaiko.stageSongSelect.OldBgColor = this.rNowSelectedSong.BgColor;
|
||||
@ -1453,7 +1453,7 @@ internal class CStage選曲 : CStage {
|
||||
OpenTaiko.Skin.soundカーソル移動音.tPlay();
|
||||
}
|
||||
private void tカーソルを上へ移動する() {
|
||||
if ((this.actSongList.rGetSideSong(-1).eノード種別 == CSongListNode.ENodeType.SCORE) || this.actSongList.rGetSideSong(-1).eノード種別 == CSongListNode.ENodeType.BACKBOX) {
|
||||
if ((this.actSongList.rGetSideSong(-1).nodeType == CSongListNode.ENodeType.SCORE) || this.actSongList.rGetSideSong(-1).nodeType == CSongListNode.ENodeType.BACKBOX) {
|
||||
OpenTaiko.stageSongSelect.bBGMIn再生した = false;
|
||||
|
||||
CSongSelectSongManager.disable();
|
||||
@ -1464,7 +1464,7 @@ internal class CStage選曲 : CStage {
|
||||
|
||||
this.ctBackgroundFade.Start(0, 600, 1, OpenTaiko.Timer);
|
||||
if (this.actSongList.ctBarOpen.CurrentValue >= 200 || this.ctBackgroundFade.CurrentValue >= 600 - 255) {
|
||||
OpenTaiko.stageSongSelect.OldGenre = this.rNowSelectedSong.strジャンル;
|
||||
OpenTaiko.stageSongSelect.OldGenre = this.rNowSelectedSong.songGenre;
|
||||
OpenTaiko.stageSongSelect.OldUseGenre = !this.rNowSelectedSong.isChangedBgType;
|
||||
OpenTaiko.stageSongSelect.OldBg = this.rNowSelectedSong.BgType;
|
||||
OpenTaiko.stageSongSelect.OldBgColor = this.rNowSelectedSong.BgColor;
|
||||
@ -1476,7 +1476,7 @@ internal class CStage選曲 : CStage {
|
||||
private void tカーソルスキップ(bool Up) {
|
||||
this.ctBackgroundFade.Start(0, 600, 1, OpenTaiko.Timer);
|
||||
if (this.actSongList.ctBarOpen.CurrentValue >= 200 || this.ctBackgroundFade.CurrentValue >= 600 - 255) {
|
||||
OpenTaiko.stageSongSelect.OldGenre = this.rNowSelectedSong.strジャンル;
|
||||
OpenTaiko.stageSongSelect.OldGenre = this.rNowSelectedSong.songGenre;
|
||||
OpenTaiko.stageSongSelect.OldUseGenre = !this.rNowSelectedSong.isChangedBgType;
|
||||
OpenTaiko.stageSongSelect.OldBg = this.rNowSelectedSong.BgType;
|
||||
OpenTaiko.stageSongSelect.OldBgColor = this.rNowSelectedSong.BgColor;
|
||||
@ -1497,7 +1497,7 @@ internal class CStage選曲 : CStage {
|
||||
if (contextDiff < (int)Difficulty.Oni)
|
||||
return contextDiff;
|
||||
else if (contextDiff == (int)Difficulty.Oni) {
|
||||
var score = song.arスコア[baseDiff];
|
||||
var score = song.score[baseDiff];
|
||||
if (score.譜面情報.nレベル[(int)Difficulty.Oni] >= 0 && score.譜面情報.nレベル[(int)Difficulty.Edit] >= 0)
|
||||
return (new Random().Next(0, 2) == 0 ? (int)Difficulty.Oni : (int)Difficulty.Edit);
|
||||
return (int)Difficulty.Oni;
|
||||
@ -1526,8 +1526,8 @@ internal class CStage選曲 : CStage {
|
||||
|
||||
CSongListNode song = this.actSongList.rCurrentlySelectedSong;
|
||||
|
||||
song.listランダム用ノードリスト = this.t指定された曲が存在する場所の曲を列挙する_子リスト含む(song, ref mandatoryDiffs);
|
||||
int selectableSongCount = song.listランダム用ノードリスト.Count;
|
||||
song.randomList = this.t指定された曲が存在する場所の曲を列挙する_子リスト含む(song, ref mandatoryDiffs);
|
||||
int selectableSongCount = song.randomList.Count;
|
||||
|
||||
if (selectableSongCount == 0) {
|
||||
return;
|
||||
@ -1542,7 +1542,7 @@ internal class CStage選曲 : CStage {
|
||||
}
|
||||
|
||||
// Third assignment
|
||||
this.rNowSelectedSong = song.listランダム用ノードリスト[randomSongIndex];
|
||||
this.rNowSelectedSong = song.randomList[randomSongIndex];
|
||||
|
||||
actSongList.t現在選択中の曲を元に曲バーを再構成する();
|
||||
actSongList.t選択曲が変更された(false);
|
||||
@ -1557,7 +1557,7 @@ internal class CStage選曲 : CStage {
|
||||
this.r確定されたスコア = this.actSongList.r現在選択中のスコア;
|
||||
|
||||
this.nChoosenSongDifficulty[0] = this.actSongList.n現在選択中の曲の現在の難易度レベル;
|
||||
this.str確定された曲のジャンル = this.rChoosenSong.strジャンル;
|
||||
this.str確定された曲のジャンル = this.rChoosenSong.songGenre;
|
||||
|
||||
if ((this.rChoosenSong != null) && (this.r確定されたスコア != null)) {
|
||||
this.eフェードアウト完了時の戻り値 = E戻り値.選曲した;
|
||||
@ -1573,7 +1573,7 @@ internal class CStage選曲 : CStage {
|
||||
this.r確定されたスコア = this.actSongList.r現在選択中のスコア;
|
||||
|
||||
this.nChoosenSongDifficulty[player] = nCurrentLevel;
|
||||
this.str確定された曲のジャンル = this.rChoosenSong.strジャンル;
|
||||
this.str確定された曲のジャンル = this.rChoosenSong.songGenre;
|
||||
|
||||
if ((this.rChoosenSong != null) && (this.r確定されたスコア != null)) {
|
||||
this.eフェードアウト完了時の戻り値 = E戻り値.選曲した;
|
||||
@ -1591,12 +1591,12 @@ internal class CStage選曲 : CStage {
|
||||
song = song.rParentNode;
|
||||
if ((song == null) && (OpenTaiko.Songs管理.list曲ルート.Count > 0)) {
|
||||
foreach (CSongListNode c曲リストノード in OpenTaiko.Songs管理.list曲ルート) {
|
||||
if ((c曲リストノード.eノード種別 == CSongListNode.ENodeType.SCORE) || (c曲リストノード.eノード種別 == CSongListNode.ENodeType.SCORE_MIDI)) {
|
||||
if ((c曲リストノード.nodeType == CSongListNode.ENodeType.SCORE) || (c曲リストノード.nodeType == CSongListNode.ENodeType.SCORE_MIDI)) {
|
||||
// Don't add Dan/Tower charts for Random
|
||||
int diff = this.actSongList.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(c曲リストノード);
|
||||
if (diff < (int)Difficulty.Tower) {
|
||||
// Check if mandatory diffs are present
|
||||
var score = c曲リストノード.arスコア[diff];
|
||||
var score = c曲リストノード.score[diff];
|
||||
bool requiredDiffsExist = true;
|
||||
foreach (int df in mandatory) {
|
||||
if (score.譜面情報.nレベル[df] < 0) {
|
||||
@ -1613,7 +1613,7 @@ internal class CStage選曲 : CStage {
|
||||
}
|
||||
|
||||
}
|
||||
if ((c曲リストノード.list子リスト != null) && OpenTaiko.ConfigIni.bIncludeSubfoldersOnRandomSelect) {
|
||||
if ((c曲リストノード.childrenList != null) && OpenTaiko.ConfigIni.bIncludeSubfoldersOnRandomSelect) {
|
||||
this.t指定された曲の子リストの曲を列挙する_孫リスト含む(c曲リストノード, ref list, ref mandatory);
|
||||
}
|
||||
}
|
||||
@ -1624,15 +1624,15 @@ internal class CStage選曲 : CStage {
|
||||
}
|
||||
|
||||
public void t指定された曲の子リストの曲を列挙する_孫リスト含む(CSongListNode r親, ref List<CSongListNode> list, ref List<int> mandatory, bool dan = false, Difficulty difficulty = Difficulty.Dan) {
|
||||
if ((r親 != null) && (r親.list子リスト != null)) {
|
||||
foreach (CSongListNode c曲リストノード in r親.list子リスト) {
|
||||
if ((c曲リストノード.eノード種別 == CSongListNode.ENodeType.SCORE) || (c曲リストノード.eノード種別 == CSongListNode.ENodeType.SCORE_MIDI)) {
|
||||
if ((r親 != null) && (r親.childrenList != null)) {
|
||||
foreach (CSongListNode c曲リストノード in r親.childrenList) {
|
||||
if ((c曲リストノード.nodeType == CSongListNode.ENodeType.SCORE) || (c曲リストノード.nodeType == CSongListNode.ENodeType.SCORE_MIDI)) {
|
||||
// Don't add Dan/Tower charts for Random
|
||||
int diff = this.actSongList.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(c曲リストノード);
|
||||
|
||||
if (dan ? diff == (int)difficulty : diff < (int)Difficulty.Tower) {
|
||||
// Check if mandatory diffs are present
|
||||
var score = c曲リストノード.arスコア[diff];
|
||||
var score = c曲リストノード.score[diff];
|
||||
bool requiredDiffsExist = true;
|
||||
foreach (int df in mandatory) {
|
||||
if (score.譜面情報.nレベル[df] < 0) {
|
||||
@ -1648,7 +1648,7 @@ internal class CStage選曲 : CStage {
|
||||
|
||||
}
|
||||
}
|
||||
if ((c曲リストノード.list子リスト != null) && OpenTaiko.ConfigIni.bIncludeSubfoldersOnRandomSelect) {
|
||||
if ((c曲リストノード.childrenList != null) && OpenTaiko.ConfigIni.bIncludeSubfoldersOnRandomSelect) {
|
||||
this.t指定された曲の子リストの曲を列挙する_孫リスト含む(c曲リストノード, ref list, ref mandatory, dan, difficulty);
|
||||
}
|
||||
}
|
||||
|
@ -134,7 +134,7 @@ internal class CStage曲読み込み : CStage {
|
||||
#region [ 初めての進行描画 ]
|
||||
//-----------------------------
|
||||
if (base.IsFirstDraw) {
|
||||
Cスコア cスコア1 = OpenTaiko.stageSongSelect.r確定されたスコア;
|
||||
CScore cスコア1 = OpenTaiko.stageSongSelect.r確定されたスコア;
|
||||
if (this.sd読み込み音 != null) {
|
||||
if (OpenTaiko.Skin.sound曲読込開始音.bExclusive && (CSkin.CSystemSound.r最後に再生した排他システムサウンド != null)) {
|
||||
CSkin.CSystemSound.r最後に再生した排他システムサウンド.tStop();
|
||||
@ -259,7 +259,7 @@ internal class CStage曲読み込み : CStage {
|
||||
int xFactor = 0;
|
||||
float yFactor = 1f;
|
||||
|
||||
int currentTowerType = Array.IndexOf(OpenTaiko.Skin.Game_Tower_Names, OpenTaiko.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTowerType);
|
||||
int currentTowerType = Array.IndexOf(OpenTaiko.Skin.Game_Tower_Names, OpenTaiko.stageSongSelect.rChoosenSong.score[5].譜面情報.nTowerType);
|
||||
|
||||
if (currentTowerType < 0 || currentTowerType >= OpenTaiko.Skin.Game_Tower_Ptn)
|
||||
currentTowerType = 0;
|
||||
|
@ -2847,7 +2847,7 @@ internal abstract class CStage演奏画面共通 : CStage {
|
||||
var panelString = string.IsNullOrEmpty(OpenTaiko.DTX.PANEL) ? OpenTaiko.DTX.TITLE.GetString("") : OpenTaiko.DTX.PANEL;
|
||||
|
||||
this.actPanel.SetPanelString(panelString,
|
||||
OpenTaiko.stageSongSelect.rChoosenSong.str本当のジャンル,
|
||||
OpenTaiko.stageSongSelect.rChoosenSong.songGenrePanel,
|
||||
OpenTaiko.Skin.Game_StageText,
|
||||
songNode: OpenTaiko.stageSongSelect.rChoosenSong);
|
||||
}
|
||||
|
@ -215,7 +215,7 @@ internal class CActImplBackground : CActivity {
|
||||
|
||||
this.bFloorChanged = CFloorManagement.LastRegisteredFloor > 0 && (CFloorManagement.LastRegisteredFloor < OpenTaiko.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1);
|
||||
|
||||
int maxFloor = OpenTaiko.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor;
|
||||
int maxFloor = OpenTaiko.stageSongSelect.rChoosenSong.score[5].譜面情報.nTotalFloor;
|
||||
int nightTime = Math.Max(140, maxFloor / 2);
|
||||
|
||||
currentFloorPositionMax140 = Math.Min(OpenTaiko.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] / (float)nightTime, 1f);
|
||||
@ -316,13 +316,13 @@ internal class CActImplBackground : CActivity {
|
||||
|
||||
|
||||
if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower) {
|
||||
int maxFloor = OpenTaiko.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor;
|
||||
int maxFloor = OpenTaiko.stageSongSelect.rChoosenSong.score[5].譜面情報.nTotalFloor;
|
||||
|
||||
OpenTaiko.actTextConsole.Print(0, 0, CTextConsole.EFontType.White, maxFloor.ToString());
|
||||
|
||||
int nightTime = Math.Max(140, maxFloor / 2);
|
||||
|
||||
int currentTowerType = Array.IndexOf(OpenTaiko.Skin.Game_Tower_Names, OpenTaiko.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTowerType);
|
||||
int currentTowerType = Array.IndexOf(OpenTaiko.Skin.Game_Tower_Names, OpenTaiko.stageSongSelect.rChoosenSong.score[5].譜面情報.nTowerType);
|
||||
|
||||
if (currentTowerType < 0 || currentTowerType >= OpenTaiko.Skin.Game_Tower_Ptn)
|
||||
currentTowerType = 0;
|
||||
|
@ -178,7 +178,7 @@ class CActImplScoreRank : CActivity {
|
||||
} else if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower) {
|
||||
#region [Tower score ranks]
|
||||
|
||||
double progress = CFloorManagement.LastRegisteredFloor / ((double)OpenTaiko.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor);
|
||||
double progress = CFloorManagement.LastRegisteredFloor / ((double)OpenTaiko.stageSongSelect.rChoosenSong.score[5].譜面情報.nTotalFloor);
|
||||
|
||||
bool[] conditions =
|
||||
{
|
||||
|
@ -29,8 +29,8 @@ class EndAnimeScript : ScriptBG {
|
||||
try {
|
||||
float currentFloorPositionMax140 = 0;
|
||||
|
||||
if (OpenTaiko.stageSongSelect.rChoosenSong.arスコア[5] != null) {
|
||||
int maxFloor = OpenTaiko.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor;
|
||||
if (OpenTaiko.stageSongSelect.rChoosenSong.score[5] != null) {
|
||||
int maxFloor = OpenTaiko.stageSongSelect.rChoosenSong.score[5].譜面情報.nTotalFloor;
|
||||
int nightTime = Math.Max(140, maxFloor / 2);
|
||||
|
||||
currentFloorPositionMax140 = Math.Min(OpenTaiko.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] / (float)nightTime, 1f);
|
||||
|
@ -241,8 +241,8 @@ class ScriptBG : IDisposable {
|
||||
try {
|
||||
float currentFloorPositionMax140 = 0;
|
||||
|
||||
if (OpenTaiko.stageSongSelect.rChoosenSong != null && OpenTaiko.stageSongSelect.rChoosenSong.arスコア[5] != null) {
|
||||
int maxFloor = OpenTaiko.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor;
|
||||
if (OpenTaiko.stageSongSelect.rChoosenSong != null && OpenTaiko.stageSongSelect.rChoosenSong.score[5] != null) {
|
||||
int maxFloor = OpenTaiko.stageSongSelect.rChoosenSong.score[5].譜面情報.nTotalFloor;
|
||||
int nightTime = Math.Max(140, maxFloor / 2);
|
||||
|
||||
currentFloorPositionMax140 = Math.Min(OpenTaiko.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] / (float)nightTime, 1f);
|
||||
|
@ -72,7 +72,7 @@ internal class CStage結果 : CStage {
|
||||
|
||||
public int GetTowerScoreRank() {
|
||||
int tmpClear = 0;
|
||||
double progress = CFloorManagement.LastRegisteredFloor / ((double)OpenTaiko.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor);
|
||||
double progress = CFloorManagement.LastRegisteredFloor / ((double)OpenTaiko.stageSongSelect.rChoosenSong.score[5].譜面情報.nTotalFloor);
|
||||
|
||||
// Clear badges : 10% (E), 25% (D), 50% (C), 75% (B), Clear (A), FC (S), DFC (X)
|
||||
bool[] conditions =
|
||||
@ -394,12 +394,12 @@ internal class CStage結果 : CStage {
|
||||
if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower) {
|
||||
diffModifier = 3;
|
||||
|
||||
int stars = OpenTaiko.stageSongSelect.rChoosenSong.arスコア[(int)Difficulty.Tower].譜面情報.nレベル[(int)Difficulty.Tower];
|
||||
int stars = OpenTaiko.stageSongSelect.rChoosenSong.score[(int)Difficulty.Tower].譜面情報.nレベル[(int)Difficulty.Tower];
|
||||
|
||||
starRate = Math.Min(10, stars) / 2;
|
||||
redStarRate = Math.Max(0, stars - 10) * 4;
|
||||
|
||||
int maxFloors = OpenTaiko.stageSongSelect.rChoosenSong.arスコア[(int)Difficulty.Tower].譜面情報.nTotalFloor;
|
||||
int maxFloors = OpenTaiko.stageSongSelect.rChoosenSong.score[(int)Difficulty.Tower].譜面情報.nTotalFloor;
|
||||
|
||||
double floorRate = Math.Pow(CFloorManagement.LastRegisteredFloor / (double)maxFloors, 2);
|
||||
double lengthBonus = Math.Max(1, maxFloors / 140.0);
|
||||
@ -472,7 +472,7 @@ internal class CStage結果 : CStage {
|
||||
} else {
|
||||
for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) {
|
||||
int diff = OpenTaiko.stageSongSelect.nChoosenSongDifficulty[i];
|
||||
int stars = OpenTaiko.stageSongSelect.rChoosenSong.arスコア[diff].譜面情報.nレベル[diff];
|
||||
int stars = OpenTaiko.stageSongSelect.rChoosenSong.score[diff].譜面情報.nレベル[diff];
|
||||
|
||||
diffModifier = Math.Max(1, Math.Min(3, diff));
|
||||
|
||||
@ -651,7 +651,7 @@ internal class CStage結果 : CStage {
|
||||
this.EndAnime = false;
|
||||
|
||||
if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower) {
|
||||
this.ttkMaxFloors = new TitleTextureKey("/" + OpenTaiko.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor.ToString() + CLangManager.LangInstance.GetString("TOWER_FLOOR_INITIAL"), pfTowerText48, Color.Black, Color.Transparent, 700);
|
||||
this.ttkMaxFloors = new TitleTextureKey("/" + OpenTaiko.stageSongSelect.rChoosenSong.score[5].譜面情報.nTotalFloor.ToString() + CLangManager.LangInstance.GetString("TOWER_FLOOR_INITIAL"), pfTowerText48, Color.Black, Color.Transparent, 700);
|
||||
this.ttkToutatsu = new TitleTextureKey(CLangManager.LangInstance.GetString("TOWER_FLOOR_REACHED"), pfTowerText48, Color.White, Color.Black, 700);
|
||||
this.ttkTen = new TitleTextureKey(CLangManager.LangInstance.GetString("TOWER_SCORE_INITIAL"), pfTowerText, Color.Black, Color.Transparent, 700);
|
||||
this.ttkReachedFloor = new TitleTextureKey(CFloorManagement.LastRegisteredFloor.ToString(), pfTowerText72, Color.Orange, Color.Black, 700);
|
||||
@ -1227,7 +1227,7 @@ internal class CStage結果 : CStage {
|
||||
int xFactor = 0;
|
||||
float yFactor = 1f;
|
||||
|
||||
int currentTowerType = Array.IndexOf(OpenTaiko.Skin.Game_Tower_Names, OpenTaiko.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTowerType);
|
||||
int currentTowerType = Array.IndexOf(OpenTaiko.Skin.Game_Tower_Names, OpenTaiko.stageSongSelect.rChoosenSong.score[5].譜面情報.nTowerType);
|
||||
|
||||
if (currentTowerType < 0 || currentTowerType >= OpenTaiko.Skin.Game_Tower_Ptn_Result)
|
||||
currentTowerType = 0;
|
||||
|
@ -541,7 +541,7 @@ class CStageOnlineLounge : CStage {
|
||||
// Fetch closest Download folder node
|
||||
CSongListNode downloadBox = null;
|
||||
for (int i = 0; i < OpenTaiko.Songs管理.list曲ルート.Count; i++) {
|
||||
if (OpenTaiko.Songs管理.list曲ルート[i].strジャンル == "Download") {
|
||||
if (OpenTaiko.Songs管理.list曲ルート[i].songGenre == "Download") {
|
||||
downloadBox = OpenTaiko.Songs管理.list曲ルート[i];
|
||||
if (downloadBox.rParentNode != null) downloadBox = downloadBox.rParentNode;
|
||||
break;
|
||||
@ -550,7 +550,7 @@ class CStageOnlineLounge : CStage {
|
||||
|
||||
// If there is at least one download folder, transfer the zip contents in it
|
||||
if (downloadBox != null) {
|
||||
var path = downloadBox.arスコア[0].ファイル情報.フォルダの絶対パス;
|
||||
var path = downloadBox.score[0].ファイル情報.フォルダの絶対パス;
|
||||
var genredPath = $@"{path}{Path.DirectorySeparatorChar}{song.Genre.genre}{Path.DirectorySeparatorChar}";
|
||||
|
||||
if (!Directory.Exists(genredPath)) {
|
||||
@ -560,8 +560,8 @@ class CStageOnlineLounge : CStage {
|
||||
// Search a corresponding box-def if exists
|
||||
CSongListNode correspondingBox = null;
|
||||
for (int i = 0; i < OpenTaiko.Songs管理.list曲ルート.Count; i++) {
|
||||
if (OpenTaiko.Songs管理.list曲ルート[i].strジャンル == song.Genre.genre
|
||||
&& OpenTaiko.Songs管理.list曲ルート[i].eノード種別 == CSongListNode.ENodeType.BOX)
|
||||
if (OpenTaiko.Songs管理.list曲ルート[i].songGenre == song.Genre.genre
|
||||
&& OpenTaiko.Songs管理.list曲ルート[i].nodeType == CSongListNode.ENodeType.BOX)
|
||||
correspondingBox = OpenTaiko.Songs管理.list曲ルート[i];
|
||||
}
|
||||
|
||||
@ -587,7 +587,7 @@ class CStageOnlineLounge : CStage {
|
||||
sw.Close();
|
||||
} else {
|
||||
// Copy the existing box.def if available
|
||||
var corPath = correspondingBox.arスコア[0].ファイル情報.フォルダの絶対パス;
|
||||
var corPath = correspondingBox.score[0].ファイル情報.フォルダの絶対パス;
|
||||
|
||||
File.Copy($@"{corPath}{Path.DirectorySeparatorChar}box.def", newBoxDef);
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ class CStageTowerSelect : CStage {
|
||||
|
||||
OpenTaiko.Skin.soundDecideSFX.tPlay();
|
||||
|
||||
switch (currentSong.eノード種別) {
|
||||
switch (currentSong.nodeType) {
|
||||
case CSongListNode.ENodeType.SCORE:
|
||||
tSelectSong();
|
||||
break;
|
||||
@ -130,7 +130,7 @@ class CStageTowerSelect : CStage {
|
||||
tOpenFolder(currentSong);
|
||||
break;
|
||||
case CSongListNode.ENodeType.BACKBOX: {
|
||||
if (OpenTaiko.Songs管理.list曲ルート.Contains(currentSong.rParentNode) && currentSong.rParentNode.strジャンル == "太鼓タワー") {
|
||||
if (OpenTaiko.Songs管理.list曲ルート.Contains(currentSong.rParentNode) && currentSong.rParentNode.songGenre == "太鼓タワー") {
|
||||
returnTitle();
|
||||
} else {
|
||||
tCloseFolder(currentSong);
|
||||
@ -178,11 +178,11 @@ class CStageTowerSelect : CStage {
|
||||
public void tSelectSong() {
|
||||
OpenTaiko.ConfigIni.bTokkunMode = false;
|
||||
OpenTaiko.stageSongSelect.rChoosenSong = listSongs[nCurrentSongIndex];
|
||||
OpenTaiko.stageSongSelect.r確定されたスコア = listSongs[nCurrentSongIndex].arスコア[(int)Difficulty.Tower];
|
||||
OpenTaiko.stageSongSelect.r確定されたスコア = listSongs[nCurrentSongIndex].score[(int)Difficulty.Tower];
|
||||
OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] = (int)Difficulty.Tower;
|
||||
OpenTaiko.stageSongSelect.str確定された曲のジャンル = listSongs[nCurrentSongIndex].strジャンル;
|
||||
OpenTaiko.stageSongSelect.str確定された曲のジャンル = listSongs[nCurrentSongIndex].songGenre;
|
||||
if ((OpenTaiko.stageSongSelect.rChoosenSong != null) && (OpenTaiko.stageSongSelect.r確定されたスコア != null)) {
|
||||
CFloorManagement.reinitialize(OpenTaiko.stageSongSelect.rChoosenSong.arスコア[(int)Difficulty.Tower].譜面情報.nLife);
|
||||
CFloorManagement.reinitialize(OpenTaiko.stageSongSelect.rChoosenSong.score[(int)Difficulty.Tower].譜面情報.nLife);
|
||||
this.eフェードアウト完了時の戻り値 = EReturnValue.SongChoosen;
|
||||
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
|
||||
base.ePhaseID = CStage.EPhase.SongSelect_FadeOutToNowLoading;
|
||||
@ -197,9 +197,9 @@ class CStageTowerSelect : CStage {
|
||||
|
||||
List<CSongListNode> songs = new List<CSongListNode>();
|
||||
OpenTaiko.stageSongSelect.t指定された曲の子リストの曲を列挙する_孫リスト含む(song.rParentNode, ref songs, ref mandatoryDiffs, true, Difficulty.Tower);
|
||||
song.listランダム用ノードリスト = songs;
|
||||
song.randomList = songs;
|
||||
|
||||
int selectableSongCount = song.listランダム用ノードリスト.Count;
|
||||
int selectableSongCount = song.randomList.Count;
|
||||
|
||||
if (selectableSongCount == 0) {
|
||||
return false;
|
||||
@ -214,12 +214,12 @@ class CStageTowerSelect : CStage {
|
||||
}
|
||||
|
||||
// Third assignment
|
||||
OpenTaiko.stageSongSelect.rChoosenSong = song.listランダム用ノードリスト[randomSongIndex];
|
||||
OpenTaiko.stageSongSelect.rChoosenSong = song.randomList[randomSongIndex];
|
||||
OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] = (int)Difficulty.Tower;
|
||||
|
||||
CFloorManagement.reinitialize(OpenTaiko.stageSongSelect.rChoosenSong.arスコア[(int)Difficulty.Tower].譜面情報.nLife);
|
||||
OpenTaiko.stageSongSelect.r確定されたスコア = OpenTaiko.stageSongSelect.rChoosenSong.arスコア[OpenTaiko.stageSongSelect.actSongList.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(OpenTaiko.stageSongSelect.rChoosenSong)];
|
||||
OpenTaiko.stageSongSelect.str確定された曲のジャンル = OpenTaiko.stageSongSelect.rChoosenSong.strジャンル;
|
||||
CFloorManagement.reinitialize(OpenTaiko.stageSongSelect.rChoosenSong.score[(int)Difficulty.Tower].譜面情報.nLife);
|
||||
OpenTaiko.stageSongSelect.r確定されたスコア = OpenTaiko.stageSongSelect.rChoosenSong.score[OpenTaiko.stageSongSelect.actSongList.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(OpenTaiko.stageSongSelect.rChoosenSong)];
|
||||
OpenTaiko.stageSongSelect.str確定された曲のジャンル = OpenTaiko.stageSongSelect.rChoosenSong.songGenre;
|
||||
|
||||
//TJAPlayer3.Skin.sound曲決定音.t再生する();
|
||||
|
||||
@ -259,13 +259,13 @@ class CStageTowerSelect : CStage {
|
||||
|
||||
private void tOpenFolder(CSongListNode song) {
|
||||
nCurrentSongIndex = 0;
|
||||
listSongs = song.list子リスト;
|
||||
listSongs = song.childrenList;
|
||||
tUpdateBarInfos();
|
||||
}
|
||||
|
||||
private void tCloseFolder(CSongListNode song) {
|
||||
nCurrentSongIndex = 0;
|
||||
listSongs = song.rParentNode.rParentNode.list子リスト;
|
||||
listSongs = song.rParentNode.rParentNode.childrenList;
|
||||
tUpdateBarInfos();
|
||||
}
|
||||
|
||||
@ -277,7 +277,7 @@ class CStageTowerSelect : CStage {
|
||||
|
||||
bar.strTitle = song.ldTitle.GetString("");
|
||||
bar.strSubTitle = song.ldSubtitle.GetString("");
|
||||
bar.eノード種別 = song.eノード種別;
|
||||
bar.eノード種別 = song.nodeType;
|
||||
|
||||
bar.ttkTitle = new TitleTextureKey(bar.strTitle, pfTitleFont, Color.Black, Color.Transparent, OpenTaiko.Skin.TowerSelect_Title_MaxWidth);
|
||||
bar.ttkSubTitle = new TitleTextureKey(bar.strSubTitle, pfTitleFont, Color.Black, Color.Transparent, OpenTaiko.Skin.TowerSelect_SubTitle_MaxWidth);
|
||||
|
Loading…
Reference in New Issue
Block a user