• R/O
  • HTTP
  • SSH
  • HTTPS

CsWin10Desktop3: Commit

Visual C# 7.0, Windows10 Desktop App


Commit MetaInfo

Revisión310b3217267634ab5fc1303610590bb594323843 (tree)
Tiempo2017-10-15 21:56:12
Autorくまかみ工房 <kumakamikoubou@gmai...>
Commiterくまかみ工房

Log Message

DTXReader で、SE/Guitar/Bass に対応。(すべて自動再生扱い。)

チップ種別に SE を追加。

Cambiar Resumen

Diferencia

--- a/SSTFormat/v3/DTXReader.cs
+++ b/SSTFormat/v3/DTXReader.cs
@@ -469,11 +469,11 @@ namespace SSTFormat.v3
469469 if( ( 1 > zz ) || ( 36 * 36 - 1 < zz ) )
470470 return false; // 有効範囲は 1~3599
471471
472- if( 現在の.スコア.dicWAVファイルパス.ContainsKey( zz ) )
473- 現在の.スコア.dicWAVファイルパス.Remove( zz );
472+ if( 現在の.スコア.dicWAV.ContainsKey( zz ) )
473+ 現在の.スコア.dicWAV.Remove( zz );
474474
475475 // ここでは、PATH_WAV は反映しない。(後方定義に対応するため)
476- 現在の.スコア.dicWAVファイルパス.Add( zz, 現在の.パラメータ );
476+ 現在の.スコア.dicWAV.Add( zz, ( 現在の.パラメータ, true ) );
477477 return true;
478478 }
479479 internal static bool _行解析_DLEVEL( C行解析時の状態変数 現在の )
@@ -562,6 +562,7 @@ namespace SSTFormat.v3
562562 // バックコーラス(BGM)
563563 case 0x01:
564564 chip.チップ種別 = チップ種別.背景動画;
565+ _WAVの多重再生を無効にする( オブジェクト値 );
565566 break;
566567
567568 // 小節長倍率 → 先に処理済み。
@@ -592,12 +593,24 @@ namespace SSTFormat.v3
592593 case 0x18: chip.チップ種別 = チップ種別.HiHat_Open; break;
593594 case 0x19: chip.チップ種別 = チップ種別.Ride; break;
594595 case 0x1A: chip.チップ種別 = チップ種別.LeftCrash; break;
595- case 0x1B: chip.チップ種別 = チップ種別.HiHat_Foot; break; // Ver.K拡張
596+ case 0x1B: chip.チップ種別 = チップ種別.HiHat_Foot; break; // Ver.K拡張
596597 case 0x1C: chip.チップ種別 = チップ種別.Bass; break; // Ver.K拡張; 左右バスは統合
597598
598599 // 小節線、拍線
599600 case 0x50: chip.チップ種別 = チップ種別.小節線; break;
600601 case 0x51: chip.チップ種別 = チップ種別.拍線; break;
602+
603+ // SE
604+ case int ch when( ( 0x61 <= ch && ch <= 0x69 ) || ( 0x70 <= ch && ch <= 0x79 ) || ( 0x80 <= ch && ch <= 0x89 ) || ( 0x90 <= ch && ch <= 0x92 ) ):
605+ chip.チップ種別 = チップ種別.SE;
606+ _WAVの多重再生を無効にする( オブジェクト値 );
607+ break;
608+
609+ // チップ配置(ギター、ベース)
610+ case int ch when( 0x20 <= ch && ch <= 0x27 ):
611+ chip.チップ種別 = チップ種別.SE; // SE 扱い
612+ _WAVの多重再生を無効にする( オブジェクト値 );
613+ break;
601614 }
602615
603616 // チップリストに登録。
@@ -607,6 +620,15 @@ namespace SSTFormat.v3
607620 }
608621 }
609622 return true;
623+
624+ // ローカル関数
625+ void _WAVの多重再生を無効にする( int WAV番号 )
626+ {
627+ var dicWAV = 現在の.スコア.dicWAV;
628+
629+ if( dicWAV.ContainsKey( WAV番号 ) )
630+ dicWAV[ WAV番号 ] = (dicWAV[ WAV番号 ].ファイルパス, 多重再生する: false);
631+ }
610632 }
611633
612634 internal static bool _小節番号とチャンネル番号を取得する( string 行, out int 小節番号, out int チャンネル番号 )
@@ -678,6 +700,8 @@ namespace SSTFormat.v3
678700 /// チャンネル情報データベース。
679701 /// </summary>
680702 private static readonly List<(int channel, チップ種別 chipType, bool Wavを使う)> _チャンネルプロパティ = new List<(int channel, チップ種別 chipType, bool Wavを使う)>() {
703+ #region " *** "
704+ //----------------
681705 ( 0x01, チップ種別.背景動画, true ), // バックコーラス(BGM)
682706 ( 0x02, チップ種別.Unknown, false ), // 小節長倍率
683707 ( 0x03, チップ種別.BPM, false ), // BPM
@@ -696,6 +720,40 @@ namespace SSTFormat.v3
696720 ( 0x1C, チップ種別.Bass, true ), // チップ配置(ドラム)・左バス
697721 ( 0x50, チップ種別.小節線, false ), // 小節線
698722 ( 0x51, チップ種別.拍線, false ), // 拍線
723+ ( 0x61, チップ種別.SE, true ), // SE
724+ ( 0x62, チップ種別.SE, true ), // SE
725+ ( 0x63, チップ種別.SE, true ), // SE
726+ ( 0x64, チップ種別.SE, true ), // SE
727+ ( 0x65, チップ種別.SE, true ), // SE
728+ ( 0x66, チップ種別.SE, true ), // SE
729+ ( 0x67, チップ種別.SE, true ), // SE
730+ ( 0x68, チップ種別.SE, true ), // SE
731+ ( 0x69, チップ種別.SE, true ), // SE
732+ ( 0x70, チップ種別.SE, true ), // SE
733+ ( 0x71, チップ種別.SE, true ), // SE
734+ ( 0x72, チップ種別.SE, true ), // SE
735+ ( 0x73, チップ種別.SE, true ), // SE
736+ ( 0x74, チップ種別.SE, true ), // SE
737+ ( 0x75, チップ種別.SE, true ), // SE
738+ ( 0x76, チップ種別.SE, true ), // SE
739+ ( 0x77, チップ種別.SE, true ), // SE
740+ ( 0x78, チップ種別.SE, true ), // SE
741+ ( 0x79, チップ種別.SE, true ), // SE
742+ ( 0x80, チップ種別.SE, true ), // SE
743+ ( 0x81, チップ種別.SE, true ), // SE
744+ ( 0x82, チップ種別.SE, true ), // SE
745+ ( 0x83, チップ種別.SE, true ), // SE
746+ ( 0x84, チップ種別.SE, true ), // SE
747+ ( 0x85, チップ種別.SE, true ), // SE
748+ ( 0x86, チップ種別.SE, true ), // SE
749+ ( 0x87, チップ種別.SE, true ), // SE
750+ ( 0x88, チップ種別.SE, true ), // SE
751+ ( 0x89, チップ種別.SE, true ), // SE
752+ ( 0x90, チップ種別.SE, true ), // SE
753+ ( 0x91, チップ種別.SE, true ), // SE
754+ ( 0x92, チップ種別.SE, true ), // SE
755+ //----------------
756+ #endregion
699757 };
700758
701759 }
--- a/SSTFormat/v3/スコア.cs
+++ b/SSTFormat/v3/スコア.cs
@@ -179,15 +179,15 @@ namespace SSTFormat.v3
179179 } = new Dictionary<int, string>();
180180
181181 /// <summary>
182- /// #WAV で指定された、WAVファイルへの相対パス。
182+ /// #WAV で指定された、WAVファイルへの相対パス他。
183183 /// パスの基点は、#PATH_WAV があればそこ、なければ曲譜面ファイルと同じ場所。
184184 /// SSTFでは未使用。
185185 /// </summary>
186- public Dictionary<int, string> dicWAVファイルパス
186+ public Dictionary<int, (string ファイルパス, bool 多重再生する)> dicWAV
187187 {
188188 get;
189189 protected set;
190- } = new Dictionary<int, string>();
190+ } = new Dictionary<int, (string ファイルパス, bool 多重再生する)>();
191191 /// <summary>
192192 /// WAV/AVIファイルの基点フォルダの絶対パス。
193193 /// 末尾は '\' 。(例: "D:\DTXData\DemoSong\Sounds\")
@@ -468,6 +468,7 @@ namespace SSTFormat.v3
468468 cc.チップ種別 == チップ種別.拍線 ||
469469 cc.チップ種別 == チップ種別.小節メモ ||
470470 cc.チップ種別 == チップ種別.小節の先頭 ||
471+ cc.チップ種別 == チップ種別.SE || // SSTF は SE に対応していない。
471472 cc.チップ種別 == チップ種別.Unknown )
472473 {
473474 continue;
@@ -718,7 +719,7 @@ namespace SSTFormat.v3
718719 this.背景動画ファイル名 = "";
719720 this.小節長倍率リスト = new List<double>();
720721 this.dicメモ = new Dictionary<int, string>();
721- this.dicWAVファイルパス = new Dictionary<int, string>();
722+ this.dicWAV = new Dictionary<int, (string ファイルパス, bool 多重再生する)>();
722723 this._PATH_WAV = "";
723724 this.譜面ファイルパス = null;
724725 }
--- a/SSTFormat/v3/チップ.cs
+++ b/SSTFormat/v3/チップ.cs
@@ -113,6 +113,7 @@ namespace SSTFormat.v3
113113 ( this.チップ種別 == チップ種別.背景動画 ) ||
114114 ( this.チップ種別 == チップ種別.小節メモ ) ||
115115 ( this.チップ種別 == チップ種別.小節の先頭 ) ||
116+ ( this.チップ種別 == チップ種別.SE ) ||
116117 ( this.チップ種別 == チップ種別.Unknown )
117118 ) ? false : true;
118119 }
@@ -321,6 +322,7 @@ namespace SSTFormat.v3
321322 { チップ種別.背景動画, 90 },
322323 { チップ種別.小節メモ, 99 },
323324 { チップ種別.小節の先頭, 99 },
325+ { チップ種別.SE, 99 },
324326 { チップ種別.Unknown, 99 },
325327 };
326328 //-----------------
--- a/SSTFormat/v3/チップ種別.cs
+++ b/SSTFormat/v3/チップ種別.cs
@@ -7,7 +7,7 @@ namespace SSTFormat.v3
77 /// </summary>
88 /// <remarks>
99 /// 互換性を維持するために、将来にわたって不変な int 型の数値を、明確に定義する。
10- /// 増減した場合は、チップ.チップの深さ も更新すること。
10+ /// 増減した場合は、<see cref="チップ.チップの深さ"/> も更新すること。
1111 /// </remarks>
1212 public enum チップ種別 : int
1313 {
@@ -43,6 +43,9 @@ namespace SSTFormat.v3
4343 LeftCymbal_Mute = 27,
4444 RightCymbal_Mute = 28,
4545 小節の先頭 = 29,
46+
47+ // 以下、v3 以降で対応。
48+ SE = 30,
4649 }
4750
4851 /// <summary>
--- a/SSTFormat/仕様履歴.txt
+++ b/SSTFormat/仕様履歴.txt
@@ -1,9 +1,12 @@
11 
22 v3
33 チップに、チップ種別のサブとしてチップサブIDを設置。
4- DTXから変換した場合、ここにオブジェクト値が格納される。
5- SSTFでは未使用。
4+  DTXから変換した場合、ここにオブジェクト値が格納される。
5+  SSTFでは未使用。
66 チップに、難易度(0~9.99)を追加。
7+ チップ種別に SE を追加。
8+ DTXReader で、WAV を多重再生するか否かのフラグを設けて、BGM/SE で使われる WAV は多重化しないよう設定。
9+ DTXReader で、ギターとベースに対応(SE扱い)。
710
811 v2
912 チップ音量を4段階(1~4)から8段階(1~8)に変更。
--- a/SSTFormatTests/v3/DTXReaderTests.cs
+++ b/SSTFormatTests/v3/DTXReaderTests.cs
@@ -483,9 +483,9 @@ namespace SSTFormat.v3.Tests
483483 #wav02: bass.wav
484484 #00111: 010203
485485 " );
486- Assert.AreEqual( @"snare.wav", score.dicWAVファイルパス[ 1 ] );
487- Assert.AreEqual( @"bass.wav", score.dicWAVファイルパス[ 2 ] );
488- this.例外が出れば成功( () => { var p = score.dicWAVファイルパス[ 3 ]; } );
486+ Assert.AreEqual( @"snare.wav", score.dicWAV[ 1 ] );
487+ Assert.AreEqual( @"bass.wav", score.dicWAV[ 2 ] );
488+ this.例外が出れば成功( () => { var p = score.dicWAV[ 3 ]; } );
489489
490490 score = DTXReader.ReadFromString( @"
491491 #title: てすと
@@ -495,8 +495,8 @@ namespace SSTFormat.v3.Tests
495495 #00111: 010203
496496 " );
497497 // PATH_WAV はまだどちらにも反映されないこと。
498- Assert.AreEqual( @"snare.wav", score.dicWAVファイルパス[ 1 ] );
499- Assert.AreEqual( @"bass.wav", score.dicWAVファイルパス[ 2 ] );
498+ Assert.AreEqual( @"snare.wav", score.dicWAV[ 1 ] );
499+ Assert.AreEqual( @"bass.wav", score.dicWAV[ 2 ] );
500500 }
501501 //----------------
502502 #endregion
Show on old repository browser