danoniplus 29.4.1 → 30.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,256 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ja">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <script src="../js/danoni_main.js" charset="UTF-8"></script>
6
+ <title>Dancing★Onigiri</title>
7
+ <style type="text/css">
8
+ <!--//
9
+ a:link { color:#BAB7E0;}
10
+ a:visited{ color:#BAB7E0;}
11
+ a:active { color:#CCCCCC;}
12
+ body{
13
+ font-family:"Arial","メイリオ","MS P ゴシック",sans-serif;
14
+ scrollbar-base-color:"black";
15
+ scrollbar-arrow-color:"white";
16
+ color:#cccccc;
17
+ background-color:#000011;
18
+ font-size:14px;
19
+ }
20
+ table{
21
+ border:0;
22
+ border-collapse:collapse;
23
+ width:800px;
24
+ margin:auto;
25
+ }
26
+ th,td{padding:0;}
27
+
28
+ a{ text-decoration: none; }
29
+ a:hover { color:#FF9900; text-decoration: underline; }
30
+
31
+ //-->
32
+ </style>
33
+ </head>
34
+
35
+ <body>
36
+ <table><tr><td>
37
+ <p style="text-align:center;">
38
+ <span style="font-size:32px;">Preview</span>
39
+ </p>
40
+ <hr>
41
+ <input type="hidden" name="dos" id="dos" value='
42
+ |musicTitle=Defeat*comma*I Doll,月人(MoonWind),|
43
+ |difData=Tr,Transform,3.5,70,2,7$14,Normal,3.5|
44
+ |setColor=#9999ff,#99ffff,#ffffff,#ffff99,#ff9966|
45
+ |frzColor=#00ffff,#6600ff,#cccc33,#999933$#99ff99,#99ff99,#cccc33,#999933$#00ffff,#6600ff,#cccc33,#999933$#cc99ff,#9966ff,#cccc33,#999933|
46
+
47
+ |startFrame=0|blankFrame=197|
48
+ |endFrame=3:08|
49
+
50
+ |keyExtraList=Tr|
51
+ |minWidthTr=800|
52
+
53
+ |charaTr=
54
+ aleft,adown,aup,aright,aspace,bleft,bleftdia,bdown,bspace,bup,brightdia,bright,cleft,cdown,cup,cright,dleft,ddown,dup,dright,eleft,edown,eup,eright,fleft,fdown,fup,fright,gleft,gleftdia,gdown,gspace,gup,grightdia,gright,oni,hleft,hleftdia,hdown,hspace,hup,hrightdia,hright
55
+ aspace,aleft,adown,aup,aright,bleft,bleftdia,bdown,bspace,bup,brightdia,bright,cleft,cdown,cup,cright,dleft,ddown,dup,dright,eleft,edown,eup,eright,fleft,fdown,fup,fright,gleft,gleftdia,gdown,gspace,gup,grightdia,gright,oni,hleft,hleftdia,hdown,hspace,hup,hrightdia,hright
56
+ aleft,adown,aspace,aup,aright,bleft,bleftdia,bdown,bspace,bup,brightdia,bright,cleft,cdown,cup,cright,dleft,ddown,dup,dright,eleft,edown,eup,eright,fleft,fdown,fup,fright,gleft,gleftdia,gdown,gspace,gup,grightdia,gright,oni,hleft,hleftdia,hdown,hspace,hup,hrightdia,hright
57
+ aleft,adown,aup,aright,aspace,blefta,bleft,bleftdia,bdown,bleftb,bspace,bup,brightdia,bright,cleft,cdown,cup,cright,dleft,ddown,dup,dright,eleft,edown,eup,eright,fleft,fdown,fup,fright,oni,hleft,hleftdia,hdown,hspace,hup,hrightdia,hright,gleft,gleftdia,gdown,gspace,gup,grightdia,gright
58
+ |
59
+ |colorTr=
60
+ 4,4,4,4,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,2,3,3,2,3,3,3,3,0,1,0,2,0,1,0,2,0,1,0,1,0,1,0
61
+ 2,4,4,4,4,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,2,3,3,2,3,3,3,3,0,1,0,2,0,1,0,2,0,1,0,1,0,1,0
62
+ 4,4,2,4,4,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,2,3,3,2,3,3,3,3,0,1,0,2,0,1,0,2,0,1,0,1,0,1,0
63
+ 3,3,3,3,2,0,1,0,1,2,1,0,1,0,4,4,4,4,3,3,3,3,2,3,3,2,1,0,1,0,3,3,3,3,0,1,0,1,0,1,0,2,0,1,0
64
+ |
65
+ |stepRtnTr=
66
+ 0,-90,90,180,onigiri,giko,onigiri,iyo,0,-90,90,180,0,-90,90,180,0,-90,90,180,giko,135,45,iyo,0,-90,90,180,0,-45,-90,onigiri,90,135,180,onigiri,0,30,60,90,120,150,180
67
+ onigiri,0,-90,90,180,giko,onigiri,iyo,0,-90,90,180,0,-90,90,180,0,-90,90,180,giko,135,45,iyo,0,-90,90,180,0,-45,-90,onigiri,90,135,180,onigiri,0,30,60,90,120,150,180
68
+ 0,-90,onigiri,90,180,giko,onigiri,iyo,0,-90,90,180,0,-90,90,180,0,-90,90,180,giko,135,45,iyo,0,-90,90,180,0,-45,-90,onigiri,90,135,180,onigiri,0,30,60,90,120,150,180
69
+ 0,45,135,180,giko,90,120,150,180,onigiri,0,30,60,90,0,-90,90,180,0,-90,90,180,giko,135,45,iyo,45,0,-45,-90,giko,onigiri,iyo,c,90,135,180,225,0,-45,-90,onigiri,90,135,180
70
+ |
71
+ |posTr=
72
+ 1,2,3,4,5,0,1,2,3,4,5,6,2.5,3.5,4.5,5.5,0.5,1.5,2.5,3.5,0.5,2.5,3.5,5.5,2,3,4,5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,7,8,9,10,11,12,13,14
73
+ 1,2,3,4,5,0,1,2,3,4,5,6,2.5,3.5,4.5,5.5,0.5,1.5,2.5,3.5,0.5,2.5,3.5,5.5,2,3,4,5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,7,8,9,10,11,12,13,14
74
+ 1,2,3,4,5,0,1,2,3,4,5,6,2.5,3.5,4.5,5.5,0.5,1.5,2.5,3.5,0.5,2.5,3.5,5.5,2,3,4,5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,7,8,9,10,11,12,13,14
75
+ 3.5,4.5,5.5,6.5,7.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,3,4,5,6,5,6,7,8,3,5,6,8,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
76
+ |
77
+ |keyGroupTr=
78
+ 5,5,5,5,5,7i,7i,7i,7i,7i,7i,7i,11,11,11,11,11L,11L,11L,11L,11W,11W,11W,11W,12,12,12,12,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,12,12,12,12,12,12,12,12
79
+ 5,5,5,5,5,7i,7i,7i,7i,7i,7i,7i,11,11,11,11,11L,11L,11L,11L,11W,11W,11W,11W,12,12,12,12,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,12,12,12,12,12,12,12,12
80
+ 5,5,5,5,5,7i,7i,7i,7i,7i,7i,7i,11,11,11,11,11L,11L,11L,11L,11W,11W,11W,11W,12,12,12,12,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,12,12,12,12,12,12,12,12
81
+ 5,5,5,5,5,7i,7i,7i,7i,7i,7i,7i,7i,7i,11,11,11,11,11L,11L,11L,11L,11W,11W,11W,11W,12,12,12,12,12,12,12,12,12,12,12,12,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W
82
+ |
83
+
84
+ |divTr=7$7$7$12,19|
85
+ |keyCtrlTr=
86
+ 37/0,40/0,38/0,39/0,32/0,90/0,88/0,67/0,37/0,40/0,38/0,39/0,37/0,40/0,38/0,39/0,87/0,69/0,51/52,82/0,49/50,84/0,89/0,48/189,85/0,73/0,56/57/0,79/0,83/0,68/0,70/0,32/0,74/0,75/0,76/0,32/0,78/0,74/0,77/0,75/0,188/0,76/0,190/0
87
+ 32/0,37/0,40/0,38/0,39/0,90/0,88/0,67/0,37/0,40/0,38/0,39/0,37/0,40/0,38/0,39/0,87/0,69/0,51/52,82/0,49/50,84/0,89/0,48/189,85/0,73/0,56/57/0,79/0,83/0,68/0,70/0,32/0,74/0,75/0,76/0,32/0,78/0,74/0,77/0,75/0,188/0,76/0,190/0
88
+ 68/0,70/0,32/0,74/0,75/0,90/0,88/0,67/0,37/0,40/0,38/0,39/0,37/0,40/0,38/0,39/0,87/0,69/0,51/52,82/0,49/50,84/0,89/0,48/189,85/0,73/0,56/57/0,79/0,83/0,68/0,70/0,32/0,74/0,75/0,76/0,32/0,78/0,74/0,77/0,75/0,188/0,76/0,190/0
89
+ 112/0,113/0,114/0,115/0,13/16,52/0,82/0,70/0,86/0,32/0,78/0,74/0,73/0,57/0,87/0,69/0,51/52,82/0,37/0,40/0,38/0,39/0,49/50,84/0,89/0,48/189,112/0,113/0,114/0,115/0,116/0,117/0,118/0,119/0,120/0,121/0,122/0,123/0,83/0,68/0,70/0,32/0,74/0,75/0,76/0
90
+ |
91
+
92
+ |shuffleTr=
93
+ 0,0,0,0,1,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,9,8,8,8,10,11,11,11,11,11,11,11/0,0,0,0,0,2,2,2,2,2,2,2,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7
94
+ 1,0,0,0,0,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,9,8,8,8,10,11,11,11,11,11,11,11/0,0,0,0,0,2,2,2,2,2,2,2,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7
95
+ 0,0,1,0,0,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,9,8,8,8,10,11,11,11,11,11,11,11/0,0,0,0,0,2,2,2,2,2,2,2,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7
96
+ 0,0,0,0,1,2,2,2,2,3,2,2,2,2,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,11,10,10,10/0,0,0,0,0,2,2,2,2,2,2,2,2,2,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8
97
+ |
98
+ |scrollTr=
99
+ Reverse::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Cross::1,-1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Flat::1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1/R-Flat::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
100
+ Reverse::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Cross::1,1,-1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Flat::1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1/R-Flat::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
101
+ Reverse::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Cross::1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Flat::1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1/R-Flat::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
102
+ ---::1,1,1,1,1,1,1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Reverse::-1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1/Cross::1,-1,-1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1/Flat::1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1/R-Flat::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1
103
+ |
104
+
105
+ |transKeyTr=$$$Tr2|
106
+ |shuffleUse=group|
107
+
108
+ |gleft_data=205,222,286,391,408,472,1088,1227,1320,1529,1854,2179,2400,2528,2708,2771,2969,3143,3201,3248,10720,10755,10912,10959|
109
+ |gleftdia_data=263,350,460,1018,1273,1343,1413,1506,1715,1773,1831,2400,2470,2620,2679,2737,2830,3027,3120,10703,10720,10796,10935|
110
+ |gdown_data=298,315,495,832,1099,1239,1297,1401,1540,1564,1691,1750,1877,1900,1912,1924,1935,1947,2144,2417,2667,2702,2946,2969,3015,3050,3213,10831,10941|
111
+ |gspace_data=449,1204,1320,1691,2040,2086,2133,2179,2226,2272,2319,2365,2458,2504,2644,2690,2760,2806,2899,3178,10680,10773,10924|
112
+ |gup_data=275,426,484,519,548,1250,1285,1703,1854,2098,2156,2284,2417,2493,2609,2690,2841,2922,2946,3073,3143,3236,10755,10796,10813,10947|
113
+ |grightdia_data=240,333,507,542,1006,1111,1215,1297,1390,1552,1831,2516,2748,3027,3160,10703,10953|
114
+ |gright_data=484,1273,1575,1668,1738,1761,1808,2034,2121,2307,2435,2481,2655,2713,2806,2922,3062,3097,3178,3224,10680,10813|
115
+ |dleft_data=530,611,658,693,948,971,1134,1250,1424,1599,1622,1784,2028,2365,2435,2760,2853,2992,10889|
116
+ |ddown_data=536,577,600,646,704,728,844,902,1064,1169,1192,1355,1436,1575,1796,1970,1982,1993,2005,2353,2713,2789,2864,3259,10900|
117
+ |dup_data=739,797,925,983,1459,1645,1668,2377,2888,3073,3160|
118
+ |dright_data=635,762,995,1041,1076,1157,1378,1482,1599,1808,2017,2330,2783,2876,3108,3259,10959|
119
+ |gfrzLeft_data=553,565|
120
+ |gfrzLdia_data=2063,2098|
121
+ |gfrzDown_data=2249,2284|
122
+ |gfrzSpace_data=|
123
+ |gfrzUp_data=|
124
+ |gfrzRdia_data=2226,2243|
125
+ |gfrzRight_data=2202,2220,10889,10912|
126
+ |dfrzLeft_data=|
127
+ |dfrzDown_data=|
128
+ |dfrzUp_data=2562,2580|
129
+ |dfrzRight_data=553,565,2539,2557,2586,2603|
130
+
131
+ |aleft_data=3329,3375,3422,3480,3608,3677,3770,3817,3840,3863,3910,3944,3991,4014,4049,4072,4107,4130,4153,4177,4200,4235,4316,4339,4374,4432,4479,4525,4571,4641,4821,4850,4943,4972,5361,5500,5518|
132
+ |adown_data=3340,3387,3433,3468,3526,3573,3619,3666,3689,3712,3759,3793,3840,3915,3933,3991,4037,4078,4130,4177,4223,4246,4281,4304,4328,4362,4386,4409,4432,4490,4630,4664,4688,4699,4711,4722,4734,4804,4815,4943,4966,5408,5425,5553,5593,5611|
133
+ |aup_data=3491,3515,3561,3631,3654,3747,3817,3851,3944,4026,4066,4119,4165,4211,4258,4362,4397,4420,4455,4537,4641,4827,4955,4978,5338,5535|
134
+ |aright_data=3317,3352,3399,3445,3515,3538,3561,3584,3608,3642,3735,3793,3851,3863,3921,3956,3979,4002,4060,4084,4142,4188,4270,4293,4316,4351,4409,4455,4583,4618,4757,4769,4780,4792,4810,4955,4984,5315,5442,5628|
135
+ |aspace_data=3782,3898,4014,4060,4502,4513,4548,4560,4595,4606,4827,4850,5036,5384,5477,5570,5582,5663|
136
+ |afrzLeft_data=4990,5036,5686,5710|
137
+ |afrzDown_data=|
138
+ |afrzUp_data=|
139
+ |afrzRdia_data=|
140
+ |afrzRight_data=5686,5710|
141
+ |afrzSpace_data=|
142
+
143
+ |oni_data=5779,6499,7150,7289,7382,7475,7811,8009,8288,8462,8485,8497|
144
+ |hleft_data=5837,6151,6244,6569,6940,7033,7300,7602,7893,8055|
145
+ |hleftdia_data=6128,6197,6290,6395,6430,6453,6464,6906,7010,7242,7324,7568,7620,7707,7765,7846,8032,8299,8346,8404,8450|
146
+ |hdown_data=5826,5919,6162,6220,6255,6488,6580,6685,6929,6952,7045,7359,7881,8067,8322,8346|
147
+ |hspace_data=6337,6360,6371,6406,6894,6987,7080,7103,7115,7126,7138,7150,7382,7556,7602,7637,7765,7835,7904,8009,8090,8380,8427|
148
+ |hup_data=5849,5942,6174,6313,6476,6592,6917,7022,7266,7335,7579,7719,7742,7991,8044,8322,8363|
149
+ |hrightdia_data=6209,6302,6383,6406,6871,6964,7312,7428,7533,7620,7695,7870,7974,8079,8311,8363,8439|
150
+ |hright_data=5860,6267,6499,6604,6662,7057,7742,7991,8462|
151
+ |fleft_data=6522,6639,7231,7521,7637,7672,7788,7939,7986,8102,8148,8171,8380|
152
+ |fdown_data=6534,6615,6708,7428,7660,7962,7986|
153
+ |fup_data=7173,7184,7196,7208,7219,7486,7811,8195,8218,8230,8253,8264|
154
+ |fright_data=6546,6627,7242,7405,7510,7788,8125,8160,8276|
155
+ |foni_data=6708,6731|
156
+ |hfrzLeft_data=|
157
+ |hfrzLdia_data=6046,6104|
158
+ |hfrzDown_data=|
159
+ |hfrzSpace_data=6000,6023,6743,6778|
160
+ |hfrzUp_data=|
161
+ |hfrzRdia_data=5965,5988,6790,6848,7916,7939|
162
+ |ffrzRight_data=|
163
+ |ffrzLeft_data=|
164
+ |ffrzDown_data=7451,7475|
165
+ |ffrzUp_data=|
166
+ |ffrzRight_data=|
167
+
168
+ |bleft_data=8671,8845,8915,8979,9054,9066,9100,9228,9310,9356,9402,9472,9495,9588,9658,9722,9797,9809,9908,9937,9948,10000,10030,10076,10146,10517,10564,10587|
169
+ |bleftdia_data=8682,8857,8961,8973,9025,9147,9240,9269,9280,9292,9379,9449,9472,9542,9565,9635,9704,9716,9768,9890,9902,9954,10146,10169,10570,10587|
170
+ |bdown_data=8694,8868,9008,9019,9071,9089,9112,9182,9205,9251,9333,9426,9519,9565,9611,9629,9751,9762,9815,9983,9995,10030,10175,10186,10540,10575|
171
+ |bspace_data=8555,8590,8717,8764,8833,8880,8938,8996,9031,9100,9147,9251,9321,9379,9402,9507,9588,9640,9693,9739,9786,9832,9867,9890,9902,9913,9925,9937,10012,10088,10186|
172
+ |bup_data=8543,8601,8624,8729,8775,8822,8891,9042,9118,9135,9159,9240,9310,9350,9368,9397,9437,9495,9536,9553,9582,9623,9774,9844,10006,10018,10064,10134,10157,10180|
173
+ |brightdia_data=8648,8740,8787,8903,8950,9182,9205,9460,9646,9728,10111|
174
+ |bright_data=8531,8578,8636,8706,8810,8868,8915,8984,9089,9124,9228,9263,9275,9286,9298,9344,9391,9414,9443,9484,9530,9577,9600,9658,9681,9820,9855,9960,9971,9983,9995,10024,10053,10157|
175
+ |bfrzLeft_data=10192,10215|
176
+ |bfrzLdia_data=|
177
+ |bfrzDown_data=|
178
+ |bfrzSpace_data=|
179
+ |bfrzUp_data=|
180
+ |bfrzRdia_data=|
181
+ |bfrzRight_data=10192,10215|
182
+
183
+ |cleft_data=10738|
184
+ |eleft_data=10866|
185
+ |cdown_data=10610,10628|
186
+ |cup_data=10645|
187
+ |cright_data=10738|
188
+ |eright_data=10866|
189
+
190
+ |speed_data=3271,0.50,3294,1.00|
191
+
192
+ |keych_data=0,11L,1951,5,1955,11L,2810,5,2814,11L,3264,5,3275,11L,3287,11L,3293,5,3299,11L,3304,5,3307,11L,3310,5,5128,12,5134,5,5220,12,5224,5,5481,12,5485,5,5586,12,5589,5,5731,12,5737,5,5742,12,5748,5,5753,12,7153,7i,7157,12,8013,7i,8017,12,8500,7i,8503,12,8506,7i,8509,12,8512,7i,10329,11,10335,7i,10422,11L,10428,7i,10590,11,10594,11W,10598,11,10775,11W,10779,11L,10783,11W,10869,11L|
193
+
194
+ |oni2_data=1029,1077,1124,1171,1219,1266,1314,1361,1408,1456,1503,1550,1598,1645,1740,2829,3350,3635,3729,4108,4392,4487,5648|left2_data=248,437,816,864,3232,3410,3469,4132,4369,4440,4464,4511,5056,5506|leftdia2_data=627,650,698,1764,1811,1835,1882,2048,2214,2261,2320,2912,3220,3445,3540,4179,4392,4606,4629,4653,4677,4842,4914,4937,4961,4985,5008,5032,5387,5423,5612|down2_data=342,532,792,828,1953,2000,2016,2367,3196,3244,3398,3481,3540,3658,3682,3694,3706,3729,4144,4345,4381,4452,4523,4546,4570,4594,5079,5103,5127,5150,5174,5198,5221,5292,5328,5517|space2_data=721,745,1006,1053,1148,1195,1242,1258,1385,1432,1479,1527,1574,2119,2225,2308,3433,3457,3564,3587,3599,3611,3635,4191,4404,4606,5245,5375,5411,5482|up2_data=295,485,864,1085,1171,1274,1456,1562,1621,1637,1977,2032,2142,2202,2237,2261,2356,3208,3256,3386,3492,3516,4156,4357,4511,4535,4558,4582,5281,5316,5340,5435,5553,5577,5589|rightdia2_data=674,769,1069,1160,1444,1539,1653,1787,1858,1906,2119,2308,2900,3185,3421,4203,4617,4641,4665,4689,4854,5364,5399,5458,5494,5600|right2_data=390,579,840,1100,1183,1467,1550,2142,2190,2237,3374,3504,5269,5304,5340,5529|sleftdia2_data=1006,1053,1100,1148,1195,1242,1290,1337,2166,2332,2486,2711,2948,3042,3090,3339,3942,4085,4306,4487,4748,4866|sleft2_data=887,982,1385,1432,1479,1527,1574,1621,1716,1929,2095,2296,2498,2545,2687,2746,2806,2889,2983,3019,3114,3753,3777,3789,3824,3931,3990,4061,4250,4321,4700,4736,4760|sdown2_data=911,946,1314,1669,1692,2071,2285,2557,2600,2735,2770,2794,2853,2971,3031,3125,3315,3812,3836,3895,3978,4227,4321,4416,4724,4795,4819|sup2_data=935,958,2095,2474,2569,2585,3007,3848,3871,3883,4712,4807,4831|sright2_data=887,982,1290,1692,1835,2071,2285,2379,2395,2510,2758,2924,3137,3800,3919,3966,4073,4239,4314,4416,4700,4771|srightdia2_data=2411,2521,2782,2877,2995,3161,3279,3303,3327,3350,4014,4037,4274,4298,4748,4866,5624|foni2_data=|frzLeft2_data=|frzLdia2_data=|frzDown2_data=|frzSpace2_data=|frzUp2_data=|frzRdia2_data=|frzRight2_data=|sfrzLdia2_data=|sfrzLeft2_data=|sfrzDown2_data=2427,2450,2652,2669|sfrzUp2_data=4890,4985|sfrzRight2_data=2616,2634|sfrzRdia2_data=|speed2_change=|boost2_data=|color2_data=200,30,#00ffcc,200,31,#339999,200,34,#cc99ff,200,35,#9966ff|
195
+
196
+ |keyGroupOrder=11L,5,12,7i|
197
+
198
+ |word_data=
199
+ 575,2,[right]
200
+ 575,2,[fadein]
201
+ 575,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ff99">11Lkey</span></b>,
202
+ 3292,2,[fadeout],
203
+ 3312,2,[fadein]
204
+ 3312,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#ffcc99">5key</span></b>,
205
+ 5733,2,[fadeout],
206
+ 5753,2,[fadein]
207
+ 5753,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ffff">12key</span></b>,
208
+ 8492,2,[fadeout],
209
+ 8512,2,[fadein]
210
+ 8512,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#ffff66">7ikey</span></b>,
211
+ 10578,2,[fadeout],
212
+ 10598,2,[fadein]
213
+ 10598,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ffcc">11key</span></b>,
214
+ 10763,2,[fadeout],
215
+ 10783,2,[fadein]
216
+ 10783,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#9999ff">11Wkey</span></b>,
217
+ 10849,2,[fadeout],
218
+ 10869,2,[fadein]
219
+ 10869,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ff99">11Lkey</span></b>,
220
+ 10959,2,,
221
+ |
222
+ |wordA_data=
223
+ 575,2,[right]
224
+ 575,2,[fadein]
225
+ 575,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ffcc">11key</span></b>,
226
+ 3292,2,[fadeout],
227
+ 3312,2,[fadein]
228
+ 3312,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#ff99cc">5gkey</span></b>,
229
+ 5733,2,[fadeout],
230
+ 5753,2,[fadein]
231
+ 5753,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#ffffff">12ikey</span></b>,
232
+ 8492,2,[fadeout],
233
+ 8512,2,[fadein]
234
+ 8512,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#ff9999">9vkey</span></b>,
235
+ 10578,2,[fadeout],
236
+ 10598,2,[fadein]
237
+ 10598,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ff99">11Lkey</span></b>,
238
+ 10763,2,[fadeout],
239
+ 10783,2,[fadein]
240
+ 10783,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#9999ff">11Wkey</span></b>,
241
+ 10849,2,[fadeout],
242
+ 10869,2,[fadein]
243
+ 10869,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ffcc">11key</span></b>,
244
+ 10959,2,,
245
+ |
246
+
247
+ |tuning=ティックル|
248
+ '>
249
+ <div id="canvas-frame">
250
+ </div>
251
+ <hr>
252
+ </td>
253
+ </tr>
254
+ </table>
255
+ </body>
256
+ </html>
package/js/danoni_main.js CHANGED
@@ -4,12 +4,12 @@
4
4
  *
5
5
  * Source by tickle
6
6
  * Created : 2018/10/08
7
- * Revised : 2023/01/28
7
+ * Revised : 2023/02/14
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 29.4.1`;
12
- const g_revisedDate = `2023/01/28`;
11
+ const g_version = `Ver 30.1.1`;
12
+ const g_revisedDate = `2023/02/14`;
13
13
  const g_alphaVersion = ``;
14
14
 
15
15
  // カスタム用バージョン (danoni_custom.js 等で指定可)
@@ -224,6 +224,19 @@ const setAttrs = (_baseObj, { ...rest } = {}) =>
224
224
  */
225
225
  const getNumAttr = (_baseObj, _attrkey) => parseFloat(_baseObj.getAttribute(_attrkey));
226
226
 
227
+ /**
228
+ * 文字列に埋め込まれた変数を展開
229
+ * @param {string} _str
230
+ */
231
+ const convertStrToVal = _str => {
232
+ const strs = _str.split(`}`).join(`{`).split(`{`);
233
+ let convStrs = ``;
234
+ for (let j = 0; j < strs.length; j += 2) {
235
+ convStrs += escapeHtmlForEnabledTag(strs[j]);
236
+ convStrs += setVal(strs[j + 1], ``, C_TYP_CALC);
237
+ }
238
+ return convStrs;
239
+ };
227
240
 
228
241
  /*-----------------------------------------------------------*/
229
242
  /* 値や配列のチェック・変換 */
@@ -1445,14 +1458,19 @@ const makeSpriteData = (_data, _calcFrame = _frame => _frame) => {
1445
1458
  const tmpObj = {
1446
1459
  path: escapeHtml(tmpSpriteData[2] ?? ``, g_escapeStr.escapeCode), // 画像パス or テキスト
1447
1460
  class: escapeHtml(tmpSpriteData[3] ?? ``), // CSSクラス
1448
- left: setVal(tmpSpriteData[4], 0, C_TYP_CALC), // X座標
1449
- top: setVal(tmpSpriteData[5], 0, C_TYP_CALC), // Y座標
1450
- width: setIntVal(tmpSpriteData[6]), // spanタグの場合は font-size
1451
- height: escapeHtml(tmpSpriteData[7] ?? ``), // spanタグの場合は color(文字列可)
1461
+ left: setVal(tmpSpriteData[4], `0`).includes(`{`) ?
1462
+ `${setVal(tmpSpriteData[4], 0)}` : `{${setVal(tmpSpriteData[4], 0)}}`, // X座標
1463
+ top: setVal(tmpSpriteData[5], `0`).includes(`{`) ?
1464
+ `${setVal(tmpSpriteData[5], 0)}` : `{${setVal(tmpSpriteData[5], 0)}}`, // Y座標
1465
+ width: `${setIntVal(tmpSpriteData[6])}`, // spanタグの場合は font-size
1466
+ height: `${escapeHtml(tmpSpriteData[7] ?? ``)}`, // spanタグの場合は color(文字列可)
1452
1467
  opacity: setVal(tmpSpriteData[8], 1, C_TYP_FLOAT),
1453
1468
  animationName: escapeHtml(setVal(tmpSpriteData[9], C_DIS_NONE)),
1454
1469
  animationDuration: setIntVal(tmpSpriteData[10]) / g_fps,
1455
1470
  };
1471
+ if (setVal(tmpSpriteData[11], g_presetObj.animationFillMode) !== undefined) {
1472
+ tmpObj.animationFillMode = setVal(tmpSpriteData[11], g_presetObj.animationFillMode);
1473
+ }
1456
1474
  if (g_headerObj.autoPreload) {
1457
1475
  if (checkImage(tmpObj.path)) {
1458
1476
  if (g_headerObj.syncBackPath) {
@@ -1468,15 +1486,38 @@ const makeSpriteData = (_data, _calcFrame = _frame => _frame) => {
1468
1486
  checkDuplicatedObjects(spriteData[tmpFrame]);
1469
1487
 
1470
1488
  const emptyPatterns = [``, `[loop]`, `[jump]`];
1489
+ const colorObjFlg = tmpSpriteData[2]?.startsWith(`[c]`) || false;
1471
1490
  spriteData[tmpFrame][addFrame] = {
1472
1491
  depth: tmpDepth,
1473
- command: tmpObj.path,
1474
- jumpFrame: tmpObj.class,
1475
- maxLoop: tmpObj.left,
1476
- animationName: tmpObj.animationName,
1477
- htmlText: emptyPatterns.includes(tmpObj.path) ?
1478
- `` : (checkImage(tmpObj.path) ? makeSpriteImage(tmpObj) : makeSpriteText(tmpObj)),
1479
1492
  };
1493
+
1494
+ if (colorObjFlg) {
1495
+ // [c]始まりの場合、カラーオブジェクト用の作成準備を行う
1496
+ const data = tmpObj.path.slice(`[c]`.length).split(`/`);
1497
+ spriteData[tmpFrame][addFrame].colorObjInfo = {
1498
+ x: tmpObj.left, y: tmpObj.top, w: tmpObj.width, h: tmpObj.height,
1499
+ rotate: setVal(data[0], `0`), opacity: tmpObj.opacity,
1500
+ background: makeColorGradation(setVal(data[1], `#ffffff`), { _defaultColorgrd: false }),
1501
+ animationName: tmpObj.animationName,
1502
+ animationDuration: `${tmpObj.animationDuration}s`,
1503
+ };
1504
+ spriteData[tmpFrame][addFrame].colorObjId = `${tmpFrame}_${addFrame}`;
1505
+ spriteData[tmpFrame][addFrame].colorObjClass = setVal(tmpObj.class, undefined);
1506
+ if (tmpObj.animationFillMode !== undefined) {
1507
+ spriteData[tmpFrame][addFrame].colorObjInfo.animationFillMode = tmpObj.animationFillMode;
1508
+ }
1509
+
1510
+ } else if (emptyPatterns.includes(tmpObj.path)) {
1511
+ // ループ、フレームジャンプ、空の場合の処理
1512
+ spriteData[tmpFrame][addFrame].command = tmpObj.path;
1513
+ spriteData[tmpFrame][addFrame].jumpFrame = tmpObj.class;
1514
+ spriteData[tmpFrame][addFrame].maxLoop = tmpObj.left;
1515
+ spriteData[tmpFrame][addFrame].htmlText = ``;
1516
+ } else {
1517
+ // それ以外の画像、テキストの場合
1518
+ spriteData[tmpFrame][addFrame].animationName = tmpObj.animationName;
1519
+ spriteData[tmpFrame][addFrame].htmlText = (checkImage(tmpObj.path) ? makeSpriteImage(tmpObj) : makeSpriteText(tmpObj));
1520
+ }
1480
1521
  }
1481
1522
  });
1482
1523
 
@@ -1517,7 +1558,16 @@ const drawBaseSpriteData = (_spriteData, _name, _condition = true) => {
1517
1558
  }
1518
1559
  } else {
1519
1560
  if (_condition) {
1520
- baseSprite.innerHTML = _spriteData.htmlText;
1561
+ if (_spriteData.colorObjInfo !== undefined) {
1562
+ const colorObjClass = _spriteData.colorObjClass?.split(`/`) ?? [];
1563
+ const id = `${_name}${_spriteData.depth}${_spriteData.colorObjId}`;
1564
+ [`x`, `y`, `w`, `h`].forEach(val => _spriteData.colorObjInfo[val] = convertStrToVal(_spriteData.colorObjInfo[val]));
1565
+ baseSprite.appendChild(
1566
+ createColorObject2(id, _spriteData.colorObjInfo, ...colorObjClass)
1567
+ );
1568
+ } else {
1569
+ baseSprite.innerHTML = convertStrToVal(_spriteData.htmlText);
1570
+ }
1521
1571
  }
1522
1572
  }
1523
1573
  };
