using System.Runtime.InteropServices;\r
using System.IO;\r
using System.Threading;\r
+using System.Runtime.Serialization.Formatters.Binary;\r
using SlimDX;\r
using SlimDX.Direct3D9;\r
using FDK;\r
public static CSongs管理 Songs管理 \r
{\r
get;\r
+ set; // 2012.1.26 yyagi private解除 CStage起動でのdesirialize読み込みのため\r
+ }\r
+ public static CEnumSongs EnumSongs\r
+ {\r
+ get;\r
+ private set;\r
+ }\r
+ public static CActEnumSongs actEnumSongs\r
+ {\r
+ get;\r
private set;\r
}\r
+\r
public static CSound管理 Sound管理\r
{\r
get; \r
set;\r
}\r
\r
+\r
// コンストラクタ\r
\r
public CDTXMania()\r
//---------------------\r
#endregion\r
\r
+\r
CScoreIni scoreIni = null;\r
\r
- switch( r現在のステージ.eステージID )\r
+ #region [ 曲検索スレッドの起動/終了 ] // ここに"Enumerating Songs..."表示を集約\r
+ actEnumSongs.On進行描画(); // "Enumerating Songs..."アイコンの描画\r
+ switch ( r現在のステージ.eステージID )\r
+ {\r
+ case CStage.Eステージ.タイトル:\r
+ case CStage.Eステージ.コンフィグ:\r
+ case CStage.Eステージ.選曲:\r
+ case CStage.Eステージ.曲読み込み:\r
+ if ( EnumSongs != null )\r
+ {\r
+ #region [ (特定条件時) 曲検索スレッドの起動・開始 ]\r
+ if ( r現在のステージ.eステージID == CStage.Eステージ.タイトル &&\r
+ r直前のステージ.eステージID == CStage.Eステージ.起動 &&\r
+ this.n進行描画の戻り値 == (int) CStageタイトル.E戻り値.継続 &&\r
+ !EnumSongs.IsSongListEnumStarted )\r
+ {\r
+ actEnumSongs.On活性化();\r
+ CDTXMania.stage選曲.bIsEnumeratingSongs = true;\r
+ EnumSongs.Init( CDTXMania.Songs管理.listSongsDB, CDTXMania.Songs管理.nSongsDBから取得できたスコア数 ); // songs.db情報と、取得した曲数を、新インスタンスにも与える\r
+ EnumSongs.StartEnumFromDisk(); // 曲検索スレッドの起動・開始\r
+ }\r
+ #endregion\r
+ \r
+ #region [ 曲検索の中断と再開 ]\r
+ if ( r現在のステージ.eステージID == CStage.Eステージ.選曲 && !EnumSongs.IsSongListEnumCompletelyDone )\r
+ {\r
+ switch ( this.n進行描画の戻り値 )\r
+ {\r
+ case 0: // 何もない\r
+ //if ( CDTXMania.stage選曲.bIsEnumeratingSongs )\r
+ if ( !CDTXMania.stage選曲.bIsPlayingPremovie )\r
+ {\r
+ EnumSongs.Resume(); // #27060 2012.2.6 yyagi 中止していたバックグランド曲検索を再開\r
+ EnumSongs.IsSlowdown = false;\r
+ }\r
+ else\r
+ {\r
+ // EnumSongs.Suspend(); // #27060 2012.3.2 yyagi #PREMOVIE再生中は曲検索を低速化\r
+ EnumSongs.IsSlowdown = true;\r
+ }\r
+ actEnumSongs.On活性化();\r
+ break;\r
+\r
+ case 2: // 曲決定\r
+ EnumSongs.Suspend(); // #27060 バックグラウンドの曲検索を一時停止\r
+ actEnumSongs.On非活性化();\r
+ break;\r
+ }\r
+ }\r
+ #endregion\r
+\r
+ #region [ 曲探索中断待ち待機 ]\r
+ if ( r現在のステージ.eステージID == CStage.Eステージ.曲読み込み && !EnumSongs.IsSongListEnumCompletelyDone )\r
+ {\r
+ EnumSongs.WaitUntilSuspended(); // 念のため、曲検索が一時中断されるまで待機\r
+ }\r
+ #endregion\r
+\r
+ #region [ 曲検索が完了したら、実際の曲リストに反映する ]\r
+ // CStage選曲.On活性化() に回した方がいいかな?\r
+ if ( EnumSongs.IsSongListEnumerated )\r
+ {\r
+ actEnumSongs.On非活性化();\r
+ CDTXMania.stage選曲.bIsEnumeratingSongs = false;\r
+\r
+ bool bRemakeSongTitleBar = ( r現在のステージ.eステージID == CStage.Eステージ.選曲 ) ? true : false;\r
+ CDTXMania.stage選曲.Refresh( EnumSongs.Songs管理, bRemakeSongTitleBar );\r
+ EnumSongs.SongListEnumCompletelyDone();\r
+ }\r
+ #endregion\r
+ }\r
+ break;\r
+ }\r
+ #endregion\r
+\r
+ switch ( r現在のステージ.eステージID )\r
{\r
case CStage.Eステージ.何もしない:\r
break;\r
#endregion\r
break;\r
\r
+ #region [ OPTION: 廃止済 ]\r
// case 2: // #24525 OPTIONとCONFIGの統合に伴い、OPTIONは廃止\r
// #region [ *** ]\r
// //-----------------------------\r
// r現在のステージ = stageオプション;\r
// //-----------------------------\r
// #endregion\r
-// break;\r
+ // break;\r
+ #endregion\r
\r
case (int)CStageタイトル.E戻り値.CONFIG:\r
#region [ *** ]\r
try\r
{\r
Songs管理 = new CSongs管理();\r
+// Songs管理_裏読 = new CSongs管理();\r
+ EnumSongs = new CEnumSongs();\r
+ actEnumSongs = new CActEnumSongs();\r
Trace.TraceInformation( "曲リストの初期化を完了しました。" );\r
}\r
- catch( Exception exception4 )\r
+ catch( Exception e )\r
{\r
- Trace.TraceError( exception4.Message );\r
+ Trace.TraceError( e.Message );\r
Trace.TraceError( "曲リストの初期化に失敗しました。" );\r
}\r
finally\r
stage結果 = new CStage結果();\r
stage終了 = new CStage終了();\r
this.listトップレベルActivities = new List<CActivity>();\r
+ this.listトップレベルActivities.Add( actEnumSongs );\r
this.listトップレベルActivities.Add( act文字コンソール );\r
this.listトップレベルActivities.Add( stage起動 );\r
this.listトップレベルActivities.Add( stageタイトル );\r
{\r
Trace.TraceInformation( "----------------------" );\r
Trace.TraceInformation( "■ アプリケーションの終了" );\r
+ #region [ 曲検索の終了処理 ]\r
+ //---------------------\r
+ if ( actEnumSongs != null )\r
+ {\r
+ Trace.TraceInformation( "曲検索actの終了処理を行います。" );\r
+ Trace.Indent();\r
+ try\r
+ {\r
+ actEnumSongs.On非活性化();\r
+ actEnumSongs= null;\r
+ Trace.TraceInformation( "曲検索actの終了処理を完了しました。" );\r
+ }\r
+ catch ( Exception e )\r
+ {\r
+ Trace.TraceError( e.Message );\r
+ Trace.TraceError( "曲検索actの終了処理に失敗しました。" );\r
+ }\r
+ finally\r
+ {\r
+ Trace.Unindent();\r
+ }\r
+ }\r
+ //---------------------\r
+ #endregion\r
#region [ 現在のステージの終了処理 ]\r
//---------------------\r
if( CDTXMania.r現在のステージ != null && CDTXMania.r現在のステージ.b活性化してる ) // #25398 2011.06.07 MODIFY FROM\r
// }\r
// }\r
//}\r
+\r
+ \r
+ \r
+ //-----------------\r
#endregion\r
}\r
}\r