OSDN Git Service

DPX→PX変換に失敗していたミスを修正。
[strokestylet/CsWin10Desktop3.git] / StrokeStyleT / ステージ / 曲読込 / 曲読込ステージ.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Diagnostics;
4 using System.Linq;
5 using FDK.メディア;
6
7 namespace SST.ステージ.曲読込
8 {
9         class 曲読込ステージ : SST.ステージ.ステージ
10         {
11                 public enum フェーズ
12                 {
13                         初期状態,
14                         読込中,
15                         終了,
16                 }
17                 public フェーズ 現在のフェーズ { get; protected set; } = フェーズ.初期状態;
18
19                 protected override void On活性化( デバイスリソース dr )
20                 {
21                         FDK.Log.Info( "曲読込ステージを開始します。" );
22                         Trace.Assert( null != StrokeStyleT.曲ツリー管理.現在選択されているノード, "[バグあり] 選択曲が null です。" );
23
24                         this.現在のフェーズ = フェーズ.読込中;
25
26                         var 選択曲 = (SST.曲.MusicNode) StrokeStyleT.曲ツリー管理.現在選択されているノード;
27                         FDK.Log.Info( $"選択曲「{選択曲.タイトル}」({FDK.フォルダ.絶対パスをフォルダ変数付き絶対パスに変換して返す( 選択曲.sstfファイルパス )})" );
28                 }
29                 protected override void On非活性化( デバイスリソース dr )
30                 {
31                         FDK.Log.Info( "曲読込ステージを終了します。" );
32                 }
33                 public override void 進行描画する( デバイスリソース dr )
34                 {
35                         var 選択曲 = (SST.曲.MusicNode) StrokeStyleT.曲ツリー管理.現在選択されているノード;
36
37                         switch( this.現在のフェーズ )
38                         {
39                                 case フェーズ.読込中:
40                                         // 未解放なら解放する。念のため。
41                                         StrokeStyleT.演奏スコア?.Dispose();
42
43                                         // SSTFファイルを読み込んでスコアを構築。
44                                         var user = StrokeStyleT.ユーザ管理.現在選択されているユーザ;
45                                         StrokeStyleT.演奏スコア = new SSTFormat.スコア(
46                                                 選択曲.sstfファイルパス,
47                                                 user.Rideは左,
48                                                 user.Chinaは左,
49                                                 user.Splashは左 );
50
51                                         // フェーズ終了。
52                                         this.現在のフェーズ = フェーズ.終了;
53                                         break;
54                         }
55                 }
56         }
57 }