1
0
mirror of synced 2024-11-28 01:10:53 +01:00

englishify CSongListNode

This commit is contained in:
0auBSQ 2024-10-24 05:29:57 +09:00
parent d7ea86cd86
commit cf8e228871
35 changed files with 1270 additions and 1320 deletions

View File

@ -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;

View File

@ -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");

File diff suppressed because it is too large Load Diff

View File

@ -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)

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -5,9 +5,12 @@ using FDK;
namespace OpenTaiko;
[Serializable]
internal class Cスコア {
// Properties
internal class CScore {
// Old DTX class, to deprecate ASAP and handle everything on CSongListNode
// Properties
public STScoreIni情報 ScoreIni情報;
[Serializable]
[StructLayout(LayoutKind.Sequential)]
@ -72,11 +75,11 @@ internal class Cスコア {
public int[] nハイスコア;
public string strサブタイトル;
public int[] nレベル;
public int[] nクリア; //0:未クリア 1:クリア 2:フルコンボ 3:ドンダフルコンボ
public int[] nスコアランク; //0:未取得 1:白粋 2:銅粋 3:銀粋 4:金雅 5:桃雅 6:紫雅 7:虹極
public CDTX.ELevelIcon[] nLevelIcon;
// Tower lifes
public int[] nクリア; //0:未クリア 1:クリア 2:フルコンボ 3:ドンダフルコンボ
public int[] nスコアランク; //0:未取得 1:白粋 2:銅粋 3:銀粋 4:金雅 5:桃雅 6:紫雅 7:虹極
public CDTX.ELevelIcon[] nLevelIcon;
// Tower lifes
public int nLife;
public int nTotalFloor;
public string nTowerType;
@ -209,12 +212,12 @@ internal class Cスコア {
get {
return (((this..[0] + this..[1]) + this..[2]) != 0);
}
}
// Constructor
public Cスコア() {
}
// Constructor
public CScore() {
this.ScoreIni情報 = new STScoreIni情報(DateTime.MinValue, 0L);
this.bSongDBにキャッシュがあった = false;
this. = new STファイル情報("", "", DateTime.MinValue, 0L);

View File

@ -3,10 +3,10 @@
namespace OpenTaiko;
[Serializable]
internal class CSongListNode {
// Properties
public ENodeType eード種別 = ENodeType.UNKNOWN;
internal class CSongListNode {
// Properties
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,41 +36,45 @@ 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 CSongListNode rParentNode;
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 bool bIsOpenFolder;
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 bool bMovie = 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 };
// Tower Lives
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;
public string nTowerType;
// Unique id
public string nTowerType;
// Unique id
public CSongUniqueID uniqueId;
public int nDanTick = 0;
@ -87,18 +82,18 @@ internal class CSongListNode {
public CLocalizationData[] strBoxText = new CLocalizationData[3] { new CLocalizationData(), new CLocalizationData(), new CLocalizationData() };
public string strSelectBGPath;
// In-game visuals
public string strSelectBGPath;
// In-game visuals
public string strScenePreset = null;
public string tGetUniqueId() {
return uniqueId?.data.id ?? "";
}
// Constructor
}
// Constructor
public CSongListNode() {
this.nID = id++;
}
@ -117,14 +112,14 @@ internal class CSongListNode {
public override int GetHashCode() {
return base.GetHashCode();
}
// その他
}
// その他
#region [ private ]
//-----------------
private static int id;
//-----------------
//-----------------
private static int id;
//-----------------
#endregion
}

View File

@ -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) {

View File

@ -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) {

View File

@ -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) {

View File

@ -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].. ?? "";
}
}

View File

@ -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) {

View File

@ -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);
}
}
}

View File

