OSDN Git Service

0507a64fc611ff1ffa58d8f3450e94d92dadcc44
[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                         this.現在のフェーズ = フェーズ.読込中;
24                         var 選択曲 = (SST.曲.MusicNode) StrokeStyleT.曲ツリー管理.現在選択されているノード;
25                         FDK.Log.Info( $"選択曲「{選択曲.タイトル}」({FDK.フォルダ.絶対パスをフォルダ変数付き絶対パスに変換して返す( 選択曲.sstfファイルパス )})" );
26                 }
27                 protected override void On非活性化( デバイスリソース dr )
28                 {
29                         FDK.Log.Info( "曲読込ステージを終了します。" );
30                 }
31                 public override void 進行描画する( デバイスリソース dr )
32                 {
33                         var 選択曲 = (SST.曲.MusicNode) StrokeStyleT.曲ツリー管理.現在選択されているノード;
34
35                         switch( this.現在のフェーズ )
36                         {
37                                 case フェーズ.読込中:
38                                         // 未解放なら解放する。念のため。
39                                         StrokeStyleT.演奏スコア?.Dispose();
40
41                                         // SSTFファイルを読み込んでスコアを構築。
42                                         var user = StrokeStyleT.ユーザ管理.現在選択されているユーザ;
43                                         StrokeStyleT.演奏スコア = new SSTFormat.スコア(
44                                                 選択曲.sstfファイルパス,
45                                                 user.Rideは左,
46                                                 user.Chinaは左,
47                                                 user.Splashは左 );
48                                         this.現在のフェーズ = フェーズ.終了;
49                                         break;
50                         }
51                 }
52         }
53 }