Visual C# 7.0, Windows10 Desktop App
Revision | 7f91592715a6533ee36aabf84495762984575596 (tree) |
---|---|
Time | 2017-01-14 23:15:57 |
Author | くまかみ工房 <kumakamikoubou@gmai...> |
Commiter | くまかみ工房 |
チップ種別(ドラムチップ)、レーン種別、表示レーン種別、ヒット判定、ドラム様式入力種別のマッピング情報が混乱してきたので整理。
switch case による分岐をマッピングに変更。
SSTFormat.v2.レーン種別 に Unknown を追加。(これだけなかった)
SST.ステージ.演奏.ヒットレーン種別 を 表示レーン種別に改名。
SST.入力.ドラム様式入力種別 を修正。
@@ -4,6 +4,7 @@ namespace SSTFormat.v2 | ||
4 | 4 | { |
5 | 5 | public enum レーン種別 |
6 | 6 | { |
7 | + Unknown, | |
7 | 8 | LeftCrash, |
8 | 9 | Ride, // 左右指定なし |
9 | 10 | China, // 左右指定なし |
@@ -3,8 +3,6 @@ using System.Collections.Generic; | ||
3 | 3 | using System.Diagnostics; |
4 | 4 | using System.Linq; |
5 | 5 | using SSTFormat.v2; |
6 | -using SST.設定; | |
7 | -using SST.ステージ.演奏; | |
8 | 6 | |
9 | 7 | namespace SST |
10 | 8 | { |
@@ -101,7 +101,7 @@ | ||
101 | 101 | <Compile Include="Win32.cs" /> |
102 | 102 | <Compile Include="ViewerMessage.cs" /> |
103 | 103 | <Compile Include="ステージ\コンソールフォント.cs" /> |
104 | - <Compile Include="ステージ\演奏\ヒットレーン種別Extensions.cs" /> | |
104 | + <Compile Include="ステージ\演奏\表示レーン種別Extensions.cs" /> | |
105 | 105 | <Compile Include="入力\キーバインディング.cs" /> |
106 | 106 | <Compile Include="入力\ドラム様式入力イベント.cs" /> |
107 | 107 | <Compile Include="入力\ドラム様式入力種別.cs" /> |
@@ -126,7 +126,7 @@ | ||
126 | 126 | <Compile Include="ステージ\演奏\コンボジャンプ.cs" /> |
127 | 127 | <Compile Include="ステージ\演奏\スクロール譜面.cs" /> |
128 | 128 | <Compile Include="ステージ\演奏\ドラムサウンド.cs" /> |
129 | - <Compile Include="ステージ\演奏\ヒットレーン種別.cs" /> | |
129 | + <Compile Include="ステージ\演奏\表示レーン種別.cs" /> | |
130 | 130 | <Compile Include="ステージ\演奏\ヒット判定文字列.cs" /> |
131 | 131 | <Compile Include="ステージ\演奏\ヒット判定種別.cs" /> |
132 | 132 | <Compile Include="ステージ\演奏\レーンフレーム.cs" /> |
@@ -147,6 +147,7 @@ | ||
147 | 147 | <Compile Include="曲\RootNode.cs" /> |
148 | 148 | <Compile Include="曲\曲ツリー管理.cs" /> |
149 | 149 | <Compile Include="設定\Option.cs" /> |
150 | + <Compile Include="設定\ドラムチップからのマッピング.cs" /> | |
150 | 151 | <EmbeddedResource Include="Properties\Resources.resx"> |
151 | 152 | <Generator>ResXFileCodeGenerator</Generator> |
152 | 153 | <LastGenOutput>Resources.Designer.cs</LastGenOutput> |
@@ -765,8 +765,11 @@ namespace SST.ステージ.演奏 | ||
765 | 765 | // 高頻度処理関連 |
766 | 766 | |
767 | 767 | /// <summary> |
768 | - /// 音声の再生と演奏用入力は、描画処理とは独立したタスクを使い、より高頻度にループさせる。 | |
768 | + /// 音声の再生と演奏用入力を行う。 | |
769 | 769 | /// </summary> |
770 | + /// <remarks> | |
771 | + /// 描画処理とは独立したタスクを使い、より高頻度にループさせる。 | |
772 | + /// </remarks> | |
770 | 773 | private void _高頻度進行処理タスクエントリ() |
771 | 774 | { |
772 | 775 | Log.Info( $"{FDK.Utilities.現在のメソッド名} --> 開始" ); |
@@ -813,15 +816,13 @@ namespace SST.ステージ.演奏 | ||
813 | 816 | var チップ = 演奏スコア.チップリスト[ i ]; |
814 | 817 | |
815 | 818 | double 描画時間差sec = リアルタイム演奏時刻sec - チップ.描画時刻sec; |
816 | - | |
817 | 819 | double 描画距離dpx = 演奏スコア.指定された時間secに対応する符号付きピクセル数を返す( this.譜面スクロール速度の倍率を取得する(), 描画時間差sec ); // 負数ならバー未達、0でバー直上、正数でバー通過 |
818 | 820 | bool チップは判定バーを通過した = ( 0 <= 描画距離dpx ); |
821 | + double チップのY座標 = 座標.判定バーの中央Y座標dpx + 描画距離dpx; | |
819 | 822 | |
820 | - // チップのY座標を算出する。 | |
821 | - double y = 座標.判定バーの中央Y座標dpx + 描画距離dpx; | |
822 | - if( y < -40.0 ) | |
823 | + if( チップのY座標 < -40.0 ) // -40dpx はチップが隠れるであろう適当なマージン。 | |
823 | 824 | { |
824 | - // y が画面上端より上に出ていればそこでチップのループ描画は終了。-40dpx はチップが隠れるであろう適当なマージン。 | |
825 | + // チップが画面上端より上に出ていればそこでチップのループ描画は終了。 | |
825 | 826 | break; |
826 | 827 | } |
827 | 828 |
@@ -850,12 +851,13 @@ namespace SST.ステージ.演奏 | ||
850 | 851 | { |
851 | 852 | lock( this._スレッド間同期 ) |
852 | 853 | { |
853 | - if( ( chip.ヒットされていない ) && // チップが未ヒット、かつ、 | |
854 | - ( オプション.チップは自動演奏である( chip ) ) && // チップの AutoPlay が ON、かつ、 | |
854 | + if( ( chip.ヒットされていない ) && | |
855 | + ( オプション.チップは自動演奏である( chip ) ) && | |
855 | 856 | ( 0 <= 描画距離dpx ) ) // バーを通過した。 |
856 | 857 | { |
857 | 858 | chip.ヒット済みである = true; |
858 | 859 | chip.不可視 = true; |
860 | + | |
859 | 861 | if( chip.チップ種別 == チップ種別.背景動画 ) |
860 | 862 | { |
861 | 863 | // (A) 背景動画の場合。 |
@@ -877,9 +879,16 @@ namespace SST.ステージ.演奏 | ||
877 | 879 | { |
878 | 880 | lock( this._スレッド間同期 ) |
879 | 881 | { |
880 | - if( ( chip.ヒットされていない ) && // チップが未ヒット、かつ、 | |
881 | - ( オプション.チップはヒット判定対象である( chip.チップ種別 ) ) && // チップがヒット判定対象である、かつ、 | |
882 | - ( 描画時間差sec > オプション.最大ヒット距離sec[ ヒット判定種別.POOR ] ) ) // 描画時間差が Poor 範囲を超えている。 | |
882 | + var mapping = オプション.マッピングを取得する( chip.チップ種別 ); | |
883 | + if( null == mapping ) | |
884 | + return; | |
885 | + | |
886 | + var チップがヒット判定対象である = mapping.ヒット判定する; | |
887 | + var 描画時間差がPoorの範囲を超えている = ( 描画時間差sec > オプション.最大ヒット距離sec[ ヒット判定種別.POOR ] ); | |
888 | + | |
889 | + if( chip.ヒットされていない && | |
890 | + チップがヒット判定対象である && | |
891 | + 描画時間差がPoorの範囲を超えている ) | |
883 | 892 | { |
884 | 893 | chip.ヒット済みである = true; |
885 | 894 | chip.不可視 = true; |
@@ -19,18 +19,18 @@ namespace SST.ステージ.演奏 | ||
19 | 19 | this.子リスト.Add( kvp.Value ); |
20 | 20 | } |
21 | 21 | |
22 | - public void 表示開始( ヒットレーン種別 レーン種別, ヒット判定種別 ヒット判定種別 ) | |
22 | + public void 表示開始( 表示レーン種別 表示レーン種別, ヒット判定種別 ヒット判定種別 ) | |
23 | 23 | { |
24 | 24 | lock( this._スレッド間同期 ) |
25 | 25 | { |
26 | - if( レーン種別 == ヒットレーン種別.Unknown ) | |
26 | + if( 表示レーン種別 == 表示レーン種別.Unknown ) | |
27 | 27 | return; |
28 | 28 | |
29 | 29 | // レーンに対応する進行描画コンテキストを更新し、表示を開始するためのパラメータを設定する。 |
30 | - if( this._ヒット判定レーンto進行描画コンテキスト.ContainsKey( レーン種別 ) ) // すでにあったら、 | |
31 | - this._ヒット判定レーンto進行描画コンテキスト.Remove( レーン種別 ); // 削除してから、 | |
30 | + if( this._ヒット判定レーンto進行描画コンテキスト.ContainsKey( 表示レーン種別 ) ) // すでにあったら、 | |
31 | + this._ヒット判定レーンto進行描画コンテキスト.Remove( 表示レーン種別 ); // 削除してから、 | |
32 | 32 | this._ヒット判定レーンto進行描画コンテキスト.Add( // 追加。 |
33 | - レーン種別, | |
33 | + 表示レーン種別, | |
34 | 34 | new 進行描画コンテキスト() { |
35 | 35 | ヒット判定種別 = ヒット判定種別, |
36 | 36 | 進行カウンタ = new FDK.カウンタ.単純増加後不変カウンタ( 最初の値: 0, 最後の値: 300, 値をひとつ増加させるのにかける時間ms: 1 ), // カウント開始(=表示開始) |
@@ -47,8 +47,10 @@ namespace SST.ステージ.演奏 | ||
47 | 47 | { |
48 | 48 | lock( this._スレッド間同期 ) |
49 | 49 | { |
50 | - var レーン種別 = StrokeStyleT.ユーザ管理.現在選択されているユーザ.オプション.チップに対応するヒットレーンを取得する( チップ種別 ); | |
51 | - this.表示開始( レーン種別, ヒット判定種別 ); | |
50 | + var mapping = StrokeStyleT.ユーザ管理.現在選択されているユーザ.オプション.マッピングを取得する( チップ種別 ); | |
51 | + | |
52 | + if( null != mapping ) | |
53 | + this.表示開始( mapping.表示レーン種別, ヒット判定種別 ); | |
52 | 54 | } |
53 | 55 | } |
54 | 56 |
@@ -56,10 +58,10 @@ namespace SST.ステージ.演奏 | ||
56 | 58 | { |
57 | 59 | // すべてのヒット判定レーンに対する進行描画コンテキストを生成する。 |
58 | 60 | |
59 | - this._ヒット判定レーンto進行描画コンテキスト = new Dictionary<ヒットレーン種別, 進行描画コンテキスト>(); | |
61 | + this._ヒット判定レーンto進行描画コンテキスト = new Dictionary<表示レーン種別, 進行描画コンテキスト>(); | |
60 | 62 | |
61 | - foreach( var judgeType in typeof( ヒットレーン種別 ).GetEnumValues() ) | |
62 | - this._ヒット判定レーンto進行描画コンテキスト.Add( (ヒットレーン種別) judgeType, new 進行描画コンテキスト() ); | |
63 | + foreach( var judgeType in typeof( 表示レーン種別 ).GetEnumValues() ) | |
64 | + this._ヒット判定レーンto進行描画コンテキスト.Add( (表示レーン種別) judgeType, new 進行描画コンテキスト() ); | |
63 | 65 | } |
64 | 66 | |
65 | 67 | protected override void On非活性化( デバイスリソース dr ) |
@@ -72,9 +74,9 @@ namespace SST.ステージ.演奏 | ||
72 | 74 | lock( this._スレッド間同期 ) |
73 | 75 | { |
74 | 76 | // すべての ヒットレーン種別 について、進行描画する。 |
75 | - foreach( var lane_object in typeof( ヒットレーン種別 ).GetEnumValues() ) | |
77 | + foreach( var lane_object in typeof( 表示レーン種別 ).GetEnumValues() ) | |
76 | 78 | { |
77 | - var lane = (ヒットレーン種別) lane_object; | |
79 | + var lane = (表示レーン種別) lane_object; | |
78 | 80 | var context = this._ヒット判定レーンto進行描画コンテキスト[ lane ]; |
79 | 81 | |
80 | 82 | if( context.進行カウンタ.停止中である ) |
@@ -240,7 +242,7 @@ namespace SST.ステージ.演奏 | ||
240 | 242 | } |
241 | 243 | } |
242 | 244 | |
243 | - private Dictionary<ヒットレーン種別, 進行描画コンテキスト> _ヒット判定レーンto進行描画コンテキスト = null; | |
245 | + private Dictionary<表示レーン種別, 進行描画コンテキスト> _ヒット判定レーンto進行描画コンテキスト = null; | |
244 | 246 | |
245 | 247 | private readonly Dictionary<ヒット判定種別, 画像> _文字列画像 = new Dictionary<ヒット判定種別, 画像>() { |
246 | 248 | { ヒット判定種別.PERFECT, new 画像( @"$(Static)\images\Judge Perfect.png" ) }, |
@@ -251,16 +253,16 @@ namespace SST.ステージ.演奏 | ||
251 | 253 | { ヒット判定種別.AUTO, new 画像( @"$(Static)\images\Judge Auto.png" ) }, |
252 | 254 | }; |
253 | 255 | |
254 | - private readonly Dictionary<ヒットレーン種別, float> _ヒットレーン種別toレーン表示位置Y中央dpx = new Dictionary<ヒットレーン種別, float>() { | |
255 | - { ヒットレーン種別.Unknown, 0f }, | |
256 | - { ヒットレーン種別.LeftCrash, 469f }, | |
257 | - { ヒットレーン種別.HiHat, 562f }, | |
258 | - { ヒットレーン種別.Snare, 641f }, | |
259 | - { ヒットレーン種別.Tom1, 495f }, | |
260 | - { ヒットレーン種別.Bass, 716f }, | |
261 | - { ヒットレーン種別.Tom2, 558f }, | |
262 | - { ヒットレーン種別.Tom3, 798f }, | |
263 | - { ヒットレーン種別.RightCrash, 633f }, | |
256 | + private readonly Dictionary<表示レーン種別, float> _ヒットレーン種別toレーン表示位置Y中央dpx = new Dictionary<表示レーン種別, float>() { | |
257 | + { 表示レーン種別.Unknown, 0f }, | |
258 | + { 表示レーン種別.LeftCrash, 469f }, | |
259 | + { 表示レーン種別.HiHat, 562f }, | |
260 | + { 表示レーン種別.Snare, 641f }, | |
261 | + { 表示レーン種別.Tom1, 495f }, | |
262 | + { 表示レーン種別.Bass, 716f }, | |
263 | + { 表示レーン種別.Tom2, 558f }, | |
264 | + { 表示レーン種別.Tom3, 798f }, | |
265 | + { 表示レーン種別.RightCrash, 633f }, | |
264 | 266 | }; |
265 | 267 | |
266 | 268 | private readonly object _スレッド間同期 = new object(); |
@@ -27,10 +27,13 @@ namespace SST.ステージ.演奏 | ||
27 | 27 | { |
28 | 28 | lock( this._スレッド間同期 ) |
29 | 29 | { |
30 | - if( StrokeStyleT.ユーザ管理.現在選択されているユーザ.オプション.チップはヒット判定対象である( chipType ) ) | |
30 | + var mapping = StrokeStyleT.ユーザ管理.現在選択されているユーザ.オプション.マッピングを取得する( chipType ); | |
31 | + if( null == mapping ) | |
32 | + return; | |
33 | + | |
34 | + if( mapping.ヒット判定する ) | |
31 | 35 | { |
32 | - var レーン種別 = StrokeStyleT.ユーザ管理.現在選択されているユーザ.オプション.チップに対応するヒットレーンを取得する( chipType ); | |
33 | - this.発火する( new Vector2( レーン種別.レーンの中央X位置dpx(), 座標.判定バーの中央Y座標dpx ) ); | |
36 | + this.発火する( new Vector2( mapping.表示レーン種別.レーンの中央X位置dpx(), 座標.判定バーの中央Y座標dpx ) ); | |
34 | 37 | } |
35 | 38 | } |
36 | 39 | } |
@@ -46,6 +46,7 @@ namespace SST.ステージ.演奏 | ||
46 | 46 | |
47 | 47 | public RWLock<フェーズ> 現在のフェーズ { get; } = new RWLock<フェーズ>( フェーズ.初期状態 ); |
48 | 48 | |
49 | + | |
49 | 50 | public 演奏ステージ() |
50 | 51 | { |
51 | 52 | this.子リスト.Add( this._コンボ = new コンボ() ); |
@@ -347,6 +348,7 @@ namespace SST.ステージ.演奏 | ||
347 | 348 | FDK.Utilities.解放する( ref this._デコード済みWaveSource ); |
348 | 349 | } |
349 | 350 | |
351 | + | |
350 | 352 | private bool _活性化した直後である = false; |
351 | 353 | |
352 | 354 | private double _演奏開始時刻sec = 0.0; |
@@ -3,14 +3,14 @@ | ||
3 | 3 | namespace SST.ステージ.演奏 |
4 | 4 | { |
5 | 5 | /// <summary> |
6 | - /// 判定文字列のレーン種別。 | |
7 | - /// SSTFormat.レーン種別とはまた微妙に異なるので、独立して定義する。(涙 | |
6 | + /// チップや判定文字列の表示先となるレーンの種別。 | |
8 | 7 | /// </summary> |
9 | - enum ヒットレーン種別 | |
8 | + enum 表示レーン種別 | |
10 | 9 | { |
11 | 10 | Unknown, |
12 | 11 | LeftCrash, |
13 | 12 | HiHat, |
13 | + Foot, | |
14 | 14 | Snare, |
15 | 15 | Bass, |
16 | 16 | Tom1, |
@@ -2,34 +2,37 @@ | ||
2 | 2 | |
3 | 3 | namespace SST.ステージ.演奏 |
4 | 4 | { |
5 | - static class ヒットレーン種別Extensions | |
5 | + static class 表示レーン種別Extensions | |
6 | 6 | { |
7 | - public static float レーンの中央X位置dpx( this ヒットレーン種別 laneType ) | |
7 | + public static float レーンの中央X位置dpx( this 表示レーン種別 laneType ) | |
8 | 8 | { |
9 | 9 | switch( laneType ) |
10 | 10 | { |
11 | - case ヒットレーン種別.LeftCrash: | |
11 | + case 表示レーン種別.LeftCrash: | |
12 | 12 | return 座標.レーンフレーム左端のX座標dpx + 36f; |
13 | 13 | |
14 | - case ヒットレーン種別.HiHat: | |
14 | + case 表示レーン種別.HiHat: | |
15 | 15 | return 座標.レーンフレーム左端のX座標dpx + 105f; |
16 | 16 | |
17 | - case ヒットレーン種別.Snare: | |
17 | + case 表示レーン種別.Foot: | |
18 | + return 座標.レーンフレーム左端のX座標dpx + 105f; | |
19 | + | |
20 | + case 表示レーン種別.Snare: | |
18 | 21 | return 座標.レーンフレーム左端のX座標dpx + 214f; |
19 | 22 | |
20 | - case ヒットレーン種別.Tom1: | |
23 | + case 表示レーン種別.Tom1: | |
21 | 24 | return 座標.レーンフレーム左端のX座標dpx + 310f; |
22 | 25 | |
23 | - case ヒットレーン種別.Bass: | |
26 | + case 表示レーン種別.Bass: | |
24 | 27 | return 座標.レーンフレーム左端のX座標dpx + 381f; |
25 | 28 | |
26 | - case ヒットレーン種別.Tom2: | |
29 | + case 表示レーン種別.Tom2: | |
27 | 30 | return 座標.レーンフレーム左端のX座標dpx + 448f; |
28 | 31 | |
29 | - case ヒットレーン種別.Tom3: | |
32 | + case 表示レーン種別.Tom3: | |
30 | 33 | return 座標.レーンフレーム左端のX座標dpx + 544f; |
31 | 34 | |
32 | - case ヒットレーン種別.RightCrash: | |
35 | + case 表示レーン種別.RightCrash: | |
33 | 36 | return 座標.レーンフレーム左端のX座標dpx + 632f; |
34 | 37 | } |
35 | 38 | return 0; |
@@ -21,18 +21,6 @@ namespace SST.ユーザ | ||
21 | 21 | public List<ユーザ> ユーザリスト { get; protected set; } = null; |
22 | 22 | |
23 | 23 | /// <summary> |
24 | - /// コンストラクタ時、または逆シリアル化時のメンバの既定値を設定する。 | |
25 | - /// </summary> | |
26 | - /// <param name="sc"></param> | |
27 | - [OnDeserializing] | |
28 | - private void _初期化する( StreamingContext sc ) | |
29 | - { | |
30 | - this.ユーザリスト = new List<ユーザ>(); | |
31 | - this.現在選択されているユーザ = null; | |
32 | - } | |
33 | - | |
34 | - | |
35 | - /// <summary> | |
36 | 24 | /// 現在選択されているユーザ。 |
37 | 25 | /// null の場合は、どのユーザも選択されていないことを示す。 |
38 | 26 | /// </summary> |
@@ -48,7 +36,7 @@ namespace SST.ユーザ | ||
48 | 36 | public ユーザ管理() |
49 | 37 | { |
50 | 38 | this._初期化する( new StreamingContext() ); |
51 | - this._AutoPlayerが存在しないなら追加する(); | |
39 | + this._AutoPlayerの追加または固定の設定を行う(); | |
52 | 40 | } |
53 | 41 | |
54 | 42 | /// <summary> |
@@ -209,30 +197,46 @@ namespace SST.ユーザ | ||
209 | 197 | FDK.Log.ERROR( $"Usersファイルの読み込みに失敗しました。[{e.Message}][{XMLファイルパス}]" ); |
210 | 198 | userManager = new ユーザ管理(); |
211 | 199 | } |
212 | - userManager._AutoPlayerが存在しないなら追加する(); | |
200 | + userManager._AutoPlayerの追加または固定の設定を行う(); | |
213 | 201 | } |
214 | 202 | else |
215 | 203 | { |
216 | 204 | FDK.Log.WARNING( $"Usersファイルが存在しません。作成します。[{XMLファイルパス}]" ); |
217 | - userManager._AutoPlayerが存在しないなら追加する(); // 保存する前に追加。 | |
205 | + userManager._AutoPlayerの追加または固定の設定を行う(); // 保存する前に追加。 | |
218 | 206 | userManager.保存する( XMLファイルパス ); |
219 | 207 | } |
220 | 208 | |
221 | 209 | return userManager; |
222 | 210 | } |
223 | 211 | |
224 | - private void _AutoPlayerが存在しないなら追加する() | |
212 | + /// <summary> | |
213 | + /// コンストラクタ時、または逆シリアル化時のメンバの既定値を設定する。 | |
214 | + /// </summary> | |
215 | + /// <param name="sc"></param> | |
216 | + [OnDeserializing] | |
217 | + private void _初期化する( StreamingContext sc ) | |
225 | 218 | { |
226 | - int userIndex = this.ユーザリスト.FindIndex( ( user ) => ( user.名前 == Properties.Resources.AUTOPLAYER ) ); | |
219 | + this.ユーザリスト = new List<ユーザ>(); | |
220 | + this.現在選択されているユーザ = null; | |
221 | + } | |
227 | 222 | |
228 | - if( -1 == userIndex ) // 存在してない | |
223 | + private void _AutoPlayerの追加または固定の設定を行う() | |
224 | + { | |
225 | + // AutoPlayer ユーザが存在しないなら、追加する。 | |
226 | + if( -1 == this.ユーザリスト.FindIndex( ( user ) => ( user.名前 == Properties.Resources.AUTOPLAYER ) ) ) | |
229 | 227 | { |
230 | 228 | var autoPlayer = new ユーザ( Properties.Resources.AUTOPLAYER ); |
231 | 229 | autoPlayer.オプション.自動演奏を一括設定する( true ); |
232 | 230 | autoPlayer.曲検索フォルダパスリスト.Add( @"$(Static)\songs" ); // 既定の曲フォルダ |
233 | 231 | this.ユーザリスト.Add( autoPlayer ); |
232 | + } | |
234 | 233 | |
235 | - FDK.Log.Info( "ユーザリストに AutoPlayer を追加しました。" ); | |
234 | + // AutoPlayer の固定の設定を行う。 | |
235 | + { | |
236 | + var autoPlayer = this.ユーザリスト.Find( ( user ) => ( user.名前 == Properties.Resources.AUTOPLAYER ) ); | |
237 | + | |
238 | + // 常に全オート。 | |
239 | + autoPlayer.オプション.自動演奏を一括設定する( true ); | |
236 | 240 | } |
237 | 241 | } |
238 | 242 |
@@ -126,7 +126,6 @@ namespace SST.入力 | ||
126 | 126 | { 操作コマンド種別.決定, new [] { |
127 | 127 | new [] { ドラム様式入力種別.LeftCrash }, |
128 | 128 | new [] { ドラム様式入力種別.Ride }, |
129 | - new [] { ドラム様式入力種別.Ride_Cup }, | |
130 | 129 | new [] { ドラム様式入力種別.China }, |
131 | 130 | new [] { ドラム様式入力種別.Splash } |
132 | 131 | } }, |
@@ -164,7 +163,6 @@ namespace SST.入力 | ||
164 | 163 | { this.MidiKey( 0, 93 ), ドラム様式入力種別.HiHat_Close }, |
165 | 164 | { this.MidiKey( 0, 46 ), ドラム様式入力種別.HiHat_Open }, |
166 | 165 | { this.MidiKey( 0, 92 ), ドラム様式入力種別.HiHat_Open }, |
167 | - { this.MidiKey( 0, 44 ), ドラム様式入力種別.HiHat_Foot }, | |
168 | 166 | { this.MidiKey( 0, 255 ), ドラム様式入力種別.HiHat_Control }, // FDK の MidiIn クラスは、FootControl を ノート 255 として扱う。 |
169 | 167 | { this.MidiKey( 0, 25 ), ドラム様式入力種別.Snare }, |
170 | 168 | { this.MidiKey( 0, 26 ), ドラム様式入力種別.Snare }, |
@@ -16,18 +16,18 @@ namespace SST.入力 | ||
16 | 16 | Unknown, |
17 | 17 | LeftCrash, |
18 | 18 | Ride, |
19 | - Ride_Cup, | |
19 | + //Ride_Cup, --> Ride として扱う。 | |
20 | 20 | China, |
21 | 21 | Splash, |
22 | 22 | HiHat_Open, |
23 | - //HiHat_HalfOpen, --> 削除: HiHat_Open として扱う。 | |
23 | + //HiHat_HalfOpen, --> HiHat_Open として扱う。 | |
24 | 24 | HiHat_Close, |
25 | - HiHat_Foot, | |
26 | - HiHat_Control, // --> 追加: 開度(入力信号である) | |
25 | + //HiHat_Foot, --> ヒット判定しない。 | |
26 | + HiHat_Control, // --> 開度(入力信号である) | |
27 | 27 | Snare, |
28 | 28 | Snare_OpenRim, |
29 | 29 | Snare_ClosedRim, |
30 | - //Snare_Ghost, --> 削除: 音量の小さいSnare として扱う。 | |
30 | + //Snare_Ghost, --> ヒット判定しない。 | |
31 | 31 | Bass, |
32 | 32 | Tom1, |
33 | 33 | Tom1_Rim, |
@@ -36,7 +36,9 @@ namespace SST.入力 | ||
36 | 36 | Tom3, |
37 | 37 | Tom3_Rim, |
38 | 38 | RightCrash, |
39 | - //LeftCymbal_Mute, --> 削除: (YAMAHAでは)入力信号じゃない | |
40 | - //RightCymbal_Mute, --> 削除: (YAMAHAでは)入力信号じゃない | |
39 | + //LeftCymbal_Mute, --> (YAMAHAでは)入力信号じゃない | |
40 | + //RightCymbal_Mute, --> (YAMAHAでは)入力信号じゃない | |
41 | 41 | } |
42 | + | |
43 | + // ※変更したら、チップ種別の Extention も修正すること。 | |
42 | 44 | } |
@@ -6,6 +6,7 @@ using System.Linq; | ||
6 | 6 | using System.Runtime.Serialization; |
7 | 7 | using System.Xml; |
8 | 8 | using SSTFormat.v2; |
9 | +using SST.入力; | |
9 | 10 | using SST.ステージ.演奏; |
10 | 11 | |
11 | 12 | namespace SST.設定 |
@@ -58,11 +59,8 @@ namespace SST.設定 | ||
58 | 59 | /// <summary> |
59 | 60 | /// AutoPlay であるなら true 。 |
60 | 61 | /// </summary> |
61 | - /// <remarks> | |
62 | - /// SSTFormat.レーン種別単位である(チップ種別、ヒットレーン種別ではない)ことに注意。 | |
63 | - /// </remarks> | |
64 | 62 | [DataMember] |
65 | - public Dictionary<レーン種別, bool> AutoPlay { get; set; } | |
63 | + public Dictionary<ドラム様式入力種別, bool> AutoPlay { get; set; } | |
66 | 64 | |
67 | 65 | /// <summary> |
68 | 66 | /// 演奏画面での譜面スクロール速度の倍率。 |
@@ -97,20 +95,15 @@ namespace SST.設定 | ||
97 | 95 | /// </param> |
98 | 96 | public void 自動演奏を一括設定する( bool 設定値 ) |
99 | 97 | { |
100 | - this.AutoPlay[ レーン種別.LeftCrash ] = | |
101 | - this.AutoPlay[ レーン種別.Ride ] = | |
102 | - this.AutoPlay[ レーン種別.China ] = | |
103 | - this.AutoPlay[ レーン種別.Splash ] = | |
104 | - this.AutoPlay[ レーン種別.HiHat ] = | |
105 | - this.AutoPlay[ レーン種別.Snare ] = | |
106 | - this.AutoPlay[ レーン種別.Bass ] = | |
107 | - this.AutoPlay[ レーン種別.Tom1 ] = | |
108 | - this.AutoPlay[ レーン種別.Tom2 ] = | |
109 | - this.AutoPlay[ レーン種別.Tom3 ] = | |
110 | - this.AutoPlay[ レーン種別.RightCrash ] = 設定値; | |
111 | - | |
112 | - this.AutoPlay[ レーン種別.BPM ] = false; // 常に | |
113 | - this.AutoPlay[ レーン種別.Song ] = true; // 常に | |
98 | + foreach( var itemObject in Enum.GetValues( typeof( ドラム様式入力種別 ) ) ) | |
99 | + { | |
100 | + var item = (ドラム様式入力種別) itemObject; | |
101 | + | |
102 | + if( this.AutoPlay.ContainsKey( item ) ) | |
103 | + this.AutoPlay.Remove( item ); | |
104 | + | |
105 | + this.AutoPlay[ item ] = 設定値; | |
106 | + } | |
114 | 107 | } |
115 | 108 | |
116 | 109 | /// <summary> |
@@ -176,162 +169,47 @@ namespace SST.設定 | ||
176 | 169 | option.保存する( XMLファイルパス ); |
177 | 170 | } |
178 | 171 | |
172 | + option._チップからのマッピングを現在のオプション内容で初期化する(); | |
173 | + | |
179 | 174 | return option; |
180 | 175 | } |
181 | 176 | |
182 | - /// <summary> | |
183 | - /// チップに対応するヒットレーンを返す。 | |
184 | - /// 現在のオプション内容を参照して対応を決定する。 | |
185 | - /// </summary> | |
186 | - public ヒットレーン種別 チップに対応するヒットレーンを取得する( チップ種別 chipType ) | |
177 | + public bool チップは自動演奏である( チップ種別 chipType ) | |
187 | 178 | { |
188 | - var レーン種別 = ヒットレーン種別.Unknown; // ヒット判定しないレーンなら Unknown。 | |
189 | - | |
190 | - switch( chipType ) | |
179 | + if( this._チップからのマッピング.ContainsKey( chipType ) ) | |
191 | 180 | { |
192 | - case チップ種別.LeftCrash: | |
193 | - レーン種別 = ヒットレーン種別.LeftCrash; | |
194 | - break; | |
195 | - | |
196 | - case チップ種別.Ride: | |
197 | - case チップ種別.Ride_Cup: | |
198 | - レーン種別 = ( this.Rideは左 ) ? ヒットレーン種別.LeftCrash : ヒットレーン種別.RightCrash; | |
199 | - break; | |
200 | - | |
201 | - case チップ種別.China: | |
202 | - レーン種別 = ( this.Chinaは左 ) ? ヒットレーン種別.LeftCrash : ヒットレーン種別.RightCrash; | |
203 | - break; | |
204 | - | |
205 | - case チップ種別.Splash: | |
206 | - レーン種別 = ( this.Splashは左 ) ? ヒットレーン種別.LeftCrash : ヒットレーン種別.RightCrash; | |
207 | - break; | |
208 | - | |
209 | - case チップ種別.HiHat_Open: | |
210 | - case チップ種別.HiHat_HalfOpen: | |
211 | - case チップ種別.HiHat_Close: | |
212 | - //case チップ種別.HiHat_Foot: → 判定なし。 | |
213 | - レーン種別 = ヒットレーン種別.HiHat; | |
214 | - break; | |
215 | - | |
216 | - case チップ種別.Snare: | |
217 | - case チップ種別.Snare_OpenRim: | |
218 | - case チップ種別.Snare_ClosedRim: | |
219 | - //case チップ種別.Snare_Ghost: → 判定なし。 | |
220 | - レーン種別 = ヒットレーン種別.Snare; | |
221 | - break; | |
222 | - | |
223 | - case チップ種別.Bass: | |
224 | - レーン種別 = ヒットレーン種別.Bass; | |
225 | - break; | |
226 | - | |
227 | - case チップ種別.Tom1: | |
228 | - case チップ種別.Tom1_Rim: | |
229 | - レーン種別 = ヒットレーン種別.Tom1; | |
230 | - break; | |
231 | - | |
232 | - case チップ種別.Tom2: | |
233 | - case チップ種別.Tom2_Rim: | |
234 | - レーン種別 = ヒットレーン種別.Tom2; | |
235 | - break; | |
236 | - | |
237 | - case チップ種別.Tom3: | |
238 | - case チップ種別.Tom3_Rim: | |
239 | - レーン種別 = ヒットレーン種別.Tom3; | |
240 | - break; | |
241 | - | |
242 | - case チップ種別.RightCrash: | |
243 | - レーン種別 = ヒットレーン種別.RightCrash; | |
244 | - break; | |
245 | - | |
246 | - case チップ種別.LeftCymbal_Mute: | |
247 | - レーン種別 = ヒットレーン種別.LeftCrash; | |
248 | - break; | |
249 | - | |
250 | - case チップ種別.RightCymbal_Mute: | |
251 | - レーン種別 = ヒットレーン種別.RightCrash; | |
252 | - break; | |
181 | + var drumType = this._チップからのマッピング[ chipType ].ドラム様式入力種別; | |
182 | + | |
183 | + if( ( drumType != ドラム様式入力種別.Unknown ) && // AutoPlay[Unknown] は無効。 | |
184 | + ( this.AutoPlay.ContainsKey( drumType ) ) ) | |
185 | + { | |
186 | + return this.AutoPlay[ drumType ]; | |
187 | + } | |
253 | 188 | } |
254 | 189 | |
255 | - return レーン種別; | |
190 | + return true; // 既定値。 | |
256 | 191 | } |
257 | - public ヒットレーン種別 チップに対応するヒットレーンを取得する( チップ chip ) | |
258 | - { | |
259 | - return チップに対応するヒットレーンを取得する( chip.チップ種別 ); | |
260 | - } | |
261 | - | |
262 | - public bool チップはヒット判定対象である( チップ種別 chipType ) | |
263 | - { | |
264 | - // 対応するヒットレーンが Unknown じゃなければ判定対象である。 | |
265 | - return ( this.チップに対応するヒットレーンを取得する( chipType ) != ヒットレーン種別.Unknown ); | |
266 | - } | |
267 | - public bool チップはヒット判定対象である( チップ chip ) | |
192 | + public bool チップは自動演奏である( チップ chip ) | |
268 | 193 | { |
269 | - return this.チップはヒット判定対象である( chip.チップ種別 ); | |
194 | + return this.チップは自動演奏である( chip.チップ種別 ); | |
270 | 195 | } |
271 | 196 | |
272 | - public bool チップは自動演奏である( チップ種別 chipType ) | |
197 | + public ドラムチップからのマッピング マッピングを取得する( チップ種別 chipType ) | |
273 | 198 | { |
274 | - // チップの種別に対応するレーンの AutoPlay 設定値を返す。 | |
275 | - switch( chipType ) | |
199 | + if( this._チップからのマッピング.ContainsKey( chipType ) ) | |
276 | 200 | { |
277 | - case チップ種別.LeftCrash: | |
278 | - case チップ種別.LeftCymbal_Mute: | |
279 | - return this.AutoPlay[ レーン種別.LeftCrash ]; | |
280 | - | |
281 | - case チップ種別.Ride: | |
282 | - case チップ種別.Ride_Cup: | |
283 | - return ( this.Rideは左 ) ? this.AutoPlay[ レーン種別.LeftCrash ] : this.AutoPlay[ レーン種別.RightCrash ]; | |
284 | - | |
285 | - case チップ種別.China: | |
286 | - return ( this.Chinaは左 ) ? this.AutoPlay[ レーン種別.LeftCrash ] : this.AutoPlay[ レーン種別.RightCrash ]; | |
287 | - | |
288 | - case チップ種別.Splash: | |
289 | - return ( this.Splashは左 ) ? this.AutoPlay[ レーン種別.LeftCrash ] : this.AutoPlay[ レーン種別.RightCrash ]; | |
290 | - | |
291 | - case チップ種別.HiHat_Open: | |
292 | - case チップ種別.HiHat_HalfOpen: | |
293 | - case チップ種別.HiHat_Close: | |
294 | - case チップ種別.HiHat_Foot: | |
295 | - return this.AutoPlay[ レーン種別.HiHat ]; | |
296 | - | |
297 | - case チップ種別.Snare: | |
298 | - case チップ種別.Snare_OpenRim: | |
299 | - case チップ種別.Snare_ClosedRim: | |
300 | - case チップ種別.Snare_Ghost: | |
301 | - return this.AutoPlay[ レーン種別.Snare ]; | |
302 | - | |
303 | - case チップ種別.Bass: | |
304 | - return this.AutoPlay[ レーン種別.Bass ]; | |
305 | - | |
306 | - case チップ種別.Tom1: | |
307 | - case チップ種別.Tom1_Rim: | |
308 | - return this.AutoPlay[ レーン種別.Tom1 ]; | |
309 | - | |
310 | - case チップ種別.Tom2: | |
311 | - case チップ種別.Tom2_Rim: | |
312 | - return this.AutoPlay[ レーン種別.Tom2 ]; | |
313 | - | |
314 | - case チップ種別.Tom3: | |
315 | - case チップ種別.Tom3_Rim: | |
316 | - return this.AutoPlay[ レーン種別.Tom3 ]; | |
317 | - | |
318 | - case チップ種別.RightCrash: | |
319 | - case チップ種別.RightCymbal_Mute: | |
320 | - return this.AutoPlay[ レーン種別.RightCrash ]; | |
321 | - | |
322 | - case チップ種別.背景動画: | |
323 | - return true; // 常にAutoPlay | |
201 | + return this._チップからのマッピング[ chipType ]; | |
324 | 202 | } |
325 | 203 | |
326 | - // 上記以外はみな false。 | |
327 | - return false; | |
328 | - } | |
329 | - public bool チップは自動演奏である( チップ chip ) | |
330 | - { | |
331 | - return this.チップは自動演奏である( chip.チップ種別 ); | |
204 | + return null; // チップはドラムチップじゃない | |
332 | 205 | } |
333 | 206 | |
334 | 207 | /// <summary> |
208 | + /// チップ種別と各種種別との対応表。 | |
209 | + /// </summary> | |
210 | + private Dictionary<チップ種別, ドラムチップからのマッピング> _チップからのマッピング = null; | |
211 | + | |
212 | + /// <summary> | |
335 | 213 | /// メンバを初期化する。 |
336 | 214 | /// </summary> |
337 | 215 | /// <param name="sc"></param> |
@@ -339,7 +217,7 @@ namespace SST.設定 | ||
339 | 217 | /// コンストラクタ、または逆シリアル前に呼び出される。 |
340 | 218 | /// 特に、既定の初期値だと困る逆シリアル化の対象メンバがあれば、ここで初期化しておくこと。 |
341 | 219 | /// </remarks> |
342 | - [OnDeserializing] | |
220 | + [ OnDeserializing ] | |
343 | 221 | private void _初期化する( StreamingContext sc ) |
344 | 222 | { |
345 | 223 | this.Rideは左 = false; |
@@ -355,27 +233,89 @@ namespace SST.設定 | ||
355 | 233 | { ヒット判定種別.AUTO, Autoの最大ヒット距離secの既定値 }, |
356 | 234 | }; |
357 | 235 | |
358 | - this.AutoPlay = new Dictionary<レーン種別, bool>() { | |
359 | - { レーン種別.LeftCrash, false }, | |
360 | - { レーン種別.Ride, false }, | |
361 | - { レーン種別.China, false }, | |
362 | - { レーン種別.Splash, false }, | |
363 | - { レーン種別.HiHat, false }, | |
364 | - { レーン種別.Foot, false }, | |
365 | - { レーン種別.Snare, false }, | |
366 | - { レーン種別.Bass, false }, | |
367 | - { レーン種別.Tom1, false }, | |
368 | - { レーン種別.Tom2, false }, | |
369 | - { レーン種別.Tom3, false }, | |
370 | - { レーン種別.RightCrash, false }, | |
371 | - { レーン種別.BPM, false }, | |
372 | - { レーン種別.Song, true }, | |
373 | - }; | |
236 | + this.AutoPlay = new Dictionary<ドラム様式入力種別, bool>(); | |
237 | + this.自動演奏を一括設定する( false ); | |
374 | 238 | |
375 | 239 | this.譜面スクロール速度の倍率 = 1.0; |
376 | 240 | this.演奏動画の表示パターン = 1; |
241 | + | |
242 | + this._チップからのマッピングを現在のオプション内容で初期化する(); | |
243 | + } | |
244 | + private void _チップからのマッピングを現在のオプション内容で初期化する() | |
245 | + { | |
246 | + this._チップからのマッピング = new Dictionary<チップ種別, ドラムチップからのマッピング>() { | |
247 | + | |
248 | + { チップ種別.Unknown, | |
249 | + new ドラムチップからのマッピング( チップ種別.Unknown, レーン種別.Unknown, 表示レーン種別.Unknown, ドラム様式入力種別.Unknown ) }, | |
250 | + | |
251 | + { チップ種別.LeftCrash, | |
252 | + new ドラムチップからのマッピング( チップ種別.LeftCrash, レーン種別.LeftCrash, 表示レーン種別.LeftCrash, ドラム様式入力種別.LeftCrash ) }, | |
253 | + | |
254 | + { チップ種別.Ride, | |
255 | + new ドラムチップからのマッピング( チップ種別.Ride, レーン種別.Ride, ( this.Rideは左 ) ? 表示レーン種別.LeftCrash : 表示レーン種別.RightCrash, ドラム様式入力種別.Ride ) }, | |
256 | + | |
257 | + { チップ種別.Ride_Cup, | |
258 | + new ドラムチップからのマッピング( チップ種別.Ride_Cup, レーン種別.Ride, ( this.Rideは左 ) ? 表示レーン種別.LeftCrash : 表示レーン種別.RightCrash, ドラム様式入力種別.Ride ) }, | |
259 | + | |
260 | + { チップ種別.China, | |
261 | + new ドラムチップからのマッピング( チップ種別.China, レーン種別.China, ( this.Chinaは左 ) ? 表示レーン種別.LeftCrash : 表示レーン種別.RightCrash, ドラム様式入力種別.China ) }, | |
262 | + | |
263 | + { チップ種別.Splash, | |
264 | + new ドラムチップからのマッピング( チップ種別.Splash, レーン種別.Splash, ( this.Splashは左 ) ? 表示レーン種別.LeftCrash : 表示レーン種別.RightCrash, ドラム様式入力種別.Splash ) }, | |
265 | + | |
266 | + { チップ種別.HiHat_Open, | |
267 | + new ドラムチップからのマッピング( チップ種別.HiHat_Open, レーン種別.HiHat, 表示レーン種別.HiHat, ドラム様式入力種別.HiHat_Open ) }, | |
268 | + | |
269 | + { チップ種別.HiHat_HalfOpen, | |
270 | + new ドラムチップからのマッピング( チップ種別.HiHat_HalfOpen, レーン種別.HiHat, 表示レーン種別.HiHat, ドラム様式入力種別.HiHat_Open ) }, | |
271 | + | |
272 | + { チップ種別.HiHat_Close, | |
273 | + new ドラムチップからのマッピング( チップ種別.HiHat_Close, レーン種別.HiHat, 表示レーン種別.HiHat, ドラム様式入力種別.HiHat_Close ) }, | |
274 | + | |
275 | + { チップ種別.HiHat_Foot, | |
276 | + new ドラムチップからのマッピング( チップ種別.HiHat_Foot, レーン種別.Foot, 表示レーン種別.Foot, ドラム様式入力種別.Unknown ) }, | |
277 | + | |
278 | + { チップ種別.Snare, | |
279 | + new ドラムチップからのマッピング( チップ種別.Snare, レーン種別.Snare, 表示レーン種別.Snare, ドラム様式入力種別.Snare ) }, | |
280 | + | |
281 | + { チップ種別.Snare_OpenRim, | |
282 | + new ドラムチップからのマッピング( チップ種別.Snare_OpenRim, レーン種別.Snare, 表示レーン種別.Snare, ドラム様式入力種別.Snare_OpenRim ) }, | |
283 | + | |
284 | + { チップ種別.Snare_ClosedRim, | |
285 | + new ドラムチップからのマッピング( チップ種別.Snare_ClosedRim, レーン種別.Snare, 表示レーン種別.Snare, ドラム様式入力種別.Snare_ClosedRim ) }, | |
286 | + | |
287 | + { チップ種別.Snare_Ghost, | |
288 | + new ドラムチップからのマッピング( チップ種別.Snare_Ghost, レーン種別.Snare, 表示レーン種別.Snare, ドラム様式入力種別.Unknown ) }, | |
289 | + | |
290 | + { チップ種別.Bass, | |
291 | + new ドラムチップからのマッピング( チップ種別.Bass, レーン種別.Bass, 表示レーン種別.Bass, ドラム様式入力種別.Bass ) }, | |
292 | + | |
293 | + { チップ種別.Tom1, | |
294 | + new ドラムチップからのマッピング( チップ種別.Tom1, レーン種別.Tom1, 表示レーン種別.Tom1, ドラム様式入力種別.Tom1 ) }, | |
295 | + | |
296 | + { チップ種別.Tom1_Rim, | |
297 | + new ドラムチップからのマッピング( チップ種別.Tom1_Rim, レーン種別.Tom1, 表示レーン種別.Tom1, ドラム様式入力種別.Tom1_Rim ) }, | |
298 | + | |
299 | + { チップ種別.Tom2, | |
300 | + new ドラムチップからのマッピング( チップ種別.Tom2, レーン種別.Tom2, 表示レーン種別.Tom2, ドラム様式入力種別.Tom2 ) }, | |
301 | + | |
302 | + { チップ種別.Tom2_Rim, | |
303 | + new ドラムチップからのマッピング( チップ種別.Tom2_Rim, レーン種別.Tom2, 表示レーン種別.Tom2, ドラム様式入力種別.Tom2_Rim ) }, | |
304 | + | |
305 | + { チップ種別.Tom3, | |
306 | + new ドラムチップからのマッピング( チップ種別.Tom3, レーン種別.Tom3, 表示レーン種別.Tom3, ドラム様式入力種別.Tom3 ) }, | |
307 | + | |
308 | + { チップ種別.Tom3_Rim, | |
309 | + new ドラムチップからのマッピング( チップ種別.Tom3_Rim, レーン種別.Tom3, 表示レーン種別.Tom3, ドラム様式入力種別.Tom3_Rim ) }, | |
310 | + | |
311 | + { チップ種別.RightCrash, | |
312 | + new ドラムチップからのマッピング( チップ種別.RightCrash, レーン種別.RightCrash, 表示レーン種別.RightCrash, ドラム様式入力種別.RightCrash ) }, | |
313 | + | |
314 | + { チップ種別.LeftCymbal_Mute, | |
315 | + new ドラムチップからのマッピング( チップ種別.LeftCymbal_Mute, レーン種別.LeftCrash, 表示レーン種別.LeftCrash, ドラム様式入力種別.Unknown ) }, | |
316 | + }; | |
377 | 317 | } |
378 | - | |
318 | + | |
379 | 319 | #region " IExtensibleDataObject の実装 " |
380 | 320 | //---------------- |
381 | 321 | private ExtensionDataObject _ExData; |
@@ -0,0 +1,45 @@ | ||
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Diagnostics; | |
4 | +using System.Linq; | |
5 | +using SSTFormat.v2; | |
6 | +using SST.入力; | |
7 | +using SST.ステージ.演奏; | |
8 | + | |
9 | +namespace SST.設定 | |
10 | +{ | |
11 | + class ドラムチップからのマッピング | |
12 | + { | |
13 | + /// <summary> | |
14 | + /// ドラムチップの種別。マッピングのキー値。 | |
15 | + /// </summary> | |
16 | + public チップ種別 チップ種別 = チップ種別.Unknown; | |
17 | + | |
18 | + /// <summary> | |
19 | + /// ドラムチップに対応するレーン種別。 | |
20 | + /// </summary> | |
21 | + public レーン種別 レーン種別 = レーン種別.Bass; | |
22 | + | |
23 | + /// <summary> | |
24 | + /// ドラムチップの表示先レーン。 | |
25 | + /// </summary> | |
26 | + public 表示レーン種別 表示レーン種別 = 表示レーン種別.Unknown; | |
27 | + | |
28 | + /// <summary> | |
29 | + /// ドラムチップとヒット判定を行うドラム様式入力。 | |
30 | + /// ヒット判定を行わないチップなら、Unknown。 | |
31 | + /// </summary> | |
32 | + public ドラム様式入力種別 ドラム様式入力種別 = ドラム様式入力種別.Unknown; | |
33 | + | |
34 | + public bool ヒット判定する => ( this.ドラム様式入力種別 != ドラム様式入力種別.Unknown ); | |
35 | + public bool ヒット判定しない => !this.ヒット判定する; | |
36 | + | |
37 | + public ドラムチップからのマッピング( チップ種別 chipType, レーン種別 laneType, 表示レーン種別 locationLaneType, ドラム様式入力種別 drumType ) | |
38 | + { | |
39 | + this.チップ種別 = chipType; | |
40 | + this.レーン種別 = laneType; | |
41 | + this.表示レーン種別 = locationLaneType; | |
42 | + this.ドラム様式入力種別 = drumType; | |
43 | + } | |
44 | + } | |
45 | +} |