@ -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 {

View File

@ -28,9 +28,9 @@ class CStage段位選択 : CStage {
this.eフェードアウト完了時の戻り値 = E戻り値.;
ct待機 = new CCounter();
ctChara_In = new CCounter();
// ctChara_Normal = new CCounter(0, TJAPlayer3.Tx.SongSelect_Chara_Normal.Length - 1, 1000 / 45, TJAPlayer3.Timer);
ctChara_In = new CCounter();
// ctChara_Normal = new CCounter(0, TJAPlayer3.Tx.SongSelect_Chara_Normal.Length - 1, 1000 / 45, TJAPlayer3.Timer);
CMenuCharacter.tMenuResetTimer(CMenuCharacter.ECharacterAnimation.NORMAL);
@ -60,8 +60,8 @@ class CStage段位選択 : CStage {
base.ReleaseManagedResource();
}
public override int Draw() {
// ctChara_Normal.t進行Loop();
public override int Draw() {
// ctChara_Normal.t進行Loop();
ctChara_In.Tick();
ct待機.Tick();
@ -70,23 +70,23 @@ class CStage段位選択 : CStage {
float zoom = Math.Min(1.14f, Math.Max(1f, (float)Math.Pow(stamp / 3834f, 0.5f)));
Background.Update();
Background.Draw();
//TJAPlayer3.Tx.Dani_Background.vc拡大縮小倍率.X = zoom;
//TJAPlayer3.Tx.Dani_Background.vc拡大縮小倍率.Y = zoom;
//TJAPlayer3.Tx.Dani_Background.t2D拡大率考慮中央基準描画(TJAPlayer3.Skin.Resolution[0] / 2, TJAPlayer3.Skin.Resolution[1] / 2);
Background.Draw();
//TJAPlayer3.Tx.Dani_Background.vc拡大縮小倍率.X = zoom;
//TJAPlayer3.Tx.Dani_Background.vc拡大縮小倍率.Y = zoom;
//TJAPlayer3.Tx.Dani_Background.t2D拡大率考慮中央基準描画(TJAPlayer3.Skin.Resolution[0] / 2, TJAPlayer3.Skin.Resolution[1] / 2);
this..Draw();
if (stamp < 6000) {
if (stamp < 6000) {
#region [Dan intro anim]
if (!bInSongPlayed) {
this..ctDaniIn = new CCounter(0, 6000, 1, OpenTaiko.Timer);
OpenTaiko.Skin.soundDanSongSelectIn.tPlay();
bInSongPlayed = true;
}
}
/*
int dani_dan_in_width = TJAPlayer3.Tx.Dani_Dan_In.szテクスチャサイズ.Width / 2;
int dani_dan_in_height = TJAPlayer3.Tx.Dani_Dan_In.szテクスチャサイズ.Height;
@ -103,17 +103,17 @@ class CStage段位選択 : CStage {
TJAPlayer3.Tx.Dani_Dan_In.t2D描画(doorLeft, 0, new Rectangle(0, 0, dani_dan_in_width, dani_dan_in_height));
TJAPlayer3.Tx.Dani_Dan_In.t2D描画(doorRight, 0, new Rectangle(dani_dan_in_width, 0, dani_dan_in_width, dani_dan_in_height));
*/
if (stamp <= 3834) {
*/
if (stamp <= 3834) {
#region [Dan intro letters]
//int quarter = TJAPlayer3.Tx.Dani_Dan_Text.szテクスチャサイズ.Width / 4;
//int quarter = TJAPlayer3.Tx.Dani_Dan_Text.szテクスチャサイズ.Width / 4;
/*
int[] xAxis = { 300, 980 };
int[] yAxis = { 198, 522 };
*/
*/
/*
int[] appearStamps = { 1645, 2188, 2646, 3152 };
@ -135,25 +135,25 @@ class CStage段位選択 : CStage {
TJAPlayer3.Tx.Dani_Dan_Text.t2D拡大率考慮中央基準描画(x, y,
new Rectangle(quarter * i, 0, quarter, TJAPlayer3.Tx.Dani_Dan_Text.szテクスチャサイズ.Height));
}
*/
*/
#endregion
}
}
#endregion
} else if (stamp == 6000) {
if (!ctChara_In.IsStarted) {
//TJAPlayer3.Skin.soundDanSelectStart.t再生する();
if (!ctChara_In.IsStarted) {
//TJAPlayer3.Skin.soundDanSelectStart.t再生する();
OpenTaiko.Skin.voiceMenuDanSelectStart[OpenTaiko.SaveFile]?.tPlay();
OpenTaiko.Skin.soundDanSelectBGM.tPlay();
ctChara_In.Start(0, 180, 1.25f, OpenTaiko.Timer);
}
OpenTaiko.NamePlate.tNamePlateDraw(OpenTaiko.Skin.SongSelect_NamePlate_X[0], OpenTaiko.Skin.SongSelect_NamePlate_Y[0], 0);
ModIcons.tDisplayModsMenu(OpenTaiko.Skin.SongSelect_ModIcons_X[0], OpenTaiko.Skin.SongSelect_ModIcons_Y[0], 0); ;
ModIcons.tDisplayModsMenu(OpenTaiko.Skin.SongSelect_ModIcons_X[0], OpenTaiko.Skin.SongSelect_ModIcons_Y[0], 0); ;
#region [ ]
if (!this..bスクロール中 && !b選択した && !bDifficultyIn) {
int returnTitle() {
OpenTaiko.Skin.soundDanSelectBGM.tStop();
@ -176,11 +176,11 @@ 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段位を選択する();
//TJAPlayer3.Skin.soundDanSongSelectCheck.t再生する();
case CSongListNode.ENodeType.RANDOM: {
//this.t段位を選択する();
//TJAPlayer3.Skin.soundDanSongSelectCheck.t再生する();
OpenTaiko.Skin.voiceMenuDanSelectPrompt[OpenTaiko.SaveFile]?.tPlay();
this.bDifficultyIn = true;
this..ctBarIn.Start(0, 255, 1, OpenTaiko.Timer);
@ -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();
@ -208,23 +208,23 @@ class CStage段位選択 : CStage {
this..n現在の選択行 = 0;
return returnTitle();
}
}
}
#endregion
#region [ ]
if (ctChara_In.CurrentValue != 90) {
float CharaX = 0f, CharaY = 0f;
CharaX = (float)Math.Sin(ctChara_In.CurrentValue / 2 * (Math.PI / 180)) * 200f;
CharaY = ((float)Math.Sin((90 + (ctChara_In.CurrentValue / 2)) * (Math.PI / 180)) * 150f);
// TJAPlayer3.Tx.SongSelect_Chara_Normal[ctChara_Normal.n現在の値].Opacity = ctChara_In.n現在の値 * 2;
// TJAPlayer3.Tx.SongSelect_Chara_Normal[ctChara_Normal.n現在の値].t2D描画(-200 + CharaX, 336 - CharaY);
//CMenuCharacter.tMenuDisplayCharacter(0, (int)(-200 + CharaX), (int)(336 - CharaY), CMenuCharacter.ECharacterAnimation.NORMAL);
CharaY = ((float)Math.Sin((90 + (ctChara_In.CurrentValue / 2)) * (Math.PI / 180)) * 150f);
// TJAPlayer3.Tx.SongSelect_Chara_Normal[ctChara_Normal.n現在の値].Opacity = ctChara_In.n現在の値 * 2;
// TJAPlayer3.Tx.SongSelect_Chara_Normal[ctChara_Normal.n現在の値].t2D描画(-200 + CharaX, 336 - CharaY);
//CMenuCharacter.tMenuDisplayCharacter(0, (int)(-200 + CharaX), (int)(336 - CharaY), CMenuCharacter.ECharacterAnimation.NORMAL);
int chara_x = OpenTaiko.Skin.SongSelect_NamePlate_X[0] + OpenTaiko.Tx.NamePlateBase.szTextureSize.Width / 2;
int chara_y = OpenTaiko.Skin.SongSelect_NamePlate_Y[0];
@ -232,28 +232,28 @@ class CStage段位選択 : CStage {
0,
chara_x,
chara_y,
CMenuCharacter.ECharacterAnimation.NORMAL);
CMenuCharacter.ECharacterAnimation.NORMAL);
#region [PuchiChara]
int puchi_x = chara_x + OpenTaiko.Skin.Adjustments_MenuPuchichara_X[0];
int puchi_y = chara_y + OpenTaiko.Skin.Adjustments_MenuPuchichara_Y[0];
//this.PuchiChara.On進行描画(0 + 100, 336 + 230, false);
this.PuchiChara.On進行描画(puchi_x, puchi_y, false);
int puchi_y = chara_y + OpenTaiko.Skin.Adjustments_MenuPuchichara_Y[0];
//this.PuchiChara.On進行描画(0 + 100, 336 + 230, false);
this.PuchiChara.On進行描画(puchi_x, puchi_y, false);
#endregion
}
}
#endregion
this..Draw();
}
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,15 +293,15 @@ 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 曲決定時の画面フェードアウトの省略
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
base.ePhaseID = CStage.EPhase.SongSelect_FadeOutToNowLoading;
}
// TJAPlayer3.Skin.bgm選曲画面.t停止する();
}
// TJAPlayer3.Skin.bgm選曲画面.t停止する();
CSongSelectSongManager.stopSong();
}
@ -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;
@ -326,19 +326,19 @@ class CStage段位選択 : CStage {
StringBuilder builder = new StringBuilder(0x400);
builder.Append(string.Format("Total number of songs to randomly choose from {0}. Randomly selected index {0}.", selectableSongCount, randomSongIndex));
Trace.TraceInformation(builder.ToString());
}
// Third assignment
OpenTaiko.stageSongSelect.rChoosenSong = song.listランダム用ードリスト[randomSongIndex];
}
// Third assignment
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ジャンル;
//TJAPlayer3.Skin.sound曲決定音.t再生する();
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再生する();
this.eフェードアウト完了時の戻り値 = E戻り値.;
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
base.ePhaseID = CStage.EPhase.SongSelect_FadeOutToNowLoading;
CSongSelectSongManager.stopSong();
@ -355,9 +355,9 @@ class CStage段位選択 : CStage {
public bool bInSongPlayed;
private CCounter ctChara_In;
// private CCounter ctChara_Normal;
private CCounter ctChara_In;
// private CCounter ctChara_Normal;
private PuchiChara PuchiChara;
public E戻り値 eフェードアウト完了時の戻り値;

View File

@ -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;

View File

@ -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ファイル名)

View File

@ -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]);

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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];

File diff suppressed because it is too large Load Diff

View File

@ -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;

View File

@ -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);
}

View File

@ -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;

View File

@ -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 =
{

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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);
}

View File

@ -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);