OSDN Git Service

シンバルフリーオプションを実装。
authorくまかみ工房 <kumakamikoubou@gmail.com>
Mon, 17 Apr 2017 06:50:14 +0000 (15:50 +0900)
committerくまかみ工房 <kumakamikoubou@gmail.com>
Mon, 17 Apr 2017 06:50:14 +0000 (15:50 +0900)
このオプションを有効にすると、LeftCrash, RightCrash, Ride, RideCup, China, Splash, HiHatClose, HiHatHalfOpen, HiHatOpen について、どの入力でもどのチップにヒットできるようになる。(HiHatFootは対象外。)

StrokeStyleT/ステージ/演奏/演奏ステージ.cs
StrokeStyleT/設定/★ドラムとチップと入力の対応表.xlsx
StrokeStyleT/設定/オプション設定.cs
StrokeStyleT/設定/ドラムとチップと入力の対応表.cs

index d426942..debb695 100644 (file)
@@ -927,9 +927,8 @@ namespace SST.ステージ.演奏
 
                                                var オプション設定 = App.ユーザ管理.選択されているユーザ.オプション設定;
                                                var 対応表 = オプション設定.ドラムとチップと入力の対応表.対応表[ chip.チップ種別 ];
-                                               var AutoPlay = オプション設定.AutoPlay[ 対応表.AutoPlay種別 ];
-                                               var ヒット判定バーとの時間の絶対値sec = Math.Abs( ヒット判定バーとの時間sec );
-
+                                               bool AutoPlay = オプション設定.AutoPlay[ 対応表.AutoPlay種別 ];
+                                               double ヒット判定バーとの時間の絶対値sec = Math.Abs( ヒット判定バーとの時間sec );
                                                bool チップはヒット済みである = chip.ヒット済みである;
                                                bool チップはMISSエリアに達している = ( ヒット判定バーとの時間sec > オプション設定.最大ヒット距離sec[ ヒットランク種別.POOR ] );
                                                bool チップはヒット可能エリアにある = ( ヒット判定バーとの時間sec >= -( オプション設定.最大ヒット距離sec[ ヒットランク種別.POOR ] ) && !チップはMISSエリアに達している );
@@ -938,22 +937,35 @@ namespace SST.ステージ.演奏
                                                        return;
 
                                                // チップにヒットする入力を探す。
+                                               var ヒット入力 = App.入力管理.ポーリング結果.FirstOrDefault( ( 入力 ) => {
+
+                                                       if( !( 入力.InputEvent.押された ) )
+                                                               return false;   // 押下入力じゃない。
+
+                                                       if( 処理済み入力.Contains( 入力 ) )
+                                                               return false;   // すでに今回のターンで処理済み(=処理済み入力リストに追加済み)。
+
+                                                       if( 対応表.シンバルフリーの対象 && オプション設定.シンバルフリー )
+                                                       {
+                                                               // (A) シンバルフリーの対象チップであり、かつシンバルフリーが ON である場合
+                                                               var 入力の対応表 = オプション設定.ドラムとチップと入力の対応表.対応表.FirstOrDefault( ( kvp ) => ( kvp.Value.ドラム入力種別 == 入力.Type ) ).Value;              // 見つからなきゃバグだ
+                                                               if( !( 入力の対応表.シンバルフリーの対象 ) )
+                                                                       return false;   // この入力はシンバルフリーの対象ではない。
+                                                       }
+                                                       else
+                                                       {
+                                                               // (B) シンバルフリーの対象ではないチップ、またはシンバルフリーが OFF である場合
+                                                               if( 対応表.ドラム入力種別 != 入力.Type )
+                                                                       return false;   // チップに対応している入力じゃない。
+                                                       }
 
-                                               // todo: シンバルフリーを実装する。
-                                               var ヒット入力 = App.入力管理.ポーリング結果.FirstOrDefault( ( 入力 ) =>
-                                                       ( 入力.InputEvent.押された ) &&
-                                                       ( 対応表.ドラム入力種別 == 入力.Type ) &&
-                                                       !( 処理済み入力.Contains( 入力 ) )
-                                               );
+                                                       return true;    // この 入力 はこの chip にヒットしている。
+                                               });
 
                                                if( null == ヒット入力 )
-                                               {
                                                        return;
-                                               }
-                                               else
-                                               {
-                                                       処理済み入力.Add( ヒット入力 );
-                                               }
+
+                                               処理済み入力.Add( ヒット入力 );
 
                                                // ヒットランクを判定する。
 
index 36bbc33..285e4a5 100644 (file)
Binary files a/StrokeStyleT/設定/★ドラムとチップと入力の対応表.xlsx and b/StrokeStyleT/設定/★ドラムとチップと入力の対応表.xlsx differ
index a28a477..0c65036 100644 (file)
@@ -52,6 +52,13 @@ namespace SST.設定
                [DataMember]
                public 動画表示パターン種別 動画表示パターン種別 { get; set; }
 
+               /// <summary>
+               ///             true なら、LeftCrash・RightCrash・Ride・China・Splash・HiHat(Close,Open,Foot)の入力としての区別がなくなり、
+               ///             いずれの入力でもいずれのチップをヒットできるようになる。
+               /// </summary>
+               [DataMember]
+               public bool シンバルフリー { get; set; }
+
                public ドラムとチップと入力の対応表 ドラムとチップと入力の対応表
                {
                        get;
@@ -175,6 +182,7 @@ namespace SST.設定
 
                                this.譜面スクロール速度の倍率 = 1.0;
                                this.動画表示パターン種別 = 動画表示パターン種別.中央表示;
+                               this.シンバルフリー = false;
                        }
                }
 
index a95b55c..364f863 100644 (file)
@@ -60,6 +60,8 @@ namespace SST.設定
                                public bool MISS判定 { get; set; }
                        }
                        public ColumnAutoPlayOFF AutoPlayOFF { get; set; }
+
+                       public bool シンバルフリーの対象 { get; set; }
                }
 
                /// <summary>
@@ -111,6 +113,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = false,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -146,6 +149,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = true,
                                        },
                                        //----------------
                                        #endregion
@@ -181,6 +185,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = true,
                                        },
                                        //----------------
                                        #endregion
@@ -216,6 +221,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = true,
                                        },
                                        //----------------
                                        #endregion
@@ -251,6 +257,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = true,
                                        },
                                        //----------------
                                        #endregion
@@ -286,6 +293,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = true,
                                        },
                                        //----------------
                                        #endregion
@@ -321,6 +329,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = true,
                                        },
                                        //----------------
                                        #endregion
@@ -356,6 +365,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = true,
                                        },
                                        //----------------
                                        #endregion
@@ -391,6 +401,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = true,
                                        },
                                        //----------------
                                        #endregion
@@ -426,6 +437,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = false,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -461,6 +473,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -496,6 +509,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -531,6 +545,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -566,6 +581,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = false,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -601,6 +617,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -636,6 +653,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -671,6 +689,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -706,6 +725,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -741,6 +761,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -776,6 +797,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -811,6 +833,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -846,6 +869,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = true,
                                                },
+                                               シンバルフリーの対象 = true,
                                        },
                                        //----------------
                                        #endregion
@@ -881,6 +905,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = false,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -916,6 +941,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = false,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -951,6 +977,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = false,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -986,6 +1013,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = false,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -1021,6 +1049,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = false,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -1056,6 +1085,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = false,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -1091,6 +1121,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = false,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion
@@ -1126,6 +1157,7 @@ namespace SST.設定
                                                        },
                                                        MISS判定 = false,
                                                },
+                                               シンバルフリーの対象 = false,
                                        },
                                        //----------------
                                        #endregion