OSDN Git Service

MusicNode と BoxNode に、ファイルから情報を取得する機能を移譲。
authorくまかみ工房 <kumakamikoubou@gmail.com>
Wed, 19 Oct 2016 03:30:00 +0000 (12:30 +0900)
committerくまかみ工房 <kumakamikoubou@gmail.com>
Wed, 19 Oct 2016 03:30:32 +0000 (12:30 +0900)
StrokeStyleT/曲/BoxNode.cs
StrokeStyleT/曲/MusicNode.cs
StrokeStyleT/曲/Node.cs
StrokeStyleT/曲/曲ツリー管理.cs

index 0f84c27..9322c2c 100644 (file)
@@ -10,5 +10,14 @@ namespace SST.曲
        /// </summary>
        public class BoxNode : Node
        {
+               public BoxNode()
+               {
+               }
+               public BoxNode( string boxDefファイルパス, Node 親ノード = null )
+               {
+                       var box = new BoxDef( boxDefファイルパス );
+                       this.タイトル = box.Title;
+                       this.親ノード = 親ノード;
+               }
        }
 }
index 0a795e9..7d90ce0 100644 (file)
@@ -15,26 +15,42 @@ namespace SST.曲
                public string sstfファイルパス { get; protected set; } = null;
                public string 動画ファイルパス { get; protected set; } = null;
 
-               public MusicNode( string sstfファイルパス )
+               public MusicNode()
+               {
+               }
+               public MusicNode( string sstfファイルパス, Node 親ノード = null )
                {
                        this.sstfファイルパス = FDK.フォルダ.絶対パスに含まれるフォルダ変数を展開して返す( sstfファイルパス );
+                       this.親ノード = 親ノード;
 
-                       // sstf と同じ場所に対応するサムネイル画像ファイルがあるなら、それをサムネイル画像として採用する。
+                       #region " sstf ファイルから情報を取得する。"
+                       //----------------
+                       using( var score = new SSTFormat.スコア() )
+                       {
+                               score.t曲データファイルを読み込む_ヘッダだけ( this.sstfファイルパス );
+                               this.タイトル = score.Header.曲名;
+                       }
+                       //----------------
+                       #endregion
+                       #region " sstf と同じ場所に対応するサムネイル画像ファイルがあるなら、それをサムネイル画像として採用する。"
+                       //----------------
                        var サムネイル画像ファイルパス =
                                ( from ファイル名 in Directory.GetFiles( Path.GetDirectoryName( this.sstfファイルパス ) )
                                  where 対応するサムネイル画像名.Any( thumbファイル名 => ( Path.GetFileName( ファイル名 ).ToLower() == thumbファイル名 ) )
                                  select ファイル名 ).FirstOrDefault();  // 複数あったら、最初に見つけたほうを採用。1つも見つからなければ null。
 
                        if( null != サムネイル画像ファイルパス )
-                       {
                                this.サムネイル画像 = new テクスチャ( サムネイル画像ファイルパス );
-                       }
-
-                       // sstf と同じ場所に(対応する拡張子を持った)動画ファイルがあるなら、それを背景動画として採用する。
+                       //----------------
+                       #endregion
+                       #region " sstf と同じ場所に(対応する拡張子を持った)動画ファイルがあるなら、それを背景動画として採用する。"
+                       //----------------
                        this.動画ファイルパス =
                                ( from ファイル名 in Directory.GetFiles( Path.GetDirectoryName( this.sstfファイルパス ) )
                                  where 対応する動画の拡張子.Any( 拡張子名 => ( Path.GetExtension( ファイル名 ).ToLower() == 拡張子名 ) )
-                                 select ファイル名 ).FirstOrDefault();  // 複数あったら、最初に見つけたほうを採用。1つも見つからなければ null。
+                                 select ファイル名 ).FirstOrDefault();
+                       //----------------
+                       #endregion
                }
                protected override void On活性化( デバイスリソース dr )
                {
index d6caec8..8d8ea79 100644 (file)
@@ -13,20 +13,16 @@ namespace SST.曲
        {
                public string タイトル { set; get; } = "(no title)";
 
-               /// <summary>
-               /// 自身の親のノード。
-               /// </summary>
                /// <remarks>
                /// これが 非null の場合は、親ノードの子ノードリストに自身が含まれていることを意味する。
                /// これが null の場合は、ルートノードであるか、または曲ツリーにまだ登録されていないノードであることを意味する。
                /// ルートノード以外のノードは、基本的に null にはならない。
                /// </remarks>
                public Node 親ノード { get; set; } = null;
-               
-               /// <summary>
-               /// 自身の子となるノードのリスト。
+
+               /// <remarks>
                /// 原則として、ルートノード/BOX ノード以外は 空リスト である。(一応、null にはしない。)
-               /// </summary>
+               /// </remarks>
                public List<Node> 子ノードリスト { get; } = new List<Node>();
 
                public Node 前のノード
index 533e0ef..948ae9e 100644 (file)
@@ -50,12 +50,7 @@ namespace SST.曲
                        // (1) このフォルダにあるすべてのsstfファイルから、曲ノードを作成する。
                        foreach( var fileInfo in dirInfo.GetFiles( "*.sstf", SearchOption.TopDirectoryOnly ) )
                        {
-                               var score = new SSTFormat.スコア();
-                               score.t曲データファイルを読み込む_ヘッダだけ( fileInfo.FullName );
-                               追加対象ノード.子ノードリスト.Add( new MusicNode( fileInfo.FullName ) {
-                                       タイトル = score.Header.曲名,
-                                       親ノード = 追加対象ノード,
-                               } );
+                               追加対象ノード.子ノードリスト.Add( new MusicNode( fileInfo.FullName, 追加対象ノード ) );
                        }
 
                        // (2) このフォルダのすべてのサブフォルダについて……
@@ -65,11 +60,7 @@ namespace SST.曲
                                var boxファイルパス = Path.Combine( subDirInfo.FullName, @"box.def" );
                                if( File.Exists( boxファイルパス ) )
                                {
-                                       var box = new BoxDef( boxファイルパス );
-                                       追加対象ノード.子ノードリスト.Add( new BoxNode() {
-                                               タイトル = box.Title,
-                                               親ノード = 追加対象ノード,
-                                       } );
+                                       追加対象ノード.子ノードリスト.Add( new BoxNode( boxファイルパス, 追加対象ノード ) );
                                }
 
                                // サブフォルダへ再帰。(通常フォルダでもBOXフォルダでも。)