2 using System.Collections.Generic;
3 using System.Diagnostics;
9 class 選曲ステージ : SST.ステージ.ステージ
18 public フェーズ 現在のフェーズ { get; protected set; } = フェーズ.初期状態;
22 this.子リスト.Add( this.背景動画 = new 動画( @"$(Static)\images\選曲画面BGV.mp4" ) );
23 this.子リスト.Add( this.ステージ台 = new 画像( @"$(Static)\images\ステージ台.png" ) );
24 this.子リスト.Add( this.ドラムセット = new 汎用.ドラムセット() );
25 this.子リスト.Add( this.曲パネルビュー = new 曲パネルビュー() );
27 protected override void On活性化( デバイスリソース dr )
29 FDK.Log.Info( "選曲ステージを開始します。" );
31 this.背景動画.ループ再生する = true;
32 this.現在のフェーズ = フェーズ.表示中;
34 this.子リスト.Add( StrokeStyleT.曲ツリー管理 ); // コンストラクタで追加したら static への直接参照がずっと子リストに残る。
36 protected override void On非活性化( デバイスリソース dr )
38 FDK.Log.Info( "選曲ステージを終了します。" );
40 this.子リスト.Remove( StrokeStyleT.曲ツリー管理 );
42 public override void 進行描画する( デバイスリソース dr )
44 if( this.現在のフェーズ != フェーズ.表示中 )
48 this.背景動画.進行描画する( dr, new SharpDX.RectangleF( 0f, 0f, dr.設計画面サイズdpx.Width, dr.設計画面サイズdpx.Height ) );
49 switch( this.現在のフェーズ )
52 this.現在のフェーズ = フェーズ.表示中;
53 this.曲パネルビュー.進行描画する( dr );
54 this.ステージ台.進行描画する( dr, 0.0f, 0.0f );
55 this.ドラムセット.進行描画する( dr );
61 StrokeStyleT.すべての入力デバイスをポーリングする();
64 if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Return ) )
66 if( StrokeStyleT.曲ツリー管理.現在選択されているノード is 曲.MusicNode )
68 FDK.Log.Info( "MusicNode が選択されました。" );
69 this.現在のフェーズ = フェーズ.曲確定;
71 else if( StrokeStyleT.曲ツリー管理.現在選択されているノード is 曲.BoxNode )
73 FDK.Log.Info( "BoxNode が選択されました。" );
74 // todo: BOX が選択された場合の実装。
76 else if( StrokeStyleT.曲ツリー管理.現在選択されているノード is 曲.BackNode )
78 FDK.Log.Info( "BackNode が選択されました。" );
79 // todo: 戻る が選択された場合の実装。
81 else if( null == StrokeStyleT.曲ツリー管理.現在選択されているノード )
83 FDK.Log.Info( "曲リストが空です。何もしません。" );
87 Trace.Fail( "確定された曲が、曲でも BOX でも 戻る でも null でもありません。" ); // バグあり。
91 else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Escape ) )
93 this.現在のフェーズ = フェーズ.キャンセル;
96 // カーソルキー(キーバインドに寄らず固定)→ 選曲カーソル移動
97 else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Left ) )
99 this.曲パネルビュー.カーソルを左に移動する();
101 else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Right ) )
103 this.曲パネルビュー.カーソルを右に移動する();
105 else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Up ) )
107 this.曲パネルビュー.カーソルを上に移動する();
109 else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Down ) )
111 this.曲パネルビュー.カーソルを下に移動する();
115 protected FDK.メディア.動画 背景動画 = null;
116 protected FDK.メディア.画像 ステージ台 = null;
117 protected SST.ステージ.汎用.ドラムセット ドラムセット = null;
118 protected 曲パネルビュー 曲パネルビュー = null;