@@ -2799,6 +2849,14 @@ const headerConvert = _dosObj => {
2799
2849
  obj.preloadImages = _dosObj.preloadImages.split(`,`).filter(image => hasVal(image)).map(preloadImage => preloadImage);
2800
2850
  }
2801
2851
 
2852
+ // 初期表示する部分キーの設定
2853
+ obj.keyGroupOrder = [];
2854
+ _dosObj.keyGroupOrder?.split(`$`).forEach((val, j) => {
2855
+ if (val !== ``) {
2856
+ obj.keyGroupOrder[j] = val.split(`,`);
2857
+ }
2858
+ });
2859
+
2802
2860
  // 最終演出表示有無(noneで無効化)
2803
2861
  obj.finishView = _dosObj.finishView ?? ``;
2804
2862
 
@@ -3385,6 +3443,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
3385
3443
  const toFloat = _num => parseFloat(_num);
3386
3444
  const toStringOrNumber = _str => isNaN(Number(_str)) ? _str : toNumber(_str);
3387
3445
  const toSplitArray = _str => _str.split(`/`).map(n => toNumber(n));
3446
+ const toSplitArrayStr = _str => _str.split(`/`).map(n => n);
3388
3447
 
3389
3448
  /**
3390
3449
  * 新キー用複合パラメータ
@@ -3614,6 +3673,9 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
3614
3673
  // シャッフルグループ (shuffleX_Y)
3615
3674
  newKeyTripleParam(newKey, `shuffle`);
3616
3675
 
3676
+ // キーグループ (keyGroupX_Y)
3677
+ newKeyMultiParam(newKey, `keyGroup`, toSplitArrayStr);
3678
+
3617
3679
  // スクロールパターン (scrollX_Y)
3618
3680
  // |scroll(newKey)=Cross::1,1,-1,-1,-1,1,1/Split::1,1,1,-1,-1,-1,-1$...|
3619
3681
  newKeyPairParam(newKey, `scroll`, `scrollDir`, `---`, 1);
@@ -3859,13 +3921,7 @@ const titleInit = _ => {
3859
3921
  if (g_headerObj.commentVal !== ``) {
3860
3922
 
3861
3923
  // コメント文の加工
3862
- const comments = g_headerObj.commentVal.split(`}`).join(`{`).split(`{`);
3863
- let convCommentVal = ``;
3864
- for (let j = 0; j < comments.length; j += 2) {
3865
- convCommentVal += escapeHtmlForEnabledTag(comments[j]);
3866
- convCommentVal += setVal(comments[j + 1], ``, C_TYP_CALC);
3867
- }
3868
-
3924
+ const convCommentVal = convertStrToVal(g_headerObj.commentVal);
3869
3925
  if (g_headerObj.commentExternal) {
3870
3926
  if (document.querySelector(`#commentArea`) !== null) {
3871
3927
  commentArea.innerHTML = convCommentVal;
@@ -4992,6 +5048,7 @@ const createOptionWindow = _sprite => {
4992
5048
  if (isNotSameKey && g_keyObj.prevKey !== `Dummy`) {
4993
5049
  // キーパターン初期化
4994
5050
  g_keyObj.currentPtn = 0;
5051
+ g_keycons.keySwitchNum = 0;
4995
5052
  }
4996
5053
  const hasKeyStorage = localStorage.getItem(`danonicw-${g_keyObj.currentKey}k`);
4997
5054
  let storageObj, addKey = ``;
@@ -5576,8 +5633,7 @@ const createSettingsDisplayWindow = _sprite => {
5576
5633
 
5577
5634
  const dispAppearanceSlider = _ => {
5578
5635
  [`lblAppearancePos`, `lblAppearanceBar`, `lnkLockBtn`, `lnkfilterLine`].forEach(obj =>
5579
- document.getElementById(obj).style.visibility =
5580
- g_appearanceRanges.includes(g_stateObj.appearance) ? `Visible` : `Hidden`
5636
+ $id(obj).visibility = g_appearanceRanges.includes(g_stateObj.appearance) ? `Visible` : `Hidden`
5581
5637
  );
5582
5638
  };
5583
5639
  dispAppearanceSlider();
@@ -5680,6 +5736,9 @@ const keyConfigInit = (_kcType = g_kcType) => {
5680
5736
  const maxLeftPos = Math.max(divideCnt, posMax - divideCnt - 2) / 2;
5681
5737
  const maxLeftX = Math.min(0, (kWidth - C_ARW_WIDTH) / 2 - maxLeftPos * g_keyObj.blank);
5682
5738
 
5739
+ g_keycons.cursorNumList = [...Array(keyNum).keys()].map(i => i);
5740
+ const configKeyGroupList = g_headerObj.keyGroupOrder[g_stateObj.scoreId] ?? tkObj.keyGroupList;
5741
+
5683
5742
  /**
5684
5743
  * keyconSpriteのスクロール位置調整
5685
5744
  * @param {number} _targetX
@@ -5804,6 +5863,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
5804
5863
  createCss2Button(`keycon${j}_${k}`, g_kCd[g_keyObj[`keyCtrl${keyCtrlPtn}`][j][k]], _ => {
5805
5864
  g_currentj = j;
5806
5865
  g_currentk = k;
5866
+ g_keycons.cursorNum = g_keycons.cursorNumList.findIndex(val => val === g_currentj);
5807
5867
  setKeyConfigCursor();
5808
5868
  }, {
5809
5869
  x: keyconX, y: 50 + C_KYC_REPHEIGHT * k + keyconY,
@@ -5981,21 +6041,6 @@ const keyConfigInit = (_kcType = g_kcType) => {
5981
6041
  makeGroupButton(`color`, { cssName: g_cssObj.keyconfig_ColorType });
5982
6042
  makeGroupButton(`shuffle`, { baseX: g_sWidth * 11 / 12 - 10, cssName: g_cssObj.settings_Shuffle });
5983
6043
 
5984
- /**
5985
- * 次のカーソルへ移動
5986
- * @param {number} _pos
5987
- */
5988
- const searchNextCursor = _pos => {
5989
- for (let j = g_currentj; j < keyNum + g_currentj; j++) {
5990
- if (g_keyObj[`keyCtrl${keyCtrlPtn}`][j % keyNum][_pos] !== undefined) {
5991
- g_currentj = j % keyNum;
5992
- g_currentk = _pos;
5993
- return true;
5994
- }
5995
- }
5996
- return false;
5997
- };
5998
-
5999
6044
  /**
6000
6045
  * カーソル位置の設定
6001
6046
  */
