1
0
mirror of synced 2024-11-24 07:30:21 +01:00

remove compact mode unused references

This commit is contained in:
0auBSQ 2024-10-22 05:04:45 +09:00
parent d19654e3c0
commit b20302627f
5 changed files with 1761 additions and 1809 deletions

View File

@ -1210,7 +1210,7 @@ namespace OpenTaiko {
for (int j = 0; j < (int)EKeyConfigPad.Max; j++) { for (int j = 0; j < (int)EKeyConfigPad.Max; j++) {
for (int k = 0; k < 0x10; k++) { for (int k = 0; k < 0x10; k++) {
if ((this.KeyAssign[i][j][k].InputDevice == EInputDevice.Keyboard) && if ((this.KeyAssign[i][j][k].InputDevice == EInputDevice.Keyboard) &&
(this.KeyAssign[i][j][k].Code == (int)SlimDXKeys.Key.Return)) { (this.KeyAssign[i][j][k].Code == (int)SlimDXKeys.Key.Return)) {
return false; return false;
} }
} }
@ -1641,8 +1641,8 @@ namespace OpenTaiko {
this.bBufferedInputs = true; this.bBufferedInputs = true;
this.bIsAllowedDoubleClickFullscreen = false; // #26752 2011.11.26 ダブルクリックでのフルスクリーンモード移行を許可 this.bIsAllowedDoubleClickFullscreen = false; // #26752 2011.11.26 ダブルクリックでのフルスクリーンモード移行を許可
this.nPoliphonicSounds = 4; // #28228 2012.5.1 yyagi レーン毎の最大同時発音数 this.nPoliphonicSounds = 4; // #28228 2012.5.1 yyagi レーン毎の最大同時発音数
// #24820 2013.1.15 yyagi 初期値を4から2に変更。BASS.net使用時の負荷軽減のため。 // #24820 2013.1.15 yyagi 初期値を4から2に変更。BASS.net使用時の負荷軽減のため。
// #24820 2013.1.17 yyagi 初期値を4に戻した。動的なミキサー制御がうまく動作しているため。 // #24820 2013.1.17 yyagi 初期値を4に戻した。動的なミキサー制御がうまく動作しているため。
this.bIsEnabledSystemMenu = true; // #28200 2012.5.1 yyagi System Menuの利用可否切替(使用可) this.bIsEnabledSystemMenu = true; // #28200 2012.5.1 yyagi System Menuの利用可否切替(使用可)
this.strSystemSkinSubfolderFullName = ""; // #28195 2012.5.2 yyagi 使用中のSkinサブフォルダ名 this.strSystemSkinSubfolderFullName = ""; // #28195 2012.5.2 yyagi 使用中のSkinサブフォルダ名
this.bTight = false; // #29500 2012.9.11 kairera0467 TIGHTモード this.bTight = false; // #29500 2012.9.11 kairera0467 TIGHTモード
@ -1657,7 +1657,7 @@ namespace OpenTaiko {
nBassBufferSizeMs = 1; nBassBufferSizeMs = 1;
this.nWASAPIBufferSizeMs = 50; // #24820 2013.1.15 yyagi 初期値は50(0で自動設定) this.nWASAPIBufferSizeMs = 50; // #24820 2013.1.15 yyagi 初期値は50(0で自動設定)
this.nASIODevice = 0; // #24820 2013.1.17 yyagi this.nASIODevice = 0; // #24820 2013.1.17 yyagi
// this.nASIOBufferSizeMs = 0; // #24820 2012.12.25 yyagi 初期値は0(自動設定) // this.nASIOBufferSizeMs = 0; // #24820 2012.12.25 yyagi 初期値は0(自動設定)
#endregion #endregion
@ -1760,8 +1760,7 @@ namespace OpenTaiko {
bool isMenu = pad is EKeyConfigPad.Decide or EKeyConfigPad.RightChange or EKeyConfigPad.LeftChange; bool isMenu = pad is EKeyConfigPad.Decide or EKeyConfigPad.RightChange or EKeyConfigPad.LeftChange;
for (int i = 0; i <= (int)EKeyConfigPart.System; i++) { for (int i = 0; i <= (int)EKeyConfigPart.System; i++) {
// Do not restrict duplicate keybinds for System controls // Do not restrict duplicate keybinds for System controls
for (int j = 0; j < (int)EKeyConfigPad.Capture; j++) for (int j = 0; j < (int)EKeyConfigPad.Capture; j++) {
{
bool isJMenu = j is (int)EKeyConfigPad.LeftChange bool isJMenu = j is (int)EKeyConfigPad.LeftChange
or (int)EKeyConfigPad.RightChange or (int)EKeyConfigPad.RightChange
or (int)EKeyConfigPad.Decide; or (int)EKeyConfigPad.Decide;
@ -1770,8 +1769,8 @@ namespace OpenTaiko {
} }
for (int k = 0; k < 0x10; k++) { for (int k = 0; k < 0x10; k++) {
if (this.KeyAssign[i][j][k].InputDevice != deviceType || if (this.KeyAssign[i][j][k].InputDevice != deviceType ||
this.KeyAssign[i][j][k].ID != nID || this.KeyAssign[i][j][k].ID != nID ||
this.KeyAssign[i][j][k].Code != nCode) { this.KeyAssign[i][j][k].Code != nCode) {
continue; continue;
} }
@ -2633,7 +2632,7 @@ namespace OpenTaiko {
string str; string str;
this.ClearAllKeyAssignments(); this.ClearAllKeyAssignments();
using (StreamReader reader = using (StreamReader reader =
new StreamReader(this.ConfigIniFileName, Encoding.GetEncoding(OpenTaiko.sEncType))) { new StreamReader(this.ConfigIniFileName, Encoding.GetEncoding(OpenTaiko.sEncType))) {
str = reader.ReadToEnd(); str = reader.ReadToEnd();
} }
@ -2705,41 +2704,41 @@ namespace OpenTaiko {
this.nLayoutType = int.Parse(value); this.nLayoutType = int.Parse(value);
break; break;
case "SaveFileName": { case "SaveFileName": {
var _s = value.Split(new char[] { ',' }); var _s = value.Split(new char[] { ',' });
// Ignore custom save file names if duplicates // Ignore custom save file names if duplicates
if (!_s.GroupBy(x => x).Any(g => g.Count() > 1)) { if (!_s.GroupBy(x => x).Any(g => g.Count() > 1)) {
for (int i = 0; i < Math.Min(5, _s.Length); i++) { for (int i = 0; i < Math.Min(5, _s.Length); i++) {
this.sSaveFile[i] = _s[i]; this.sSaveFile[i] = _s[i];
}
} }
}
break; break;
} }
case "IgnoreSongUnlockables": case "IgnoreSongUnlockables":
this.bIgnoreSongUnlockables = CConversion.bONorOFF(value[0]); this.bIgnoreSongUnlockables = CConversion.bONorOFF(value[0]);
break; break;
case "SkinPath": { case "SkinPath": {
string absSkinPath = value; string absSkinPath = value;
if (!System.IO.Path.IsPathRooted(value)) { if (!System.IO.Path.IsPathRooted(value)) {
absSkinPath = System.IO.Path.Combine(OpenTaiko.strEXEのあるフォルダ, "System"); absSkinPath = System.IO.Path.Combine(OpenTaiko.strEXEのあるフォルダ, "System");
absSkinPath = System.IO.Path.Combine(absSkinPath, value); absSkinPath = System.IO.Path.Combine(absSkinPath, value);
Uri u = new Uri(absSkinPath); Uri u = new Uri(absSkinPath);
absSkinPath = u.AbsolutePath.ToString(); // str4内に相対パスがある場合に備える absSkinPath = u.AbsolutePath.ToString(); // str4内に相対パスがある場合に備える
absSkinPath = System.Web.HttpUtility.UrlDecode(absSkinPath); // デコードする absSkinPath = System.Web.HttpUtility.UrlDecode(absSkinPath); // デコードする
absSkinPath = absSkinPath =
absSkinPath.Replace('/', System.IO.Path.DirectorySeparatorChar); // 区切り文字が\ではなく/なので置換する absSkinPath.Replace('/', System.IO.Path.DirectorySeparatorChar); // 区切り文字が\ではなく/なので置換する
} }
if (absSkinPath[absSkinPath.Length - 1] != if (absSkinPath[absSkinPath.Length - 1] !=
System.IO.Path.DirectorySeparatorChar) // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する System.IO.Path.DirectorySeparatorChar) // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する
{ {
absSkinPath += System.IO.Path.DirectorySeparatorChar; absSkinPath += System.IO.Path.DirectorySeparatorChar;
} }
this.strSystemSkinSubfolderFullName = absSkinPath; this.strSystemSkinSubfolderFullName = absSkinPath;
break; break;
} }
case nameof(this.PreAssetsLoading): case nameof(this.PreAssetsLoading):
this.PreAssetsLoading = CConversion.bONorOFF(value[0]); this.PreAssetsLoading = CConversion.bONorOFF(value[0]);
break; break;
@ -2767,21 +2766,21 @@ namespace OpenTaiko {
value, 0, 9999, this.nWindowBaseYPosition); value, 0, 9999, this.nWindowBaseYPosition);
break; break;
case "WindowWidth": { case "WindowWidth": {
this.nWindowWidth = CConversion.ParseIntInRange(value, 1, 65535, this.nWindowWidth); this.nWindowWidth = CConversion.ParseIntInRange(value, 1, 65535, this.nWindowWidth);
if (this.nWindowWidth <= 0) { if (this.nWindowWidth <= 0) {
this.nWindowWidth = SampleFramework.GameWindowSize.Width; this.nWindowWidth = SampleFramework.GameWindowSize.Width;
} }
break; break;
} }
case "WindowHeight": { case "WindowHeight": {
this.nWindowHeight = CConversion.ParseIntInRange(value, 1, 65535, this.nWindowHeight); this.nWindowHeight = CConversion.ParseIntInRange(value, 1, 65535, this.nWindowHeight);
if (this.nWindowHeight <= 0) { if (this.nWindowHeight <= 0) {
this.nWindowHeight = SampleFramework.GameWindowSize.Height; this.nWindowHeight = SampleFramework.GameWindowSize.Height;
} }
break; break;
} }
case "DoubleClickFullScreen": case "DoubleClickFullScreen":
this.bIsAllowedDoubleClickFullscreen = CConversion.bONorOFF(value[0]); this.bIsAllowedDoubleClickFullscreen = CConversion.bONorOFF(value[0]);
break; break;
@ -2801,10 +2800,10 @@ namespace OpenTaiko {
this.nWASAPIBufferSizeMs = CConversion.ParseIntInRange(value, 0, 9999, this.nWASAPIBufferSizeMs); this.nWASAPIBufferSizeMs = CConversion.ParseIntInRange(value, 0, 9999, this.nWASAPIBufferSizeMs);
break; break;
case "ASIODevice": { case "ASIODevice": {
string[] asiodev = CEnumerateAllAsioDevices.GetAllASIODevices(); string[] asiodev = CEnumerateAllAsioDevices.GetAllASIODevices();
this.nASIODevice = CConversion.ParseIntInRange(value, 0, asiodev.Length - 1, this.nASIODevice); this.nASIODevice = CConversion.ParseIntInRange(value, 0, asiodev.Length - 1, this.nASIODevice);
break; break;
} }
case "SoundTimerType": case "SoundTimerType":
this.bUseOSTimer = CConversion.bONorOFF(value[0]); this.bUseOSTimer = CConversion.bONorOFF(value[0]);
break; break;
@ -3417,122 +3416,122 @@ namespace OpenTaiko {
private void ProcessSystemKeyAssignmentSection(string key, string value) { private void ProcessSystemKeyAssignmentSection(string key, string value) {
switch (key) { switch (key) {
case "Capture": { case "Capture": {
this.ReadAndSetKey(value, this.KeyAssign.System.Capture); this.ReadAndSetKey(value, this.KeyAssign.System.Capture);
break; break;
} }
case "SongVolumeIncrease": { case "SongVolumeIncrease": {
this.ReadAndSetKey(value, this.KeyAssign.System.SongVolIncrease); this.ReadAndSetKey(value, this.KeyAssign.System.SongVolIncrease);
break; break;
} }
case "SongVolumeDecrease": { case "SongVolumeDecrease": {
this.ReadAndSetKey(value, this.KeyAssign.System.SongVolDecrease); this.ReadAndSetKey(value, this.KeyAssign.System.SongVolDecrease);
break; break;
} }
case "DisplayHits": { case "DisplayHits": {
this.ReadAndSetKey(value, this.KeyAssign.System.DisplayHits); this.ReadAndSetKey(value, this.KeyAssign.System.DisplayHits);
break; break;
} }
case "DisplayDebug": { case "DisplayDebug": {
this.ReadAndSetKey(value, this.KeyAssign.System.DisplayDebug); this.ReadAndSetKey(value, this.KeyAssign.System.DisplayDebug);
break; break;
} }
case "QuickConfig": { case "QuickConfig": {
this.ReadAndSetKey(value, this.KeyAssign.System.QuickConfig); this.ReadAndSetKey(value, this.KeyAssign.System.QuickConfig);
break; break;
} }
case "NewHeya": { case "NewHeya": {
this.ReadAndSetKey(value, this.KeyAssign.System.NewHeya); this.ReadAndSetKey(value, this.KeyAssign.System.NewHeya);
break; break;
} }
case "SortSongs": { case "SortSongs": {
this.ReadAndSetKey(value, this.KeyAssign.System.SortSongs); this.ReadAndSetKey(value, this.KeyAssign.System.SortSongs);
break; break;
} }
case "ToggleAutoP1": { case "ToggleAutoP1": {
this.ReadAndSetKey(value, this.KeyAssign.System.ToggleAutoP1); this.ReadAndSetKey(value, this.KeyAssign.System.ToggleAutoP1);
break; break;
} }
case "ToggleAutoP2": { case "ToggleAutoP2": {
this.ReadAndSetKey(value, this.KeyAssign.System.ToggleAutoP2); this.ReadAndSetKey(value, this.KeyAssign.System.ToggleAutoP2);
break; break;
} }
case "ToggleTrainingMode": { case "ToggleTrainingMode": {
this.ReadAndSetKey(value, this.KeyAssign.System.ToggleTrainingMode); this.ReadAndSetKey(value, this.KeyAssign.System.ToggleTrainingMode);
break; break;
} }
case "CycleVideoDisplayMode": { case "CycleVideoDisplayMode": {
this.ReadAndSetKey(value, this.KeyAssign.System.CycleVideoDisplayMode); this.ReadAndSetKey(value, this.KeyAssign.System.CycleVideoDisplayMode);
break; break;
} }
} }
} }
private void ProcessTrainingKeyAssignmentSection(string key, string value) { private void ProcessTrainingKeyAssignmentSection(string key, string value) {
switch (key) { switch (key) {
case "TrainingIncreaseScrollSpeed": { case "TrainingIncreaseScrollSpeed": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingIncreaseScrollSpeed); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingIncreaseScrollSpeed);
break; break;
} }
case "TrainingDecreaseScrollSpeed": { case "TrainingDecreaseScrollSpeed": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingDecreaseScrollSpeed); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingDecreaseScrollSpeed);
break; break;
} }
case "TrainingIncreaseSongSpeed": { case "TrainingIncreaseSongSpeed": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingIncreaseSongSpeed); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingIncreaseSongSpeed);
break; break;
} }
case "TrainingDecreaseSongSpeed": { case "TrainingDecreaseSongSpeed": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingDecreaseSongSpeed); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingDecreaseSongSpeed);
break; break;
} }
case "TrainingToggleAuto": { case "TrainingToggleAuto": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingToggleAuto); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingToggleAuto);
break; break;
} }
case "TrainingBranchNormal": { case "TrainingBranchNormal": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingBranchNormal); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingBranchNormal);
break; break;
} }
case "TrainingBranchExpert": { case "TrainingBranchExpert": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingBranchExpert); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingBranchExpert);
break; break;
} }
case "TrainingBranchMaster": { case "TrainingBranchMaster": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingBranchMaster); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingBranchMaster);
break; break;
} }
case "TrainingPause": { case "TrainingPause": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingPause); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingPause);
break; break;
} }
case "TrainingBookmark": { case "TrainingBookmark": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingBookmark); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingBookmark);
break; break;
} }
case "TrainingMoveForwardMeasure": { case "TrainingMoveForwardMeasure": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingMoveForwardMeasure); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingMoveForwardMeasure);
break; break;
} }
case "TrainingMoveBackMeasure": { case "TrainingMoveBackMeasure": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingMoveBackMeasure); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingMoveBackMeasure);
break; break;
} }
case "TrainingSkipForwardMeasure": { case "TrainingSkipForwardMeasure": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingSkipForwardMeasure); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingSkipForwardMeasure);
break; break;
} }
case "TrainingSkipBackMeasure": { case "TrainingSkipBackMeasure": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingSkipBackMeasure); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingSkipBackMeasure);
break; break;
} }
case "TrainingJumpToFirstMeasure": { case "TrainingJumpToFirstMeasure": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingJumpToFirstMeasure); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingJumpToFirstMeasure);
break; break;
} }
case "TrainingJumpToLastMeasure": { case "TrainingJumpToLastMeasure": {
this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingJumpToLastMeasure); this.ReadAndSetKey(value, this.KeyAssign.Drums.TrainingJumpToLastMeasure);
break; break;
} }
} }
} }
@ -3563,7 +3562,7 @@ namespace OpenTaiko {
Temp, Temp,
} }
private Dictionary<ESectionType, Action<string, string>> sectionProcess; private Dictionary<ESectionType, Action<string, string>> sectionProcess = new Dictionary<ESectionType, Action<string, string>>();
private bool _bDrumsEnabled; private bool _bDrumsEnabled;
private bool _bGuitarEnabled; private bool _bGuitarEnabled;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,437 +1,433 @@
using System.Diagnostics; using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization.Formatters.Binary;
namespace OpenTaiko { namespace OpenTaiko {
internal class CEnumSongs // #27060 2011.2.7 yyagi 曲リストを取得するクラス internal class CEnumSongs // #27060 2011.2.7 yyagi 曲リストを取得するクラス
{ // ファイルキャッシュ(songslist.db)からの取得と、ディスクからの取得を、この一つのクラスに集約。 { // ファイルキャッシュ(songslist.db)からの取得と、ディスクからの取得を、この一つのクラスに集約。
public CSongs管理 Songs管理 // 曲の探索結果はこのSongs管理に読み込まれる public CSongs管理 Songs管理 // 曲の探索結果はこのSongs管理に読み込まれる
{ {
get; get;
private set; private set;
} }
public bool IsSongListEnumCompletelyDone // 曲リスト探索と、実際の曲リストへの反映が完了した? public bool IsSongListEnumCompletelyDone // 曲リスト探索と、実際の曲リストへの反映が完了した?
{ {
get { get {
return (this.state == DTXEnumState.CompletelyDone); return (this.state == DTXEnumState.CompletelyDone);
} }
} }
public bool IsEnumerating { public bool IsEnumerating {
get { get {
if (thDTXFileEnumerate == null) { if (thDTXFileEnumerate == null) {
return false; return false;
} }
return thDTXFileEnumerate.IsAlive; return thDTXFileEnumerate.IsAlive;
} }
} }
public bool IsSongListEnumerated // 曲リスト探索が完了したが、実際の曲リストへの反映はまだ? public bool IsSongListEnumerated // 曲リスト探索が完了したが、実際の曲リストへの反映はまだ?
{ {
get { get {
return (this.state == DTXEnumState.Enumeratad); return (this.state == DTXEnumState.Enumeratad);
} }
} }
public bool IsSongListEnumStarted // 曲リスト探索開始後?(探索完了も含む) public bool IsSongListEnumStarted // 曲リスト探索開始後?(探索完了も含む)
{ {
get { get {
return (this.state != DTXEnumState.None); return (this.state != DTXEnumState.None);
} }
} }
public void SongListEnumCompletelyDone() { public void SongListEnumCompletelyDone() {
this.state = DTXEnumState.CompletelyDone; this.state = DTXEnumState.CompletelyDone;
this.Songs管理 = null; // GCはOSに任せる this.Songs管理 = null; // GCはOSに任せる
} }
public bool IsSlowdown // #PREMOVIE再生中は検索負荷を落とす public bool IsSlowdown // #PREMOVIE再生中は検索負荷を落とす
{ {
get { get {
return this.Songs管理.bIsSlowdown; return this.Songs管理.bIsSlowdown;
} }
set { set {
this.Songs管理.bIsSlowdown = value; this.Songs管理.bIsSlowdown = value;
} }
} }
public void ChangeEnumeratePriority(ThreadPriority tp) { public void ChangeEnumeratePriority(ThreadPriority tp) {
if (this.thDTXFileEnumerate != null && this.thDTXFileEnumerate.IsAlive == true) { if (this.thDTXFileEnumerate != null && this.thDTXFileEnumerate.IsAlive == true) {
this.thDTXFileEnumerate.Priority = tp; this.thDTXFileEnumerate.Priority = tp;
} }
} }
private readonly string strPathSongsDB = OpenTaiko.strEXEのあるフォルダ + "songs.db"; private readonly string strPathSongsDB = OpenTaiko.strEXEのあるフォルダ + "songs.db";
private readonly string strPathSongList = OpenTaiko.strEXEのあるフォルダ + "songlist.db"; private readonly string strPathSongList = OpenTaiko.strEXEのあるフォルダ + "songlist.db";
public Thread thDTXFileEnumerate { public Thread thDTXFileEnumerate {
get; get;
private set; private set;
} }
private enum DTXEnumState { private enum DTXEnumState {
None, None,
Ongoing, Ongoing,
Suspended, Suspended,
Enumeratad, // 探索完了、現在の曲リストに未反映 Enumeratad, // 探索完了、現在の曲リストに未反映
CompletelyDone // 探索完了、現在の曲リストに反映完了 CompletelyDone // 探索完了、現在の曲リストに反映完了
} }
private DTXEnumState state = DTXEnumState.None; private DTXEnumState state = DTXEnumState.None;
/// <summary> /// <summary>
/// Constractor /// Constractor
/// </summary> /// </summary>
public CEnumSongs() { public CEnumSongs() {
this.Songs管理 = new CSongs管理(); this.Songs管理 = new CSongs管理();
} }
public void Init() { public void Init() {
} }
/// <summary> /// <summary>
/// 曲リストのキャッシュ(songlist.db)取得スレッドの開始 /// 曲リストのキャッシュ(songlist.db)取得スレッドの開始
/// </summary> /// </summary>
public void StartEnumFromCache() { public void StartEnumFromCache() {
this.thDTXFileEnumerate = new Thread(new ThreadStart(this.t曲リストの構築1)); this.thDTXFileEnumerate = new Thread(new ThreadStart(this.t曲リストの構築1));
this.thDTXFileEnumerate.Name = "曲リストの構築"; this.thDTXFileEnumerate.Name = "曲リストの構築";
this.thDTXFileEnumerate.IsBackground = true; this.thDTXFileEnumerate.IsBackground = true;
this.thDTXFileEnumerate.Start(); this.thDTXFileEnumerate.Start();
} }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public delegate void AsyncDelegate(); public delegate void AsyncDelegate();
/// <summary> /// <summary>
/// 曲検索スレッドの開始 /// 曲検索スレッドの開始
/// </summary> /// </summary>
public void StartEnumFromDisk(bool hard_reload = false) { public void StartEnumFromDisk(bool hard_reload = false) {
if (state == DTXEnumState.None || state == DTXEnumState.CompletelyDone) { if (state == DTXEnumState.None || state == DTXEnumState.CompletelyDone) {
Trace.TraceInformation("★曲データ検索スレッドを起動しました。"); Trace.TraceInformation("★曲データ検索スレッドを起動しました。");
lock (this) { lock (this) {
state = DTXEnumState.Ongoing; state = DTXEnumState.Ongoing;
} }
// this.autoReset = new AutoResetEvent( true ); // this.autoReset = new AutoResetEvent( true );
if (this.Songs管理 == null) // Enumerating Songs完了後、CONFIG画面から再スキャンしたときにこうなる if (this.Songs管理 == null) // Enumerating Songs完了後、CONFIG画面から再スキャンしたときにこうなる
{ {
this.Songs管理 = new CSongs管理(); this.Songs管理 = new CSongs管理();
} }
if (hard_reload) if (hard_reload)
this.thDTXFileEnumerate = new Thread(new ThreadStart(this.HardReloadSongList)); this.thDTXFileEnumerate = new Thread(new ThreadStart(this.HardReloadSongList));
else else
this.thDTXFileEnumerate = new Thread(new ThreadStart(this.ReloadSongList)); this.thDTXFileEnumerate = new Thread(new ThreadStart(this.ReloadSongList));
this.thDTXFileEnumerate.Name = "曲リストの構築"; this.thDTXFileEnumerate.Name = "曲リストの構築";
this.thDTXFileEnumerate.IsBackground = true; this.thDTXFileEnumerate.IsBackground = true;
this.thDTXFileEnumerate.Priority = System.Threading.ThreadPriority.Lowest; this.thDTXFileEnumerate.Priority = System.Threading.ThreadPriority.Lowest;
this.thDTXFileEnumerate.Start(); this.thDTXFileEnumerate.Start();
} }
} }
private void HardReloadSongList() { private void HardReloadSongList() {
this.t曲リストの構築2(true); this.t曲リストの構築2(true);
} }
private void ReloadSongList() { private void ReloadSongList() {
this.t曲リストの構築2(false); this.t曲リストの構築2(false);
} }
/// <summary> /// <summary>
/// 曲探索スレッドのサスペンド /// 曲探索スレッドのサスペンド
/// </summary> /// </summary>
public void Suspend() { public void Suspend() {
if (this.state != DTXEnumState.CompletelyDone && if (this.state != DTXEnumState.CompletelyDone &&
((thDTXFileEnumerate.ThreadState & (System.Threading.ThreadState.Background)) != 0)) { ((thDTXFileEnumerate.ThreadState & (System.Threading.ThreadState.Background)) != 0)) {
// this.thDTXFileEnumerate.Suspend(); // obsoleteにつき使用中止 // this.thDTXFileEnumerate.Suspend(); // obsoleteにつき使用中止
this.Songs管理.bIsSuspending = true; this.Songs管理.bIsSuspending = true;
this.state = DTXEnumState.Suspended; this.state = DTXEnumState.Suspended;
Trace.TraceInformation("★曲データ検索スレッドを中断しました。"); Trace.TraceInformation("★曲データ検索スレッドを中断しました。");
} }
} }
/// <summary> /// <summary>
/// 曲探索スレッドのレジューム /// 曲探索スレッドのレジューム
/// </summary> /// </summary>
public void Resume() { public void Resume() {
if (this.state == DTXEnumState.Suspended) { if (this.state == DTXEnumState.Suspended) {
if ((this.thDTXFileEnumerate.ThreadState & (System.Threading.ThreadState.WaitSleepJoin | System.Threading.ThreadState.StopRequested)) != 0) // if ((this.thDTXFileEnumerate.ThreadState & (System.Threading.ThreadState.WaitSleepJoin | System.Threading.ThreadState.StopRequested)) != 0) //
{ {
// this.thDTXFileEnumerate.Resume(); // obsoleteにつき使用中止 // this.thDTXFileEnumerate.Resume(); // obsoleteにつき使用中止
this.Songs管理.bIsSuspending = false; this.Songs管理.bIsSuspending = false;
this.Songs管理.AutoReset.Set(); this.Songs管理.AutoReset.Set();
this.state = DTXEnumState.Ongoing; this.state = DTXEnumState.Ongoing;
Trace.TraceInformation("★曲データ検索スレッドを再開しました。"); Trace.TraceInformation("★曲データ検索スレッドを再開しました。");
} }
} }
} }
/// <summary> /// <summary>
/// 曲探索スレッドにサスペンド指示を出してから、本当にサスペンド状態に遷移するまでの間、ブロックする /// 曲探索スレッドにサスペンド指示を出してから、本当にサスペンド状態に遷移するまでの間、ブロックする
/// 500ms * 10回5秒でタイムアウトし、サスペンド完了して無くてもブロック解除する /// 500ms * 10回5秒でタイムアウトし、サスペンド完了して無くてもブロック解除する
/// </summary> /// </summary>
public void WaitUntilSuspended() { public void WaitUntilSuspended() {
// 曲検索が一時中断されるまで待機 // 曲検索が一時中断されるまで待機
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
if (this.state == DTXEnumState.CompletelyDone || if (this.state == DTXEnumState.CompletelyDone ||
(thDTXFileEnumerate.ThreadState & (System.Threading.ThreadState.WaitSleepJoin | System.Threading.ThreadState.Background | System.Threading.ThreadState.Stopped)) != 0) { (thDTXFileEnumerate.ThreadState & (System.Threading.ThreadState.WaitSleepJoin | System.Threading.ThreadState.Background | System.Threading.ThreadState.Stopped)) != 0) {
break; break;
} }
Trace.TraceInformation("★曲データ検索スレッドの中断待ちです: {0}", this.thDTXFileEnumerate.ThreadState.ToString()); Trace.TraceInformation("★曲データ検索スレッドの中断待ちです: {0}", this.thDTXFileEnumerate.ThreadState.ToString());
Thread.Sleep(500); Thread.Sleep(500);
} }
} }
/// <summary> /// <summary>
/// 曲探索スレッドを強制終了する /// 曲探索スレッドを強制終了する
/// </summary> /// </summary>
public void Abort() { public void Abort() {
if (thDTXFileEnumerate != null) { if (thDTXFileEnumerate != null) {
thDTXFileEnumerate.Abort(); thDTXFileEnumerate.Abort();
thDTXFileEnumerate = null; thDTXFileEnumerate = null;
this.state = DTXEnumState.None; this.state = DTXEnumState.None;
this.Songs管理 = null; // Songs管理を再初期化する (途中まで作った曲リストの最後に、一から重複して追記することにならないようにする。) this.Songs管理 = null; // Songs管理を再初期化する (途中まで作った曲リストの最後に、一から重複して追記することにならないようにする。)
this.Songs管理 = new CSongs管理(); this.Songs管理 = new CSongs管理();
} }
} }
/// <summary> /// <summary>
/// songlist.dbからの曲リスト構築 /// songlist.dbからの曲リスト構築
/// </summary> /// </summary>
public void t曲リストの構築1() { public void t曲リストの構築1() {
// !注意! // !注意!
// 本メソッドは別スレッドで動作するが、プラグイン側でカレントディレクトリを変更しても大丈夫なように、 // 本メソッドは別スレッドで動作するが、プラグイン側でカレントディレクトリを変更しても大丈夫なように、
// すべてのファイルアクセスは「絶対パス」で行うこと。(2010.9.16) // すべてのファイルアクセスは「絶対パス」で行うこと。(2010.9.16)
// 構築が完了したら、DTXEnumerateState state を DTXEnumerateState.Done にすること。(2012.2.9) // 構築が完了したら、DTXEnumerateState state を DTXEnumerateState.Done にすること。(2012.2.9)
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
try { try {
#region [ 0) ] #region [ 0) ]
//----------------------------- //-----------------------------
OpenTaiko.stage起動.ePhaseID = CStage.EPhase.Startup_0_CreateSystemSound; OpenTaiko.stage起動.ePhaseID = CStage.EPhase.Startup_0_CreateSystemSound;
Trace.TraceInformation("0) システムサウンドを構築します。"); Trace.TraceInformation("0) システムサウンドを構築します。");
Trace.Indent(); Trace.Indent();
try { try {
OpenTaiko.Skin.bgm起動画面.tPlay(); OpenTaiko.Skin.bgm起動画面.tPlay();
for (int i = 0; i < OpenTaiko.Skin.nシステムサウンド数; i++) { for (int i = 0; i < OpenTaiko.Skin.nシステムサウンド数; i++) {
if (!OpenTaiko.Skin[i].bExclusive) // BGM系以外のみ読み込む。(BGM系は必要になったときに読み込む) if (!OpenTaiko.Skin[i].bExclusive) // BGM系以外のみ読み込む。(BGM系は必要になったときに読み込む)
{ {
CSkin.CSystemSound cシステムサウンド = OpenTaiko.Skin[i]; CSkin.CSystemSound cシステムサウンド = OpenTaiko.Skin[i];
if (!OpenTaiko.bコンパクトモード || cシステムサウンド.bCompact対象) { if (cシステムサウンド.bCompact対象) {
try { try {
cシステムサウンド.tLoading(); cシステムサウンド.tLoading();
Trace.TraceInformation("システムサウンドを読み込みました。({0})", cシステムサウンド.strFileName); Trace.TraceInformation("システムサウンドを読み込みました。({0})", cシステムサウンド.strFileName);
//if ( ( cシステムサウンド == CDTXMania.Skin.bgm起動画面 ) && cシステムサウンド.b読み込み成功 ) //if ( ( cシステムサウンド == CDTXMania.Skin.bgm起動画面 ) && cシステムサウンド.b読み込み成功 )
//{ //{
// cシステムサウンド.t再生する(); // cシステムサウンド.t再生する();
//} //}
} catch (FileNotFoundException) { } catch (FileNotFoundException) {
Trace.TraceWarning("システムサウンドが存在しません。({0})", cシステムサウンド.strFileName); Trace.TraceWarning("システムサウンドが存在しません。({0})", cシステムサウンド.strFileName);
} catch (Exception e) { } catch (Exception e) {
Trace.TraceWarning(e.ToString()); Trace.TraceWarning(e.ToString());
Trace.TraceWarning("システムサウンドの読み込みに失敗しました。({0})", cシステムサウンド.strFileName); Trace.TraceWarning("システムサウンドの読み込みに失敗しました。({0})", cシステムサウンド.strFileName);
} }
} }
} }
} }
lock (OpenTaiko.stage起動.list進行文字列) { lock (OpenTaiko.stage起動.list進行文字列) {
OpenTaiko.stage起動.list進行文字列.Add("SYSTEM SOUND...OK"); OpenTaiko.stage起動.list進行文字列.Add("SYSTEM SOUND...OK");
} }
} finally { } finally {
Trace.Unindent(); Trace.Unindent();
} }
//----------------------------- //-----------------------------
#endregion #endregion
if (OpenTaiko.bコンパクトモード) { } finally {
Trace.TraceInformation("コンパクトモードなので残りの起動処理は省略します。"); OpenTaiko.stage起動.ePhaseID = CStage.EPhase.Startup_6_LoadTextures;
return; TimeSpan span = (TimeSpan)(DateTime.Now - now);
} Trace.TraceInformation("起動所要時間: {0}", span.ToString());
} finally { lock (this) // #28700 2012.6.12 yyagi; state change must be in finally{} for exiting as of compact mode.
OpenTaiko.stage起動.ePhaseID = CStage.EPhase.Startup_6_LoadTextures; {
TimeSpan span = (TimeSpan)(DateTime.Now - now); state = DTXEnumState.CompletelyDone;
Trace.TraceInformation("起動所要時間: {0}", span.ToString()); }
lock (this) // #28700 2012.6.12 yyagi; state change must be in finally{} for exiting as of compact mode. }
{ }
state = DTXEnumState.CompletelyDone;
}
} /// <summary>
} /// 起動してタイトル画面に遷移した後にバックグラウンドで発生させる曲検索
/// #27060 2012.2.6 yyagi
/// </summary>
/// <summary> private void t曲リストの構築2(bool hard_reload = false) {
/// 起動してタイトル画面に遷移した後にバックグラウンドで発生させる曲検索 // !注意!
/// #27060 2012.2.6 yyagi // 本メソッドは別スレッドで動作するが、プラグイン側でカレントディレクトリを変更しても大丈夫なように、
/// </summary> // すべてのファイルアクセスは「絶対パス」で行うこと。(2010.9.16)
private void t曲リストの構築2(bool hard_reload = false) { // 構築が完了したら、DTXEnumerateState state を DTXEnumerateState.Done にすること。(2012.2.9)
// !注意!
// 本メソッドは別スレッドで動作するが、プラグイン側でカレントディレクトリを変更しても大丈夫なように、 DateTime now = DateTime.Now;
// すべてのファイルアクセスは「絶対パス」で行うこと。(2010.9.16)
// 構築が完了したら、DTXEnumerateState state を DTXEnumerateState.Done にすること。(2012.2.9) try {
if (hard_reload) {
DateTime now = DateTime.Now; if (File.Exists($"{OpenTaiko.strEXEのあるフォルダ}songlist.db"))
File.Delete($"{OpenTaiko.strEXEのあるフォルダ}songlist.db");
try { }
if (hard_reload) { Deserialize();
if (File.Exists($"{OpenTaiko.strEXEのあるフォルダ}songlist.db"))
File.Delete($"{OpenTaiko.strEXEのあるフォルダ}songlist.db"); #region [ 2) ]
} //-----------------------------
Deserialize(); // base.eフェーズID = CStage.Eフェーズ.起動2_曲を検索してリストを作成する;
#region [ 2) ] Trace.TraceInformation("enum2) 曲データを検索します。");
//----------------------------- Trace.Indent();
// base.eフェーズID = CStage.Eフェーズ.起動2_曲を検索してリストを作成する;
try {
Trace.TraceInformation("enum2) 曲データを検索します。"); if (!string.IsNullOrEmpty(OpenTaiko.ConfigIni.strSongsPath)) {
Trace.Indent(); CSongDict.tClearSongNodes();
string[] strArray = OpenTaiko.ConfigIni.strSongsPath.Split(new char[] { ';' });
try { if (strArray.Length > 0) {
if (!string.IsNullOrEmpty(OpenTaiko.ConfigIni.strSongsPath)) { // 全パスについて…
CSongDict.tClearSongNodes(); foreach (string str in strArray) {
string[] strArray = OpenTaiko.ConfigIni.strSongsPath.Split(new char[] { ';' }); string path = str;
if (strArray.Length > 0) { if (!Path.IsPathRooted(path)) {
// 全パスについて… path = OpenTaiko.strEXEのあるフォルダ + str; // 相対パスの場合、絶対パスに直す(2010.9.16)
foreach (string str in strArray) { }
string path = str;
if (!Path.IsPathRooted(path)) { if (!string.IsNullOrEmpty(path)) {
path = OpenTaiko.strEXEのあるフォルダ + str; // 相対パスの場合、絶対パスに直す(2010.9.16) Trace.TraceInformation("検索パス: " + path);
} Trace.Indent();
if (!string.IsNullOrEmpty(path)) { try {
Trace.TraceInformation("検索パス: " + path); this.Songs管理.t曲を検索してリストを作成する(path, true);
Trace.Indent(); } catch (Exception e) {
Trace.TraceError(e.ToString());
try { Trace.TraceError("例外が発生しましたが処理を継続します。 (105fd674-e722-4a4e-bd9a-e6f82ac0b1d3)");
this.Songs管理.t曲を検索してリストを作成する(path, true); } finally {
} catch (Exception e) { Trace.Unindent();
Trace.TraceError(e.ToString()); }
Trace.TraceError("例外が発生しましたが処理を継続します。 (105fd674-e722-4a4e-bd9a-e6f82ac0b1d3)"); }
} finally { }
Trace.Unindent(); }
} } else {
} Trace.TraceWarning("曲データの検索パス(TJAPath)の指定がありません。");
} }
} } finally {
} else { Trace.TraceInformation("曲データの検索を完了しました。[{0}曲{1}スコア]", this.Songs管理.n検索された曲ード数, this.Songs管理.n検索されたスコア数);
Trace.TraceWarning("曲データの検索パス(TJAPath)の指定がありません。"); Trace.Unindent();
} }
} finally { // lock ( this.list進行文字列 )
Trace.TraceInformation("曲データの検索を完了しました。[{0}曲{1}スコア]", this.Songs管理.n検索された曲ード数, this.Songs管理.n検索されたスコア数); // {
Trace.Unindent(); // this.list進行文字列.Add( string.Format( "{0} ... {1} scores ({2} songs)", "Enumerating songs", this..Songs管理_裏読.n検索されたスコア数, this.Songs管理_裏読.n検索された曲ード数 ) );
} // }
// lock ( this.list進行文字列 ) //-----------------------------
// { #endregion
// this.list進行文字列.Add( string.Format( "{0} ... {1} scores ({2} songs)", "Enumerating songs", this..Songs管理_裏読.n検索されたスコア数, this.Songs管理_裏読.n検索された曲ード数 ) ); #region [ 4) songs.db ]
// } //-----------------------------
//----------------------------- // base.eフェーズID = CStage.Eフェーズ.起動4_スコアキャッシュになかった曲をファイルから読み込んで反映する;
#endregion
#region [ 4) songs.db ] /*
//----------------------------- int num2 = this.Songs管理.n検索されたスコア数 - this.Songs管理.nスコアキャッシュから反映できたスコア数;
// base.eフェーズID = CStage.Eフェーズ.起動4_スコアキャッシュになかった曲をファイルから読み込んで反映する;
Trace.TraceInformation( "{0}, {1}", this.Songs管理.n検索されたスコア数, this.Songs管理.nスコアキャッシュから反映できたスコア数 );
/* Trace.TraceInformation( "enum4) songs.db になかった曲データ[{0}スコア]の情報をファイルから読み込んで反映します。", num2 );
int num2 = this.Songs管理.n検索されたスコア数 - this.Songs管理.nスコアキャッシュから反映できたスコア数; Trace.Indent();
Trace.TraceInformation( "{0}, {1}", this.Songs管理.n検索されたスコア数, this.Songs管理.nスコアキャッシュから反映できたスコア数 ); try
Trace.TraceInformation( "enum4) songs.db になかった曲データ[{0}スコア]の情報をファイルから読み込んで反映します。", num2 ); {
Trace.Indent(); this.Songs管理.tSongsDBになかった曲をファイルから読み込んで反映する();
}
try catch ( Exception e )
{ {
this.Songs管理.tSongsDBになかった曲をファイルから読み込んで反映する(); Trace.TraceError( e.ToString() );
} Trace.TraceError( "例外が発生しましたが処理を継続します。 (276bb40f-6406-40c1-9f03-e2a9869dbc88)" );
catch ( Exception e ) }
{ finally
Trace.TraceError( e.ToString() ); {
Trace.TraceError( "例外が発生しましたが処理を継続します。 (276bb40f-6406-40c1-9f03-e2a9869dbc88)" ); Trace.TraceInformation( "曲データへの反映を完了しました。[{0}/{1}スコア]", this.Songs管理.nファイルから反映できたスコア数, num2 );
} Trace.Unindent();
finally }
{ // lock ( this.list進行文字列 )
Trace.TraceInformation( "曲データへの反映を完了しました。[{0}/{1}スコア]", this.Songs管理.nファイルから反映できたスコア数, num2 ); // {
Trace.Unindent(); // this.list進行文字列.Add( string.Format( "{0} ... {1}/{2}", "Loading score properties from files", CDTXMania.Songs管理_裏読.nファイルから反映できたスコア数, CDTXMania.Songs管理_裏読.n検索されたスコア数 - cs.nスコアキャッシュから反映できたスコア数 ) );
} // }
// lock ( this.list進行文字列 ) */
// { //-----------------------------
// this.list進行文字列.Add( string.Format( "{0} ... {1}/{2}", "Loading score properties from files", CDTXMania.Songs管理_裏読.nファイルから反映できたスコア数, CDTXMania.Songs管理_裏読.n検索されたスコア数 - cs.nスコアキャッシュから反映できたスコア数 ) ); #endregion
// } #region [ 5) ]
*/ //-----------------------------
//----------------------------- // base.eフェーズID = CStage.Eフェーズ.起動5_曲リストへ後処理を適用する;
#endregion
#region [ 5) ] Trace.TraceInformation("enum5) 曲リストへの後処理を適用します。");
//----------------------------- Trace.Indent();
// base.eフェーズID = CStage.Eフェーズ.起動5_曲リストへ後処理を適用する;
try {
Trace.TraceInformation("enum5) 曲リストへの後処理を適用します。"); this.Songs管理.t曲リストへ後処理を適用する();
Trace.Indent(); } catch (Exception e) {
Trace.TraceError(e.ToString());
try { Trace.TraceError("例外が発生しましたが処理を継続します。 (6480ffa0-1cc1-40d4-9cc9-aceeecd0264b)");
this.Songs管理.t曲リストへ後処理を適用する(); } finally {
} catch (Exception e) { Trace.TraceInformation("曲リストへの後処理を完了しました。");
Trace.TraceError(e.ToString()); Trace.Unindent();
Trace.TraceError("例外が発生しましたが処理を継続します。 (6480ffa0-1cc1-40d4-9cc9-aceeecd0264b)"); }
} finally { // lock ( this.list進行文字列 )
Trace.TraceInformation("曲リストへの後処理を完了しました。"); // {
Trace.Unindent(); // this.list進行文字列.Add( string.Format( "{0} ... OK", "Building songlists" ) );
} // }
// lock ( this.list進行文字列 ) //-----------------------------
// { #endregion
// this.list進行文字列.Add( string.Format( "{0} ... OK", "Building songlists" ) );
// } // if ( !bSucceededFastBoot ) // songs2.db読み込みに成功したなら、songs2.dbを新たに作らない
//----------------------------- #region [ 7) songs2.db ] // #27060 2012.1.26 yyagi
#endregion Trace.TraceInformation("enum7) 曲データの情報を songlist.db へ出力します。");
Trace.Indent();
// if ( !bSucceededFastBoot ) // songs2.db読み込みに成功したなら、songs2.dbを新たに作らない
#region [ 7) songs2.db ] // #27060 2012.1.26 yyagi SerializeSongList();
Trace.TraceInformation("enum7) 曲データの情報を songlist.db へ出力します。"); Trace.TraceInformation("songlist.db への出力を完了しました。");
Trace.Indent(); Trace.Unindent();
//-----------------------------
SerializeSongList(); #endregion
Trace.TraceInformation("songlist.db への出力を完了しました。"); // }
Trace.Unindent();
//----------------------------- } finally {
#endregion // base.eフェーズID = CStage.Eフェーズ.起動7_完了;
// } TimeSpan span = (TimeSpan)(DateTime.Now - now);
Trace.TraceInformation("曲探索所要時間: {0}", span.ToString());
} finally { }
// base.eフェーズID = CStage.Eフェーズ.起動7_完了; lock (this) {
TimeSpan span = (TimeSpan)(DateTime.Now - now); // state = DTXEnumState.Done; // DoneにするのはCDTXMania.cs側にて。
Trace.TraceInformation("曲探索所要時間: {0}", span.ToString()); state = DTXEnumState.Enumeratad;
} }
lock (this) { }
// state = DTXEnumState.Done; // DoneにするのはCDTXMania.cs側にて。
state = DTXEnumState.Enumeratad;
} #pragma warning disable SYSLIB0011
} /// <summary>
/// 曲リストのserialize
/// </summary>
#pragma warning disable SYSLIB0011 private void SerializeSongList() {
/// <summary> BinaryFormatter songlistdb_ = new BinaryFormatter();
/// 曲リストのserialize using Stream songlistdb = File.OpenWrite($"{OpenTaiko.strEXEのあるフォルダ}songlist.db");
/// </summary> songlistdb_.Serialize(songlistdb, Songs管理.listSongsDB);
private void SerializeSongList() { }
BinaryFormatter songlistdb_ = new BinaryFormatter();
using Stream songlistdb = File.OpenWrite($"{OpenTaiko.strEXEのあるフォルダ}songlist.db"); /// <summary>
songlistdb_.Serialize(songlistdb, Songs管理.listSongsDB); /// 曲リストのdeserialize
} /// </summary>
/// <param name="songs管理"></param>
/// <summary> /// <param name="strPathSongList"></param>
/// 曲リストのdeserialize public void Deserialize() {
/// </summary> try {
/// <param name="songs管理"></param> if (File.Exists($"{OpenTaiko.strEXEのあるフォルダ}songlist.db")) {
/// <param name="strPathSongList"></param> BinaryFormatter songlistdb_ = new BinaryFormatter();
public void Deserialize() { using Stream songlistdb = File.OpenRead($"{OpenTaiko.strEXEのあるフォルダ}songlist.db");
try { this.Songs管理.listSongsDB = (Dictionary<string, CSongListNode>)songlistdb_.Deserialize(songlistdb);
if (File.Exists($"{OpenTaiko.strEXEのあるフォルダ}songlist.db")) { }
BinaryFormatter songlistdb_ = new BinaryFormatter(); } catch (Exception exception) {
using Stream songlistdb = File.OpenRead($"{OpenTaiko.strEXEのあるフォルダ}songlist.db"); this.Songs管理.listSongsDB = new();
this.Songs管理.listSongsDB = (Dictionary<string, CSongListNode>)songlistdb_.Deserialize(songlistdb); } finally {
} }
} catch (Exception exception) { }
this.Songs管理.listSongsDB = new(); #pragma warning restore SYSLIB0011
} finally { }
} }
}
#pragma warning restore SYSLIB0011
}
}

