2 using System.Collections.Generic;
3 using System.Diagnostics;
12 public string 最初のステージ名
15 => this.ステージリスト.ElementAt( 0 ).Value.GetType().Name;
26 /// 新しいステージができたら、ここに追加すること。
28 public Dictionary<string, ステージ> ステージリスト = new Dictionary<string, ステージ>() {
29 { nameof( 起動.起動ステージ ), new 起動.起動ステージ() },
30 { nameof( タイトル.タイトルステージ ), new タイトル.タイトルステージ() },
31 { nameof( ユーザ.ユーザ選択ステージ ), new ユーザ.ユーザ選択ステージ() },
32 { nameof( 選曲.選曲ステージ ), new 選曲.選曲ステージ() },
33 { nameof( 曲読込.曲読込ステージ ), new 曲読込.曲読込ステージ() },
34 { nameof( 演奏.演奏ステージ ), new 演奏.演奏ステージ() },
35 { nameof( 結果.結果ステージ ), new 結果.結果ステージ() },
36 { nameof( クリア.クリアステージ ), new クリア.クリアステージ() },
44 public void Dispose( グラフィックデバイス gd )
46 Debug.Assert( null != gd );
48 // 現在活性化しているステージがあれば、すべて非活性化する。
49 foreach( var kvp in this.ステージリスト )
51 if( kvp.Value.活性化している )
53 kvp.Value.非活性化する( gd );
59 /// 現在のステージを非活性化し、指定されたステージに遷移して、活性化する。
61 /// <param name="遷移先ステージ名">Nullまたは空文字列なら、非活性化のみ行う。</param>
62 public void ステージを遷移する( グラフィックデバイス gd, string 遷移先ステージ名 )
64 Log.Header( $"{遷移先ステージ名} へ遷移します。" );
66 using( Log.Block( FDKUtilities.現在のメソッド名 ) )
68 if( null != this._現在のステージ &&
69 this._現在のステージ.活性化している )
71 this._現在のステージ.非活性化する( gd );
74 if( 遷移先ステージ名.Nullでも空でもない() )
76 this._現在のステージ = this.ステージリスト[ 遷移先ステージ名 ];
77 this._現在のステージ.活性化する( gd );
79 App.入力管理.すべての入力デバイスをポーリングする();
83 Log.Header( "ステージの遷移を終了します。" );
91 /// 現在実行中のステージ。<see cref="ステージリスト"/> の中のひとつを参照している(ので、うかつにDisposeとかしたりしないこと)。
93 private ステージ _現在のステージ;