@@ -6017,25 +6062,19 @@ const keyConfigInit = (_kcType = g_kcType) => {
6017
6062
  };
6018
6063
 
6019
6064
  /**
6020
- * キーコンフィグ用カーソルのリセット
6021
- * @param {number} _resetPos
6022
- * @param {boolean} _resetCursorFlg
6065
+ * カーソル位置の変更
6066
+ * @param {number} _nextj
6023
6067
  */
6024
- const resetCursor = (_resetPos = 0, _resetCursorFlg = true) => {
6025
- g_prevKey = -1;
6026
- if (_resetCursorFlg) {
6027
- g_currentj = 0;
6028
- if (!searchNextCursor(_resetPos)) {
6029
- g_currentk = 0;
6030
- }
6031
- } else {
6032
- if (g_keyObj[`keyCtrl${keyCtrlPtn}`][g_currentj][_resetPos] === undefined) {
6033
- searchNextCursor(_resetPos);
6034
- } else {
6035
- g_currentk = _resetPos;
6036
- }
6068
+ const changeConfigCursor = (_nextj = ++g_keycons.cursorNum % g_keycons.cursorNumList.length) => {
6069
+ g_keycons.cursorNum = _nextj;
6070
+
6071
+ g_currentj = g_keycons.cursorNumList[_nextj];
6072
+ g_currentk = 0;
6073
+ if (g_kcType === `Replaced` && (g_keyObj[`keyCtrl${keyCtrlPtn}`][g_currentj][1] !== undefined)) {
6074
+ g_currentk = 1;
6037
6075
  }
6038
6076
  setKeyConfigCursor();
6077
+ keyconSprite.scrollLeft = - maxLeftX;
6039
6078
  };
6040
6079
 
6041
6080
  const getNextNum = (_scrollNum, _groupName, _target) => {
@@ -6049,10 +6088,51 @@ const keyConfigInit = (_kcType = g_kcType) => {
6049
6088
  */
6050
6089
  const setConfigType = (_scrollNum = 1) => {
6051
6090
  g_kcType = g_keycons.configTypes[getNextNum(_scrollNum, `configTypes`, g_kcType)];
6052
- resetCursor(Number(g_kcType === `Replaced`), _scrollNum === 0);
6091
+ changeConfigCursor(g_keycons.cursorNum);
6053
6092
  lnkKcType.textContent = getStgDetailName(g_kcType);
6054
6093
  };
6055
6094
 
6095
+ /**
6096
+ * 一部のキーコンフィグを表示する
6097
+ * (キーグループ毎にフィルターされたもののみを表示する)
6098
+ * @param {number} _num
6099
+ */
6100
+ const appearConfigSteps = _num => {
6101
+
6102
+ const appearConfigView = (_j, _display) => {
6103
+ $id(`arrow${_j}`).display = _display;
6104
+ $id(`arrowShadow${_j}`).display = _display;
6105
+ $id(`color${_j}`).display = _display;
6106
+ if (document.getElementById(`sArrow${_j}`) !== null) {
6107
+ $id(`sArrow${_j}`).display = _display;
6108
+ }
6109
+ const ctrlPtn = g_keyObj[`keyCtrl${g_headerObj.keyLabels[g_stateObj.scoreId]}_${g_keyObj.currentPtn}`][_j];
6110
+ for (let k = 0; k < ctrlPtn.length; k++) {
6111
+ $id(`keycon${_j}_${k}`).display = _display;
6112
+ }
6113
+ };
6114
+
6115
+ g_keycons.keySwitchNum = _num;
6116
+ g_keycons.cursorNumList = [];
6117
+ for (let j = 0; j < keyNum; j++) {
6118
+ appearConfigView(j, C_DIS_NONE);
6119
+
6120
+ if (tkObj.keyGroupMaps[j].includes(configKeyGroupList[_num])) {
6121
+ g_keycons.cursorNumList.push(j);
6122
+ appearConfigView(j, C_DIS_INHERIT);
6123
+ }
6124
+ }
6125
+ changeConfigCursor(0);
6126
+
6127
+ // keySwitchボタンを一旦非選択にして、選択中のものを再度色付け
6128
+ if (configKeyGroupList.length > 1) {
6129
+ for (let j = 0; j < configKeyGroupList.length; j++) {
6130
+ document.getElementById(`key${j}`).classList.replace(g_cssObj.button_Next, g_cssObj.button_Mini);
6131
+ }
6132
+ document.getElementById(`key${_num}`).classList.replace(g_cssObj.button_Mini, g_cssObj.button_Next);
6133
+ }
6134
+ };
6135
+
6056
6136
  /**
6057
6137
  * ColorPickerの色切替
6058
6138
  * @param {number} _j
@@ -6062,9 +6142,9 @@ const keyConfigInit = (_kcType = g_kcType) => {
6062
6142
  const changeColorPicker = (_j, _type, _color) => {
6063
6143
  if (_color !== ``) {
6064
6144
  document.getElementById(`pick${_type}${_j}`).value = _color.slice(0, 7);
6065
- document.getElementById(`pick${_type}${_j}`).style.display = C_DIS_INHERIT;
6145
+ $id(`pick${_type}${_j}`).display = C_DIS_INHERIT;
6066
6146
  } else {
6067
- document.getElementById(`pick${_type}${_j}`).style.display = C_DIS_NONE;
6147
+ $id(`pick${_type}${_j}`).display = C_DIS_NONE;
6068
6148
  }
6069
6149
  };
6070
6150
 
@@ -6213,6 +6293,22 @@ const keyConfigInit = (_kcType = g_kcType) => {
6213
6293
  // ユーザカスタムイベント(初期)
6214
6294
  g_customJsObj.keyconfig.forEach(func => func());
6215
6295
 
6296
+ // 部分キー表示用ボタン描画
6297
+ if (configKeyGroupList.length > 1) {
6298
+ multiAppend(divRoot,
6299
+ createDivCss2Label(`lblkey`, `KeySwitch`, { x: g_sWidth - 80, y: 90, w: 60, h: 20, siz: 14 }));
6300
+ configKeyGroupList.forEach((val, j) => {
6301
+ divRoot.appendChild(
6302
+ createCss2Button(`key${j}`, `${j + 1}`, _ => {
6303
+ appearConfigSteps(j);
6304
+ }, { x: g_sWidth - 60, y: 110 + j * 20, w: 50, h: 20, siz: 14 }, g_cssObj.button_Mini),
6305
+ );
6306
+ });
6307
+ }
6308
+
6309
+ // カーソル位置の初期化
6310
+ appearConfigSteps(g_keycons.keySwitchNum);
6311
+
6216
6312
  // ラベル・ボタン描画
6217
6313
  multiAppend(divRoot,
6218
6314
 
@@ -6241,14 +6337,17 @@ const keyConfigInit = (_kcType = g_kcType) => {
6241
6337
  // キーコンフィグリセットボタン描画
6242
6338
  createCss2Button(`btnReset`, g_lblNameObj.b_reset, _ => {
6243
6339
  if (window.confirm(g_msgObj.keyResetConfirm)) {
6244
- for (let j = 0; j < keyNum; j++) {
6340
+ const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
6341
+
6342
+ for (let m = 0; m < g_keycons.cursorNumList.length; m++) {
6343
+ const j = g_keycons.cursorNumList[m];
6245
6344
  for (let k = 0; k < g_keyObj[`keyCtrl${keyCtrlPtn}`][j].length; k++) {
6246
6345
  g_keyObj[`keyCtrl${keyCtrlPtn}`][j][k] = setIntVal(g_keyObj[`keyCtrl${keyCtrlPtn}d`][j][k]);
6247
6346
  document.querySelector(`#keycon${j}_${k}`).textContent = g_kCd[g_keyObj[`keyCtrl${keyCtrlPtn}`][j][k]];
6248
6347
  changeKeyConfigColor(j, k, g_keyObj.currentPtn === -1 ? g_cssObj.keyconfig_Defaultkey : g_cssObj.title_base);
6249
6348
  }
6250
6349
  }
6251
- resetCursor(Number(g_kcType === `Replaced`));
6350
+ changeConfigCursor(0);
6252
6351
  keyconSprite.scrollLeft = - maxLeftX;
6253
6352
  }
6254
6353
  }, g_lblPosObj.btnKcReset, g_cssObj.button_Reset),
@@ -6296,20 +6395,8 @@ const keyConfigInit = (_kcType = g_kcType) => {
6296
6395
  g_currentk++;
6297
6396
  cursor.style.top = `${parseInt(cursor.style.top) + C_KYC_REPHEIGHT}px`;
6298
6397
 
6299
- } else if (g_currentj < keyNum - 1) {
6300
- // 他の代替キーが存在せず、次の矢印がある場合
6301
- g_currentj++;
6302
- g_currentk = 0;
6303
-
6304
- // 代替キーのみの場合は次の代替キーがあるキーを探す
6305
- if (g_kcType === `Replaced`) {
6306
- searchNextCursor(1);
6307
- }
6308
- setKeyConfigCursor();
6309
-
6310
6398
  } else {
6311
- // 全ての矢印・代替キーの巡回が終わった場合は元の位置に戻す
6312
- resetCursor(Number(g_kcType === `Replaced`));
6399
+ changeConfigCursor();
6313
6400
  }
6314
6401
  });
6315
6402
 
@@ -6337,8 +6424,13 @@ const getKeyInfo = _ => {
6337
6424
  const posMax = (g_keyObj[`divMax${keyCtrlPtn}`] !== undefined ?
6338
6425
  g_keyObj[`divMax${keyCtrlPtn}`] : g_keyObj[`pos${keyCtrlPtn}`][keyNum - 1] + 1);
6339
6426
  const divideCnt = g_keyObj[`div${keyCtrlPtn}`] - 1;
6427
+ const keyGroupMaps = setVal(g_keyObj[`keyGroup${keyCtrlPtn}`], [...Array(keyNum)].fill([0]), C_TYP_STRING);
6428
+ const keyGroupList = makeDedupliArray(keyGroupMaps.flat()).sort((a, b) => parseInt(a) - parseInt(b));
6340
6429
 
6341
- return { keyCtrlPtn: keyCtrlPtn, keyNum: keyNum, posMax: posMax, divideCnt: divideCnt };
6430
+ return {
6431
+ keyCtrlPtn: keyCtrlPtn, keyNum: keyNum, posMax: posMax, divideCnt: divideCnt,
6432
+ keyGroupMaps: keyGroupMaps, keyGroupList: keyGroupList,
6433
+ };
6342
6434
  };
6343
6435
 
6344
6436
  /**
@@ -7056,6 +7148,29 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7056
7148
  _dosObj[`${_header}${_type}_data`]
7057
7149
  ];
7058
7150
 
7151
+ /**
7152
+ * 歌詞表示、背景・マスクデータの優先順取得
7153
+ * @returns
7154
+ */
7155
+ const getPriorityHeader = _ => {
7156
+ const list = [];
7157
+ let type = ``;
7158
+ if (g_stateObj.scroll !== `---`) {
7159
+ type = `Alt`;
7160
+ } else if (g_stateObj.reverse === C_FLG_ON) {
7161
+ type = `Rev`;
7162
+ }
7163
+ if (hasVal(g_keyObj[`transKey${_keyCtrlPtn}`])) {
7164
+ list.push(`${type}A`);
7165
+ }
7166
+ if (type !== ``) {
7167
+ list.push(type);
7168
+ }
7169
+ list.push(``);
7170
+
7171
+ return list;
7172
+ };
7173
+
7059
7174
  /**
7060
7175
  * 歌詞データの分解
7061
7176
  * @param {string} _scoreNo
@@ -7065,11 +7180,9 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7065
7180
  let wordReverseFlg = false;
7066
7181
  const divideCnt = getKeyInfo().divideCnt;
7067
7182
  const addDataList = (_type = ``) => wordDataList.push(...getPriorityList(`word`, _type, _scoreNo));
7183
+ getPriorityHeader().forEach(val => addDataList(val));
7068
7184
 
7069
- if (g_stateObj.scroll !== `---`) {
7070
- addDataList(`Alt`);
7071
- } else if (g_stateObj.reverse === C_FLG_ON) {
7072
- addDataList(`Rev`);
7185
+ if (g_stateObj.reverse === C_FLG_ON) {
7073
7186
 
7074
7187
  // wordRev_dataが指定されている場合はそのままの位置を採用
7075
7188
  // word_dataのみ指定されている場合、下記ルールに従って設定
@@ -7082,7 +7195,6 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7082
7195
  }
7083
7196
  }
7084
7197
  }
7085
- addDataList();
7086
7198
 
7087
7199
  const inputWordData = wordDataList.find((v) => v !== undefined);
7088
7200
  return (inputWordData !== undefined ? makeSpriteWordData(inputWordData, wordReverseFlg) : [[], -1]);
@@ -7151,13 +7263,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7151
7263
  const makeBackgroundData = (_header, _scoreNo) => {
7152
7264
  const dataList = [];
7153
7265
  const addDataList = (_type = ``) => dataList.push(...getPriorityList(_header, _type, _scoreNo));
7154
-
7155
- if (g_stateObj.scroll !== `---`) {
7156
- addDataList(`Alt`);
7157
- } else if (g_stateObj.reverse === C_FLG_ON) {
7158
- addDataList(`Rev`);
7159
- }
7160
- addDataList();
7266
+ getPriorityHeader().forEach(val => addDataList(val));
7161
7267
 
7162
7268
  const data = dataList.find((v) => v !== undefined);
7163
7269
  return (data !== undefined ? makeSpriteData(data, calcFrame) : [[], -1]);
@@ -7255,6 +7361,17 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7255
7361
  });
7256
7362
  }
7257
7363
 
7364
+ // キー変化定義
7365
+ obj.keychFrames = [];
7366
+ if (hasVal(_dosObj[`keych${setScoreIdHeader(g_stateObj.scoreId, g_stateObj.scoreLockFlg)}_data`])) {
7367
+ const keychdata = _dosObj[`keych${setScoreIdHeader(g_stateObj.scoreId, g_stateObj.scoreLockFlg)}_data`]?.split(`,`);
7368
+ obj.keychFrames = keychdata.filter((val, j) => j % 2 === 0);
7369
+ obj.keychTarget = keychdata.filter((val, j) => j % 2 === 1);
7370
+ } else {
7371
+ obj.keychFrames = [0];
7372
+ obj.keychTarget = [0];
7373
+ }
7374
+
7258
7375
  return obj;
7259
7376
  };
7260
7377
 
@@ -7958,6 +8075,9 @@ const getArrowSettings = _ => {
7958
8075
  g_workObj.diffList = [];
7959
8076
  g_workObj.mainEndTime = 0;
7960
8077
 
8078
+ g_workObj.keyGroupMaps = tkObj.keyGroupMaps;
8079
+ g_workObj.keyGroupList = tkObj.keyGroupList;
8080
+
7961
8081
  const keyCtrlLen = g_workObj.keyCtrl.length;
7962
8082
  g_workObj.keyCtrlN = [...Array(keyCtrlLen)].map(_ => []);
7963
8083
  g_workObj.keyHitFlg = [...Array(keyCtrlLen)].map(_ => []);
@@ -8181,7 +8301,8 @@ const mainInit = _ => {
8181
8301
  const dummyFrzCnts = [...Array(keyNum)].fill(0);
8182
8302
  let speedCnts = 0;
8183
8303
  let boostCnts = 0;
8184
- const stepZoneDisp = (g_stateObj.d_stepzone === C_FLG_OFF || g_stateObj.scroll === `Flat`) ? C_DIS_NONE : C_DIS_INHERIT;
8304
+ let keychCnts = 0;
8305
+ const stepZoneDisp = (g_stateObj.d_stepzone === C_FLG_OFF || g_settings.scrollFlat.includes(g_stateObj.scroll)) ? C_DIS_NONE : C_DIS_INHERIT;
8185
8306
 
8186
8307
  for (let j = 0; j < keyNum; j++) {
8187
8308
  const colorPos = g_keyObj[`color${keyCtrlPtn}`][j];
@@ -8202,6 +8323,8 @@ const mainInit = _ => {
8202
8323
  );
8203
8324
  }
8204
8325
 
8326
+ appearStepZone(j, C_DIS_NONE);
8327
+
8205
8328
  // ステップゾーン
8206
8329
  multiAppend(stepRoot,
8207
8330
 
@@ -8222,14 +8345,17 @@ const mainInit = _ => {
8222
8345
 
8223
8346
  );
8224
8347
  }
8225
- if (g_stateObj.scroll === `Flat` && g_stateObj.d_stepzone === C_FLG_ON) {
8348
+ if (g_settings.scrollFlat.includes(g_stateObj.scroll) && g_stateObj.d_stepzone === C_FLG_ON) {
8349
+
8350
+ // スクロール名に`R-`が含まれていればリバースと見做す
8351
+ const reverseFlg = g_stateObj.reverse === C_FLG_ON || g_stateObj.scroll.startsWith(`R-`);
8226
8352
 
8227
8353
  // ステップゾーンの代わり
8228
8354
  const lineY = [(C_ARW_WIDTH - g_stateObj.flatStepHeight) / 2, (C_ARW_WIDTH + g_stateObj.flatStepHeight) / 2];
8229
8355
  lineY.forEach((y, j) => {
8230
8356
  mainSprite.appendChild(
8231
8357
  createColorObject2(`stepBar${j}`, {
8232
- x: 0, y: C_STEP_Y + g_posObj.reverseStepY * Number(g_stateObj.reverse === C_FLG_ON) + y,
8358
+ x: 0, y: C_STEP_Y + g_posObj.reverseStepY * Number(reverseFlg) + y,
8233
8359
  w: g_headerObj.playingWidth - 50, h: 1, styleName: `lifeBar`,
8234
8360
  }, g_cssObj.life_Failed)
8235
8361
  );
@@ -8964,7 +9090,7 @@ const mainInit = _ => {
8964
9090
  const boostCnt = currentArrow.boostCnt;
8965
9091
  currentArrow.prevY = currentArrow.y;
8966
9092
  currentArrow.y -= (g_workObj.currentSpeed * currentArrow.boostSpd + g_workObj.motionOnFrames[boostCnt] * currentArrow.boostDir) * currentArrow.dir;
8967
- document.getElementById(arrowName).style.top = `${currentArrow.y}px`;
9093
+ $id(arrowName).top = `${currentArrow.y}px`;
8968
9094
  currentArrow.boostCnt--;
8969
9095
  }
8970
9096
  judgeMotionFunc[`${_name}${g_stateObj.autoAll}`](_j, arrowName, --currentArrow.cnt);
@@ -9068,7 +9194,7 @@ const mainInit = _ => {
9068
9194
  // 移動
9069
9195
  if (g_workObj.currentSpeed !== 0) {
9070
9196
  currentFrz.y -= movY + g_workObj.motionOnFrames[currentFrz.boostCnt] * currentFrz.dir * currentFrz.boostDir;
9071
- document.getElementById(frzName).style.top = `${currentFrz.y}px`;
9197
+ $id(frzName).top = `${currentFrz.y}px`;
9072
9198
  currentFrz.boostCnt--;
9073
9199
  }
9074
9200
  currentFrz.cnt--;
@@ -9108,7 +9234,7 @@ const mainInit = _ => {
9108
9234
  currentFrz.frzBarLength -= g_workObj.currentSpeed;
9109
9235
  if (currentFrz.frzBarLength > 0) {
9110
9236
  currentFrz.y -= movY;
9111
- document.getElementById(frzName).style.top = `${currentFrz.y}px`;
9237
+ $id(frzName).top = `${currentFrz.y}px`;
9112
9238
  } else {
9113
9239
  judgeObjDelete[_name](_j, frzName);
9114
9240
  }
@@ -9195,6 +9321,14 @@ const mainInit = _ => {
9195
9321
 
9196
9322
  });
9197
9323
 
9324
+ // キー変化
9325
+ while (currentFrame >= g_scoreObj.keychFrames[keychCnts]) {
9326
+ for (let j = 0; j < keyNum; j++) {
9327
+ appearKeyTypes(j, g_scoreObj.keychTarget[keychCnts]);
9328
+ }
9329
+ keychCnts++;
9330
+ }
9331
+
9198
9332
  // ダミー矢印生成(背面に表示するため先に処理)
9199
9333
  if (g_workObj.mkDummyArrow[currentFrame] !== undefined) {
9200
9334
  g_workObj.mkDummyArrow[currentFrame].forEach(data =>
@@ -9422,6 +9556,25 @@ const makeCounterSymbol = (_id, _x, _class, _heightPos, _text, _display = C_DIS_
9422
9556
  }, _class);
9423
9557
  };
9424
9558
 
9559
+ /**
9560
+ * ステップゾーンの表示・非表示切替
9561
+ * @param {number} _j
9562
+ * @param {string} _display
9563
+ */
9564
+ const appearStepZone = (_j, _display) => $id(`stepRoot${_j}`).display = _display;
9565
+
9566
+ /**
9567
+ * 部分キーのステップゾーン出現処理
9568
+ * @param {number} _j
9569
+ * @param {string} _target
9570
+ */
9571
+ const appearKeyTypes = (_j, _target) => {
9572
+ appearStepZone(_j, C_DIS_NONE);
9573
+ if (g_workObj.keyGroupMaps[_j].includes(_target)) {
9574
+ appearStepZone(_j, C_DIS_INHERIT);
9575
+ }
9576
+ };
9577
+
9425
9578
  // TODO: この部分を矢印塗りつぶし部分についても適用できるように関数を見直し
9426
9579
 
9427
9580
  /**
@@ -9490,7 +9643,7 @@ const changeHitFrz = (_j, _k, _name) => {
9490
9643
 
9491
9644
  // フリーズアロー位置の修正(ステップゾーン上に来るように)
9492
9645
  const delFrzLength = parseFloat($id(`stepRoot${_j}`).top) - currentFrz.y;
9493
- document.getElementById(frzName).style.top = $id(`stepRoot${_j}`).top;
9646
+ $id(frzName).top = $id(`stepRoot${_j}`).top;
9494
9647
 
9495
9648
  // 早押ししたboostCnt分のフリーズアロー終端位置の修正
9496
9649
  const delFrzMotionLength = sumData(g_workObj.motionOnFrames.slice(0, currentFrz.boostCnt + 1));
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2019/11/19
8
- * Revised : 2023/01/28 (v29.4.1)
8
+ * Revised : 2023/02/14 (v30.1.1)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -754,6 +754,7 @@ const g_settings = {
754
754
 
755
755
  scrolls: [],
756
756
  scrollNum: 0,
757
+ scrollFlat: [`Flat`, `R-Flat`],
757
758
 
758
759
  shuffles: [C_FLG_OFF, `Mirror`, `Asym-Mirror`, `Random`, `Random+`, `S-Random`, `S-Random+`],
759
760
  shuffleNum: 0,
@@ -847,6 +848,10 @@ const g_keycons = {
847
848
  groupSelf: `S`,
848
849
 
849
850
  groups: [`color`, `shuffle`],
851
+
852
+ cursorNumList: [],
853
+ cursorNum: 0,
854
+ keySwitchNum: 0,
850
855
  };
851
856
 
852
857
  let g_displays = [`stepZone`, `judgment`, `fastSlow`, `lifeGauge`, `score`, `musicInfo`, `filterLine`,
@@ -2577,7 +2582,7 @@ g_keycons.groups.forEach(type => {
2577
2582
  const g_keyCopyLists = {
2578
2583
  simpleDef: [`blank`, `scale`],
2579
2584
  simple: [`div`, `divMax`, `blank`, `scale`, `keyRetry`, `keyTitleBack`, `transKey`, `scrollDir`, `assistPos`],
2580
- multiple: [`chara`, `color`, `stepRtn`, `pos`, `shuffle`],
2585
+ multiple: [`chara`, `color`, `stepRtn`, `pos`, `shuffle`, `keyGroup`],
2581
2586
  };
2582
2587
 
2583
2588
  // タイトル画面関連のリスト群
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  /**
3
3
  * Dancing☆Onigiri 設定用jsファイル
4
- * Template Update: 2022/03/25 (v27.1.0)
4
+ * Template Update: 2023/02/14 (v30.1.1)
5
5
  *
6
6
  * このファイルでは、作品全体に対しての初期設定を行うことができます。
7
7
  * 譜面データ側で個別に同様の項目が設定されている場合は、譜面データ側の設定が優先されます。
@@ -187,6 +187,14 @@ g_presetObj.customDesignUse = {
187
187
  */
188
188
  //g_presetObj.customImageList = [`ball`, `square`];
189
189
 
190
+ /**
191
+ * 背景・マスクモーションで利用する「animationFillMode」のデフォルト値
192
+ * - none : 初期画像へ戻す
193
+ * - forwards : アニメーション100%の状態を維持(デフォルト)
194
+ * - backwards : アニメーション 0%の状態に戻す
195
+ */
196
+ //g_presetObj.animationFillMode = `none`;
197
+
190
198
 
191
199
  /*
192
200
  ------------------------------------------------------------------------
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "29.4.1",
3
+ "version": "30.1.1",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "index.js",
6
6
  "scripts": {