Visual C# 7.0, Windows10 Desktop App
Revision | 95b9837c822f71f20200abba2d8c6df81ec13515 (tree) |
---|---|
Zeit | 2017-04-17 15:50:14 |
Autor | くまかみ工房 <kumakamikoubou@gmai...> |
Commiter | くまかみ工房 |
シンバルフリーオプションを実装。
このオプションを有効にすると、LeftCrash, RightCrash, Ride, RideCup, China, Splash, HiHatClose, HiHatHalfOpen, HiHatOpen について、どの入力でもどのチップにヒットできるようになる。(HiHatFootは対象外。)
@@ -927,9 +927,8 @@ namespace SST.ステージ.演奏 | ||
927 | 927 | |
928 | 928 | var オプション設定 = App.ユーザ管理.選択されているユーザ.オプション設定; |
929 | 929 | var 対応表 = オプション設定.ドラムとチップと入力の対応表.対応表[ chip.チップ種別 ]; |
930 | - var AutoPlay = オプション設定.AutoPlay[ 対応表.AutoPlay種別 ]; | |
931 | - var ヒット判定バーとの時間の絶対値sec = Math.Abs( ヒット判定バーとの時間sec ); | |
932 | - | |
930 | + bool AutoPlay = オプション設定.AutoPlay[ 対応表.AutoPlay種別 ]; | |
931 | + double ヒット判定バーとの時間の絶対値sec = Math.Abs( ヒット判定バーとの時間sec ); | |
933 | 932 | bool チップはヒット済みである = chip.ヒット済みである; |
934 | 933 | bool チップはMISSエリアに達している = ( ヒット判定バーとの時間sec > オプション設定.最大ヒット距離sec[ ヒットランク種別.POOR ] ); |
935 | 934 | bool チップはヒット可能エリアにある = ( ヒット判定バーとの時間sec >= -( オプション設定.最大ヒット距離sec[ ヒットランク種別.POOR ] ) && !チップはMISSエリアに達している ); |
@@ -938,22 +937,35 @@ namespace SST.ステージ.演奏 | ||
938 | 937 | return; |
939 | 938 | |
940 | 939 | // チップにヒットする入力を探す。 |
940 | + var ヒット入力 = App.入力管理.ポーリング結果.FirstOrDefault( ( 入力 ) => { | |
941 | + | |
942 | + if( !( 入力.InputEvent.押された ) ) | |
943 | + return false; // 押下入力じゃない。 | |
944 | + | |
945 | + if( 処理済み入力.Contains( 入力 ) ) | |
946 | + return false; // すでに今回のターンで処理済み(=処理済み入力リストに追加済み)。 | |
947 | + | |
948 | + if( 対応表.シンバルフリーの対象 && オプション設定.シンバルフリー ) | |
949 | + { | |
950 | + // (A) シンバルフリーの対象チップであり、かつシンバルフリーが ON である場合 | |
951 | + var 入力の対応表 = オプション設定.ドラムとチップと入力の対応表.対応表.FirstOrDefault( ( kvp ) => ( kvp.Value.ドラム入力種別 == 入力.Type ) ).Value; // 見つからなきゃバグだ | |
952 | + if( !( 入力の対応表.シンバルフリーの対象 ) ) | |
953 | + return false; // この入力はシンバルフリーの対象ではない。 | |
954 | + } | |
955 | + else | |
956 | + { | |
957 | + // (B) シンバルフリーの対象ではないチップ、またはシンバルフリーが OFF である場合 | |
958 | + if( 対応表.ドラム入力種別 != 入力.Type ) | |
959 | + return false; // チップに対応している入力じゃない。 | |
960 | + } | |
941 | 961 | |
942 | - // todo: シンバルフリーを実装する。 | |
943 | - var ヒット入力 = App.入力管理.ポーリング結果.FirstOrDefault( ( 入力 ) => | |
944 | - ( 入力.InputEvent.押された ) && | |
945 | - ( 対応表.ドラム入力種別 == 入力.Type ) && | |
946 | - !( 処理済み入力.Contains( 入力 ) ) | |
947 | - ); | |
962 | + return true; // この 入力 はこの chip にヒットしている。 | |
963 | + }); | |
948 | 964 | |
949 | 965 | if( null == ヒット入力 ) |
950 | - { | |
951 | 966 | return; |
952 | - } | |
953 | - else | |
954 | - { | |
955 | - 処理済み入力.Add( ヒット入力 ); | |
956 | - } | |
967 | + | |
968 | + 処理済み入力.Add( ヒット入力 ); | |
957 | 969 | |
958 | 970 | // ヒットランクを判定する。 |
959 | 971 |
@@ -52,6 +52,13 @@ namespace SST.設定 | ||
52 | 52 | [DataMember] |
53 | 53 | public 動画表示パターン種別 動画表示パターン種別 { get; set; } |
54 | 54 | |
55 | + /// <summary> | |
56 | + /// true なら、LeftCrash・RightCrash・Ride・China・Splash・HiHat(Close,Open,Foot)の入力としての区別がなくなり、 | |
57 | + /// いずれの入力でもいずれのチップをヒットできるようになる。 | |
58 | + /// </summary> | |
59 | + [DataMember] | |
60 | + public bool シンバルフリー { get; set; } | |
61 | + | |
55 | 62 | public ドラムとチップと入力の対応表 ドラムとチップと入力の対応表 |
56 | 63 | { |
57 | 64 | get; |
@@ -175,6 +182,7 @@ namespace SST.設定 | ||
175 | 182 | |
176 | 183 | this.譜面スクロール速度の倍率 = 1.0; |
177 | 184 | this.動画表示パターン種別 = 動画表示パターン種別.中央表示; |
185 | + this.シンバルフリー = false; | |
178 | 186 | } |
179 | 187 | } |
180 | 188 |
@@ -60,6 +60,8 @@ namespace SST.設定 | ||
60 | 60 | public bool MISS判定 { get; set; } |
61 | 61 | } |
62 | 62 | public ColumnAutoPlayOFF AutoPlayOFF { get; set; } |
63 | + | |
64 | + public bool シンバルフリーの対象 { get; set; } | |
63 | 65 | } |
64 | 66 | |
65 | 67 | /// <summary> |
@@ -111,6 +113,7 @@ namespace SST.設定 | ||
111 | 113 | }, |
112 | 114 | MISS判定 = false, |
113 | 115 | }, |
116 | + シンバルフリーの対象 = false, | |
114 | 117 | }, |
115 | 118 | //---------------- |
116 | 119 | #endregion |
@@ -146,6 +149,7 @@ namespace SST.設定 | ||
146 | 149 | }, |
147 | 150 | MISS判定 = true, |
148 | 151 | }, |
152 | + シンバルフリーの対象 = true, | |
149 | 153 | }, |
150 | 154 | //---------------- |
151 | 155 | #endregion |
@@ -181,6 +185,7 @@ namespace SST.設定 | ||
181 | 185 | }, |
182 | 186 | MISS判定 = true, |
183 | 187 | }, |
188 | + シンバルフリーの対象 = true, | |
184 | 189 | }, |
185 | 190 | //---------------- |
186 | 191 | #endregion |
@@ -216,6 +221,7 @@ namespace SST.設定 | ||
216 | 221 | }, |
217 | 222 | MISS判定 = true, |
218 | 223 | }, |
224 | + シンバルフリーの対象 = true, | |
219 | 225 | }, |
220 | 226 | //---------------- |
221 | 227 | #endregion |
@@ -251,6 +257,7 @@ namespace SST.設定 | ||
251 | 257 | }, |
252 | 258 | MISS判定 = true, |
253 | 259 | }, |
260 | + シンバルフリーの対象 = true, | |
254 | 261 | }, |
255 | 262 | //---------------- |
256 | 263 | #endregion |
@@ -286,6 +293,7 @@ namespace SST.設定 | ||
286 | 293 | }, |
287 | 294 | MISS判定 = true, |
288 | 295 | }, |
296 | + シンバルフリーの対象 = true, | |
289 | 297 | }, |
290 | 298 | //---------------- |
291 | 299 | #endregion |
@@ -321,6 +329,7 @@ namespace SST.設定 | ||
321 | 329 | }, |
322 | 330 | MISS判定 = true, |
323 | 331 | }, |
332 | + シンバルフリーの対象 = true, | |
324 | 333 | }, |
325 | 334 | //---------------- |
326 | 335 | #endregion |
@@ -356,6 +365,7 @@ namespace SST.設定 | ||
356 | 365 | }, |
357 | 366 | MISS判定 = true, |
358 | 367 | }, |
368 | + シンバルフリーの対象 = true, | |
359 | 369 | }, |
360 | 370 | //---------------- |
361 | 371 | #endregion |
@@ -391,6 +401,7 @@ namespace SST.設定 | ||
391 | 401 | }, |
392 | 402 | MISS判定 = true, |
393 | 403 | }, |
404 | + シンバルフリーの対象 = true, | |
394 | 405 | }, |
395 | 406 | //---------------- |
396 | 407 | #endregion |
@@ -426,6 +437,7 @@ namespace SST.設定 | ||
426 | 437 | }, |
427 | 438 | MISS判定 = false, |
428 | 439 | }, |
440 | + シンバルフリーの対象 = false, | |
429 | 441 | }, |
430 | 442 | //---------------- |
431 | 443 | #endregion |
@@ -461,6 +473,7 @@ namespace SST.設定 | ||
461 | 473 | }, |
462 | 474 | MISS判定 = true, |
463 | 475 | }, |
476 | + シンバルフリーの対象 = false, | |
464 | 477 | }, |
465 | 478 | //---------------- |
466 | 479 | #endregion |
@@ -496,6 +509,7 @@ namespace SST.設定 | ||
496 | 509 | }, |
497 | 510 | MISS判定 = true, |
498 | 511 | }, |
512 | + シンバルフリーの対象 = false, | |
499 | 513 | }, |
500 | 514 | //---------------- |
501 | 515 | #endregion |
@@ -531,6 +545,7 @@ namespace SST.設定 | ||
531 | 545 | }, |
532 | 546 | MISS判定 = true, |
533 | 547 | }, |
548 | + シンバルフリーの対象 = false, | |
534 | 549 | }, |
535 | 550 | //---------------- |
536 | 551 | #endregion |
@@ -566,6 +581,7 @@ namespace SST.設定 | ||
566 | 581 | }, |
567 | 582 | MISS判定 = false, |
568 | 583 | }, |
584 | + シンバルフリーの対象 = false, | |
569 | 585 | }, |
570 | 586 | //---------------- |
571 | 587 | #endregion |
@@ -601,6 +617,7 @@ namespace SST.設定 | ||
601 | 617 | }, |
602 | 618 | MISS判定 = true, |
603 | 619 | }, |
620 | + シンバルフリーの対象 = false, | |
604 | 621 | }, |
605 | 622 | //---------------- |
606 | 623 | #endregion |
@@ -636,6 +653,7 @@ namespace SST.設定 | ||
636 | 653 | }, |
637 | 654 | MISS判定 = true, |
638 | 655 | }, |
656 | + シンバルフリーの対象 = false, | |
639 | 657 | }, |
640 | 658 | //---------------- |
641 | 659 | #endregion |
@@ -671,6 +689,7 @@ namespace SST.設定 | ||
671 | 689 | }, |
672 | 690 | MISS判定 = true, |
673 | 691 | }, |
692 | + シンバルフリーの対象 = false, | |
674 | 693 | }, |
675 | 694 | //---------------- |
676 | 695 | #endregion |
@@ -706,6 +725,7 @@ namespace SST.設定 | ||
706 | 725 | }, |
707 | 726 | MISS判定 = true, |
708 | 727 | }, |
728 | + シンバルフリーの対象 = false, | |
709 | 729 | }, |
710 | 730 | //---------------- |
711 | 731 | #endregion |
@@ -741,6 +761,7 @@ namespace SST.設定 | ||
741 | 761 | }, |
742 | 762 | MISS判定 = true, |
743 | 763 | }, |
764 | + シンバルフリーの対象 = false, | |
744 | 765 | }, |
745 | 766 | //---------------- |
746 | 767 | #endregion |
@@ -776,6 +797,7 @@ namespace SST.設定 | ||
776 | 797 | }, |
777 | 798 | MISS判定 = true, |
778 | 799 | }, |
800 | + シンバルフリーの対象 = false, | |
779 | 801 | }, |
780 | 802 | //---------------- |
781 | 803 | #endregion |
@@ -811,6 +833,7 @@ namespace SST.設定 | ||
811 | 833 | }, |
812 | 834 | MISS判定 = true, |
813 | 835 | }, |
836 | + シンバルフリーの対象 = false, | |
814 | 837 | }, |
815 | 838 | //---------------- |
816 | 839 | #endregion |
@@ -846,6 +869,7 @@ namespace SST.設定 | ||
846 | 869 | }, |
847 | 870 | MISS判定 = true, |
848 | 871 | }, |
872 | + シンバルフリーの対象 = true, | |
849 | 873 | }, |
850 | 874 | //---------------- |
851 | 875 | #endregion |
@@ -881,6 +905,7 @@ namespace SST.設定 | ||
881 | 905 | }, |
882 | 906 | MISS判定 = false, |
883 | 907 | }, |
908 | + シンバルフリーの対象 = false, | |
884 | 909 | }, |
885 | 910 | //---------------- |
886 | 911 | #endregion |
@@ -916,6 +941,7 @@ namespace SST.設定 | ||
916 | 941 | }, |
917 | 942 | MISS判定 = false, |
918 | 943 | }, |
944 | + シンバルフリーの対象 = false, | |
919 | 945 | }, |
920 | 946 | //---------------- |
921 | 947 | #endregion |
@@ -951,6 +977,7 @@ namespace SST.設定 | ||
951 | 977 | }, |
952 | 978 | MISS判定 = false, |
953 | 979 | }, |
980 | + シンバルフリーの対象 = false, | |
954 | 981 | }, |
955 | 982 | //---------------- |
956 | 983 | #endregion |
@@ -986,6 +1013,7 @@ namespace SST.設定 | ||
986 | 1013 | }, |
987 | 1014 | MISS判定 = false, |
988 | 1015 | }, |
1016 | + シンバルフリーの対象 = false, | |
989 | 1017 | }, |
990 | 1018 | //---------------- |
991 | 1019 | #endregion |
@@ -1021,6 +1049,7 @@ namespace SST.設定 | ||
1021 | 1049 | }, |
1022 | 1050 | MISS判定 = false, |
1023 | 1051 | }, |
1052 | + シンバルフリーの対象 = false, | |
1024 | 1053 | }, |
1025 | 1054 | //---------------- |
1026 | 1055 | #endregion |
@@ -1056,6 +1085,7 @@ namespace SST.設定 | ||
1056 | 1085 | }, |
1057 | 1086 | MISS判定 = false, |
1058 | 1087 | }, |
1088 | + シンバルフリーの対象 = false, | |
1059 | 1089 | }, |
1060 | 1090 | //---------------- |
1061 | 1091 | #endregion |
@@ -1091,6 +1121,7 @@ namespace SST.設定 | ||
1091 | 1121 | }, |
1092 | 1122 | MISS判定 = false, |
1093 | 1123 | }, |
1124 | + シンバルフリーの対象 = false, | |
1094 | 1125 | }, |
1095 | 1126 | //---------------- |
1096 | 1127 | #endregion |
@@ -1126,6 +1157,7 @@ namespace SST.設定 | ||
1126 | 1157 | }, |
1127 | 1158 | MISS判定 = false, |
1128 | 1159 | }, |
1160 | + シンバルフリーの対象 = false, | |
1129 | 1161 | }, |
1130 | 1162 | //---------------- |
1131 | 1163 | #endregion |