danoniplus 31.2.0 → 31.4.0

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.
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2019/11/19
8
- * Revised : 2023/03/25 (v31.1.0)
8
+ * Revised : 2023/04/08 (v31.4.0)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -21,10 +21,12 @@ const C_VALIGN_TOP = `top`;
21
21
  const C_VALIGN_MIDDLE = `middle`;
22
22
  const C_VALIGN_BOTTOM = `bottom`;
23
23
 
24
+ const C_LBL_BASICFONT = `"Meiryo UI", sans-serif`;
25
+
26
+ /** 廃止予定の定数群 */
24
27
  const C_LBL_TITLESIZE = 32;
25
28
  const C_LBL_BTNSIZE = 28;
26
29
  const C_LBL_LNKSIZE = 16;
27
- const C_LBL_BASICFONT = `"Meiryo UI", sans-serif`;
28
30
 
29
31
  const C_BTN_HEIGHT = 50;
30
32
  const C_LNK_HEIGHT = 30;
@@ -42,6 +44,98 @@ const C_SIZ_DIFSELECTOR = 14;
42
44
  const C_SIZ_MAIN = 14;
43
45
  const C_SIZ_MUSIC_TITLE = 13;
44
46
 
47
+ const C_LEN_JDGCHARA_WIDTH = 200;
48
+ const C_LEN_JDGCHARA_HEIGHT = 20;
49
+ const C_SIZ_JDGCHARA = 20;
50
+
51
+ const C_LEN_JDGCNTS_WIDTH = 100;
52
+ const C_LEN_JDGCNTS_HEIGHT = 20;
53
+ const C_SIZ_JDGCNTS = 16;
54
+
55
+ const C_LEN_GRAPH_WIDTH = 286;
56
+ const C_LEN_GRAPH_HEIGHT = 226;
57
+ const C_CLR_SPEEDGRAPH_SPEED = `#cc3333`;
58
+ const C_CLR_SPEEDGRAPH_BOOST = `#999900`;
59
+ const C_CLR_DENSITY_MAX = `#990000cc`;
60
+ const C_CLR_DENSITY_DEFAULT = `#999999cc`;
61
+ const C_LEN_DENSITY_DIVISION = 16;
62
+
63
+ const C_MAX_ADJUSTMENT = 30;
64
+
65
+ /** 設定幅、位置などを管理するプロパティ */
66
+ const g_limitObj = {
67
+
68
+ // Adjustment, HitPositionの設定幅
69
+ adjustment: 30,
70
+ hitPosition: 50,
71
+
72
+ // 譜面密度グラフの分割数、上位色付け数
73
+ densityDivision: 16,
74
+ densityMaxVals: 3,
75
+
76
+ // ボタン・リンクの高さ、フォントサイズ
77
+ btnHeight: 50,
78
+ btnSiz: 28,
79
+ lnkHeight: 30,
80
+ lnkSiz: 16,
81
+
82
+ // 設定画面用のボタンの位置、幅、高さ、フォントサイズ
83
+ setLblLeft: 160,
84
+ setLblWidth: 210,
85
+ setLblHeight: 22,
86
+ setLblSiz: 17,
87
+
88
+ // 設定画面の左右移動ボタンの幅、フォントサイズ
89
+ setMiniWidth: 40,
90
+ setMiniSiz: 18,
91
+
92
+ // 譜面選択エリアの幅、フォントサイズ
93
+ difSelectorWidth: 250,
94
+ difSelectorSiz: 14,
95
+ difCoverWidth: 110,
96
+
97
+ // 判定キャラクタの幅、高さ、フォントサイズ
98
+ jdgCharaWidth: 200,
99
+ jdgCharaHeight: 20,
100
+ jdgCharaSiz: 20,
101
+
102
+ // 判定数の幅、高さ、フォントサイズ
103
+ jdgCntsWidth: 100,
104
+ jdgCntsHeight: 20,
105
+ jdgCntsSiz: 16,
106
+
107
+ // グラフ表示部分の幅、高さ
108
+ graphWidth: 286,
109
+ graphHeight: 226,
110
+
111
+ // その他のフォントサイズ
112
+ titleSiz: 32,
113
+ mainSiz: 14,
114
+ musicTitleSiz: 13,
115
+ };
116
+
117
+ /** 設定項目の位置 */
118
+ const g_settingPos = {
119
+ option: {
120
+ difficulty: { heightPos: 0, y: -5, dw: 0, dh: 10 },
121
+ speed: { heightPos: 2, y: 0, dw: 0, dh: 0 },
122
+ motion: { heightPos: 3, y: 0, dw: 0, dh: 0 },
123
+ reverse: { heightPos: 4, y: 0, dw: 0, dh: 0 },
124
+ scroll: { heightPos: 4, y: 0, dw: 0, dh: 0 },
125
+ shuffle: { heightPos: 5.5, y: 0, dw: 0, dh: 0 },
126
+ autoPlay: { heightPos: 6.5, y: 0, dw: 0, dh: 0 },
127
+ gauge: { heightPos: 7.5, y: 0, dw: 0, dh: 0 },
128
+ adjustment: { heightPos: 10.5, y: 0, dw: 0, dh: 0 },
129
+ fadein: { heightPos: 11.5, y: 0, dw: 0, dh: 0 },
130
+ volume: { heightPos: 12.5, y: 0, dw: 0, dh: 0 },
131
+ },
132
+ settingsDisplay: {
133
+ appearance: { heightPos: 7.4, y: 10, dw: 0, dh: 0 },
134
+ opacity: { heightPos: 9, y: 10, dw: 0, dh: 0 },
135
+ hitPosition: { heightPos: 10, y: 10, dw: 0, dh: 0 },
136
+ },
137
+ };
138
+
45
139
  // スプライト(ムービークリップ相当)のルート
46
140
  const C_SPRITE_ROOT = `divRoot`;
47
141
 