View File

@ -2,20 +2,20 @@
using FDK; using FDK;
namespace OpenTaiko { namespace OpenTaiko {
internal class CStage曲読み込み : CStage { internal class CStage曲読み込み : CStage {
// コンストラクタ // コンストラクタ
public CStage曲読み込み() { public CStage曲読み込み() {
base.eStageID = CStage.EStage.SongLoading; base.eStageID = CStage.EStage.SongLoading;
base.ePhaseID = CStage.EPhase.Common_NORMAL; base.ePhaseID = CStage.EPhase.Common_NORMAL;
base.IsDeActivated = true; base.IsDeActivated = true;
//base.list子Activities.Add( this.actFI = new CActFIFOBlack() ); // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略 //base.list子Activities.Add( this.actFI = new CActFIFOBlack() ); // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略
//base.list子Activities.Add( this.actFO = new CActFIFOBlack() ); //base.list子Activities.Add( this.actFO = new CActFIFOBlack() );
} }
// CStage 実装 // CStage 実装
public override void Activate() { public override void Activate() {
Trace.TraceInformation("曲読み込みステージを活性化します。"); Trace.TraceInformation("曲読み込みステージを活性化します。");
Trace.Indent(); Trace.Indent();
@ -33,41 +33,27 @@ namespace OpenTaiko {
OpenTaiko.ConfigIni.bTokkunMode = false; OpenTaiko.ConfigIni.bTokkunMode = false;
} }
if (OpenTaiko.bコンパクトモード) { string strDTXファイルパス = OpenTaiko.stageSongSelect.r確定されたスコア..;
string strDTXファイルパス = OpenTaiko.strコンパクトモードファイル;
CDTX cdtx = new CDTX(strDTXファイルパス, true, 1.0, 0, 0); var strフォルダ名 = Path.GetDirectoryName(strDTXファイルパス) + Path.DirectorySeparatorChar;
if (File.Exists(cdtx.strフォルダ名 + @"set.def")) if (File.Exists(strフォルダ名 + @"set.def")) {
cdtx = new CDTX(strDTXファイルパス, true, 1.0, 0, 1); var cdtx = new CDTX(strDTXファイルパス, true, 1.0, 0, 1);
this.str曲タイトル = cdtx.TITLE.GetString(""); this.str曲タイトル = cdtx.TITLE.GetString("");
this.strサブタイトル = cdtx.SUBTITLE.GetString(""); this.strサブタイトル = cdtx.SUBTITLE.GetString("");
cdtx.DeActivate(); cdtx.DeActivate();
} else { } else {
string strDTXファイルパス = OpenTaiko.stageSongSelect.r確定されたスコア..; var = OpenTaiko.stageSongSelect.r確定されたスコア.;
this.str曲タイトル = .;
var strフォルダ名 = Path.GetDirectoryName(strDTXファイルパス) + Path.DirectorySeparatorChar; this.strサブタイトル = .strサブタイトル;
}
if (File.Exists(strフォルダ名 + @"set.def")) {
var cdtx = new CDTX(strDTXファイルパス, true, 1.0, 0, 1); // For the moment, detect that we are performing
// calibration via there being an actual single
this.str曲タイトル = cdtx.TITLE.GetString(""); // player and the special song title and subtitle
this.strサブタイトル = cdtx.SUBTITLE.GetString(""); // of the .tja used to perform input calibration
cdtx.DeActivate();
} else {
var = OpenTaiko.stageSongSelect.r確定されたスコア.;
this.str曲タイトル = .;
this.strサブタイトル = .strサブタイトル;
}
}
// For the moment, detect that we are performing
// calibration via there being an actual single
// player and the special song title and subtitle
// of the .tja used to perform input calibration
OpenTaiko.IsPerformingCalibration = OpenTaiko.IsPerformingCalibration =
!OpenTaiko.ConfigIni.bAutoPlay[0] && !OpenTaiko.ConfigIni.bAutoPlay[0] &&
OpenTaiko.ConfigIni.nPlayerCount == 1 && OpenTaiko.ConfigIni.nPlayerCount == 1 &&
@ -85,11 +71,11 @@ namespace OpenTaiko {
this.ct待機 = new CCounter(0, wait, 5, OpenTaiko.Timer); this.ct待機 = new CCounter(0, wait, 5, OpenTaiko.Timer);
this.ct曲名表示 = new CCounter(1, 30, 30, OpenTaiko.Timer); this.ct曲名表示 = new CCounter(1, 30, 30, OpenTaiko.Timer);
try { try {
// When performing calibration, inform the player that // When performing calibration, inform the player that
// calibration is about to begin, rather than // calibration is about to begin, rather than
// displaying the song title and subtitle as usual. // displaying the song title and subtitle as usual.
var = OpenTaiko.IsPerformingCalibration var = OpenTaiko.IsPerformingCalibration
? "Input calibration is about to begin." ? "Input calibration is about to begin."
: this.str曲タイトル; : this.str曲タイトル;
@ -98,11 +84,11 @@ namespace OpenTaiko {
? "Please play as accurately as possible." ? "Please play as accurately as possible."
: this.strサブタイトル; : this.strサブタイトル;
if (!string.IsNullOrEmpty()) { if (!string.IsNullOrEmpty()) {
//this.txタイトル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat ); //this.txタイトル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );
//this.txタイトル.vc拡大縮小倍率 = new Vector3( 0.5f, 0.5f, 1f ); //this.txタイトル.vc拡大縮小倍率 = new Vector3( 0.5f, 0.5f, 1f );
using (var bmpSongTitle = this.pfTITLE.DrawText(, OpenTaiko.Skin.SongLoading_Title_ForeColor, OpenTaiko.Skin.SongLoading_Title_BackColor, null, 30)) { using (var bmpSongTitle = this.pfTITLE.DrawText(, OpenTaiko.Skin.SongLoading_Title_ForeColor, OpenTaiko.Skin.SongLoading_Title_BackColor, null, 30)) {
this.txタイトル = new CTexture(bmpSongTitle); this.txタイトル = new CTexture(bmpSongTitle);
txタイトル.vcScaleRatio.X = OpenTaiko.GetSongNameXScaling(ref txタイトル, OpenTaiko.Skin.SongLoading_Title_MaxSize); txタイトル.vcScaleRatio.X = OpenTaiko.GetSongNameXScaling(ref txタイトル, OpenTaiko.Skin.SongLoading_Title_MaxSize);
@ -135,8 +121,8 @@ namespace OpenTaiko {
Trace.TraceInformation("曲読み込みステージを非活性化します。"); Trace.TraceInformation("曲読み込みステージを非活性化します。");
Trace.Indent(); Trace.Indent();
try { try {
OpenTaiko.tテクスチャの解放(ref this.txタイトル); OpenTaiko.tテクスチャの解放(ref this.txタイトル);
//CDTXMania.tテクスチャの解放( ref this.txSongnamePlate ); //CDTXMania.tテクスチャの解放( ref this.txSongnamePlate );
OpenTaiko.tテクスチャの解放(ref this.txサブタイトル); OpenTaiko.tテクスチャの解放(ref this.txサブタイトル);
base.DeActivate(); base.DeActivate();
} finally { } finally {
@ -150,8 +136,8 @@ namespace OpenTaiko {
pfDanTitle = HPrivateFastFont.tInstantiateMainFont(OpenTaiko.Skin.Game_DanC_Title_Size); pfDanTitle = HPrivateFastFont.tInstantiateMainFont(OpenTaiko.Skin.Game_DanC_Title_Size);
pfDanSubTitle = HPrivateFastFont.tInstantiateMainFont(OpenTaiko.Skin.Game_DanC_SubTitle_Size); pfDanSubTitle = HPrivateFastFont.tInstantiateMainFont(OpenTaiko.Skin.Game_DanC_SubTitle_Size);
this.tx背景 = OpenTaiko.tテクスチャの生成(this.strSTAGEFILE, false); this.tx背景 = OpenTaiko.tテクスチャの生成(this.strSTAGEFILE, false);
//this.txSongnamePlate = CDTXMania.tテクスチャの生成( CSkin.Path( @$"Graphics{Path.DirectorySeparatorChar}6_SongnamePlate.png" ) ); //this.txSongnamePlate = CDTXMania.tテクスチャの生成( CSkin.Path( @$"Graphics{Path.DirectorySeparatorChar}6_SongnamePlate.png" ) );
base.CreateManagedResource(); base.CreateManagedResource();
} }
public override void ReleaseManagedResource() { public override void ReleaseManagedResource() {
@ -168,10 +154,10 @@ namespace OpenTaiko {
string str; string str;
if (base.IsDeActivated) if (base.IsDeActivated)
return 0; return 0;
#region [ ] #region [ ]
//----------------------------- //-----------------------------
if (base.IsFirstDraw) { if (base.IsFirstDraw) {
Cスコア cスコア1 = OpenTaiko.stageSongSelect.r確定されたスコア; Cスコア cスコア1 = OpenTaiko.stageSongSelect.r確定されたスコア;
if (this.sd読み込み音 != null) { if (this.sd読み込み音 != null) {
@ -185,17 +171,17 @@ namespace OpenTaiko {
OpenTaiko.Skin.sound曲読込開始音.tPlay(); OpenTaiko.Skin.sound曲読込開始音.tPlay();
this.nBGM再生開始時刻 = SoundManager.PlayTimer.NowTime; this.nBGM再生開始時刻 = SoundManager.PlayTimer.NowTime;
this.nBGMの総再生時間ms = OpenTaiko.Skin.sound曲読込開始音.n長さ_現在のサウンド; this.nBGMの総再生時間ms = OpenTaiko.Skin.sound曲読込開始音.n長さ_現在のサウンド;
} }
//this.actFI.tフェードイン開始(); // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略 //this.actFI.tフェードイン開始(); // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略
base.ePhaseID = CStage.EPhase.Common_FADEIN; base.ePhaseID = CStage.EPhase.Common_FADEIN;
base.IsFirstDraw = false; base.IsFirstDraw = false;
nWAVcount = 1; nWAVcount = 1;
} }
//----------------------------- //-----------------------------
#endregion #endregion
this.ct待機.Tick(); this.ct待機.Tick();
#region [ Cancel loading with esc ] #region [ Cancel loading with esc ]
if (tキー入力()) { if (tキー入力()) {
if (this.sd読み込み音 != null) { if (this.sd読み込み音 != null) {
@ -203,13 +189,13 @@ namespace OpenTaiko {
this.sd読み込み音.tDispose(); this.sd読み込み音.tDispose();
} }
return (int)ESongLoadingScreenReturnValue.LoadCanceled; return (int)ESongLoadingScreenReturnValue.LoadCanceled;
} }
#endregion #endregion
if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan) { if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan) {
void drawPlate() { void drawPlate() {
if (OpenTaiko.Tx.SongLoading_Plate != null) { if (OpenTaiko.Tx.SongLoading_Plate != null) {
OpenTaiko.Tx.SongLoading_Plate.bスクリーン合成 = OpenTaiko.Skin.SongLoading_Plate_ScreenBlend; //あまりにも出番が無い OpenTaiko.Tx.SongLoading_Plate.bスクリーン合成 = OpenTaiko.Skin.SongLoading_Plate_ScreenBlend; //あまりにも出番が無い
OpenTaiko.Tx.SongLoading_Plate.Opacity = 255; OpenTaiko.Tx.SongLoading_Plate.Opacity = 255;
if (OpenTaiko.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Left) { if (OpenTaiko.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Left) {
OpenTaiko.Tx.SongLoading_Plate.t2D描画(OpenTaiko.Skin.SongLoading_Plate_X, OpenTaiko.Skin.SongLoading_Plate_Y - (OpenTaiko.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); OpenTaiko.Tx.SongLoading_Plate.t2D描画(OpenTaiko.Skin.SongLoading_Plate_X, OpenTaiko.Skin.SongLoading_Plate_Y - (OpenTaiko.Tx.SongLoading_Plate.sz画像サイズ.Height / 2));
@ -218,10 +204,10 @@ namespace OpenTaiko {
} else { } else {
OpenTaiko.Tx.SongLoading_Plate.t2D描画(OpenTaiko.Skin.SongLoading_Plate_X - (OpenTaiko.Tx.SongLoading_Plate.sz画像サイズ.Width / 2), OpenTaiko.Skin.SongLoading_Plate_Y - (OpenTaiko.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); OpenTaiko.Tx.SongLoading_Plate.t2D描画(OpenTaiko.Skin.SongLoading_Plate_X - (OpenTaiko.Tx.SongLoading_Plate.sz画像サイズ.Width / 2), OpenTaiko.Skin.SongLoading_Plate_Y - (OpenTaiko.Tx.SongLoading_Plate.sz画像サイズ.Height / 2));
} }
} }
//CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.灰, C変換.nParsentTo255( ( this.ct曲名表示.n現在の値 / 30.0 ) ).ToString() ); //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.灰, C変換.nParsentTo255( ( this.ct曲名表示.n現在の値 / 30.0 ) ).ToString() );
int y = 720 - 45; int y = 720 - 45;
if (this.txタイトル != null) { if (this.txタイトル != null) {
int nサブタイトル補正 = string.IsNullOrEmpty(OpenTaiko.stageSongSelect.r確定されたスコア..strサブタイトル) ? 15 : 0; int nサブタイトル補正 = string.IsNullOrEmpty(OpenTaiko.stageSongSelect.r確定されたスコア..strサブタイトル) ? 15 : 0;
@ -249,7 +235,7 @@ namespace OpenTaiko {
void drawPlate_AI() { void drawPlate_AI() {
if (OpenTaiko.Tx.SongLoading_Plate_AI != null) { if (OpenTaiko.Tx.SongLoading_Plate_AI != null) {
OpenTaiko.Tx.SongLoading_Plate_AI.bスクリーン合成 = OpenTaiko.Skin.SongLoading_Plate_ScreenBlend; //あまりにも出番が無い OpenTaiko.Tx.SongLoading_Plate_AI.bスクリーン合成 = OpenTaiko.Skin.SongLoading_Plate_ScreenBlend; //あまりにも出番が無い
OpenTaiko.Tx.SongLoading_Plate_AI.Opacity = 255; OpenTaiko.Tx.SongLoading_Plate_AI.Opacity = 255;
if (OpenTaiko.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Left) { if (OpenTaiko.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Left) {
OpenTaiko.Tx.SongLoading_Plate_AI.t2D描画(OpenTaiko.Skin.SongLoading_Plate_X_AI, OpenTaiko.Skin.SongLoading_Plate_Y_AI - (OpenTaiko.Tx.SongLoading_Plate_AI.sz画像サイズ.Height / 2)); OpenTaiko.Tx.SongLoading_Plate_AI.t2D描画(OpenTaiko.Skin.SongLoading_Plate_X_AI, OpenTaiko.Skin.SongLoading_Plate_Y_AI - (OpenTaiko.Tx.SongLoading_Plate_AI.sz画像サイズ.Height / 2));
@ -258,10 +244,10 @@ namespace OpenTaiko {
} else { } else {
OpenTaiko.Tx.SongLoading_Plate_AI.t2D描画(OpenTaiko.Skin.SongLoading_Plate_X_AI - (OpenTaiko.Tx.SongLoading_Plate_AI.sz画像サイズ.Width / 2), OpenTaiko.Skin.SongLoading_Plate_Y_AI - (OpenTaiko.Tx.SongLoading_Plate_AI.sz画像サイズ.Height / 2)); OpenTaiko.Tx.SongLoading_Plate_AI.t2D描画(OpenTaiko.Skin.SongLoading_Plate_X_AI - (OpenTaiko.Tx.SongLoading_Plate_AI.sz画像サイズ.Width / 2), OpenTaiko.Skin.SongLoading_Plate_Y_AI - (OpenTaiko.Tx.SongLoading_Plate_AI.sz画像サイズ.Height / 2));
} }
} }
//CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.灰, C変換.nParsentTo255( ( this.ct曲名表示.n現在の値 / 30.0 ) ).ToString() ); //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.灰, C変換.nParsentTo255( ( this.ct曲名表示.n現在の値 / 30.0 ) ).ToString() );
int y = 720 - 45; int y = 720 - 45;
if (this.txタイトル != null) { if (this.txタイトル != null) {
int nサブタイトル補正 = string.IsNullOrEmpty(OpenTaiko.stageSongSelect.r確定されたスコア..strサブタイトル) ? 15 : 0; int nサブタイトル補正 = string.IsNullOrEmpty(OpenTaiko.stageSongSelect.r確定されたスコア..strサブタイトル) ? 15 : 0;
@ -285,15 +271,15 @@ namespace OpenTaiko {
this.txサブタイトル.t2D描画((OpenTaiko.Skin.SongLoading_SubTitle_X_AI - ((this.txサブタイトル.sz画像サイズ.Width * txサブタイトル.vcScaleRatio.X) / 2)), OpenTaiko.Skin.SongLoading_SubTitle_Y_AI - (this.txサブタイトル.sz画像サイズ.Height / 2)); this.txサブタイトル.t2D描画((OpenTaiko.Skin.SongLoading_SubTitle_X_AI - ((this.txサブタイトル.sz画像サイズ.Width * txサブタイトル.vcScaleRatio.X) / 2)), OpenTaiko.Skin.SongLoading_SubTitle_Y_AI - (this.txサブタイトル.sz画像サイズ.Height / 2));
} }
} }
} }
#region [ Loading screen (except dan) ] #region [ Loading screen (except dan) ]
//----------------------------- //-----------------------------
this.ct曲名表示.Tick(); this.ct曲名表示.Tick();
if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower) { if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower) {
#region [Tower loading screen] #region [Tower loading screen]
if (OpenTaiko.Skin.Game_Tower_Ptn_Result > 0) { if (OpenTaiko.Skin.Game_Tower_Ptn_Result > 0) {
int xFactor = 0; int xFactor = 0;
float yFactor = 1f; float yFactor = 1f;
@ -315,32 +301,32 @@ namespace OpenTaiko {
if (currentTowerType < OpenTaiko.Tx.TowerResult_Tower.Length) if (currentTowerType < OpenTaiko.Tx.TowerResult_Tower.Length)
OpenTaiko.Tx.TowerResult_Tower[currentTowerType]?.t2D描画(xFactor, -1 * yFactor * pos); OpenTaiko.Tx.TowerResult_Tower[currentTowerType]?.t2D描画(xFactor, -1 * yFactor * pos);
} }
#endregion #endregion
drawPlate(); drawPlate();
} else if (OpenTaiko.ConfigIni.bAIBattleMode) { } else if (OpenTaiko.ConfigIni.bAIBattleMode) {
OpenTaiko.ConfigIni.tInitializeAILevel(); OpenTaiko.ConfigIni.tInitializeAILevel();
OpenTaiko.Tx.SongLoading_Bg_AI_Wait.t2D描画(0, 0); OpenTaiko.Tx.SongLoading_Bg_AI_Wait.t2D描画(0, 0);
drawPlate_AI(); drawPlate_AI();
} else { } else {
#region [Ensou loading screen] #region [Ensou loading screen]
if (OpenTaiko.Tx.SongLoading_BgWait != null) OpenTaiko.Tx.SongLoading_BgWait.t2D描画(0, 0); if (OpenTaiko.Tx.SongLoading_BgWait != null) OpenTaiko.Tx.SongLoading_BgWait.t2D描画(0, 0);
if (OpenTaiko.Tx.SongLoading_Chara != null) OpenTaiko.Tx.SongLoading_Chara.t2D描画(0, 0); if (OpenTaiko.Tx.SongLoading_Chara != null) OpenTaiko.Tx.SongLoading_Chara.t2D描画(0, 0);
drawPlate(); drawPlate();
#endregion #endregion
} }
//CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.灰, this.ct曲名表示.n現在の値.ToString() ); //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.灰, this.ct曲名表示.n現在の値.ToString() );
//----------------------------- //-----------------------------
#endregion #endregion
} else { } else {
#region [ Dan Loading screen ] #region [ Dan Loading screen ]
OpenTaiko.Tx.SongLoading_Bg_Dan.t2D描画(0, 0 - (ct待機.CurrentValue <= 600 ? ct待機.CurrentValue / 10f : 60)); OpenTaiko.Tx.SongLoading_Bg_Dan.t2D描画(0, 0 - (ct待機.CurrentValue <= 600 ? ct待機.CurrentValue / 10f : 60));
CTexture dp = (OpenTaiko.stage段位選択..stバー情報 != null) CTexture dp = (OpenTaiko.stage段位選択..stバー情報 != null)
@ -354,39 +340,35 @@ namespace OpenTaiko {
if (OpenTaiko.Tx.Tile_Black != null) { if (OpenTaiko.Tx.Tile_Black != null) {
OpenTaiko.Tx.Tile_Black.Opacity = (int)(ct待機.CurrentValue <= 51 ? (255 - ct待機.CurrentValue / 0.2f) : (this.ct待機.CurrentValue - 949) / 0.2); OpenTaiko.Tx.Tile_Black.Opacity = (int)(ct待機.CurrentValue <= 51 ? (255 - ct待機.CurrentValue / 0.2f) : (this.ct待機.CurrentValue - 949) / 0.2);
for (int i = 0; i <= (SampleFramework.GameWindowSize.Width / OpenTaiko.Tx.Tile_Black.szTextureSize.Width); i++) // #23510 2010.10.31 yyagi: change "clientSize.Width" to "640" to fix FIFO drawing size for (int i = 0; i <= (SampleFramework.GameWindowSize.Width / OpenTaiko.Tx.Tile_Black.szTextureSize.Width); i++) // #23510 2010.10.31 yyagi: change "clientSize.Width" to "640" to fix FIFO drawing size
{ {
for (int j = 0; j <= (SampleFramework.GameWindowSize.Height / OpenTaiko.Tx.Tile_Black.szTextureSize.Height); j++) // #23510 2010.10.31 yyagi: change "clientSize.Height" to "480" to fix FIFO drawing size for (int j = 0; j <= (SampleFramework.GameWindowSize.Height / OpenTaiko.Tx.Tile_Black.szTextureSize.Height); j++) // #23510 2010.10.31 yyagi: change "clientSize.Height" to "480" to fix FIFO drawing size
{ {
OpenTaiko.Tx.Tile_Black.t2D描画(i * OpenTaiko.Tx.Tile_Black.szTextureSize.Width, j * OpenTaiko.Tx.Tile_Black.szTextureSize.Height); OpenTaiko.Tx.Tile_Black.t2D描画(i * OpenTaiko.Tx.Tile_Black.szTextureSize.Width, j * OpenTaiko.Tx.Tile_Black.szTextureSize.Height);
} }
} }
} }
#endregion #endregion
} }
switch (base.ePhaseID) { switch (base.ePhaseID) {
case CStage.EPhase.Common_FADEIN: case CStage.EPhase.Common_FADEIN:
//if( this.actFI.On進行描画() != 0 ) // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略 //if( this.actFI.On進行描画() != 0 ) // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略
// 必ず一度「CStaeg.Eフェーズ.共通_フェードイン」フェーズを経由させること。 // 必ず一度「CStaeg.Eフェーズ.共通_フェードイン」フェーズを経由させること。
// さもないと、曲読み込みが完了するまで、曲読み込み画面が描画されない。 // さもないと、曲読み込みが完了するまで、曲読み込み画面が描画されない。
base.ePhaseID = CStage.EPhase.SongLoading_LoadDTXFile; base.ePhaseID = CStage.EPhase.SongLoading_LoadDTXFile;
return (int)ESongLoadingScreenReturnValue.Continue; return (int)ESongLoadingScreenReturnValue.Continue;
case CStage.EPhase.SongLoading_LoadDTXFile: { case CStage.EPhase.SongLoading_LoadDTXFile: {
timeBeginLoad = DateTime.Now; timeBeginLoad = DateTime.Now;
TimeSpan span; TimeSpan span;
str = null; str = OpenTaiko.stageSongSelect.r確定されたスコア..;
if (!OpenTaiko.bコンパクトモード)
str = OpenTaiko.stageSongSelect.r確定されたスコア..;
else
str = OpenTaiko.strコンパクトモードファイル;
if ((OpenTaiko.DTX != null) && OpenTaiko.DTX.IsActivated) if ((OpenTaiko.DTX != null) && OpenTaiko.DTX.IsActivated)
OpenTaiko.DTX.DeActivate(); OpenTaiko.DTX.DeActivate();
//if( CDTXMania.DTX == null ) //if( CDTXMania.DTX == null )
{ {
OpenTaiko.DTX = new CDTX(str, false, 1.0, 0, 0, 0, true, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]); OpenTaiko.DTX = new CDTX(str, false, 1.0, 0, 0, 0, true, OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0]);
if (OpenTaiko.ConfigIni.nPlayerCount >= 2) if (OpenTaiko.ConfigIni.nPlayerCount >= 2)
@ -401,8 +383,8 @@ namespace OpenTaiko {
if (OpenTaiko.DTX.listErrors.Count != 0) { if (OpenTaiko.DTX.listErrors.Count != 0) {
string message = ""; string message = "";
foreach (var text in OpenTaiko.DTX.listErrors) { foreach (var text in OpenTaiko.DTX.listErrors) {
OpenTaiko.VisualLogManager.PushCard(CVisualLogManager.ELogCardType.LogError, text); OpenTaiko.VisualLogManager.PushCard(CVisualLogManager.ELogCardType.LogError, text);
//System.Windows.Forms.MessageBox.Show(text, "譜面にエラーが見つかりました"); //System.Windows.Forms.MessageBox.Show(text, "譜面にエラーが見つかりました");
} }
} }
@ -412,9 +394,9 @@ namespace OpenTaiko {
Trace.TraceInformation("---------------------------"); Trace.TraceInformation("---------------------------");
span = (TimeSpan)(DateTime.Now - timeBeginLoad); span = (TimeSpan)(DateTime.Now - timeBeginLoad);
Trace.TraceInformation("Chart loading time: {0}", span.ToString()); Trace.TraceInformation("Chart loading time: {0}", span.ToString());
// 段位認定モード用。 // 段位認定モード用。
#region [dan setup] #region [dan setup]
if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan && OpenTaiko.DTX.List_DanSongs != null) { if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan && OpenTaiko.DTX.List_DanSongs != null) {
@ -439,7 +421,7 @@ namespace OpenTaiko {
} }
} }
} }
#endregion #endregion
} }
@ -456,9 +438,9 @@ namespace OpenTaiko {
} }
case CStage.EPhase.SongLoading_LoadWAVFile: { case CStage.EPhase.SongLoading_LoadWAVFile: {
int looptime = (OpenTaiko.ConfigIni.bEnableVSync) ? 3 : 1; // VSyncWait=ON時は1frame(1/60s)あたり3つ読むようにする int looptime = (OpenTaiko.ConfigIni.bEnableVSync) ? 3 : 1; // VSyncWait=ON時は1frame(1/60s)あたり3つ読むようにする
for (int i = 0; i < looptime && nWAVcount <= OpenTaiko.DTX.listWAV.Count; i++) { for (int i = 0; i < looptime && nWAVcount <= OpenTaiko.DTX.listWAV.Count; i++) {
if (OpenTaiko.DTX.listWAV[nWAVcount].listこのWAVを使用するチャンネル番号の集合.Count > 0) // #28674 2012.5.8 yyagi if (OpenTaiko.DTX.listWAV[nWAVcount].listこのWAVを使用するチャンネル番号の集合.Count > 0) // #28674 2012.5.8 yyagi
{ {
OpenTaiko.DTX.tWAVの読み込み(OpenTaiko.DTX.listWAV[nWAVcount]); OpenTaiko.DTX.tWAVの読み込み(OpenTaiko.DTX.listWAV[nWAVcount]);
} }
@ -508,8 +490,8 @@ namespace OpenTaiko {
} }
OpenTaiko.Timer.Update(); OpenTaiko.Timer.Update();
//CSound管理.rc演奏用タイマ.t更新(); //CSound管理.rc演奏用タイマ.t更新();
base.ePhaseID = CStage.EPhase.SongLoading_WaitForSoundSystemBGM; base.ePhaseID = CStage.EPhase.SongLoading_WaitForSoundSystemBGM;
return (int)ESongLoadingScreenReturnValue.Continue; return (int)ESongLoadingScreenReturnValue.Continue;
} }
@ -517,10 +499,10 @@ namespace OpenTaiko {
case CStage.EPhase.SongLoading_WaitForSoundSystemBGM: { case CStage.EPhase.SongLoading_WaitForSoundSystemBGM: {
long nCurrentTime = OpenTaiko.Timer.NowTime; long nCurrentTime = OpenTaiko.Timer.NowTime;
if (nCurrentTime < this.nBGM再生開始時刻) if (nCurrentTime < this.nBGM再生開始時刻)
this.nBGM再生開始時刻 = nCurrentTime; this.nBGM再生開始時刻 = nCurrentTime;
// if ( ( nCurrentTime - this.nBGM再生開始時刻 ) > ( this.nBGMの総再生時間ms - 1000 ) ) // if ( ( nCurrentTime - this.nBGM再生開始時刻 ) > ( this.nBGMの総再生時間ms - 1000 ) )
if ((nCurrentTime - this.nBGM再生開始時刻) >= (this.nBGMの総再生時間ms)) // #27787 2012.3.10 yyagi 1000ms == フェードイン分の時間 if ((nCurrentTime - this.nBGM再生開始時刻) >= (this.nBGMの総再生時間ms)) // #27787 2012.3.10 yyagi 1000ms == フェードイン分の時間
{ {
base.ePhaseID = CStage.EPhase.Common_FADEOUT; base.ePhaseID = CStage.EPhase.Common_FADEOUT;
} }
@ -528,7 +510,7 @@ namespace OpenTaiko {
} }
case CStage.EPhase.Common_FADEOUT: case CStage.EPhase.Common_FADEOUT:
if (this.ct待機.IsUnEnded) // DTXVモード時は、フェードアウト省略 if (this.ct待機.IsUnEnded) // DTXVモード時は、フェードアウト省略
return (int)ESongLoadingScreenReturnValue.Continue; return (int)ESongLoadingScreenReturnValue.Continue;
if (this.sd読み込み音 != null) { if (this.sd読み込み音 != null) {
@ -537,27 +519,27 @@ namespace OpenTaiko {
return (int)ESongLoadingScreenReturnValue.LoadComplete; return (int)ESongLoadingScreenReturnValue.LoadComplete;
} }
return (int)ESongLoadingScreenReturnValue.Continue; return (int)ESongLoadingScreenReturnValue.Continue;
} }
/// <summary> /// <summary>
/// ESC押下時、trueを返す /// ESC押下時、trueを返す
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
protected bool tキー入力() { protected bool tキー入力() {
IInputDevice keyboard = OpenTaiko.InputManager.Keyboard; IInputDevice keyboard = OpenTaiko.InputManager.Keyboard;
if (keyboard.KeyPressed((int)SlimDXKeys.Key.Escape)) // escape (exit) if (keyboard.KeyPressed((int)SlimDXKeys.Key.Escape)) // escape (exit)
{ {
return true; return true;
} }
return false; return false;
} }
// その他 // その他
#region [ private ] #region [ private ]
//----------------- //-----------------
//private CActFIFOBlack actFI; //private CActFIFOBlack actFI;
//private CActFIFOBlack actFO; //private CActFIFOBlack actFO;
private long nBGMの総再生時間ms; private long nBGMの総再生時間ms;
private long nBGM再生開始時刻; private long nBGM再生開始時刻;
private CSound sd読み込み音; private CSound sd読み込み音;
@ -566,8 +548,8 @@ namespace OpenTaiko {
private string strサブタイトル; private string strサブタイトル;
private CTexture txタイトル; private CTexture txタイトル;
private CTexture txサブタイトル; private CTexture txサブタイトル;
private CTexture tx背景; private CTexture tx背景;
//private CTexture txSongnamePlate; //private CTexture txSongnamePlate;
private DateTime timeBeginLoad; private DateTime timeBeginLoad;
private DateTime timeBeginLoadWAV; private DateTime timeBeginLoadWAV;
private int nWAVcount; private int nWAVcount;
@ -578,8 +560,8 @@ namespace OpenTaiko {
private CCachedFontRenderer pfSUBTITLE; private CCachedFontRenderer pfSUBTITLE;
private CCachedFontRenderer pfDanTitle = null; private CCachedFontRenderer pfDanTitle = null;
private CCachedFontRenderer pfDanSubTitle = null; private CCachedFontRenderer pfDanSubTitle = null;
//----------------- //-----------------
#endregion #endregion
} }
} }