2 using System.Collections.Generic;
3 using System.Diagnostics;
11 /// StrokeStyleT.曲ツリー管理
15 /// this.現在のフェーズ ← 曲確定
16 /// StrokeStyleT.曲ツリー管理.現在選択されているノード ← 確定された曲のノード
19 /// this.現在のフェーズ ← キャンセル
21 class 選曲ステージ : SST.ステージ.ステージ
30 public フェーズ 現在のフェーズ { get; protected set; } = フェーズ.初期状態;
34 this.子リスト.Add( this.背景動画 = new 動画( @"$(Static)\images\選曲画面BGV.mp4" ) );
35 this.子リスト.Add( this.ステージ台 = new 画像( @"$(Static)\images\ステージ台.png" ) );
36 this.子リスト.Add( this.ドラムセット = new ドラムセット() );
37 this.子リスト.Add( this.曲パネルビュー = new 曲パネルビュー() );
39 protected override void On活性化( デバイスリソース dr )
41 FDK.Log.Info( "選曲ステージを開始します。" );
43 this.背景動画.ループ再生する = true;
44 this.現在のフェーズ = フェーズ.表示中;
46 this.子リスト.Add( StrokeStyleT.曲ツリー管理 ); // コンストラクタで追加したら static への直接参照がずっと子リストに残るので、ここで。
48 protected override void On非活性化( デバイスリソース dr )
50 FDK.Log.Info( "選曲ステージを終了します。" );
52 this.子リスト.Remove( StrokeStyleT.曲ツリー管理 );
54 public override void 進行描画する( デバイスリソース dr )
56 if( this.現在のフェーズ != フェーズ.表示中 )
60 this.背景動画.進行描画する( dr, new SharpDX.RectangleF( 0f, 0f, dr.設計画面サイズdpx.Width, dr.設計画面サイズdpx.Height ) );
61 switch( this.現在のフェーズ )
64 this.現在のフェーズ = フェーズ.表示中;
65 this.曲パネルビュー.進行描画する( dr );
66 this.ステージ台.描画する( dr, 0.0f, 0.0f );
67 this.ドラムセット.進行描画する( dr );
73 StrokeStyleT.すべての入力デバイスをポーリングする();
76 if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Return ) )
78 if( StrokeStyleT.曲ツリー管理.現在選択されているノード is 曲.MusicNode )
80 FDK.Log.Info( "MusicNode が選択されました。" );
81 this.現在のフェーズ = フェーズ.曲確定;
83 else if( StrokeStyleT.曲ツリー管理.現在選択されているノード is 曲.BoxNode )
85 FDK.Log.Info( "BoxNode が選択されました。" );
86 // todo: BOX が選択された場合の実装。
88 else if( StrokeStyleT.曲ツリー管理.現在選択されているノード is 曲.BackNode )
90 FDK.Log.Info( "BackNode が選択されました。" );
91 // todo: 戻る が選択された場合の実装。
93 else if( null == StrokeStyleT.曲ツリー管理.現在選択されているノード )
95 FDK.Log.Info( "曲リストが空です。何もしません。" );
99 Trace.Fail( "[バグあり] 確定された曲が、曲でも BOX でも 戻る でも null でもありません。" );
103 else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Escape ) )
105 this.現在のフェーズ = フェーズ.キャンセル;
108 // カーソルキー(キーバインドに寄らず固定)→ 選曲カーソル移動
109 else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Left ) )
111 this.曲パネルビュー.カーソルを左に移動する();
113 else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Right ) )
115 this.曲パネルビュー.カーソルを右に移動する();
117 else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Up ) )
119 this.曲パネルビュー.カーソルを上に移動する();
121 else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Down ) )
123 this.曲パネルビュー.カーソルを下に移動する();
127 protected FDK.メディア.動画 背景動画 = null;
128 protected FDK.メディア.画像 ステージ台 = null;
129 protected SST.ステージ.ドラムセット ドラムセット = null;
130 protected 曲パネルビュー 曲パネルビュー = null;