@@ -98,7 +192,7 @@ const g_lblPosObj = {};
98
192
  const updateWindowSiz = _ => {
99
193
  Object.assign(g_windowObj, {
100
194
  optionSprite: { x: (g_sWidth - 450) / 2, y: 65 + (g_sHeight - 500) / 2, w: 450, h: 325 },
101
- displaySprite: { x: 25, y: 30, w: (g_sWidth - 450) / 2, h: C_LEN_SETLBL_HEIGHT * 5 },
195
+ displaySprite: { x: 25, y: 30, w: (g_sWidth - 450) / 2, h: g_limitObj.setLblHeight * 5 },
102
196
  keyconSprite: { y: 88 + (g_sHeight - 500) / 2, h: g_sHeight, overflow: `auto` },
103
197
  loader: { y: g_sHeight - 10, h: 10, backgroundColor: `#333333` },
104
198
  playDataWindow: { x: g_sWidth / 2 - 225, y: 70 + (g_sHeight - 500) / 2, w: 450, h: 110 },
@@ -118,11 +212,11 @@ const updateWindowSiz = _ => {
118
212
  x: 0, y: g_sHeight - 150, w: 40, h: 40, siz: 30, title: g_msgObj.howto,
119
213
  },
120
214
  lnkMaker: {
121
- x: 0, y: g_sHeight - 50, w: g_sWidth / 2, h: C_LNK_HEIGHT,
215
+ x: 0, y: g_sHeight - 50, w: g_sWidth / 2, h: g_limitObj.lnkHeight,
122
216
  align: C_ALIGN_LEFT, title: g_headerObj.creatorUrl,
123
217
  },
124
218
  lnkArtist: {
125
- x: g_sWidth / 2, y: g_sHeight - 50, w: g_sWidth / 2, h: C_LNK_HEIGHT,
219
+ x: g_sWidth / 2, y: g_sHeight - 50, w: g_sWidth / 2, h: g_limitObj.lnkHeight,
126
220
  align: C_ALIGN_LEFT, title: g_headerObj.artistUrl,
127
221
  },
128
222
  lnkVersion: {
@@ -133,7 +227,7 @@ const updateWindowSiz = _ => {
133
227
  x: g_sWidth - 20, y: g_sHeight - 20, w: 20, h: 16, siz: 12, title: g_msgObj.security,
134
228
  },
135
229
  lblComment: {
136
- x: 0, y: 70, w: g_sWidth, h: g_sHeight - 180, siz: C_SIZ_DIFSELECTOR, align: C_ALIGN_LEFT,
230
+ x: 0, y: 70, w: g_sWidth, h: g_sHeight - 180, siz: g_limitObj.difSelectorSiz, align: C_ALIGN_LEFT,
137
231
  overflow: `auto`, background: `#222222`, color: `#cccccc`, display: C_DIS_NONE,
138
232
  whiteSpace: `normal`,
139
233
  },
@@ -150,7 +244,7 @@ const updateWindowSiz = _ => {
150
244
  x: g_sWidth * 2 / 3,
151
245
  },
152
246
  btnSwitchSetting: {
153
- x: g_sWidth / 2 + 175 - C_LEN_SETMINI_WIDTH / 2, y: 25, w: C_LEN_SETMINI_WIDTH, h: 40,
247
+ x: g_sWidth / 2 + 175 - g_limitObj.setMiniWidth / 2, y: 25, w: g_limitObj.setMiniWidth, h: 40,
154
248
  },
155
249
  btnSave: {
156
250
  x: 0, y: 5, w: g_sWidth / 5, h: 16, siz: 12,
@@ -158,22 +252,22 @@ const updateWindowSiz = _ => {
158
252
  },
159
253
 
160
254
  btnReverse: {
161
- x: 160, y: 0, w: 90, h: 21, siz: C_SIZ_DIFSELECTOR, borderStyle: `solid`,
255
+ x: 160, y: 0, w: 90, h: 21, siz: g_limitObj.difSelectorSiz, borderStyle: `solid`,
162
256
  },
163
257
  lblGauge2: {
164
- x: C_LEN_SETLBL_LEFT - 35, y: C_LEN_SETLBL_HEIGHT,
165
- w: C_LEN_SETLBL_WIDTH + 60, h: C_LEN_SETLBL_HEIGHT * 2, siz: 11,
258
+ x: g_limitObj.setLblLeft - 35, y: g_limitObj.setLblHeight,
259
+ w: g_limitObj.setLblWidth + 60, h: g_limitObj.setLblHeight * 2, siz: 11,
166
260
  },
167
261
  lnkFadein: {
168
- x: C_LEN_SETLBL_LEFT, y: 0,
262
+ x: g_limitObj.setLblLeft, y: 0,
169
263
  },
170
264
  lblFadeinBar: {
171
- x: C_LEN_SETLBL_LEFT, y: 0,
265
+ x: g_limitObj.setLblLeft, y: 0,
172
266
  },
173
267
 
174
268
  /** 設定: 譜面明細子画面 */
175
269
  lblTooldif: {
176
- y: 5, w: 250, siz: C_SIZ_JDGCNTS,
270
+ y: 5, w: 250, siz: g_limitObj.jdgCntsSiz,
177
271
  },
178
272
  dataTooldif: {
179
273
  x: 270, y: 3, w: 160, siz: 18,
@@ -189,10 +283,10 @@ const updateWindowSiz = _ => {
189
283
  x: 345, w: 160,
190
284
  },
191
285
  lblArrowInfo: {
192
- x: 130, y: 45, w: 290, siz: C_SIZ_JDGCNTS,
286
+ x: 130, y: 45, w: 290, siz: g_limitObj.jdgCntsSiz,
193
287
  },
194
288
  dataArrowInfo: {
195
- x: 270, y: 45, w: 160, siz: C_SIZ_JDGCNTS,
289
+ x: 270, y: 45, w: 160, siz: g_limitObj.jdgCntsSiz,
196
290
  },
197
291
  lblArrowInfo2: {
198
292
  x: 130, y: 70, w: 200, h: 90,
@@ -201,7 +295,7 @@ const updateWindowSiz = _ => {
201
295
  x: 140, y: 70, w: 275, h: 150, overflow: `auto`,
202
296
  },
203
297
  lnkDifInfo: {
204
- w: C_LEN_DIFCOVER_WIDTH, borderStyle: `solid`,
298
+ w: g_limitObj.difCoverWidth, borderStyle: `solid`,
205
299
  },
206
300
 
207
301
  /** ディスプレイ画面 */
@@ -209,16 +303,16 @@ const updateWindowSiz = _ => {
209
303
  x: 0, y: g_sHeight - 45, w: g_sWidth, h: 20,
210
304
  },
211
305
  sdDesc: {
212
- x: 0, y: 65, w: g_sWidth, h: 20, siz: C_SIZ_MAIN,
306
+ x: 0, y: 65, w: g_sWidth, h: 20, siz: g_limitObj.mainSiz,
213
307
  },
214
308
  lblAppearancePos: {
215
- x: C_LEN_SETLBL_LEFT, y: 20, siz: 12, align: C_ALIGN_CENTER,
309
+ x: g_limitObj.setLblLeft, y: 20, siz: 12, align: C_ALIGN_CENTER,
216
310
  },
217
311
  lblAppearanceBar: {
218
- x: C_LEN_SETLBL_LEFT, y: 15,
312
+ x: g_limitObj.setLblLeft, y: 15,
219
313
  },
220
314
  lnkLockBtn: {
221
- x: C_LEN_SETLBL_LEFT + C_LEN_SETLBL_WIDTH - 40, y: 0, w: 40, h: C_LEN_SETLBL_HEIGHT, siz: 12,
315
+ x: g_limitObj.setLblLeft + g_limitObj.setLblWidth - 40, y: 0, w: 40, h: g_limitObj.setLblHeight, siz: 12,
222
316
  borderStyle: `solid`,
223
317
  },
224
318
 
@@ -227,7 +321,7 @@ const updateWindowSiz = _ => {
227
321
  x: 0, y: g_sHeight - 45, w: g_sWidth, h: 20,
228
322
  },
229
323
  kcMsg: {
230
- x: 0, y: g_sHeight - 25, w: g_sWidth, h: 20, siz: C_SIZ_MAIN,
324
+ x: 0, y: g_sHeight - 25, w: g_sWidth, h: 20, siz: g_limitObj.mainSiz,
231
325
  },
232
326
  kcDesc: {
233
327
  x: 0, y: 68, w: g_sWidth, h: 20,
@@ -244,30 +338,30 @@ const updateWindowSiz = _ => {
244
338
 
245
339
  btnKcBack: {
246
340
  x: g_sWidth / 3, y: g_sHeight - 75,
247
- w: g_sWidth / 3, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
341
+ w: g_sWidth / 3, h: g_limitObj.btnHeight / 2, siz: g_limitObj.btnSiz * 2 / 3,
248
342
  },
249
343
  lblPattern: {
250
- x: g_sWidth / 6, y: g_sHeight - 100, w: g_sWidth / 3, h: C_BTN_HEIGHT / 2,
344
+ x: g_sWidth / 6, y: g_sHeight - 100, w: g_sWidth / 3, h: g_limitObj.btnHeight / 2,
251
345
  },
252
346
  btnPtnChangeR: {
253
347
  x: g_sWidth / 2, y: g_sHeight - 100,
254
- w: g_sWidth / 9, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
348
+ w: g_sWidth / 9, h: g_limitObj.btnHeight / 2, siz: g_limitObj.btnSiz * 2 / 3,
255
349
  },
256
350
  btnPtnChangeL: {
257
351
  x: g_sWidth / 18, y: g_sHeight - 100,
258
- w: g_sWidth / 9, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
352
+ w: g_sWidth / 9, h: g_limitObj.btnHeight / 2, siz: g_limitObj.btnSiz * 2 / 3,
259
353
  },
260
354
  btnPtnChangeRR: {
261
355
  x: g_sWidth * 11 / 18, y: g_sHeight - 100,
262
- w: g_sWidth / 18, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
356
+ w: g_sWidth / 18, h: g_limitObj.btnHeight / 2, siz: g_limitObj.btnSiz * 2 / 3,
263
357
  },
264
358
  btnPtnChangeLL: {
265
359
  x: 0, y: g_sHeight - 100,
266
- w: g_sWidth / 18, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
360
+ w: g_sWidth / 18, h: g_limitObj.btnHeight / 2, siz: g_limitObj.btnSiz * 2 / 3,
267
361
  },
268
362
  btnKcReset: {
269
363
  x: 0, y: g_sHeight - 75,
270
- w: g_sWidth / 3, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
364
+ w: g_sWidth / 3, h: g_limitObj.btnHeight / 2, siz: g_limitObj.btnSiz * 2 / 3,
271
365
  },
272
366
 
273
367
  /** メイン画面 */
@@ -290,14 +384,14 @@ const updateWindowSiz = _ => {
290
384
  x: 125, y: g_sHeight - 16, w: g_headerObj.playingWidth, h: 20, align: C_ALIGN_LEFT,
291
385
  },
292
386
  lblTime1: {
293
- x: 18, y: g_sHeight - 30, w: 40, h: 20, siz: C_SIZ_MAIN, align: C_ALIGN_RIGHT,
387
+ x: 18, y: g_sHeight - 30, w: 40, h: 20, siz: g_limitObj.mainSiz, align: C_ALIGN_RIGHT,
294
388
  },
295
389
  lblTime2: {
296
- x: 60, y: g_sHeight - 30, w: 60, h: 20, siz: C_SIZ_MAIN,
390
+ x: 60, y: g_sHeight - 30, w: 60, h: 20, siz: g_limitObj.mainSiz,
297
391
  },
298
392
  lblWord: {
299
393
  x: 100, w: g_headerObj.playingWidth - 200, h: 50,
300
- siz: C_SIZ_MAIN, align: C_ALIGN_LEFT, display: `block`, margin: `auto`,
394
+ siz: g_limitObj.mainSiz, align: C_ALIGN_LEFT, display: `block`, margin: `auto`,
301
395
  },
302
396
  finishView: {
303
397
  x: g_headerObj.playingWidth / 2 - 150, y: g_sHeight / 2 - 50, w: 300, h: 20, siz: 50,
@@ -317,21 +411,21 @@ const updateWindowSiz = _ => {
317
411
  x: g_sWidth / 2 + 50, y: 40, w: 200, h: 30, siz: 20,
318
412
  },
319
413
  btnRsBack: {
320
- w: g_sWidth / 4, h: C_BTN_HEIGHT * 5 / 4, animationName: `smallToNormalY`,
414
+ w: g_sWidth / 4, h: g_limitObj.btnHeight * 5 / 4, animationName: `smallToNormalY`,
321
415
  },
322
416
  btnRsCopy: {
323
- x: g_sWidth / 4, w: g_sWidth / 2, h: C_BTN_HEIGHT * 5 / 8, siz: 24, animationName: `smallToNormalY`,
417
+ x: g_sWidth / 4, w: g_sWidth / 2, h: g_limitObj.btnHeight * 5 / 8, siz: 24, animationName: `smallToNormalY`,
324
418
  },
325
419
  btnRsTweet: {
326
- x: g_sWidth / 4, y: g_sHeight - 100 + C_BTN_HEIGHT * 5 / 8,
327
- w: g_sWidth / 4, h: C_BTN_HEIGHT * 5 / 8, siz: 24, animationName: `smallToNormalY`,
420
+ x: g_sWidth / 4, y: g_sHeight - 100 + g_limitObj.btnHeight * 5 / 8,
421
+ w: g_sWidth / 4, h: g_limitObj.btnHeight * 5 / 8, siz: 24, animationName: `smallToNormalY`,
328
422
  },
329
423
  btnRsGitter: {
330
- x: g_sWidth / 2, y: g_sHeight - 100 + C_BTN_HEIGHT * 5 / 8,
331
- w: g_sWidth / 4, h: C_BTN_HEIGHT * 5 / 8, siz: 24, animationName: `smallToNormalY`,
424
+ x: g_sWidth / 2, y: g_sHeight - 100 + g_limitObj.btnHeight * 5 / 8,
425
+ w: g_sWidth / 4, h: g_limitObj.btnHeight * 5 / 8, siz: 24, animationName: `smallToNormalY`,
332
426
  },
333
427
  btnRsRetry: {
334
- x: g_sWidth / 4 * 3, w: g_sWidth / 4, h: C_BTN_HEIGHT * 5 / 4, animationName: `smallToNormalY`,
428
+ x: g_sWidth / 4 * 3, w: g_sWidth / 4, h: g_limitObj.btnHeight * 5 / 4, animationName: `smallToNormalY`,
335
429
  },
336
430
  });
337
431
  };
@@ -506,24 +600,50 @@ const g_typeLists = {
506
600
  // Motionオプション配列の基準位置
507
601
  const C_MOTION_STD_POS = 15;
508
602
 
509
- // キーブロック対象(キーコードを指定)
603
+ // キーブロック対象(KeyBoardEvent.codeを指定)
510
604
  const C_BLOCK_KEYS = [
511
- 8, 9, 13, 17, 18, 32, /* BackSpace, Tab, Enter, Ctrl, Alt, Space */
512
- 33, 34, 35, 36, /* PageUp, PageDown, End, Home */
513
- 37, 38, 39, 40, 46, /* Left, Down, Up, Right, Delete */
514
- 112, 113, 114, 115, 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, /* F1~F15 (F5は除く) */
515
- 27 /* Esc */
605
+ `Backspace`, `Tab`, `Enter`, `ControlLeft`, `ControlRight`, `AltLeft`, `AltRight`, `Space`,
606
+ `PageUp`, `PageDown`, `End`, `Home`,
607
+ `ArrowLeft`, `ArrowDown`, `ArrowUp`, `ArrowRight`, `Delete`,
608
+ `F1`, `F2`, `F3`, `F4`, `F6`, `F7`, `F8`, `F9`, `F10`, `F11`, `F12`, `F13`, `F14`, `F15`, `Escape`
516
609
  ];
517
610
 
518
- /** 設定・オプション画面用共通 */
519
- const C_LEN_GRAPH_WIDTH = 286;
520
- const C_LEN_GRAPH_HEIGHT = 226;
521
- const C_CLR_SPEEDGRAPH_SPEED = `#cc3333`;
522
- const C_CLR_SPEEDGRAPH_BOOST = `#999900`;
523
- const C_CLR_DENSITY_MAX = `#990000cc`;
524
- const C_CLR_DENSITY_DEFAULT = `#999999cc`;
525
- const C_LEN_DENSITY_DIVISION = 16;
611
+ /**
612
+ * 特殊文字列の置き換えリスト
613
+ * (置き換え元、置き換え先の組で二次元配列として定義。主にreplaceStr関数で使用)
614
+ */
615
+ const g_escapeStr = {
616
+ escape: [[`&`, `&amp;`], [`<`, `&lt;`], [`>`, `&gt;`], [`"`, `&quot;`]],
617
+ escapeTag: [
618
+ [`*amp*`, `&amp;`], [`*pipe*`, `|`], [`*dollar*`, `$`], [`*rsquo*`, `&rsquo;`],
619
+ [`*quot*`, `&quot;`], [`*comma*`, `&sbquo;`], [`*squo*`, `&#39;`], [`*bkquo*`, `&#96;`],
620
+ [`*lt*`, `&lt;`], [`*gt*`, `&gt;`], [`*lbrace*`, `{`], [`*rbrace*`, `}`],
621
+ ],
622
+ unEscapeTag: [
623
+ [`&amp;`, `&`], [`&rsquo;`, `’`], [`&quot;`, `"`], [`&sbquo;`, `,`],
624
+ [`&lt;`, `<`], [`&gt;`, `>`], [`&#39;`, `'`], [`&#96;`, `\``],
625
+ ],
626
+ escapeCode: [
627
+ [`<script>`, ``], [`</script>`, ``],
628
+ ],
629
+ musicNameSimple: [
630
+ [`<br>`, ` `], [`<nbr>`, ``], [`<dbr>`, ` `],
631
+ ],
632
+ musicNameMultiLine: [
633
+ [`<nbr>`, `<br>`], [`<dbr>`, `<br>`],
634
+ ],
635
+ frzName: [
636
+ [`leftdia`, `frzLdia`], [`rightdia`, `frzRdia`],
637
+ [`left`, `frzLeft`], [`down`, `frzDown`], [`up`, `frzUp`], [`right`, `frzRight`],
638
+ [`space`, `frzSpace`], [`iyo`, `frzIyo`], [`gor`, `frzGor`], [`oni`, `foni`],
639
+ ],
640
+ keyCtrlName: [
641
+ [`Left`, ``], [`Digit`, `D`], [`Numpad`, `N`], [`Semicolon`, `;`],
642
+ [`Multiply`, `*`], [`Add`, `+`], [`Subtract`, `-`], [`Decimal`, `.`], [`Divide`, `Div`],
643
+ ],
644
+ };
526
645
 
646
+ /** 設定・オプション画面用共通 */
527
647
  const g_graphColorObj = {
528
648
  max: `#993333cc`,
529
649
  default: `#999999cc`,
@@ -531,6 +651,9 @@ const g_graphColorObj = {
531
651
  default2Push: `#777777cc`,
532
652
  max3Push: `#003399cc`,
533
653
  default3Push: `#555555cc`,
654
+
655
+ speed: `#cc3333`,
656
+ boost: `#999900`,
534
657
  };
535
658
 
536
659
  const g_settingBtnObj = {
@@ -547,25 +670,17 @@ const g_settingBtnObj = {
547
670
  U: `↑`,
548
671
  },
549
672
  pos: {
550
- L: C_LEN_SETLBL_LEFT - C_LEN_SETMINI_WIDTH,
551
- LL: C_LEN_SETLBL_LEFT,
552
- LLL: C_LEN_SETLBL_LEFT + C_LEN_SETMINI_WIDTH + 1,
553
- HL: C_LEN_SETLBL_LEFT,
554
- R: C_LEN_SETLBL_LEFT + C_LEN_SETLBL_WIDTH,
555
- RR: C_LEN_SETLBL_LEFT + C_LEN_SETLBL_WIDTH - C_LEN_SETMINI_WIDTH,
556
- RRR: C_LEN_SETLBL_LEFT + C_LEN_SETLBL_WIDTH - C_LEN_SETMINI_WIDTH * 3 / 2 - 1,
557
- HR: C_LEN_SETLBL_LEFT + C_LEN_SETLBL_WIDTH - C_LEN_SETMINI_WIDTH,
673
+ L: g_limitObj.setLblLeft - g_limitObj.setMiniWidth,
674
+ LL: g_limitObj.setLblLeft,
675
+ LLL: g_limitObj.setLblLeft + g_limitObj.setMiniWidth + 1,
676
+ HL: g_limitObj.setLblLeft,
677
+ R: g_limitObj.setLblLeft + g_limitObj.setLblWidth,
678
+ RR: g_limitObj.setLblLeft + g_limitObj.setLblWidth - g_limitObj.setMiniWidth,
679
+ RRR: g_limitObj.setLblLeft + g_limitObj.setLblWidth - g_limitObj.setMiniWidth * 3 / 2 - 1,
680
+ HR: g_limitObj.setLblLeft + g_limitObj.setLblWidth - g_limitObj.setMiniWidth,
558
681
  }
559
682
  };
560
683
 
561
- const g_limitObj = {
562
- adjustment: 30,
563
- hitPosition: 50,
564
-
565
- densityDivision: 16,
566
- densityMaxVals: 3,
567
- };
568
- const C_MAX_ADJUSTMENT = 30;
569
684
  const C_MAX_SPEED = 10;
570
685
  const C_MIN_SPEED = 1;
571
686
 
@@ -591,14 +706,6 @@ const g_judgPosObj = {
591
706
 
592
707
  const C_CLR_DUMMY = `#777777`;
593
708
 
594
- const C_LEN_JDGCHARA_WIDTH = 200;
595
- const C_LEN_JDGCHARA_HEIGHT = 20;
596
- const C_SIZ_JDGCHARA = 20;
597
-
598
- const C_LEN_JDGCNTS_WIDTH = 100;
599
- const C_LEN_JDGCNTS_HEIGHT = 20;
600
- const C_SIZ_JDGCNTS = 16;
601
-
602
709
  let C_FRM_HITMOTION = 4;
603
710
  let C_FRM_JDGMOTION = 60;
604
711
 
@@ -1481,6 +1588,7 @@ const g_keyObj = {
1481
1588
  // - 原則、キー×パターンの数だけ設定が必要
1482
1589
  currentKey: 7,
1483
1590
  currentPtn: 0,
1591
+ defaultProp: `keyCtrl`,
1484
1592
 
1485
1593
  prevKey: `Dummy`,
1486
1594
  dfPtnNum: 0,
@@ -1697,52 +1805,52 @@ const g_keyObj = {
1697
1805
 
1698
1806
  // 基本パターン (キーコンフィグ)
1699
1807
  // - 順番はchara, stepRtnと対応している。
1700
- // - 多次元配列内はステップに対応するキーコードを示す。カンマ区切りで複数指定できる。
1701
- keyCtrl5_0: [[37], [40], [38], [39], [32]],
1702
- keyCtrl7_0: [[83], [68], [70], [32], [74], [75], [76]],
1703
- keyCtrl7i_0: [[90], [88], [67], [37], [40], [38], [39]],
1704
- keyCtrl8_0: [[83], [68], [70], [32], [74], [75], [76], [13]],
1705
- keyCtrl9A_0: [[83], [68], [69, 82], [70], [32], [74], [75], [73], [76]],
1706
- keyCtrl9B_0: [[65], [83], [68], [70], [32], [74], [75], [76], [187]],
1707
- keyCtrl9i_0: [[37], [40], [38], [39], [65], [83], [68], [70], [32]],
1708
- keyCtrl11_0: [[37], [40], [38], [39], [83], [68], [70], [32], [74], [75], [76]],
1709
- keyCtrl11L_0: [[87], [69], [51, 52], [82], [83], [68], [70], [32], [74], [75], [76]],
1710
- keyCtrl11W_0: [[49, 50], [84], [89], [48, 189], [83], [68], [70], [32], [74], [75], [76]],
1711
- keyCtrl11i_0: [[83], [88, 67], [68], [69, 82], [70], [32], [74], [77, 188], [75], [73, 79], [76]],
1712
- keyCtrl12_0: [[85], [73], [56, 57], [79], [32], [78], [74], [77], [75], [188], [76], [190]],
1713
- keyCtrl13_0: [[37], [40], [38], [39], [83], [68], [69, 82], [70], [32], [74], [75], [73], [76]],
1714
- keyCtrl14_0: [[84, 89], [85], [73], [56, 55, 57, 48], [79], [192, 80], [32], [78], [74], [77], [75], [188], [76], [190]],
1715
- keyCtrl14i_0: [[90, 87], [88, 69], [67, 82], [37], [40], [38], [39], [83], [68], [70], [32], [74], [75], [76]],
1716
- keyCtrl15A_0: [[87], [69], [51, 52], [82], [37], [40], [38], [39], [83], [68], [70], [32], [74], [75], [76]],
1717
- keyCtrl15B_0: [[87], [69], [51, 52], [82], [85], [73], [56, 57], [79], [83], [68], [70], [32], [74], [75], [76]],
1718
- keyCtrl16i_0: [[90, 87], [88, 69], [67, 82], [37], [40], [38], [39], [65], [83], [68], [70], [32], [74], [75], [76], [187]],
1719
- keyCtrl17_0: [[65], [90], [83], [88], [68], [67], [70], [86], [32], [78], [74], [77], [75], [188], [76], [190], [187]],
1720
- keyCtrl23_0: [[87], [69], [51, 52], [82], [85], [73], [56, 57], [79],
1721
- [90], [83], [88], [68], [67], [70], [86], [32], [78], [74], [77], [75], [188], [76], [190]],
1808
+ // - 多次元配列内はステップに対応するキーコードもしくはコード名を示す。カンマ区切りで複数指定できる。
1809
+ keyCtrl5_0: [[`Left`], [`Down`], [`Up`], [`Right`], [`Space`]],
1810
+ keyCtrl7_0: [[`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`]],
1811
+ keyCtrl7i_0: [[`Z`], [`X`], [`C`], [`Left`], [`Down`], [`Up`], [`Right`]],
1812
+ keyCtrl8_0: [[`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`], [`Enter`]],
1813
+ keyCtrl9A_0: [[`S`], [`D`], [`E`, `R`], [`F`], [`Space`], [`J`], [`K`], [`I`], [`L`]],
1814
+ keyCtrl9B_0: [[`A`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`], [`;`]],
1815
+ keyCtrl9i_0: [[`Left`], [`Down`], [`Up`], [`Right`], [`A`], [`S`], [`D`], [`F`], [`Space`]],
1816
+ keyCtrl11_0: [[`Left`], [`Down`], [`Up`], [`Right`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`]],
1817
+ keyCtrl11L_0: [[`W`], [`E`], [`D3`, `D4`], [`R`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`]],
1818
+ keyCtrl11W_0: [[`D1`, `D2`], [`T`], [`Y`], [`D0`, `Minus`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`]],
1819
+ keyCtrl11i_0: [[`S`], [`X`, `C`], [`D`], [`E`, `R`], [`F`], [`Space`], [`J`], [`M`, `Comma`], [`K`], [`I`, `O`], [`L`]],
1820
+ keyCtrl12_0: [[`U`], [`I`], [`D8`, `D9`], [`O`], [`Space`], [`N`], [`J`], [`M`], [`K`], [`Comma`], [`L`], [`Period`]],
1821
+ keyCtrl13_0: [[`Left`], [`Down`], [`Up`], [`Right`], [`S`], [`D`], [`E`, `R`], [`F`], [`Space`], [`J`], [`K`], [`I`], [`L`]],
1822
+ keyCtrl14_0: [[`T`, `Y`], [`U`], [`I`], [`D8`, `D7`, `D9`, `D0`], [`O`], [`BracketLeft`, `P`], [`Space`], [`N`], [`J`], [`M`], [`K`], [`Comma`], [`L`], [`Period`]],
1823
+ keyCtrl14i_0: [[`Z`, `W`], [`X`, `E`], [`C`, `R`], [`Left`], [`Down`], [`Up`], [`Right`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`]],
1824
+ keyCtrl15A_0: [[`W`], [`E`], [`D3`, `D4`], [`R`], [`Left`], [`Down`], [`Up`], [`Right`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`]],
1825
+ keyCtrl15B_0: [[`W`], [`E`], [`D3`, `D4`], [`R`], [`U`], [`I`], [`D8`, `D9`], [`O`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`]],
1826
+ keyCtrl16i_0: [[`Z`, `W`], [`X`, `E`], [`C`, `R`], [`Left`], [`Down`], [`Up`], [`Right`], [`A`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`], [`;`]],
1827
+ keyCtrl17_0: [[`A`], [`Z`], [`S`], [`X`], [`D`], [`C`], [`F`], [`V`], [`Space`], [`N`], [`J`], [`M`], [`K`], [`Comma`], [`L`], [`Period`], [`;`]],
1828
+ keyCtrl23_0: [[`W`], [`E`], [`D3`, `D4`], [`R`], [`U`], [`I`], [`D8`, `D9`], [`O`],
1829
+ [`Z`], [`S`], [`X`], [`D`], [`C`], [`F`], [`V`], [`Space`], [`N`], [`J`], [`M`], [`K`], [`Comma`], [`L`], [`Period`]],
1722
1830
 
1723
1831
  // 変則パターン (キーコンフィグ)
1724
1832
  // - _0 の数字部分をカウントアップすることで実現できる。
1725
- keyCtrl5_1: [[32], [37], [40], [38], [39]],
1726
- keyCtrl7_1: [[83], [69], [70], [32, 71, 72], [74], [73], [76]],
1727
- keyCtrl8_1: [[13], [83], [68], [70], [32], [74], [75], [76]],
1728
- keyCtrl9A_1: [[83], [68], [69, 82], [70], [32], [37], [40], [38], [39]],
1729
- keyCtrl9i_1: [[65], [83], [68], [70], [32], [37], [40], [38], [39]],
1730
- keyCtrl12_1: [[89], [85, 73], [56, 55, 57], [79], [32], [66], [72], [78, 77], [74, 75], [188], [76], [190]],
1731
- keyCtrl14_1: [[82, 84], [89], [85, 73], [56, 54, 55, 57, 48], [79], [192, 80], [32], [66], [72], [78, 77], [74, 75], [188], [76], [190]],
1732
- keyCtrl17_1: [[65], [83], [68], [70], [32], [74], [75], [76], [187], [90], [88], [67], [86], [78], [77], [188], [190]],
1833
+ keyCtrl5_1: [[`Space`], [`Left`], [`Down`], [`Up`], [`Right`]],
1834
+ keyCtrl7_1: [[`S`], [`E`], [`F`], [`Space`, `G`, `H`], [`J`], [`I`], [`L`]],
1835
+ keyCtrl8_1: [[`Enter`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`]],
1836
+ keyCtrl9A_1: [[`S`], [`D`], [`E`, `R`], [`F`], [`Space`], [`Left`], [`Down`], [`Up`], [`Right`]],
1837
+ keyCtrl9i_1: [[`A`], [`S`], [`D`], [`F`], [`Space`], [`Left`], [`Down`], [`Up`], [`Right`]],
1838
+ keyCtrl12_1: [[`Y`], [`U`, `I`], [`D8`, `D7`, `D9`], [`O`], [`Space`], [`B`], [`H`], [`N`, `M`], [`J`, `K`], [`Comma`], [`L`], [`Period`]],
1839
+ keyCtrl14_1: [[`R`, `T`], [`Y`], [`U`, `I`], [`D8`, `D6`, `D7`, `D9`, `D0`], [`O`], [`BracketLeft`, `P`], [`Space`], [`B`], [`H`], [`N`, `M`], [`J`, `K`], [`Comma`], [`L`], [`Period`]],
1840
+ keyCtrl17_1: [[`A`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`], [`;`], [`Z`], [`X`], [`C`], [`V`], [`N`], [`M`], [`Comma`], [`Period`]],
1733
1841
 
1734
- keyCtrl5_2: [[68], [70], [32], [74], [75]],
1735
- keyCtrl8_2: [[32], [78], [74], [77], [75], [188], [76], [190]],
1736
- keyCtrl12_2: [[87], [69], [51, 52], [82], [16], [90], [83], [88], [68], [67], [70], [86]],
1737
- keyCtrl14_2: [[9, 81], [87], [69], [51, 50, 52, 53], [82], [89, 84], [16], [90], [83], [88], [68], [67], [70], [86]],
1842
+ keyCtrl5_2: [[`D`], [`F`], [`Space`], [`J`], [`K`]],
1843
+ keyCtrl8_2: [[`Space`], [`N`], [`J`], [`M`], [`K`], [`Comma`], [`L`], [`Period`]],
1844
+ keyCtrl12_2: [[`W`], [`E`], [`D3`, `D4`], [`R`], [`Shift`], [`Z`], [`S`], [`X`], [`D`], [`C`], [`F`], [`V`]],
1845
+ keyCtrl14_2: [[`Tab`, `Q`], [`W`], [`E`], [`D3`, `D2`, `D4`, `D5`], [`R`], [`Y`, `T`], [`Shift`], [`Z`], [`S`], [`X`], [`D`], [`C`], [`F`], [`V`]],
1738
1846
 
1739
- keyCtrl8_3: [[32], [66], [72], [78, 77], [74, 75], [188], [76], [190]],
1740
- keyCtrl12_3: [[87], [69, 82], [51, 52, 53], [84], [16], [90], [83], [88, 67], [68, 70], [86], [71], [66]],
1741
- keyCtrl14_3: [[9, 81], [87], [69, 82], [51, 50, 52, 53, 54], [84], [85, 89], [16], [90], [83], [88, 67], [68, 70], [86], [71], [66]],
1847
+ keyCtrl8_3: [[`Space`], [`B`], [`H`], [`N`, `M`], [`J`, `K`], [`Comma`], [`L`], [`Period`]],
1848
+ keyCtrl12_3: [[`W`], [`E`, `R`], [`D3`, `D4`, `D5`], [`T`], [`Shift`], [`Z`], [`S`], [`X`, `C`], [`D`, `F`], [`V`], [`G`], [`B`]],
1849
+ keyCtrl14_3: [[`Tab`, `Q`], [`W`], [`E`, `R`], [`D3`, `D2`, `D4`, `D5`, `D6`], [`T`], [`U`, `Y`], [`Shift`], [`Z`], [`S`], [`X`, `C`], [`D`, `F`], [`V`], [`G`], [`B`]],
1742
1850
 
1743
- keyCtrl8_4: [[16], [90], [83], [88], [68], [67], [70], [86]],
1851
+ keyCtrl8_4: [[`Shift`], [`Z`], [`S`], [`X`], [`D`], [`C`], [`F`], [`V`]],
1744
1852
 
1745
- keyCtrl8_5: [[16], [90], [83], [88, 67], [68, 70], [86], [71], [66]],
1853
+ keyCtrl8_5: [[`Shift`], [`Z`], [`S`], [`X`, `C`], [`D`, `F`], [`V`], [`G`], [`B`]],
1746
1854
 
1747
1855
  // 矢印間隔補正
1748
1856
  blank: 55,
@@ -1988,10 +2096,8 @@ const g_keyObj = {
1988
2096
 
1989
2097
  };
1990
2098
 
1991
- // posX_Y, divX_Y, divMaxX_Yが未定義のときに0からの連番で補完する処理 (charaX_Yが定義されていることが前提)
1992
- Object.keys(g_keyObj).filter(val => val.startsWith(`chara`)).forEach(charaPtn => {
1993
- setKeyDfVal(charaPtn.slice(`chara`.length));
1994
- });
2099
+ // g_keyObj.defaultProp の上書きを禁止
2100
+ Object.defineProperty(g_keyObj, `defaultProp`, { writable: false });
1995
2101
 
1996
2102
  // キーパターンのコピーリスト
1997
2103
  // ・コピー先:コピー元の順に指定する
@@ -2040,6 +2146,17 @@ const g_copyKeyPtn = {
2040
2146
  '15B_1': `15A_0`,
2041
2147
  };
2042
2148
 
2149
+ // charaX_Y, posX_Y, keyGroupX_Y, divX_Y, divMaxX_Yが未定義のときに0からの連番で補完する処理 (charaX_Yが定義されていることが前提)
2150
+ // この後g_copyKeyPtnにてデータコピーするため、ここのみcharaX_Yがあるものだけについて処理
2151
+ Object.keys(g_keyObj).filter(val => val.startsWith(`chara`) &&
2152
+ !Object.keys(g_copyKeyPtn).includes(val.slice(`chara`.length))).forEach(charaPtn => {
2153
+ setKeyDfVal(charaPtn.slice(`chara`.length));
2154
+ });
2155
+
2156
+ // キー名をキーコードに変換
2157
+ Object.keys(g_keyObj).filter(val => val.startsWith(`keyCtrl`)).forEach(property =>
2158
+ g_keyObj[property].forEach((list, j) => g_keyObj[property][j] = list.map(valN => getKeyCtrlVal(valN))));
2159
+
2043
2160
  // キーパターンのコピー処理
2044
2161
  // ただし、すでに定義済みの場合は定義済みのものを優先する
2045
2162
  Object.keys(g_copyKeyPtn).forEach(keyPtnTo => {
@@ -2068,9 +2185,9 @@ Object.keys(g_copyKeyPtn).forEach(keyPtnTo => {
2068
2185
  copyKeyPtn(`stepRtn`, `${keyPtnFrom}_${stepRtnGr}`, `${keyPtnTo}_${stepRtnGr}`);
2069
2186
  stepRtnGr++;
2070
2187
  }
2188
+ copyKeyPtn(`keyCtrl`);
2071
2189
  copyKeyPtn(`chara`);
2072
2190
  copyKeyPtn(`pos`);
2073
- copyKeyPtn(`keyCtrl`);
2074
2191
  copyKeyPtn(`scrollDir`);
2075
2192
  copyKeyPtn(`assistPos`);
2076
2193
 
@@ -2258,37 +2375,6 @@ const g_dfColorBaseObj = {
2258
2375
  },
2259
2376
  };
2260
2377
 
2261
- /**
2262
- * 特殊文字列の置き換えリスト
2263
- * (置き換え元、置き換え先の組で二次元配列として定義。主にreplaceStr関数で使用)
2264
- */
2265
- const g_escapeStr = {
2266
- escape: [[`&`, `&amp;`], [`<`, `&lt;`], [`>`, `&gt;`], [`"`, `&quot;`]],
2267
- escapeTag: [
2268
- [`*amp*`, `&amp;`], [`*pipe*`, `|`], [`*dollar*`, `$`], [`*rsquo*`, `&rsquo;`],
2269
- [`*quot*`, `&quot;`], [`*comma*`, `&sbquo;`], [`*squo*`, `&#39;`], [`*bkquo*`, `&#96;`],
2270
- [`*lt*`, `&lt;`], [`*gt*`, `&gt;`], [`*lbrace*`, `{`], [`*rbrace*`, `}`],
2271
- ],
2272
- unEscapeTag: [
2273
- [`&amp;`, `&`], [`&rsquo;`, `’`], [`&quot;`, `"`], [`&sbquo;`, `,`],
2274
- [`&lt;`, `<`], [`&gt;`, `>`], [`&#39;`, `'`], [`&#96;`, `\``],
2275
- ],
2276
- escapeCode: [
2277
- [`<script>`, ``], [`</script>`, ``],
2278
- ],
2279
- musicNameSimple: [
2280
- [`<br>`, ` `], [`<nbr>`, ``], [`<dbr>`, ` `],
2281
- ],
2282
- musicNameMultiLine: [
2283
- [`<nbr>`, `<br>`], [`<dbr>`, `<br>`],
2284
- ],
2285
- frzName: [
2286
- [`leftdia`, `frzLdia`], [`rightdia`, `frzRdia`],
2287
- [`left`, `frzLeft`], [`down`, `frzDown`], [`up`, `frzUp`], [`right`, `frzRight`],
2288
- [`space`, `frzSpace`], [`iyo`, `frzIyo`], [`gor`, `frzGor`], [`oni`, `foni`],
2289
- ],
2290
- };
2291
-
2292
2378
  /**
2293
2379
  * 文字列部分一致用リスト
2294
2380
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "31.2.0",
3
+ "version": "31.4.0",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "index.js",
6
6
  "scripts": {