OSDN Git Service

インストーラでインストールした SSTFEditor を起動するとメッセージが規定(英語)になるミスを修正。
[strokestylet/CsWin10Desktop3.git] / StrokeStyleT / ステージ / 選曲 / 選曲ステージ.cs
index 6877add..121387b 100644 (file)
@@ -6,6 +6,18 @@ using FDK.メディア;
 
 namespace SST.ステージ.選曲
 {
+       /// <remarks>
+       /// 入力:
+       ///  StrokeStyleT.曲ツリー管理
+       ///  
+       /// 出力:
+       ///  (A) 曲が確定した場合
+       ///    this.現在のフェーズ ← 曲確定
+       ///        StrokeStyleT.曲ツリー管理.現在選択されているノード ← 確定された曲のノード
+       ///        
+       ///  (B) キャンセルされた場合
+       ///    this.現在のフェーズ ← キャンセル
+       /// </remarks>
        class 選曲ステージ : SST.ステージ.ステージ
        {
                public enum フェーズ
@@ -15,44 +27,56 @@ namespace SST.ステージ.選曲
                        曲確定,
                        キャンセル,
                }
+
                public フェーズ 現在のフェーズ { get; protected set; } = フェーズ.初期状態;
 
                public 選曲ステージ()
                {
-                       this.子リスト.Add( this.背景動画 = new 動画( @"$(Static)\images\選曲画面BGV.mp4" ) );
-                       this.子リスト.Add( this.ステージ台 = new 画像( @"$(Static)\images\ステージ台.png" ) );
-                       this.子リスト.Add( this.ドラムセット = new ドラムセット() );
-                       this.子リスト.Add( this.曲パネルビュー = new 曲パネルビュー() );
+                       this.子リスト.Add( this._背景動画 = new 動画( @"$(Static)\images\選曲画面BGV.mp4", StrokeStyleT.Config.動画デコーダのキューサイズ ) );
+                       this.子リスト.Add( this._ステージ台 = new 画像( @"$(Static)\images\ステージ台.png" ) );
+                       this.子リスト.Add( this._ドラムセット = new ドラムセット() );
+                       this.子リスト.Add( this._曲パネルビュー = new 曲パネルビュー() );
                }
+
                protected override void On活性化( デバイスリソース dr )
                {
                        FDK.Log.Info( "選曲ステージを開始します。" );
 
-                       this.背景動画.ループ再生する = true;
-                       this.現在のフェーズ = フェーズ.表示中;
+                       this.子リスト.Add( StrokeStyleT.曲ツリー管理 );   // コンストラクタで追加したら static への直接参照がずっと子リストに残るので、ここで追加する。
 
-                       this.子リスト.Add( StrokeStyleT.曲ツリー管理 );       // コンストラクタで追加したら static への直接参照がずっと子リストに残るので、ここで。
+                       this.現在のフェーズ = フェーズ.表示中;
+                       this._活性化した直後である = true;
                }
+
                protected override void On非活性化( デバイスリソース dr )
                {
                        FDK.Log.Info( "選曲ステージを終了します。" );
 
                        this.子リスト.Remove( StrokeStyleT.曲ツリー管理 );
                }
+
                public override void 進行描画する( デバイスリソース dr )
                {
                        if( this.現在のフェーズ != フェーズ.表示中 )
                                return;
 
-                       // 描画。
-                       this.背景動画.進行描画する( dr, new SharpDX.RectangleF( 0f, 0f, dr.設計画面サイズdpx.Width, dr.設計画面サイズdpx.Height ) );
+                       if( this._活性化した直後である )
+                       {
+                               this._背景動画.再生を開始する( 開始位置sec: 0.0, ループ再生する: true );
+                               this._活性化した直後である = false;
+                       }
+
+                       // 進行描画。
+
+                       this._背景動画.進行描画する( dr, new SharpDX.RectangleF( 0f, 0f, dr.設計画面サイズdpx.Width, dr.設計画面サイズdpx.Height ) );
+
                        switch( this.現在のフェーズ )
                        {
                                case フェーズ.表示中:
                                        this.現在のフェーズ = フェーズ.表示中;
-                                       this.曲パネルビュー.進行描画する( dr );
-                                       this.ステージ台.描画する( dr, 0.0f, 0.0f );
-                                       this.ドラムセット.進行描画する( dr );
+                                       this._曲パネルビュー.進行描画する( dr );
+                                       this._ステージ台.描画する( dr, 0.0f, 0.0f );
+                                       this._ドラムセット.進行描画する( dr );
                                        break;
                        }
 
@@ -84,7 +108,7 @@ namespace SST.ステージ.選曲
                                }
                                else
                                {
-                                       Trace.Fail( "確定された曲が、曲でも BOX でも 戻る でも null でもありません。" );   // バグあり。
+                                       Trace.Fail( "[バグあり] 確定された曲が、曲でも BOX でも 戻る でも null でもありません。" );
                                }
                        }
                        // Esc 押下 → 戻る
@@ -96,25 +120,30 @@ namespace SST.ステージ.選曲
                        // カーソルキー(キーバインドに寄らず固定)→ 選曲カーソル移動
                        else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Left ) )
                        {
-                               this.曲パネルビュー.カーソルを左に移動する();
+                               this._曲パネルビュー.カーソルを左に移動する();
                        }
                        else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Right ) )
                        {
-                               this.曲パネルビュー.カーソルを右に移動する();
+                               this._曲パネルビュー.カーソルを右に移動する();
                        }
                        else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Up ) )
                        {
-                               this.曲パネルビュー.カーソルを上に移動する();
+                               this._曲パネルビュー.カーソルを上に移動する();
                        }
                        else if( StrokeStyleT.キーボード入力.キーが押された( SharpDX.DirectInput.Key.Down ) )
                        {
-                               this.曲パネルビュー.カーソルを下に移動する();
+                               this._曲パネルビュー.カーソルを下に移動する();
                        }
                }
 
-               protected FDK.メディア.動画 背景動画 = null;
-               protected FDK.メディア.画像 ステージ台 = null;
-               protected SST.ステージ.ドラムセット ドラムセット = null;
-               protected 曲パネルビュー 曲パネルビュー = null;
+               private bool _活性化した直後である = false;
+
+               private FDK.メディア.動画 _背景動画 = null;
+
+               private FDK.メディア.画像 _ステージ台 = null;
+
+               private SST.ステージ.ドラムセット _ドラムセット = null;
+
+               private 曲パネルビュー _曲パネルビュー = null;
        }
 }