danoniplus 37.6.1 → 37.7.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.
- package/js/danoni_main.js +580 -351
- package/package.json +1 -1
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 : 2024/
|
|
7
|
+
* Revised : 2024/10/06
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 37.
|
|
12
|
-
const g_revisedDate = `2024/
|
|
11
|
+
const g_version = `Ver 37.7.0`;
|
|
12
|
+
const g_revisedDate = `2024/10/06`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -199,34 +199,37 @@ let g_canLoadDifInfoFlg = false;
|
|
|
199
199
|
/**
|
|
200
200
|
* div要素のstyleを取得
|
|
201
201
|
* @param {string} _id
|
|
202
|
+
* @returns {CSSStyleDeclaration}
|
|
202
203
|
*/
|
|
203
204
|
const $id = _id => document.getElementById(_id).style;
|
|
204
205
|
|
|
205
206
|
/**
|
|
206
207
|
* 複数のdiv子要素を親要素へ接続
|
|
207
|
-
* @param {
|
|
208
|
-
* @param {...any} rest
|
|
208
|
+
* @param {Element} _baseObj
|
|
209
|
+
* @param {...any} [rest]
|
|
209
210
|
*/
|
|
210
211
|
const multiAppend = (_baseObj, ...rest) => _baseObj.append(...rest);
|
|
211
212
|
|
|
212
213
|
/**
|
|
213
214
|
* 複数の属性をまとめて設定
|
|
214
|
-
* @param {
|
|
215
|
-
* @param {...any} rest
|
|
215
|
+
* @param {Element} _baseObj
|
|
216
|
+
* @param {...any} [rest]
|
|
216
217
|
*/
|
|
217
218
|
const setAttrs = (_baseObj, { ...rest } = {}) =>
|
|
218
219
|
Object.keys(rest).forEach(property => _baseObj.setAttribute(property, rest[property]));
|
|
219
220
|
|
|
220
221
|
/**
|
|
221
222
|
* 属性値を数値に変換して取得
|
|
222
|
-
* @param {
|
|
223
|
+
* @param {Element} _baseObj
|
|
223
224
|
* @param {string} _attrkey
|
|
225
|
+
* @returns {number}
|
|
224
226
|
*/
|
|
225
227
|
const getNumAttr = (_baseObj, _attrkey) => parseFloat(_baseObj.getAttribute(_attrkey));
|
|
226
228
|
|
|
227
229
|
/**
|
|
228
230
|
* 文字列に埋め込まれた変数を展開
|
|
229
231
|
* @param {string} _str
|
|
232
|
+
* @returns {string} 埋め込み後の変数
|
|
230
233
|
*/
|
|
231
234
|
const convertStrToVal = _str => {
|
|
232
235
|
const strs = _str.split(`}`).join(`{`).split(`{`);
|
|
@@ -241,6 +244,7 @@ const convertStrToVal = _str => {
|
|
|
241
244
|
/**
|
|
242
245
|
* 半角スペース、タブを文字列から除去
|
|
243
246
|
* @param {string} _str
|
|
247
|
+
* @returns {string} 半角スペース、タブ除去後の文字列
|
|
244
248
|
*/
|
|
245
249
|
const trimStr = _str => _str?.split(`\t`).join(``).replace(/^ +| +$/g, ``);
|
|
246
250
|
|
|
@@ -251,19 +255,24 @@ const trimStr = _str => _str?.split(`\t`).join(``).replace(/^ +| +$/g, ``);
|
|
|
251
255
|
/**
|
|
252
256
|
* 変数が存在するかどうかをチェック
|
|
253
257
|
* @param {string} _data
|
|
254
|
-
* @param {...any} strs
|
|
258
|
+
* @param {...any} [strs] 空とundefined以外で除外したい文字列
|
|
259
|
+
* @returns {boolean}
|
|
255
260
|
*/
|
|
256
261
|
const hasVal = (_data, ...strs) => _data !== undefined && _data !== `` && (!strs || strs.every(str => _data !== str));
|
|
257
262
|
|
|
258
263
|
/**
|
|
259
264
|
* 変数が存在するかどうかをチェック(null無しを含む)
|
|
260
265
|
* @param {string} _data
|
|
261
|
-
* @param {...any} strs
|
|
266
|
+
* @param {...any} [strs]
|
|
267
|
+
* @returns {boolean}
|
|
262
268
|
*/
|
|
263
269
|
const hasValN = (_data, ...strs) => hasVal(_data, ...strs) && _data !== null;
|
|
264
270
|
|
|
265
271
|
/**
|
|
266
272
|
* 文字列から他の型へ変換する処理群
|
|
273
|
+
* @param {string} _checkStr
|
|
274
|
+
* @param {string} _default
|
|
275
|
+
* @returns {number|boolean|string}
|
|
267
276
|
*/
|
|
268
277
|
const g_convFunc = {
|
|
269
278
|
float: (_checkStr, _default) => isNaN(parseFloat(_checkStr)) ? _default : parseFloat(_checkStr),
|
|
@@ -288,7 +297,8 @@ const g_convFunc = {
|
|
|
288
297
|
* - 型に合わない場合は _default を返却するが、_default自体の型チェック・変換は行わない
|
|
289
298
|
* @param {string} _checkStr
|
|
290
299
|
* @param {string} _default
|
|
291
|
-
* @param {string} _type
|
|
300
|
+
* @param {string} [_type='string']
|
|
301
|
+
* @returns
|
|
292
302
|
*/
|
|
293
303
|
const setVal = (_checkStr, _default, _type = C_TYP_STRING) =>
|
|
294
304
|
hasValN(_checkStr) ? g_convFunc[_type](_checkStr, _default) : _default;
|
|
@@ -296,34 +306,38 @@ const setVal = (_checkStr, _default, _type = C_TYP_STRING) =>
|
|
|
296
306
|
/**
|
|
297
307
|
* ブール値からON/OFFへ変換
|
|
298
308
|
* @param {boolean} _condition
|
|
309
|
+
* @returns {string}
|
|
299
310
|
*/
|
|
300
311
|
const boolToSwitch = _condition => _condition ? C_FLG_ON : C_FLG_OFF;
|
|
301
312
|
|
|
302
313
|
/**
|
|
303
314
|
* 単位付きの値を返却
|
|
304
315
|
* @param {number} _val
|
|
305
|
-
* @param {string} _unitName
|
|
306
|
-
* @returns
|
|
316
|
+
* @param {string} [_unitName='px']
|
|
317
|
+
* @returns {string}
|
|
307
318
|
*/
|
|
308
319
|
const wUnit = (_val, _unitName = `px`) => `${_val}${_unitName}`;
|
|
309
320
|
|
|
310
321
|
/**
|
|
311
322
|
* ブール値への変換
|
|
312
323
|
* @param {string} _val
|
|
313
|
-
* @param {boolean} _defaultVal
|
|
324
|
+
* @param {boolean} [_defaultVal=false]
|
|
325
|
+
* @returns {boolean}
|
|
314
326
|
*/
|
|
315
327
|
const setBoolVal = (_val, _defaultVal = false) => hasValN(_val) ? g_convFunc.boolean(_val, _defaultVal) : _defaultVal;
|
|
316
328
|
|
|
317
329
|
/**
|
|
318
330
|
* 整数値への変換
|
|
319
331
|
* @param {string} _val
|
|
320
|
-
* @param {number} _defaultVal
|
|
332
|
+
* @param {number} [_defaultVal=0]
|
|
333
|
+
* @returns {number}
|
|
321
334
|
*/
|
|
322
335
|
const setIntVal = (_val, _defaultVal = 0) => hasValN(_val) ? g_convFunc.number(_val, _defaultVal) : _defaultVal;
|
|
323
336
|
|
|
324
337
|
/**
|
|
325
338
|
* 先頭のみ大文字に変換(それ以降はそのまま)
|
|
326
339
|
* @param {string} _str
|
|
340
|
+
* @returns {string}
|
|
327
341
|
*/
|
|
328
342
|
const toCapitalize = _str => {
|
|
329
343
|
if (!_str || typeof _str !== `string`) return _str;
|
|
@@ -333,37 +347,42 @@ const toCapitalize = _str => {
|
|
|
333
347
|
/**
|
|
334
348
|
* 0以上の数字に変換
|
|
335
349
|
* @param {number} _num
|
|
336
|
-
* @param {number} _init 0未満の場合に設定する値
|
|
350
|
+
* @param {number} [_init=0] 0未満の場合に設定する値
|
|
351
|
+
* @returns {number}
|
|
337
352
|
*/
|
|
338
353
|
const roundZero = (_num, _init = 0) => _num < 0 ? _init : _num;
|
|
339
354
|
|
|
340
355
|
/**
|
|
341
356
|
* 配列から_targetに合致する配列位置を返す
|
|
342
357
|
* 存在しない場合は0を返却
|
|
343
|
-
* @param {
|
|
358
|
+
* @param {string[]} _list
|
|
344
359
|
* @param {string} _target
|
|
360
|
+
* @returns {number}
|
|
345
361
|
*/
|
|
346
362
|
const getCurrentNo = (_list, _target) => roundZero(_list.indexOf(_target));
|
|
347
363
|
|
|
348
364
|
/**
|
|
349
365
|
* 配列内に存在するかどうかをチェック
|
|
350
366
|
* @param {string} _val
|
|
351
|
-
* @param {
|
|
352
|
-
* @param {number} _pos
|
|
367
|
+
* @param {string[]} _array
|
|
368
|
+
* @param {number} [_pos=0]
|
|
369
|
+
* @returns {boolean}
|
|
353
370
|
*/
|
|
354
371
|
const hasValInArray = (_val, _array, _pos = 0) =>
|
|
355
372
|
_array.findIndex(data => data[_pos] === _val) !== -1;
|
|
356
373
|
|
|
357
374
|
/**
|
|
358
375
|
* 配列が既定長以上かどうかをチェック
|
|
359
|
-
* @param {
|
|
360
|
-
* @param {number} _length
|
|
376
|
+
* @param {any[]} _data
|
|
377
|
+
* @param {number} [_length=1]
|
|
378
|
+
* @returns {boolean}
|
|
361
379
|
*/
|
|
362
380
|
const hasArrayList = (_data, _length = 1) => _data?.length >= _length;
|
|
363
381
|
|
|
364
382
|
/**
|
|
365
383
|
* 改行コード区切りの配列展開
|
|
366
384
|
* @param {string} _str
|
|
385
|
+
* @returns {string[]}
|
|
367
386
|
*/
|
|
368
387
|
const splitLF = _str => _str?.split(`\r`).join(`\n`).split(`\n`);
|
|
369
388
|
|
|
@@ -371,7 +390,8 @@ const splitLF = _str => _str?.split(`\r`).join(`\n`).split(`\n`);
|
|
|
371
390
|
* 改行コード区切りを本来の区切り文字に変換して配列展開
|
|
372
391
|
* (改行区切りで間が空行だった場合は無効化)
|
|
373
392
|
* @param {string} _str
|
|
374
|
-
* @param {string} _delim
|
|
393
|
+
* @param {string} [_delim='$']
|
|
394
|
+
* @returns {string[]}
|
|
375
395
|
*/
|
|
376
396
|
const splitLF2 = (_str, _delim = `$`) => splitLF(_str)?.filter(val => val !== ``).join(_delim).split(_delim);
|
|
377
397
|
|
|
@@ -379,48 +399,55 @@ const splitLF2 = (_str, _delim = `$`) => splitLF(_str)?.filter(val => val !== ``
|
|
|
379
399
|
* カンマ区切り処理
|
|
380
400
|
* (ただし、カンマ+半角スペースの組の場合は区切り文字と見做さない)
|
|
381
401
|
* @param {string} _str
|
|
402
|
+
* @returns {string[]}
|
|
382
403
|
*/
|
|
383
404
|
const splitComma = _str => _str?.split(`, `).join(`*comma* `).split(`,`);
|
|
384
405
|
|
|
385
406
|
/**
|
|
386
407
|
* 重複を排除した配列の生成
|
|
387
|
-
* @param {
|
|
388
|
-
* @param {...any} _arrays
|
|
408
|
+
* @param {any[]} _array1
|
|
409
|
+
* @param {...any} [_arrays]
|
|
410
|
+
* @returns {any[]}
|
|
389
411
|
*/
|
|
390
412
|
const makeDedupliArray = (_array1, ..._arrays) =>
|
|
391
413
|
Array.from((new Set([..._array1, ..._arrays.flat()])).values()).filter(val => val !== undefined);
|
|
392
414
|
|
|
393
415
|
/**
|
|
394
416
|
* 二次元配列のコピー
|
|
395
|
-
* @param {
|
|
417
|
+
* @param {any[][]} _array2d
|
|
418
|
+
* @returns {any[][]}
|
|
396
419
|
*/
|
|
397
420
|
const copyArray2d = _array2d => structuredClone(_array2d);
|
|
398
421
|
|
|
399
422
|
/**
|
|
400
423
|
* 配列データを合計
|
|
401
|
-
* @param {
|
|
424
|
+
* @param {number[]} _array
|
|
425
|
+
* @returns {number}
|
|
402
426
|
*/
|
|
403
427
|
const sumData = _array => _array.reduce((p, x) => p + x);
|
|
404
428
|
|
|
405
429
|
/**
|
|
406
430
|
* 特定の値で埋めた配列を作成
|
|
407
431
|
* @param {number} _length
|
|
408
|
-
* @param {
|
|
432
|
+
* @param {string|number} [_val=0]
|
|
433
|
+
* @returns {string[]|number[]}
|
|
409
434
|
*/
|
|
410
435
|
const fillArray = (_length, _val = 0) => [...Array(_length)].fill(_val);
|
|
411
436
|
|
|
412
437
|
/**
|
|
413
438
|
* 最小配列長の配列を作成
|
|
414
|
-
* @param {
|
|
439
|
+
* @param {any[]} _array
|
|
415
440
|
* @param {number} _minLength
|
|
416
441
|
* @param {number} _defaultVal
|
|
442
|
+
* @returns {string[]|number[]}
|
|
417
443
|
*/
|
|
418
444
|
const makeBaseArray = (_array = [], _minLength, _defaultVal) => padArray(_array, fillArray(_minLength, _defaultVal));
|
|
419
445
|
|
|
420
446
|
/**
|
|
421
447
|
* ベースとする配列に対して別の配列で上書き
|
|
422
|
-
* @param {
|
|
423
|
-
* @param {
|
|
448
|
+
* @param {string[]|number[]} _array
|
|
449
|
+
* @param {string[]|number[]} _baseArray ベースとする配列
|
|
450
|
+
* @returns {string[]|number[]}
|
|
424
451
|
*/
|
|
425
452
|
const padArray = (_array, _baseArray) => {
|
|
426
453
|
_array?.filter(val => hasVal(val)).forEach((val, j) => _baseArray[j] = val);
|
|
@@ -433,8 +460,9 @@ const padArray = (_array, _baseArray) => {
|
|
|
433
460
|
* ex. 上位3番目 (_num = 3) の場合
|
|
434
461
|
* [1, 3, 2, 4, 6, 4, 5] -> [[4], [6], [3, 5]]
|
|
435
462
|
* [9, 6, 9, 9, 8, 7, 5] -> [[0, 2, 3]]
|
|
436
|
-
* @param {
|
|
437
|
-
* @param {number} _num
|
|
463
|
+
* @param {number[]} _array
|
|
464
|
+
* @param {number} [_num=1]
|
|
465
|
+
* @returns {number[][]}
|
|
438
466
|
*/
|
|
439
467
|
const getMaxValIdxs = (_array, _num = 1) => {
|
|
440
468
|
let baseArray = _array.concat();
|
|
@@ -461,20 +489,29 @@ const getMaxValIdxs = (_array, _num = 1) => {
|
|
|
461
489
|
/**
|
|
462
490
|
* 部分一致検索(リストのいずれかに合致、大小文字問わず)
|
|
463
491
|
* @param {string} _str 検索文字
|
|
464
|
-
* @param {
|
|
465
|
-
* @param {string} object.prefix 前方一致条件 (前方一致時は ^)
|
|
466
|
-
* @param {string} object.suffix 後方一致条件 (後方一致時は $)
|
|
492
|
+
* @param {string[]} _list 検索リスト (英字は小文字にする必要あり)
|
|
493
|
+
* @param {string} [object.prefix=''] 前方一致条件 (前方一致時は ^)
|
|
494
|
+
* @param {string} [object.suffix=''] 後方一致条件 (後方一致時は $)
|
|
495
|
+
* @returns {boolean}
|
|
467
496
|
*/
|
|
468
497
|
const listMatching = (_str, _list, { prefix = ``, suffix = `` } = {}) =>
|
|
469
498
|
_list.findIndex(value => _str.toLowerCase().match(new RegExp(String.raw`${prefix}${value}${suffix}`, 'i'))) !== -1;
|
|
470
499
|
|
|
500
|
+
/**
|
|
501
|
+
* 前方・後方一致検索の組み合わせ(あいまい検索)
|
|
502
|
+
* @param {string} _str 検索文字
|
|
503
|
+
* @param {string[]} _headerList 前方一致させるリスト
|
|
504
|
+
* @param {string[]} _footerList 後方一致させるリスト
|
|
505
|
+
* @returns {boolean}
|
|
506
|
+
*/
|
|
471
507
|
const fuzzyListMatching = (_str, _headerList, _footerList) =>
|
|
472
508
|
listMatching(_str, _headerList, { prefix: `^` }) || listMatching(_str, _footerList, { suffix: `$` });
|
|
473
509
|
|
|
474
510
|
/**
|
|
475
511
|
* 文字列の置換
|
|
476
512
|
* @param {string} _str
|
|
477
|
-
* @param {
|
|
513
|
+
* @param {string[][]} _pairs 置換ペア配列。[[置換前A,置換後A],[置換前B,置換後B]]の形式で指定
|
|
514
|
+
* @returns {string} 置換後文字列
|
|
478
515
|
*/
|
|
479
516
|
const replaceStr = (_str, _pairs) => {
|
|
480
517
|
let tmpStr = _str || ``;
|
|
@@ -485,31 +522,36 @@ const replaceStr = (_str, _pairs) => {
|
|
|
485
522
|
/**
|
|
486
523
|
* 文字列のエスケープ処理
|
|
487
524
|
* @param {string} _str
|
|
488
|
-
* @param {
|
|
525
|
+
* @param {string[][]} [_escapeList=g_escapeStr.escape]
|
|
526
|
+
* @returns {string}
|
|
489
527
|
*/
|
|
490
528
|
const escapeHtml = (_str, _escapeList = g_escapeStr.escape) => escapeHtmlForEnabledTag(replaceStr(_str, _escapeList));
|
|
491
529
|
|
|
492
530
|
/**
|
|
493
531
|
* 文字列のエスケープ処理(htmlタグ許容版)
|
|
494
532
|
* @param {string} _str
|
|
533
|
+
* @returns {string}
|
|
495
534
|
*/
|
|
496
535
|
const escapeHtmlForEnabledTag = _str => replaceStr(_str, g_escapeStr.escapeTag);
|
|
497
536
|
|
|
498
537
|
/**
|
|
499
538
|
* HTML Entityから元の文字に戻す
|
|
500
539
|
* @param {string} _str
|
|
540
|
+
* @returns {string}
|
|
501
541
|
*/
|
|
502
542
|
const unEscapeEmoji = _str => _str?.replace(/&#(.*?);/g, (_, p1) => String.fromCodePoint(`0${p1}`));
|
|
503
543
|
|
|
504
544
|
/**
|
|
505
545
|
* エスケープ文字を元の文字に戻す
|
|
506
546
|
* @param {string} _str
|
|
547
|
+
* @returns {string}
|
|
507
548
|
*/
|
|
508
549
|
const unEscapeHtml = _str => unEscapeEmoji(replaceStr(_str, g_escapeStr.unEscapeTag));
|
|
509
550
|
|
|
510
551
|
/**
|
|
511
552
|
* 配列の中身を全てエスケープ処理
|
|
512
|
-
* @param {
|
|
553
|
+
* @param {string[]} _array
|
|
554
|
+
* @returns {string[]}
|
|
513
555
|
*/
|
|
514
556
|
const escapeHtmlForArray = _array => _array.map(str => escapeHtml(str));
|
|
515
557
|
|
|
@@ -518,6 +560,7 @@ const escapeHtmlForArray = _array => _array.map(str => escapeHtml(str));
|
|
|
518
560
|
* @param {number} _basePos
|
|
519
561
|
* @param {number} _num
|
|
520
562
|
* @param {number} _length
|
|
563
|
+
* @returns {number}
|
|
521
564
|
*/
|
|
522
565
|
const nextPos = (_basePos, _num, _length) => (_basePos + _num + _length) % _length;
|
|
523
566
|
|
|
@@ -527,7 +570,8 @@ const nextPos = (_basePos, _num, _length) => (_basePos + _num + _length) % _leng
|
|
|
527
570
|
|
|
528
571
|
/**
|
|
529
572
|
* 特定キーコードを置換する処理
|
|
530
|
-
* @param {
|
|
573
|
+
* @param {KeyboardEvent} _evt
|
|
574
|
+
* @returns {string}
|
|
531
575
|
*/
|
|
532
576
|
const transCode = _evt => {
|
|
533
577
|
const evtCode = _evt.code;
|
|
@@ -540,20 +584,21 @@ const transCode = _evt => {
|
|
|
540
584
|
/**
|
|
541
585
|
* 特定キーをブロックする処理
|
|
542
586
|
* @param {string} _setCode
|
|
587
|
+
* @returns {boolean}
|
|
543
588
|
*/
|
|
544
589
|
const blockCode = _setCode => !C_BLOCK_KEYS.includes(_setCode);
|
|
545
590
|
|
|
546
|
-
|
|
547
591
|
/*-----------------------------------------------------------*/
|
|
548
592
|
/* ショートカット制御 */
|
|
549
593
|
/*-----------------------------------------------------------*/
|
|
550
594
|
|
|
551
595
|
/**
|
|
552
596
|
* キーを押したときの動作(汎用)
|
|
553
|
-
* @param {
|
|
597
|
+
* @param {KeyboardEvent} _evt
|
|
554
598
|
* @param {string} _displayName
|
|
555
599
|
* @param {function} _func
|
|
556
600
|
* @param {boolean} _dfEvtFlg
|
|
601
|
+
* @returns {boolean}
|
|
557
602
|
*/
|
|
558
603
|
const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
|
|
559
604
|
if (!_dfEvtFlg) {
|
|
@@ -586,7 +631,7 @@ const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
|
|
|
586
631
|
|
|
587
632
|
/**
|
|
588
633
|
* キーを離したときの動作(汎用)
|
|
589
|
-
* @param {
|
|
634
|
+
* @param {KeyboardEvent} _evt
|
|
590
635
|
*/
|
|
591
636
|
const commonKeyUp = _evt => {
|
|
592
637
|
g_inputKeyBuffer[g_kCdNameObj.metaLKey] = false;
|
|
@@ -598,13 +643,13 @@ const commonKeyUp = _evt => {
|
|
|
598
643
|
* ショートカットキー表示
|
|
599
644
|
* @param {object} _obj
|
|
600
645
|
* @param {string} _settingLabel
|
|
601
|
-
* @param {string} object.displayName
|
|
602
|
-
* @param {string} object.dfLabel ショートカットキーの表示名
|
|
603
|
-
* @param {string} object.targetLabel ショートカットキーを押したときのボタン名
|
|
604
|
-
* @param {number} object.x
|
|
605
|
-
* @param {number} object.y
|
|
606
|
-
* @param {number} object.w
|
|
607
|
-
* @param {number} object.siz
|
|
646
|
+
* @param {string} [object.displayName='option']
|
|
647
|
+
* @param {string} [object.dfLabel=''] ショートカットキーの表示名
|
|
648
|
+
* @param {string} [object.targetLabel='lnk${_settingLabel}R'] ショートカットキーを押したときのボタン名
|
|
649
|
+
* @param {number} [object.x=g_scViewObj.x]
|
|
650
|
+
* @param {number} [object.y=g_scViewObj.y]
|
|
651
|
+
* @param {number} [object.w=g_scViewObj.w]
|
|
652
|
+
* @param {number} [object.siz=g_scViewObj.siz]
|
|
608
653
|
*/
|
|
609
654
|
const createScText = (_obj, _settingLabel, { displayName = `option`, dfLabel = ``, targetLabel = `lnk${_settingLabel}R`,
|
|
610
655
|
x = g_scViewObj.x, y = g_scViewObj.y, w = g_scViewObj.w, siz = g_scViewObj.siz } = {}) => {
|
|
@@ -636,8 +681,8 @@ const createScTextCommon = _displayName =>
|
|
|
636
681
|
* ショートカットキー有効化
|
|
637
682
|
* @param {string} _displayName
|
|
638
683
|
* @param {function} _func
|
|
639
|
-
* @param {boolean} object.displayFlg
|
|
640
|
-
* @param {boolean} object.dfEvtFlg
|
|
684
|
+
* @param {boolean} [object.displayFlg=true]
|
|
685
|
+
* @param {boolean} [object.dfEvtFlg=false]
|
|
641
686
|
*/
|
|
642
687
|
const setShortcutEvent = (_displayName, _func = () => true, { displayFlg = true, dfEvtFlg = false } = {}) => {
|
|
643
688
|
if (displayFlg) {
|
|
@@ -676,6 +721,7 @@ const openLink = _url => {
|
|
|
676
721
|
/**
|
|
677
722
|
* URLのフルパスを取得
|
|
678
723
|
* @param {string} _url
|
|
724
|
+
* @returns {string}
|
|
679
725
|
*/
|
|
680
726
|
const getFullPath = _url => {
|
|
681
727
|
const link = document.createElement(`a`);
|
|
@@ -687,8 +733,8 @@ const getFullPath = _url => {
|
|
|
687
733
|
* プリロードするファイルの設定
|
|
688
734
|
* @param {string} _as
|
|
689
735
|
* @param {string} _href
|
|
690
|
-
* @param {string} _type
|
|
691
|
-
* @param {string} _crossOrigin
|
|
736
|
+
* @param {string} [_type='']
|
|
737
|
+
* @param {string} [_crossOrigin='anonymous']
|
|
692
738
|
*/
|
|
693
739
|
const preloadFile = (_as, _href, _type = ``, _crossOrigin = `anonymous`) => {
|
|
694
740
|
|
|
@@ -716,8 +762,9 @@ const preloadFile = (_as, _href, _type = ``, _crossOrigin = `anonymous`) => {
|
|
|
716
762
|
* 外部jsファイルの読込 (Promise)
|
|
717
763
|
* 読込可否を g_loadObj[ファイル名] で管理 (true: 読込成功, false: 読込失敗)
|
|
718
764
|
* @param {string} _url
|
|
719
|
-
* @param {boolean} _requiredFlg
|
|
720
|
-
* @param {string} _charset
|
|
765
|
+
* @param {boolean} [_requiredFlg=true] 読込必須フラグ
|
|
766
|
+
* @param {string} [_charset='UTF-8']
|
|
767
|
+
* @returns {Promise<any>}
|
|
721
768
|
*/
|
|
722
769
|
const loadScript2 = (_url, _requiredFlg = true, _charset = `UTF-8`) => {
|
|
723
770
|
const baseUrl = _url.split(`?`)[0];
|
|
@@ -748,7 +795,8 @@ const loadScript2 = (_url, _requiredFlg = true, _charset = `UTF-8`) => {
|
|
|
748
795
|
* CSSファイルの読み込み (Promise)
|
|
749
796
|
* デフォルトは danoni_skin_default.css を読み込む
|
|
750
797
|
* @param {url} _href
|
|
751
|
-
* @param {string} object.crossOrigin
|
|
798
|
+
* @param {string} [object.crossOrigin='anonymous']
|
|
799
|
+
* @returns {Promise<any>}
|
|
752
800
|
*/
|
|
753
801
|
const importCssFile2 = (_href, { crossOrigin = `anonymous` } = {}) => {
|
|
754
802
|
const baseUrl = _href.split(`?`)[0];
|
|
@@ -775,8 +823,9 @@ const importCssFile2 = (_href, { crossOrigin = `anonymous` } = {}) => {
|
|
|
775
823
|
|
|
776
824
|
/**
|
|
777
825
|
* js, cssファイルの連続読込 (async function)
|
|
778
|
-
* @param {
|
|
826
|
+
* @param {string[]} _fileData
|
|
779
827
|
* @param {string} _loadType
|
|
828
|
+
* @returns {Promise<void>}
|
|
780
829
|
*/
|
|
781
830
|
const loadMultipleFiles2 = async (_fileData, _loadType) => {
|
|
782
831
|
await Promise.all(_fileData.map(async filePart => {
|
|
@@ -797,9 +846,9 @@ const loadMultipleFiles2 = async (_fileData, _loadType) => {
|
|
|
797
846
|
|
|
798
847
|
/**
|
|
799
848
|
* 与えられたパスより、キーワードとディレクトリに分割
|
|
800
|
-
* 返却値:[ファイルキーワード, ルートディレクトリ]
|
|
801
849
|
* @param {string} _fileName
|
|
802
|
-
* @param {string} _directory
|
|
850
|
+
* @param {string} [_directory='']
|
|
851
|
+
* @returns {string[]} [ファイルキーワード, ルートディレクトリ]
|
|
803
852
|
*/
|
|
804
853
|
const getFilePath = (_fileName, _directory = ``) => {
|
|
805
854
|
let fullPath;
|
|
@@ -815,9 +864,9 @@ const getFilePath = (_fileName, _directory = ``) => {
|
|
|
815
864
|
/**
|
|
816
865
|
* 画像ファイルの存在チェック後、プリロードする処理
|
|
817
866
|
* @param {string} _imgPath
|
|
818
|
-
* @param {string} object.directory
|
|
819
|
-
* @param {boolean} object.syncBackPath
|
|
820
|
-
* @returns
|
|
867
|
+
* @param {string} [object.directory='']
|
|
868
|
+
* @param {boolean} [object.syncBackPath=true]
|
|
869
|
+
* @returns {string}
|
|
821
870
|
*/
|
|
822
871
|
const preloadImgFile = (_imgPath, { directory = ``, syncBackPath = true } = {}) => {
|
|
823
872
|
|
|
@@ -835,7 +884,7 @@ const preloadImgFile = (_imgPath, { directory = ``, syncBackPath = true } = {})
|
|
|
835
884
|
/**
|
|
836
885
|
* 画像パス部分の取得
|
|
837
886
|
* @param {string} _str
|
|
838
|
-
* @returns
|
|
887
|
+
* @returns {string}
|
|
839
888
|
*/
|
|
840
889
|
const getImageUrlPath = _str => {
|
|
841
890
|
const matches = _str?.match(/url\("([^"]*)"\)/);
|
|
@@ -844,7 +893,8 @@ const getImageUrlPath = _str => {
|
|
|
844
893
|
|
|
845
894
|
/**
|
|
846
895
|
* カレントディレクトリを含む文字列を置換し、変更後の文字列を作成
|
|
847
|
-
* @param {string} _str
|
|
896
|
+
* @param {string} _str
|
|
897
|
+
* @returns {string}
|
|
848
898
|
*/
|
|
849
899
|
const reviseCssText = _str => {
|
|
850
900
|
if (getImageUrlPath(_str) !== ``) {
|
|
@@ -862,6 +912,7 @@ const reviseCssText = _str => {
|
|
|
862
912
|
/**
|
|
863
913
|
* 対象のカラーコードが明暗どちらかを判定 (true: 明色, false: 暗色)
|
|
864
914
|
* @param {string} _colorStr
|
|
915
|
+
* @returns {boolean}
|
|
865
916
|
*/
|
|
866
917
|
const checkLightOrDark = _colorStr => {
|
|
867
918
|
const r = parseInt(_colorStr.substring(1, 3), 16);
|
|
@@ -873,6 +924,7 @@ const checkLightOrDark = _colorStr => {
|
|
|
873
924
|
/**
|
|
874
925
|
* 色名をカラーコードに変換
|
|
875
926
|
* @param {string} _color
|
|
927
|
+
* @returns {string}
|
|
876
928
|
*/
|
|
877
929
|
const colorNameToCode = _color => {
|
|
878
930
|
const cxt = document.createElement(`canvas`).getContext(`2d`);
|
|
@@ -883,24 +935,28 @@ const colorNameToCode = _color => {
|
|
|
883
935
|
/**
|
|
884
936
|
* 10進 -> 16進数変換 (カラーコード形式になるよう0埋め)
|
|
885
937
|
* @param {number} _num
|
|
938
|
+
* @returns {string}
|
|
886
939
|
*/
|
|
887
940
|
const byteToHex = _num => _num.toString(16).padStart(2, '0');
|
|
888
941
|
|
|
889
942
|
/**
|
|
890
943
|
* カラーコードかどうかを判定 (簡易版)
|
|
891
944
|
* @param {string} _str
|
|
945
|
+
* @returns {boolean}
|
|
892
946
|
*/
|
|
893
947
|
const isColorCd = _str => _str.substring(0, 1) === `#`;
|
|
894
948
|
|
|
895
949
|
/**
|
|
896
950
|
* CSSの位置表記系かどうかをチェック
|
|
897
951
|
* @param {string} _str
|
|
952
|
+
* @returns {boolean}
|
|
898
953
|
*/
|
|
899
954
|
const hasAnglePointInfo = _str => fuzzyListMatching(_str, g_checkStr.cssHeader, g_checkStr.cssFooter);
|
|
900
955
|
|
|
901
956
|
/**
|
|
902
957
|
* 色名をカラーコードへ変換 (元々カラーコードの場合は除外)
|
|
903
958
|
* @param {string} _color 色名
|
|
959
|
+
* @returns {string}
|
|
904
960
|
*/
|
|
905
961
|
const colorToHex = (_color) => {
|
|
906
962
|
|
|
@@ -922,16 +978,18 @@ const colorToHex = (_color) => {
|
|
|
922
978
|
* カラーコードの前パディング (旧Option Editor対応)
|
|
923
979
|
* @param {boolean} _useFlg
|
|
924
980
|
* @param {string} _colorStr
|
|
981
|
+
* @returns {string}
|
|
925
982
|
*/
|
|
926
983
|
const colorCdPadding = (_useFlg, _colorStr) => _useFlg ? `#${_colorStr.slice(1).padStart(6, `0`)}` : _colorStr;
|
|
927
984
|
|
|
928
985
|
/**
|
|
929
986
|
* グラデーション用のカラーフォーマットを作成
|
|
930
987
|
* @param {string} _colorStr
|
|
931
|
-
* @param {
|
|
932
|
-
* @param {boolean} object._colorCdPaddingUse
|
|
933
|
-
* @param {string} object._objType (normal: 汎用, titleMusic: タイトル曲名, titleArrow: タイトル矢印)
|
|
934
|
-
* @param {boolean} object._shadowFlg
|
|
988
|
+
* @param {string[]} [object._defaultColorgrd=g_headerObj.defaultColorgrd]
|
|
989
|
+
* @param {boolean} [object._colorCdPaddingUse=false]
|
|
990
|
+
* @param {string} [object._objType='normal'] (normal: 汎用, titleMusic: タイトル曲名, titleArrow: タイトル矢印)
|
|
991
|
+
* @param {boolean} [object._shadowFlg=false]
|
|
992
|
+
* @returns {string}
|
|
935
993
|
*/
|
|
936
994
|
const makeColorGradation = (_colorStr, { _defaultColorgrd = g_headerObj.defaultColorgrd,
|
|
937
995
|
_colorCdPaddingUse = false, _objType = `normal`, _shadowFlg = false } = {}) => {
|
|
@@ -994,8 +1052,9 @@ const makeColorGradation = (_colorStr, { _defaultColorgrd = g_headerObj.defaultC
|
|
|
994
1052
|
/*-----------------------------------------------------------*/
|
|
995
1053
|
|
|
996
1054
|
/**
|
|
997
|
-
* 画面共通のフォント設定
|
|
998
|
-
* @param {string} _priorityFont
|
|
1055
|
+
* 画面共通のフォント設定 (font-family設定を作成)
|
|
1056
|
+
* @param {string} [_priorityFont=''] 優先させるフォント名
|
|
1057
|
+
* @returns {string}
|
|
999
1058
|
*/
|
|
1000
1059
|
const getBasicFont = (_priorityFont = ``) =>
|
|
1001
1060
|
[_priorityFont, g_headerObj.customFont, C_LBL_BASICFONT].filter(value => value !== ``).join(`,`);
|
|
@@ -1005,6 +1064,7 @@ const getBasicFont = (_priorityFont = ``) =>
|
|
|
1005
1064
|
* @param {string} _str
|
|
1006
1065
|
* @param {number} _fontsize
|
|
1007
1066
|
* @param {string} _font
|
|
1067
|
+
* @returns {number}
|
|
1008
1068
|
*/
|
|
1009
1069
|
const getStrWidth = (_str, _fontsize, _font) => {
|
|
1010
1070
|
const ctx = document.createElement(`canvas`).getContext(`2d`);
|
|
@@ -1019,6 +1079,7 @@ const getStrWidth = (_str, _fontsize, _font) => {
|
|
|
1019
1079
|
* @param {string} _font
|
|
1020
1080
|
* @param {number} _maxFontsize
|
|
1021
1081
|
* @param {number} _minFontsize
|
|
1082
|
+
* @returns {number}
|
|
1022
1083
|
*/
|
|
1023
1084
|
const getFontSize = (_str, _maxWidth, _font = getBasicFont(), _maxFontsize = 64, _minFontsize = 5) => {
|
|
1024
1085
|
for (let siz = _maxFontsize; siz >= _minFontsize; siz--) {
|
|
@@ -1033,8 +1094,9 @@ const getFontSize = (_str, _maxWidth, _font = getBasicFont(), _maxFontsize = 64,
|
|
|
1033
1094
|
* 補足説明部分のラベル作成
|
|
1034
1095
|
* @param {string} _id
|
|
1035
1096
|
* @param {string} _str
|
|
1036
|
-
* @param {string} object.altId
|
|
1037
|
-
* @param {number} object.siz
|
|
1097
|
+
* @param {string} [object.altId=_id]
|
|
1098
|
+
* @param {number} [object.siz=g_limitObj.mainSiz]
|
|
1099
|
+
* @returns {HTMLDivElement}
|
|
1038
1100
|
*/
|
|
1039
1101
|
const createDescDiv = (_id, _str, { altId = _id, siz = g_limitObj.mainSiz } = {}) =>
|
|
1040
1102
|
createDivCss2Label(_id, _str, Object.assign(g_lblPosObj[altId], {
|
|
@@ -1046,15 +1108,15 @@ const createDescDiv = (_id, _str, { altId = _id, siz = g_limitObj.mainSiz } = {}
|
|
|
1046
1108
|
/*-----------------------------------------------------------*/
|
|
1047
1109
|
|
|
1048
1110
|
/**
|
|
1049
|
-
* 図形の描画
|
|
1050
|
-
* - div
|
|
1051
|
-
* - 詳細は @see {@link createButton} も参照のこと。
|
|
1111
|
+
* 図形の描画 (div要素)
|
|
1112
|
+
* - 親divに対してこの関数の返却値に対してappendすることで描画される
|
|
1052
1113
|
* @param {string} _id
|
|
1053
1114
|
* @param {number} _x
|
|
1054
1115
|
* @param {number} _y
|
|
1055
1116
|
* @param {number} _width
|
|
1056
1117
|
* @param {number} _height
|
|
1057
|
-
* @param {
|
|
1118
|
+
* @param {string[]} _classes
|
|
1119
|
+
* @returns {HTMLDivElement}
|
|
1058
1120
|
*/
|
|
1059
1121
|
const createDiv = (_id, _x, _y, _width, _height, _classes = []) => {
|
|
1060
1122
|
const div = document.createElement(`div`);
|
|
@@ -1087,14 +1149,15 @@ const setUserSelect = (_style, _value = C_DIS_NONE) => {
|
|
|
1087
1149
|
* 子div要素のラベル文字作成 (CSS版・拡張属性対応)
|
|
1088
1150
|
* @param {string} _id
|
|
1089
1151
|
* @param {string} _text
|
|
1090
|
-
* @param {number} object.x
|
|
1091
|
-
* @param {number} object.y
|
|
1092
|
-
* @param {number} object.w
|
|
1093
|
-
* @param {number} object.h
|
|
1094
|
-
* @param {number} object.siz
|
|
1095
|
-
* @param {number} object.align
|
|
1096
|
-
* @param {...any} object.rest
|
|
1152
|
+
* @param {number} [object.x=0]
|
|
1153
|
+
* @param {number} [object.y=0]
|
|
1154
|
+
* @param {number} [object.w=g_limitObj.setLblWidth]
|
|
1155
|
+
* @param {number} [object.h=g_limitObj.setLblHeight]
|
|
1156
|
+
* @param {number} [object.siz=g_limitObj.setLblSiz]
|
|
1157
|
+
* @param {number} [object.align='center']
|
|
1158
|
+
* @param {...any} [object.rest]
|
|
1097
1159
|
* @param {...any} _classes
|
|
1160
|
+
* @returns {HTMLDivElement}
|
|
1098
1161
|
*/
|
|
1099
1162
|
const createDivCss2Label = (_id, _text, { x = 0, y = 0, w = g_limitObj.setLblWidth, h = g_limitObj.setLblHeight,
|
|
1100
1163
|
siz = g_limitObj.setLblSiz, align = C_ALIGN_CENTER, ...rest } = {}, ..._classes) => {
|
|
@@ -1118,6 +1181,7 @@ const createDivCss2Label = (_id, _text, { x = 0, y = 0, w = g_limitObj.setLblWid
|
|
|
1118
1181
|
* @param {number} _y
|
|
1119
1182
|
* @param {number} _width
|
|
1120
1183
|
* @param {number} _height
|
|
1184
|
+
* @returns {HTMLDivElement}
|
|
1121
1185
|
*/
|
|
1122
1186
|
const createImg = (_id, _imgPath, _x, _y, _width, _height) => {
|
|
1123
1187
|
const div = createDiv(_id, _x, _y, _width, _height);
|
|
@@ -1131,8 +1195,9 @@ const createImg = (_id, _imgPath, _x, _y, _width, _height) => {
|
|
|
1131
1195
|
* @param {string} _parentObj
|
|
1132
1196
|
* @param {string} _id
|
|
1133
1197
|
* @param {function} _func
|
|
1134
|
-
* @param {number} object.x
|
|
1135
|
-
* @param {number} object.y
|
|
1198
|
+
* @param {number} [object.x=0]
|
|
1199
|
+
* @param {number} [object.y=0]
|
|
1200
|
+
* @returns {HTMLInputElement}
|
|
1136
1201
|
*/
|
|
1137
1202
|
const createColorPicker = (_parentObj, _id, _func, { x = 0, y = 0 } = {}) => {
|
|
1138
1203
|
const picker = document.createElement(`input`);
|
|
@@ -1149,15 +1214,15 @@ const createColorPicker = (_parentObj, _id, _func, { x = 0, y = 0 } = {}) => {
|
|
|
1149
1214
|
/**
|
|
1150
1215
|
* 色付きオブジェクトの作成 (拡張属性対応)
|
|
1151
1216
|
* @param {string} _id
|
|
1152
|
-
* @param {number} object.x
|
|
1153
|
-
* @param {number} object.y
|
|
1154
|
-
* @param {number} object.w
|
|
1155
|
-
* @param {number} object.h
|
|
1156
|
-
* @param {
|
|
1157
|
-
* @param {string} object.
|
|
1158
|
-
* @param {
|
|
1159
|
-
* @param {...any} object.rest
|
|
1217
|
+
* @param {number} [object.x=0]
|
|
1218
|
+
* @param {number} [object.y=0]
|
|
1219
|
+
* @param {number} [object.w=C_ARW_WIDTH]
|
|
1220
|
+
* @param {number} [object.h=C_ARW_WIDTH]
|
|
1221
|
+
* @param {string} [object.rotate='']
|
|
1222
|
+
* @param {string} [object.styleName='']
|
|
1223
|
+
* @param {...any} [object.rest]
|
|
1160
1224
|
* @param {...any} _classes
|
|
1225
|
+
* @returns {HTMLDivElement}
|
|
1161
1226
|
*/
|
|
1162
1227
|
const createColorObject2 = (_id,
|
|
1163
1228
|
{ x = 0, y = 0, w = C_ARW_WIDTH, h = C_ARW_WIDTH, rotate = ``, styleName = ``, ...rest } = {}, ..._classes) => {
|
|
@@ -1189,15 +1254,16 @@ const createColorObject2 = (_id,
|
|
|
1189
1254
|
/**
|
|
1190
1255
|
* 空スプライト(ムービークリップ相当)の作成
|
|
1191
1256
|
* - 作成済みの場合はすでに作成済のスプライトを返却する
|
|
1192
|
-
* @param {
|
|
1257
|
+
* @param {HTMLDivElement} _parentObj 親スプライト
|
|
1193
1258
|
* @param {string} _newObjId 作成する子スプライト名
|
|
1194
|
-
* @param {number} object.x
|
|
1195
|
-
* @param {number} object.y
|
|
1196
|
-
* @param {number} object.w
|
|
1197
|
-
* @param {number} object.h
|
|
1198
|
-
* @param {string} object.title
|
|
1199
|
-
* @param {...any} object.rest
|
|
1259
|
+
* @param {number} [object.x=0]
|
|
1260
|
+
* @param {number} [object.y=0]
|
|
1261
|
+
* @param {number} [object.w=g_sWidth]
|
|
1262
|
+
* @param {number} [object.h=g_sHeight]
|
|
1263
|
+
* @param {string} [object.title]
|
|
1264
|
+
* @param {...any} [object.rest]
|
|
1200
1265
|
* @param {...any} _classes
|
|
1266
|
+
* @returns {HTMLDivElement}
|
|
1201
1267
|
*/
|
|
1202
1268
|
const createEmptySprite = (_parentObj, _newObjId, { x = 0, y = 0, w = g_sWidth, h = g_sHeight, title = ``, ...rest } = {}, ..._classes) => {
|
|
1203
1269
|
if (document.getElementById(_newObjId) !== null) {
|
|
@@ -1217,8 +1283,9 @@ const createEmptySprite = (_parentObj, _newObjId, { x = 0, y = 0, w = g_sWidth,
|
|
|
1217
1283
|
/**
|
|
1218
1284
|
* 階層スプライト(全体)の作成
|
|
1219
1285
|
* @param {string} _baseName
|
|
1220
|
-
* @param {number} _num
|
|
1221
|
-
* @param {number} object.x
|
|
1286
|
+
* @param {number} _num 階層数
|
|
1287
|
+
* @param {number} [object.x=0]
|
|
1288
|
+
* @returns {HTMLDivElement}
|
|
1222
1289
|
*/
|
|
1223
1290
|
const createMultipleSprite = (_baseName, _num, { x = 0 } = {}) => {
|
|
1224
1291
|
const sprite = createEmptySprite(divRoot, _baseName);
|
|
@@ -1240,6 +1307,14 @@ const g_handler = (() => {
|
|
|
1240
1307
|
let key = 0;
|
|
1241
1308
|
|
|
1242
1309
|
return {
|
|
1310
|
+
/**
|
|
1311
|
+
* イベントリスナーへの追加
|
|
1312
|
+
* @param {EventTarget} _target
|
|
1313
|
+
* @param {string} _type
|
|
1314
|
+
* @param {EventListenerOrEventListenerObject} _listener
|
|
1315
|
+
* @param {boolean} [_capture=false]
|
|
1316
|
+
* @returns {number}
|
|
1317
|
+
*/
|
|
1243
1318
|
addListener: (_target, _type, _listener, _capture = false) => {
|
|
1244
1319
|
_target.addEventListener(_type, _listener, _capture);
|
|
1245
1320
|
events[key] = {
|
|
@@ -1250,6 +1325,10 @@ const g_handler = (() => {
|
|
|
1250
1325
|
};
|
|
1251
1326
|
return key++;
|
|
1252
1327
|
},
|
|
1328
|
+
/**
|
|
1329
|
+
* イベントリスナーの削除
|
|
1330
|
+
* @param {number} key
|
|
1331
|
+
*/
|
|
1253
1332
|
removeListener: key => {
|
|
1254
1333
|
if (key in events) {
|
|
1255
1334
|
const e = events[key];
|
|
@@ -1290,18 +1369,18 @@ const deleteDiv = (_parentId, _idName) => {
|
|
|
1290
1369
|
* @param {string} _id
|
|
1291
1370
|
* @param {string} _text
|
|
1292
1371
|
* @param {function} _func
|
|
1293
|
-
* @param {number} object.x
|
|
1294
|
-
* @param {number} object.y
|
|
1295
|
-
* @param {number} object.w
|
|
1296
|
-
* @param {number} object.h
|
|
1297
|
-
* @param {number} object.siz
|
|
1298
|
-
* @param {string} object.align
|
|
1299
|
-
* @param {string} object.title ボタンオンマウス時のコメント
|
|
1300
|
-
* @param {string} object.groupName 画面名 (g_btnWaitFrameで定義しているプロパティ名を指定)
|
|
1301
|
-
* @param {boolean} object.initDisabledFlg ボタン有効化までの時間を設けるかどうか
|
|
1302
|
-
* @param {function} object.resetFunc カスタム処理後に実行する処理
|
|
1303
|
-
* @param {function} object.cxtFunc 右クリック時に実行する処理
|
|
1304
|
-
* @param {...any} object.rest
|
|
1372
|
+
* @param {number} [object.x]
|
|
1373
|
+
* @param {number} [object.y]
|
|
1374
|
+
* @param {number} [object.w=g_btnWidth() / 3]
|
|
1375
|
+
* @param {number} [object.h=g_limitObj.btnHeight]
|
|
1376
|
+
* @param {number} [object.siz=g_limitObj.btnSiz]
|
|
1377
|
+
* @param {string} [object.align='center']
|
|
1378
|
+
* @param {string} [object.title] ボタンオンマウス時のコメント
|
|
1379
|
+
* @param {string} [object.groupName] 画面名 (g_btnWaitFrameで定義しているプロパティ名を指定)
|
|
1380
|
+
* @param {boolean} [object.initDisabledFlg=true] ボタン有効化までの時間を設けるかどうか
|
|
1381
|
+
* @param {function} [object.resetFunc] カスタム処理後に実行する処理
|
|
1382
|
+
* @param {function} [object.cxtFunc] 右クリック時に実行する処理
|
|
1383
|
+
* @param {...any} [object.rest]
|
|
1305
1384
|
* @param {...any} _classes
|
|
1306
1385
|
*/
|
|
1307
1386
|
const createCss2Button = (_id, _text, _func = () => true, {
|
|
@@ -1373,13 +1452,13 @@ const createCss2Button = (_id, _text, _func = () => true, {
|
|
|
1373
1452
|
/**
|
|
1374
1453
|
* オブジェクトのスタイル一括変更
|
|
1375
1454
|
* @param {string} _id
|
|
1376
|
-
* @param {number} object.x
|
|
1377
|
-
* @param {number} object.y
|
|
1378
|
-
* @param {number} object.w
|
|
1379
|
-
* @param {number} object.h
|
|
1380
|
-
* @param {string} object.align
|
|
1381
|
-
* @param {string} object.title
|
|
1382
|
-
* @param {...any} object.rest
|
|
1455
|
+
* @param {number} [object.x]
|
|
1456
|
+
* @param {number} [object.y]
|
|
1457
|
+
* @param {number} [object.w]
|
|
1458
|
+
* @param {number} [object.h]
|
|
1459
|
+
* @param {string} [object.align]
|
|
1460
|
+
* @param {string} [object.title]
|
|
1461
|
+
* @param {...any} [object.rest]
|
|
1383
1462
|
*/
|
|
1384
1463
|
const changeStyle = (_id, { x, y, w, h, siz, align, title, ...rest } = {}) => {
|
|
1385
1464
|
const div = document.getElementById(_id);
|
|
@@ -1410,7 +1489,7 @@ const changeStyle = (_id, { x, y, w, h, siz, align, title, ...rest } = {}) => {
|
|
|
1410
1489
|
* @param {string} _titlename
|
|
1411
1490
|
* @param {number} _x
|
|
1412
1491
|
* @param {number} _y
|
|
1413
|
-
* @param {...any} _classes
|
|
1492
|
+
* @param {...any} [_classes]
|
|
1414
1493
|
*/
|
|
1415
1494
|
const getTitleDivLabel = (_id, _titlename, _x, _y, ..._classes) =>
|
|
1416
1495
|
createDivCss2Label(_id, _titlename, { x: _x, y: _y, w: g_sWidth, h: 50, siz: g_limitObj.btnSiz }, ..._classes);
|
|
@@ -1429,9 +1508,9 @@ const resetKeyControl = () => {
|
|
|
1429
1508
|
|
|
1430
1509
|
/**
|
|
1431
1510
|
* Canvasのベース背景を作成
|
|
1432
|
-
* @param {
|
|
1433
|
-
* @param {number} object.w
|
|
1434
|
-
* @param {number} object.h
|
|
1511
|
+
* @param {CanvasRenderingContext2D} _ctx
|
|
1512
|
+
* @param {number} [object.w=g_sWidth]
|
|
1513
|
+
* @param {number} [object.h=g_sHeight]
|
|
1435
1514
|
*/
|
|
1436
1515
|
const makeBgCanvas = (_ctx, { w = g_sWidth, h = g_sHeight } = {}) => {
|
|
1437
1516
|
const grd = _ctx.createLinearGradient(0, 0, 0, h);
|
|
@@ -1446,8 +1525,8 @@ const makeBgCanvas = (_ctx, { w = g_sWidth, h = g_sHeight } = {}) => {
|
|
|
1446
1525
|
* - divオブジェクト(ボタンなど)はdivRoot配下で管理しているため、子要素のみを全削除している。
|
|
1447
1526
|
* - dicRoot自体を削除しないよう注意すること。
|
|
1448
1527
|
* - 再描画時に共通で表示する箇所はここで指定している。
|
|
1449
|
-
* @param {boolean} _redrawFlg 画面横幅を再定義し、Canvas背景を再描画するかどうか
|
|
1450
|
-
* @param {string} _customDisplayName 画面名(メイン画面: 'Main', それ以外: 空)
|
|
1528
|
+
* @param {boolean} [_redrawFlg=false] 画面横幅を再定義し、Canvas背景を再描画するかどうか
|
|
1529
|
+
* @param {string} [_customDisplayName=''] 画面名(メイン画面: 'Main', それ以外: 空)
|
|
1451
1530
|
*/
|
|
1452
1531
|
const clearWindow = (_redrawFlg = false, _customDisplayName = ``) => {
|
|
1453
1532
|
resetKeyControl();
|
|
@@ -1521,7 +1600,6 @@ const clearWindow = (_redrawFlg = false, _customDisplayName = ``) => {
|
|
|
1521
1600
|
|
|
1522
1601
|
Object.keys(g_headerObj).filter(val => val.startsWith(`--`) && hasVal(g_headerObj[val])).forEach(prop =>
|
|
1523
1602
|
document.documentElement.style.setProperty(prop, getCssCustomProperty(prop, g_headerObj[prop])));
|
|
1524
|
-
|
|
1525
1603
|
}
|
|
1526
1604
|
};
|
|
1527
1605
|
|
|
@@ -1529,6 +1607,7 @@ const clearWindow = (_redrawFlg = false, _customDisplayName = ``) => {
|
|
|
1529
1607
|
* CSSカスタムプロパティの値を作成
|
|
1530
1608
|
* @param {string} _prop
|
|
1531
1609
|
* @param {string} _propData
|
|
1610
|
+
* @returns {string}
|
|
1532
1611
|
*/
|
|
1533
1612
|
const getCssCustomProperty = (_prop, _propData) =>
|
|
1534
1613
|
document.documentElement.style.getPropertyValue(_propData) || (g_cssBkProperties[_propData] ?? (
|
|
@@ -1583,6 +1662,7 @@ const getCssCustomProperties = () => {
|
|
|
1583
1662
|
* @param {string} _obj.animationName アニメーション名
|
|
1584
1663
|
* @param {string} _obj.animationDuration アニメーションを動かす間隔(秒)
|
|
1585
1664
|
* @param {number} _obj.opacity 画像の不透明度
|
|
1665
|
+
* @returns {string}
|
|
1586
1666
|
*/
|
|
1587
1667
|
const makeSpriteImage = _obj => {
|
|
1588
1668
|
let tmpInnerHTML = `<img src=${_obj.path} class="${_obj.class}" style="position:absolute;left:${wUnit(_obj.left)};top:${wUnit(_obj.top)}`;
|
|
@@ -1608,6 +1688,7 @@ const makeSpriteImage = _obj => {
|
|
|
1608
1688
|
* @param {string} _obj.animationName アニメーション名
|
|
1609
1689
|
* @param {string} _obj.animationDuration アニメーションを動かす間隔(秒)
|
|
1610
1690
|
* @param {number} _obj.opacity テキストの不透明度
|
|
1691
|
+
* @returns {string}
|
|
1611
1692
|
*/
|
|
1612
1693
|
const makeSpriteText = _obj => {
|
|
1613
1694
|
let tmpInnerHTML = `<span class="${_obj.class}" style="display:inline-block;position:absolute;left:${wUnit(_obj.left)};top:${wUnit(_obj.top)}`;
|
|
@@ -1628,7 +1709,8 @@ const makeSpriteText = _obj => {
|
|
|
1628
1709
|
/**
|
|
1629
1710
|
* 多重配列の存在をチェックし、
|
|
1630
1711
|
* 存在しない場合は作成、存在する場合は重複を避けて配列を新規作成
|
|
1631
|
-
* @param {
|
|
1712
|
+
* @param {any[][]} _obj
|
|
1713
|
+
* @returns [多重配列(初期化済),配列初期化済数]
|
|
1632
1714
|
*/
|
|
1633
1715
|
const checkDuplicatedObjects = _obj => {
|
|
1634
1716
|
let dataCnts = 0;
|
|
@@ -1651,6 +1733,7 @@ const checkDuplicatedObjects = _obj => {
|
|
|
1651
1733
|
* 多層スプライトデータの作成処理
|
|
1652
1734
|
* @param {string} _data
|
|
1653
1735
|
* @param {function} _calcFrame
|
|
1736
|
+
* @returns [多層スプライトデータ, 最大深度]
|
|
1654
1737
|
*/
|
|
1655
1738
|
const makeSpriteData = (_data, _calcFrame = _frame => _frame) => {
|
|
1656
1739
|
|
|
@@ -1738,7 +1821,7 @@ const makeSpriteData = (_data, _calcFrame = _frame => _frame) => {
|
|
|
1738
1821
|
* スタイル変更データの作成処理
|
|
1739
1822
|
* @param {string} _data
|
|
1740
1823
|
* @param {function} _calcFrame
|
|
1741
|
-
* @returns
|
|
1824
|
+
* @returns [多層スプライトデータ, 1(固定)]
|
|
1742
1825
|
*/
|
|
1743
1826
|
const makeStyleData = (_data, _calcFrame = _frame => _frame) => {
|
|
1744
1827
|
const spriteData = [];
|
|
@@ -1765,12 +1848,14 @@ const makeStyleData = (_data, _calcFrame = _frame => _frame) => {
|
|
|
1765
1848
|
/**
|
|
1766
1849
|
* 画像ファイルかどうかをチェック
|
|
1767
1850
|
* @param {string} _str
|
|
1851
|
+
* @returns {boolean}
|
|
1768
1852
|
*/
|
|
1769
1853
|
const checkImage = _str => listMatching(_str, g_imgExtensions, { prefix: `[.]`, suffix: `$` });
|
|
1770
1854
|
|
|
1771
1855
|
/**
|
|
1772
1856
|
* back/masktitle(result)において、ジャンプ先のフレーム数を取得
|
|
1773
1857
|
* @param {string} _frames ジャンプ先のフレーム数情報。コロン指定でジャンプ先を確率で分岐 (ex. 300:1500:1500)
|
|
1858
|
+
* @returns {number}
|
|
1774
1859
|
*/
|
|
1775
1860
|
const getSpriteJumpFrame = _frames => {
|
|
1776
1861
|
const jumpFrames = _frames.split(`:`);
|
|
@@ -1782,7 +1867,7 @@ const getSpriteJumpFrame = _frames => {
|
|
|
1782
1867
|
* 背景・マスクモーションの表示(共通処理)
|
|
1783
1868
|
* @param {object} _spriteData
|
|
1784
1869
|
* @param {string} _name
|
|
1785
|
-
* @param {boolean} _condition
|
|
1870
|
+
* @param {boolean} [_condition=true]
|
|
1786
1871
|
*/
|
|
1787
1872
|
const drawBaseSpriteData = (_spriteData, _name, _condition = true) => {
|
|
1788
1873
|
const baseSprite = document.getElementById(`${_name}Sprite${_spriteData.depth}`);
|
|
@@ -1815,6 +1900,7 @@ const drawBaseSpriteData = (_spriteData, _name, _condition = true) => {
|
|
|
1815
1900
|
* @param {number} _frame
|
|
1816
1901
|
* @param {string} _displayName title / result
|
|
1817
1902
|
* @param {string} _depthName back / mask
|
|
1903
|
+
* @returns {number}
|
|
1818
1904
|
*/
|
|
1819
1905
|
const drawSpriteData = (_frame, _displayName, _depthName) => {
|
|
1820
1906
|
|
|
@@ -1854,6 +1940,7 @@ const drawMainSpriteData = (_frame, _depthName) =>
|
|
|
1854
1940
|
* スタイル切替
|
|
1855
1941
|
* @param {number} _frame
|
|
1856
1942
|
* @param {string} _displayName
|
|
1943
|
+
* @returns {number}
|
|
1857
1944
|
*/
|
|
1858
1945
|
const drawStyleData = (_frame, _displayName) => {
|
|
1859
1946
|
g_headerObj[`style${toCapitalize(_displayName)}Data`][_frame].forEach(tmpObj =>
|
|
@@ -1992,6 +2079,7 @@ const copyTextToClipboard = async (_textVal, _msg) => {
|
|
|
1992
2079
|
/**
|
|
1993
2080
|
* 現在URLのクエリパラメータから指定した値を取得
|
|
1994
2081
|
* @param {string} _name
|
|
2082
|
+
* @returns {string}
|
|
1995
2083
|
*/
|
|
1996
2084
|
const getQueryParamVal = _name => {
|
|
1997
2085
|
const param = new URL(location.href).searchParams.get(_name);
|
|
@@ -2000,6 +2088,7 @@ const getQueryParamVal = _name => {
|
|
|
2000
2088
|
|
|
2001
2089
|
/**
|
|
2002
2090
|
* ローディング文字用ラベルの作成
|
|
2091
|
+
* @returns {HTMLDivElement}
|
|
2003
2092
|
*/
|
|
2004
2093
|
const getLoadingLabel = () => createDivCss2Label(`lblLoading`, g_lblNameObj.nowLoading, {
|
|
2005
2094
|
x: 0, y: g_sHeight - 40, w: g_sWidth, h: g_limitObj.setLblHeight,
|
|
@@ -2009,6 +2098,7 @@ const getLoadingLabel = () => createDivCss2Label(`lblLoading`, g_lblNameObj.nowL
|
|
|
2009
2098
|
/**
|
|
2010
2099
|
* フレーム数を時間表示へ変換
|
|
2011
2100
|
* @param {number} _frame
|
|
2101
|
+
* @returns {string}
|
|
2012
2102
|
*/
|
|
2013
2103
|
const transFrameToTimer = _frame => {
|
|
2014
2104
|
const minutes = Math.floor(_frame / g_fps / 60);
|
|
@@ -2020,6 +2110,7 @@ const transFrameToTimer = _frame => {
|
|
|
2020
2110
|
* 疑似タイマー表記をフレーム数へ変換
|
|
2021
2111
|
* |endFrame=1:35.20|
|
|
2022
2112
|
* @param {string} _str
|
|
2113
|
+
* @returns {number|string}
|
|
2023
2114
|
*/
|
|
2024
2115
|
const transTimerToFrame = _str => {
|
|
2025
2116
|
if (_str.indexOf(`:`) !== -1) {
|
|
@@ -2277,6 +2368,7 @@ const loadLocalStorage = () => {
|
|
|
2277
2368
|
/**
|
|
2278
2369
|
* 譜面データを分割して値を取得
|
|
2279
2370
|
* @param {string} _dos 譜面データ
|
|
2371
|
+
* @returns
|
|
2280
2372
|
*/
|
|
2281
2373
|
const dosConvert = (_dos = ``) => {
|
|
2282
2374
|
|
|
@@ -2367,6 +2459,7 @@ const resetColorAndGauge = _scoreId => {
|
|
|
2367
2459
|
* 譜面番号固定かつ譜面ファイル分割時に初期色情報を他譜面へコピー
|
|
2368
2460
|
* @param {object} _baseObj
|
|
2369
2461
|
* @param {number} _scoreId
|
|
2462
|
+
* @returns
|
|
2370
2463
|
*/
|
|
2371
2464
|
const copySetColor = (_baseObj, _scoreId) => {
|
|
2372
2465
|
const obj = {};
|
|
@@ -2382,6 +2475,7 @@ const copySetColor = (_baseObj, _scoreId) => {
|
|
|
2382
2475
|
/**
|
|
2383
2476
|
* MusicUrlの基本情報を取得
|
|
2384
2477
|
* @param {number} _scoreId
|
|
2478
|
+
* @returns {string}
|
|
2385
2479
|
*/
|
|
2386
2480
|
const getMusicUrl = _scoreId =>
|
|
2387
2481
|
g_headerObj.musicUrls?.[g_headerObj.musicNos[_scoreId]] ?? g_headerObj.musicUrls?.[0] ?? `nosound.mp3`;
|
|
@@ -2492,8 +2586,8 @@ const storeBaseData = (_scoreId, _scoreObj, _keyCtrlPtn) => {
|
|
|
2492
2586
|
/**
|
|
2493
2587
|
* ツール計算
|
|
2494
2588
|
* @param {object} _scoreObj
|
|
2495
|
-
* @param {
|
|
2496
|
-
* @param {
|
|
2589
|
+
* @param {number[][]} _scoreObj.arrowData
|
|
2590
|
+
* @param {number[][]} _scoreObj.frzData
|
|
2497
2591
|
*/
|
|
2498
2592
|
const calcLevel = _scoreObj => {
|
|
2499
2593
|
//--------------------------------------------------------------
|
|
@@ -2657,7 +2751,7 @@ const calcLevel = _scoreObj => {
|
|
|
2657
2751
|
/**
|
|
2658
2752
|
* ロケールを含んだヘッダーの優先度設定
|
|
2659
2753
|
* @param {object} _obj
|
|
2660
|
-
* @param {...any} _params
|
|
2754
|
+
* @param {...any} [_params]
|
|
2661
2755
|
*/
|
|
2662
2756
|
const getHeader = (_obj, ..._params) => {
|
|
2663
2757
|
let headerLocale, headerDf;
|
|
@@ -2671,12 +2765,14 @@ const getHeader = (_obj, ..._params) => {
|
|
|
2671
2765
|
/**
|
|
2672
2766
|
* ヘッダー名の互換設定
|
|
2673
2767
|
* @param {string} _param
|
|
2768
|
+
* @returns {string[]}
|
|
2674
2769
|
*/
|
|
2675
2770
|
const getHname = _param => [_param, _param.toLowerCase()];
|
|
2676
2771
|
|
|
2677
2772
|
/**
|
|
2678
2773
|
* 譜面ヘッダーの分解(スキン、jsファイルなどの設定)
|
|
2679
2774
|
* @param {object} _dosObj
|
|
2775
|
+
* @returns
|
|
2680
2776
|
*/
|
|
2681
2777
|
const preheaderConvert = _dosObj => {
|
|
2682
2778
|
|
|
@@ -2728,6 +2824,7 @@ const preheaderConvert = _dosObj => {
|
|
|
2728
2824
|
/**
|
|
2729
2825
|
* 譜面ヘッダーの分解(その他の設定)
|
|
2730
2826
|
* @param {object} _dosObj 譜面データオブジェクト
|
|
2827
|
+
* @returns
|
|
2731
2828
|
*/
|
|
2732
2829
|
const headerConvert = _dosObj => {
|
|
2733
2830
|
|
|
@@ -3387,7 +3484,8 @@ const headerConvert = _dosObj => {
|
|
|
3387
3484
|
/**
|
|
3388
3485
|
* 譜面リスト作成有無の状態を取得
|
|
3389
3486
|
* @param {boolean} _headerFlg
|
|
3390
|
-
* @param {
|
|
3487
|
+
* @param {number[]} _viewLists
|
|
3488
|
+
* @returns {boolean}
|
|
3391
3489
|
*/
|
|
3392
3490
|
const getDifSelectorUse = (_headerFlg, _viewLists = g_headerObj.viewLists) => setBoolVal(_headerFlg, _viewLists.length > 5);
|
|
3393
3491
|
|
|
@@ -3407,8 +3505,9 @@ const resetColorType = ({ _from = ``, _to = ``, _fromObj = g_headerObj, _toObj =
|
|
|
3407
3505
|
|
|
3408
3506
|
/**
|
|
3409
3507
|
* 配列にデータを先頭に追加
|
|
3410
|
-
* @param {
|
|
3508
|
+
* @param {string[]|number[]} _arr
|
|
3411
3509
|
* @param {string} _target
|
|
3510
|
+
* @returns {string[]|number[]}
|
|
3412
3511
|
*/
|
|
3413
3512
|
const addValtoArray = (_arr, _target) => {
|
|
3414
3513
|
if (!_arr.includes(_target)) {
|
|
@@ -3420,12 +3519,14 @@ const addValtoArray = (_arr, _target) => {
|
|
|
3420
3519
|
/**
|
|
3421
3520
|
* 曲名(1行)の取得
|
|
3422
3521
|
* @param {string} _musicName
|
|
3522
|
+
* @returns {string}
|
|
3423
3523
|
*/
|
|
3424
3524
|
const getMusicNameSimple = _musicName => replaceStr(_musicName, g_escapeStr.musicNameSimple);
|
|
3425
3525
|
|
|
3426
3526
|
/**
|
|
3427
3527
|
* 曲名(複数行)の取得
|
|
3428
3528
|
* @param {string} _musicName
|
|
3529
|
+
* @returns {string[]}
|
|
3429
3530
|
*/
|
|
3430
3531
|
const getMusicNameMultiLine = _musicName => {
|
|
3431
3532
|
const tmpName = replaceStr(_musicName, g_escapeStr.musicNameMultiLine).split(`<br>`);
|
|
@@ -3447,7 +3548,7 @@ const updateImgType = (_imgType, _initFlg = false) => {
|
|
|
3447
3548
|
resetImgs(_imgType.name, _imgType.extension);
|
|
3448
3549
|
reloadImgObj();
|
|
3449
3550
|
Object.keys(g_imgObj).forEach(key => g_imgObj[key] = `${g_rootPath}${g_imgObj[key]}`);
|
|
3450
|
-
if (_imgType
|
|
3551
|
+
if (_imgType.extension === undefined && g_presetObj.overrideExtension !== undefined) {
|
|
3451
3552
|
Object.keys(g_imgObj).forEach(key => g_imgObj[key] = `${g_imgObj[key].slice(0, -3)}${g_presetObj.overrideExtension}`);
|
|
3452
3553
|
}
|
|
3453
3554
|
if (!g_isFile) {
|
|
@@ -3465,7 +3566,7 @@ const addGaugeFulls = _obj => _obj.map(key => g_gaugeOptionObj.customFulls[key]
|
|
|
3465
3566
|
* 矢印・フリーズアロー色のデータ変換
|
|
3466
3567
|
* @param {object} _baseObj
|
|
3467
3568
|
* @param {object} _dosObj
|
|
3468
|
-
* @param {string} object.scoreId
|
|
3569
|
+
* @param {string} [object.scoreId='']
|
|
3469
3570
|
* @returns オブジェクト ※Object.assign(obj, resetBaseColorList(...))の形で呼び出しが必要
|
|
3470
3571
|
*/
|
|
3471
3572
|
const resetBaseColorList = (_baseObj, _dosObj, { scoreId = `` } = {}) => {
|
|
@@ -3539,13 +3640,14 @@ const resetBaseColorList = (_baseObj, _dosObj, { scoreId = `` } = {}) => {
|
|
|
3539
3640
|
/**
|
|
3540
3641
|
* 矢印・フリーズアロー色のデータ展開
|
|
3541
3642
|
* @param {string} _data
|
|
3542
|
-
* @param {
|
|
3643
|
+
* @param {string[]} _colorInit
|
|
3543
3644
|
* @param {number} _colorInitLength
|
|
3544
|
-
* @param {
|
|
3545
|
-
* @param {boolean} object._colorCdPaddingUse
|
|
3546
|
-
* @param {boolean} object._defaultFrzColorUse
|
|
3547
|
-
* @param {string} object._objType
|
|
3548
|
-
* @param {boolean} object._shadowFlg
|
|
3645
|
+
* @param {string[]} [object._defaultColorgrd=g_headerObj.defaultColorgrd]
|
|
3646
|
+
* @param {boolean} [object._colorCdPaddingUse=false]
|
|
3647
|
+
* @param {boolean} [object._defaultFrzColorUse=true]
|
|
3648
|
+
* @param {string} [object._objType='normal']
|
|
3649
|
+
* @param {boolean} [object._shadowFlg=false]
|
|
3650
|
+
* @returns {string[][]}
|
|
3549
3651
|
*/
|
|
3550
3652
|
const setColorList = (_data, _colorInit, _colorInitLength,
|
|
3551
3653
|
{ _defaultColorgrd = g_headerObj.defaultColorgrd, _colorCdPaddingUse = false,
|
|
@@ -3615,7 +3717,7 @@ const setColorList = (_data, _colorInit, _colorInitLength,
|
|
|
3615
3717
|
* 複合カスタムゲージの定義設定
|
|
3616
3718
|
* |customGauge=Original::F,Normal::V,Escape::V|
|
|
3617
3719
|
* @param {object} _dosObj
|
|
3618
|
-
* @param {string} object.scoreId
|
|
3720
|
+
* @param {string} [object.scoreId=0]
|
|
3619
3721
|
* @returns オブジェクト ※Object.assign(obj, resetCustomGauge(...))の形で呼び出しが必要
|
|
3620
3722
|
*/
|
|
3621
3723
|
const resetCustomGauge = (_dosObj, { scoreId = 0 } = {}) => {
|
|
@@ -3657,7 +3759,7 @@ const resetCustomGauge = (_dosObj, { scoreId = 0 } = {}) => {
|
|
|
3657
3759
|
* @param {object} _dosObj
|
|
3658
3760
|
* @param {string} _name
|
|
3659
3761
|
* @param {number} _difLength
|
|
3660
|
-
* @param {string} object.scoreId
|
|
3762
|
+
* @param {string} [object.scoreId=0]
|
|
3661
3763
|
*/
|
|
3662
3764
|
const getGaugeSetting = (_dosObj, _name, _difLength, { scoreId = 0 } = {}) => {
|
|
3663
3765
|
|
|
@@ -3676,8 +3778,8 @@ const getGaugeSetting = (_dosObj, _name, _difLength, { scoreId = 0 } = {}) => {
|
|
|
3676
3778
|
/**
|
|
3677
3779
|
* ゲージ別個別配列への値格納
|
|
3678
3780
|
* @param {number} _scoreId
|
|
3679
|
-
* @param {
|
|
3680
|
-
* @
|
|
3781
|
+
* @param {string[]} _gaugeDetails
|
|
3782
|
+
* @returns {boolean}
|
|
3681
3783
|
*/
|
|
3682
3784
|
const setGaugeDetails = (_scoreId, _gaugeDetails) => {
|
|
3683
3785
|
if (_gaugeDetails[0] === `x`) {
|
|
@@ -3699,7 +3801,8 @@ const getGaugeSetting = (_dosObj, _name, _difLength, { scoreId = 0 } = {}) => {
|
|
|
3699
3801
|
/**
|
|
3700
3802
|
* gaugeNormal2, gaugeEasy2などの個別設定があった場合にその値から配列を作成
|
|
3701
3803
|
* @param {number} _scoreId
|
|
3702
|
-
* @param {
|
|
3804
|
+
* @param {number[]} _defaultGaugeList
|
|
3805
|
+
* @returns {number[]}
|
|
3703
3806
|
*/
|
|
3704
3807
|
const getGaugeDetailList = (_scoreId, _defaultGaugeList) => {
|
|
3705
3808
|
if (_scoreId > 0) {
|
|
@@ -3760,6 +3863,7 @@ const getKeyUnitName = _key => unEscapeHtml(escapeHtml(g_keyObj[`keyName${_key}`
|
|
|
3760
3863
|
* 簡略指定ができるように、以下の記述を許容
|
|
3761
3864
|
* 例) KeyD -> D, ArrowDown -> Down, AltLeft -> Alt
|
|
3762
3865
|
* @param {string} _kCdN
|
|
3866
|
+
* @returns {number}
|
|
3763
3867
|
*/
|
|
3764
3868
|
const getKeyCtrlVal = _kCdN => {
|
|
3765
3869
|
const convVal = Object.keys(g_kCdN).findIndex(val =>
|
|
@@ -3770,7 +3874,8 @@ const getKeyCtrlVal = _kCdN => {
|
|
|
3770
3874
|
/**
|
|
3771
3875
|
* 一時的な追加キーの設定
|
|
3772
3876
|
* @param {object} _dosObj
|
|
3773
|
-
* @param {
|
|
3877
|
+
* @param {string[]} object.keyExtraList
|
|
3878
|
+
* @returns {string[]}
|
|
3774
3879
|
*/
|
|
3775
3880
|
const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`) } = {}) => {
|
|
3776
3881
|
|
|
@@ -3797,6 +3902,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3797
3902
|
/**
|
|
3798
3903
|
* 略記記法を元の文字列に変換 (1...5 -> 1,2,3,4,5 / 3...+4 -> 3,4,5,6,7)
|
|
3799
3904
|
* @param {string} _str
|
|
3905
|
+
* @returns {string}
|
|
3800
3906
|
*/
|
|
3801
3907
|
const toFloatStr = _str => {
|
|
3802
3908
|
const nums = _str?.split(`...`);
|
|
@@ -3818,6 +3924,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3818
3924
|
/**
|
|
3819
3925
|
* 略記記法を元の文字列に変換 (1@:5 -> 1,1,1,1,1 / onigiri!giko!c@:2 -> onigiri,giko,c,onigiri,giko,c)
|
|
3820
3926
|
* @param {string} _str
|
|
3927
|
+
* @returns {string}
|
|
3821
3928
|
*/
|
|
3822
3929
|
const toSameValStr = _str => {
|
|
3823
3930
|
const nums = _str?.split(`@:`);
|
|
@@ -3831,6 +3938,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3831
3938
|
* 例) 12_(0) -> 12_4
|
|
3832
3939
|
* それ以外の文字列が来た場合は、そのままの値を戻す
|
|
3833
3940
|
* @param {string} _str
|
|
3941
|
+
* @returns {string}
|
|
3834
3942
|
*/
|
|
3835
3943
|
const getKeyPtnName = _str => {
|
|
3836
3944
|
const regex = /\((\d+)\)/;
|
|
@@ -3848,7 +3956,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3848
3956
|
* -> |div11x=7,13|pos11x=0,1,2,3,4,5,6,7,8,12,13|
|
|
3849
3957
|
* @param {number} _num
|
|
3850
3958
|
* @param {number} _divNum
|
|
3851
|
-
* @returns
|
|
3959
|
+
* @returns {number}
|
|
3852
3960
|
*/
|
|
3853
3961
|
const getKeyPosNum = (_num, _divNum = 0) => {
|
|
3854
3962
|
if (!hasVal(_num) || (!_num.startsWith(`b`) && isNaN(parseFloat(_num)))) {
|
|
@@ -3862,6 +3970,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3862
3970
|
* @param {string} _str
|
|
3863
3971
|
* @param {string} _name
|
|
3864
3972
|
* @param {function} _convFunc
|
|
3973
|
+
* @returns {string[]|number[]}
|
|
3865
3974
|
*/
|
|
3866
3975
|
const expandKeyPtn = (_str, _name, _convFunc) => {
|
|
3867
3976
|
const pos = _str.indexOf(`>`);
|
|
@@ -3883,7 +3992,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3883
3992
|
* @param {string} object.errCd エラーコード
|
|
3884
3993
|
* @param {boolean} object.baseCopyFlg コピー配列の準備可否
|
|
3885
3994
|
* @param {function} object.loopFunc パターン別に処理する個別関数
|
|
3886
|
-
* @returns 最小パターン数
|
|
3995
|
+
* @returns {number} 最小パターン数
|
|
3887
3996
|
*/
|
|
3888
3997
|
const newKeyMultiParam = (_key, _name, _convFunc, { errCd = ``, baseCopyFlg = false, loopFunc = () => true } = {}) => {
|
|
3889
3998
|
let tmpMinPatterns = 1;
|
|
@@ -4320,6 +4429,7 @@ const titleInit = () => {
|
|
|
4320
4429
|
* @param {string} _id
|
|
4321
4430
|
* @param {string} _text
|
|
4322
4431
|
* @param {string} _url
|
|
4432
|
+
* @returns {HTMLDivElement}
|
|
4323
4433
|
*/
|
|
4324
4434
|
const createCreditBtn = (_id, _text, _url) =>
|
|
4325
4435
|
createCss2Button(_id, _text, () => true,
|
|
@@ -4450,8 +4560,8 @@ const titleInit = () => {
|
|
|
4450
4560
|
/**
|
|
4451
4561
|
* 警告用ウィンドウ(汎用)を表示
|
|
4452
4562
|
* @param {string} _text
|
|
4453
|
-
* @param {boolean} object.resetFlg 警告リストをクリアして再作成
|
|
4454
|
-
* @param {boolean} object.backBtnUse Backボタンを付与
|
|
4563
|
+
* @param {boolean} [object.resetFlg=false] 警告リストをクリアして再作成
|
|
4564
|
+
* @param {boolean} [object.backBtnUse=false] Backボタンを付与
|
|
4455
4565
|
*/
|
|
4456
4566
|
const makeWarningWindow = (_text = ``, { resetFlg = false, backBtnUse = false } = {}) => {
|
|
4457
4567
|
const displayName = (g_currentPage === `initial` ? `title` : g_currentPage);
|
|
@@ -4478,7 +4588,7 @@ const makeWarningWindow = (_text = ``, { resetFlg = false, backBtnUse = false }
|
|
|
4478
4588
|
* お知らせウィンドウ(汎用)を表示
|
|
4479
4589
|
* @param {string} _text
|
|
4480
4590
|
* @param {string} _animationName
|
|
4481
|
-
* @param {string} object._backColor
|
|
4591
|
+
* @param {string} [object._backColor='#ccccff']
|
|
4482
4592
|
*/
|
|
4483
4593
|
const makeInfoWindow = (_text, _animationName = ``, { _backColor = `#ccccff` } = {}) => {
|
|
4484
4594
|
const lblWarning = setWindowStyle(`<p>${_text}</p>`, _backColor, `#000066`, C_ALIGN_CENTER);
|
|
@@ -4499,9 +4609,10 @@ const makeInfoWindow = (_text, _animationName = ``, { _backColor = `#ccccff` } =
|
|
|
4499
4609
|
* @param {string} _bkColor
|
|
4500
4610
|
* @param {string} _textColor
|
|
4501
4611
|
* @param {string} _align
|
|
4502
|
-
* @param {number} object._x
|
|
4503
|
-
* @param {number} object._y
|
|
4504
|
-
* @param {number} object._w
|
|
4612
|
+
* @param {number} [object._x=g_btnX()]
|
|
4613
|
+
* @param {number} [object._y=0]
|
|
4614
|
+
* @param {number} [object._w=g_btnWidth()]
|
|
4615
|
+
* @returns {HTMLDivElement}
|
|
4505
4616
|
*/
|
|
4506
4617
|
const setWindowStyle = (_text, _bkColor, _textColor, _align = C_ALIGN_LEFT, { _x = g_btnX(), _y = 0, _w = g_btnWidth() } = {}) => {
|
|
4507
4618
|
|
|
@@ -4583,6 +4694,7 @@ const commonSettingBtn = _labelName => {
|
|
|
4583
4694
|
/**
|
|
4584
4695
|
* PLAYボタンの作成
|
|
4585
4696
|
* @param {function} _func
|
|
4697
|
+
* @returns {HTMLDivElement}
|
|
4586
4698
|
*/
|
|
4587
4699
|
const makePlayButton = _func => createCss2Button(`btnPlay`, g_lblNameObj.b_play, () => true,
|
|
4588
4700
|
Object.assign(g_lblPosObj.btnPlay, {
|
|
@@ -4622,7 +4734,8 @@ const optionInit = () => {
|
|
|
4622
4734
|
|
|
4623
4735
|
/**
|
|
4624
4736
|
* 設定画面用スプライトリストの作成
|
|
4625
|
-
* @param {
|
|
4737
|
+
* @param {object} _settingList (設定名、縦位置、縦位置差分、幅差分、高さ差分)を設定別にリスト化
|
|
4738
|
+
* @returns
|
|
4626
4739
|
*/
|
|
4627
4740
|
const setSpriteList = _settingList => {
|
|
4628
4741
|
const optionWidth = (g_sWidth - 450) / 2;
|
|
@@ -4636,9 +4749,10 @@ const setSpriteList = _settingList => {
|
|
|
4636
4749
|
};
|
|
4637
4750
|
|
|
4638
4751
|
/**
|
|
4639
|
-
* スライダー共通処理
|
|
4640
|
-
* @param {
|
|
4641
|
-
* @param {
|
|
4752
|
+
* スライダー共通処理 (Fadein)
|
|
4753
|
+
* @param {HTMLInputElement} _slider
|
|
4754
|
+
* @param {HTMLDivElement} _link
|
|
4755
|
+
* @returns {string}
|
|
4642
4756
|
*/
|
|
4643
4757
|
const inputSlider = (_slider, _link) => {
|
|
4644
4758
|
const value = parseInt(_slider.value);
|
|
@@ -4647,9 +4761,10 @@ const inputSlider = (_slider, _link) => {
|
|
|
4647
4761
|
};
|
|
4648
4762
|
|
|
4649
4763
|
/**
|
|
4650
|
-
* スライダー共通処理
|
|
4651
|
-
* @param {
|
|
4652
|
-
* @param {
|
|
4764
|
+
* スライダー共通処理 (Appearance)
|
|
4765
|
+
* @param {HTMLInputElement} _slider
|
|
4766
|
+
* @param {HTMLDivElement} _link
|
|
4767
|
+
* @returns {string}
|
|
4653
4768
|
*/
|
|
4654
4769
|
const inputSliderAppearance = (_slider, _link) => {
|
|
4655
4770
|
const value = parseInt(_slider.value);
|
|
@@ -4673,6 +4788,7 @@ const resetDifWindow = () => {
|
|
|
4673
4788
|
* 次の譜面番号を取得
|
|
4674
4789
|
* @param {number} _scoreId
|
|
4675
4790
|
* @param {number} _scrollNum
|
|
4791
|
+
* @returns {number}
|
|
4676
4792
|
*/
|
|
4677
4793
|
const getNextDifficulty = (_scoreId, _scrollNum) => {
|
|
4678
4794
|
const currentPosIdx = g_headerObj.viewLists.findIndex(val => val === _scoreId);
|
|
@@ -4693,7 +4809,7 @@ const nextDifficulty = (_scrollNum = 1) => {
|
|
|
4693
4809
|
|
|
4694
4810
|
/**
|
|
4695
4811
|
* 譜面リストの作成
|
|
4696
|
-
* @param {
|
|
4812
|
+
* @param {HTMLDivElement} _difList
|
|
4697
4813
|
* @param {string} _targetKey
|
|
4698
4814
|
*/
|
|
4699
4815
|
const makeDifList = (_difList, _targetKey = ``) => {
|
|
@@ -4747,7 +4863,7 @@ const makeDifBtn = (_scrollNum = 1) => {
|
|
|
4747
4863
|
|
|
4748
4864
|
/**
|
|
4749
4865
|
* 譜面変更セレクターの作成・再作成
|
|
4750
|
-
* @param {string} _key
|
|
4866
|
+
* @param {string} [_key=''] 絞り込みするキー名(無指定で絞り込みしない)
|
|
4751
4867
|
*/
|
|
4752
4868
|
const createDifWindow = (_key = ``) => {
|
|
4753
4869
|
g_currentPage = `difSelector`;
|
|
@@ -4796,7 +4912,7 @@ const createDifWindow = (_key = ``) => {
|
|
|
4796
4912
|
|
|
4797
4913
|
/**
|
|
4798
4914
|
* 譜面変更ボタンを押したときの処理
|
|
4799
|
-
* @param {number} _num
|
|
4915
|
+
* @param {number} [_num=1]
|
|
4800
4916
|
*/
|
|
4801
4917
|
const changeDifficulty = (_num = 1) => {
|
|
4802
4918
|
if (g_headerObj.difSelectorUse) {
|
|
@@ -4815,6 +4931,7 @@ const changeDifficulty = (_num = 1) => {
|
|
|
4815
4931
|
/**
|
|
4816
4932
|
* 譜面基礎データの取得
|
|
4817
4933
|
* @param {number} _scoreId
|
|
4934
|
+
* @returns {{ arrowCnts: number, frzCnts: number, apm: number, playingTime: string }}
|
|
4818
4935
|
*/
|
|
4819
4936
|
const getScoreBaseData = _scoreId => {
|
|
4820
4937
|
const arrowCnts = sumData(g_detailObj.arrowCnt[_scoreId]);
|
|
@@ -4958,8 +5075,8 @@ const drawDensityGraph = _scoreId => {
|
|
|
4958
5075
|
* @param {string} _name 表示する譜面明細のラベル
|
|
4959
5076
|
* @param {string} _label
|
|
4960
5077
|
* @param {string} _value
|
|
4961
|
-
* @param {number} _pos 表示位置
|
|
4962
|
-
* @param {string} _labelname
|
|
5078
|
+
* @param {number} [_pos=0] 表示位置
|
|
5079
|
+
* @param {string} [_labelname=_label]
|
|
4963
5080
|
*/
|
|
4964
5081
|
const updateScoreDetailLabel = (_name, _label, _value, _pos = 0, _labelname = _label) => {
|
|
4965
5082
|
const baseLabel = (_bLabel, _bLabelname, _bAlign) =>
|
|
@@ -4978,14 +5095,14 @@ const updateScoreDetailLabel = (_name, _label, _value, _pos = 0, _labelname = _l
|
|
|
4978
5095
|
|
|
4979
5096
|
/**
|
|
4980
5097
|
* グラフの縦軸を描画
|
|
4981
|
-
* @param {
|
|
4982
|
-
* @param {number} object._fixed y座標)目盛表記する小数桁数
|
|
4983
|
-
* @param {string} object._mark y座標)目盛の単位
|
|
4984
|
-
* @param {number} object._resolution y座標)明細分割数
|
|
4985
|
-
* @param {number} object._a
|
|
4986
|
-
* @param {number} object._b
|
|
4987
|
-
* @param {number} object._min y座標)目盛の下限値
|
|
4988
|
-
* @param {number} object._max y座標)目盛の上限値
|
|
5098
|
+
* @param {CanvasRenderingContext2D} _context
|
|
5099
|
+
* @param {number} [object._fixed=2] y座標)目盛表記する小数桁数
|
|
5100
|
+
* @param {string} [object._mark=''] y座標)目盛の単位
|
|
5101
|
+
* @param {number} [object._resolution=10] y座標)明細分割数
|
|
5102
|
+
* @param {number} [object._a=-90]
|
|
5103
|
+
* @param {number} [object._b=105]
|
|
5104
|
+
* @param {number} [object._min=0] y座標)目盛の下限値
|
|
5105
|
+
* @param {number} [object._max=2] y座標)目盛の上限値
|
|
4989
5106
|
*/
|
|
4990
5107
|
const drawBaseLine = (_context, { _fixed = 2, _mark = ``, _resolution = 10, _a = -90, _b = 105, _min = 0, _max = 2 } = {}) => {
|
|
4991
5108
|
_context.clearRect(0, 0, g_limitObj.graphWidth, g_limitObj.graphHeight);
|
|
@@ -5003,13 +5120,13 @@ const drawBaseLine = (_context, { _fixed = 2, _mark = ``, _resolution = 10, _a =
|
|
|
5003
5120
|
|
|
5004
5121
|
/**
|
|
5005
5122
|
* グラフ上に目盛を表示
|
|
5006
|
-
* @param {
|
|
5123
|
+
* @param {CanvasRenderingContext2D} _context
|
|
5007
5124
|
* @param {number} _y
|
|
5008
5125
|
* @param {string} _lineType
|
|
5009
|
-
* @param {number} object._fixed y座標)目盛表記する小数桁数
|
|
5010
|
-
* @param {string} object._mark y座標)目盛の単位
|
|
5011
|
-
* @param {number} object._a
|
|
5012
|
-
* @param {number} object._b
|
|
5126
|
+
* @param {number} [object._fixed] y座標)目盛表記する小数桁数
|
|
5127
|
+
* @param {string} [object._mark] y座標)目盛の単位
|
|
5128
|
+
* @param {number} [object._a]
|
|
5129
|
+
* @param {number} [object._b]
|
|
5013
5130
|
*/
|
|
5014
5131
|
const drawLine = (_context, _y, _lineType, { _fixed, _mark, _a, _b } = {}) => {
|
|
5015
5132
|
const lineY = (_y - 1) * _a + _b;
|
|
@@ -5044,6 +5161,7 @@ const makeDifInfoLabels = _scoreId => {
|
|
|
5044
5161
|
* @param {string} _lbl
|
|
5045
5162
|
* @param {string} _data
|
|
5046
5163
|
* @param {object} _obj
|
|
5164
|
+
* @returns {HTMLDivElement}
|
|
5047
5165
|
*/
|
|
5048
5166
|
const makeDifInfoLabel = (_lbl, _data, { x = 130, y = 25, w = 125, h = 35, siz = g_limitObj.difSelectorSiz, ...rest } = {}) =>
|
|
5049
5167
|
createDivCss2Label(_lbl, _data, { x, y, w, h, siz, align: C_ALIGN_LEFT, ...rest });
|
|
@@ -5521,6 +5639,7 @@ const createOptionWindow = _sprite => {
|
|
|
5521
5639
|
* 譜面明細子画面・グラフの作成
|
|
5522
5640
|
* @param {string} _name
|
|
5523
5641
|
* @param {boolean} _graphUseFlg
|
|
5642
|
+
* @returns {HTMLDivElement}
|
|
5524
5643
|
*/
|
|
5525
5644
|
const createScoreDetail = (_name, _graphUseFlg = true) => {
|
|
5526
5645
|
const detailObj = createEmptySprite(scoreDetail, `detail${_name}`, g_windowObj.detailObj);
|
|
@@ -5775,18 +5894,18 @@ const createOptionWindow = _sprite => {
|
|
|
5775
5894
|
|
|
5776
5895
|
/**
|
|
5777
5896
|
* 汎用設定
|
|
5778
|
-
* @param {
|
|
5897
|
+
* @param {HTMLDivElement} _obj
|
|
5779
5898
|
* @param {string} _settingName
|
|
5780
|
-
* @param {string} object.unitName 設定名の単位
|
|
5781
|
-
* @param {
|
|
5782
|
-
* @param {boolean} object.hiddenBtn 隠しボタン(ショートカットキーのみ)の利用有無
|
|
5783
|
-
* @param {function} object.addRFunc 右側のボタンを押したときの追加処理
|
|
5784
|
-
* @param {function} object.addLFunc 左側のボタンを押したときの追加処理
|
|
5785
|
-
* @param {string} object.settingLabel 設定名
|
|
5786
|
-
* @param {string} object.displayName 画面名
|
|
5787
|
-
* @param {string} object.scLabel ショートカットキーの表示名
|
|
5788
|
-
* @param {number} object.roundNum 設定スキップ間隔の丸め基準数
|
|
5789
|
-
* @param {number} object.adjY 設定ボタンのY座標位置
|
|
5899
|
+
* @param {string} [object.unitName=''] 設定名の単位
|
|
5900
|
+
* @param {number[]} [object.skipTerms] ボタンの設定スキップ間隔(デフォルト:[1(外側), 1(内側), 1(最内側)])
|
|
5901
|
+
* @param {boolean} [object.hiddenBtn=false] 隠しボタン(ショートカットキーのみ)の利用有無
|
|
5902
|
+
* @param {function} [object.addRFunc] 右側のボタンを押したときの追加処理
|
|
5903
|
+
* @param {function} [object.addLFunc] 左側のボタンを押したときの追加処理
|
|
5904
|
+
* @param {string} [object.settingLabel=_settingName] 設定名
|
|
5905
|
+
* @param {string} [object.displayName] 画面名
|
|
5906
|
+
* @param {string} [object.scLabel=''] ショートカットキーの表示名
|
|
5907
|
+
* @param {number} [object.roundNum=0] 設定スキップ間隔の丸め基準数
|
|
5908
|
+
* @param {number} [object.adjY=0] 設定ボタンのY座標位置
|
|
5790
5909
|
*/
|
|
5791
5910
|
const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
5792
5911
|
skipTerms = fillArray(3, 1), hiddenBtn = false, addRFunc = () => { }, addLFunc = addRFunc,
|
|
@@ -5860,6 +5979,7 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
|
5860
5979
|
* @param {string} _settingName
|
|
5861
5980
|
* @param {number} _adjY
|
|
5862
5981
|
* @param {string} _settingLabel
|
|
5982
|
+
* @returns {HTMLDivElement}
|
|
5863
5983
|
*/
|
|
5864
5984
|
const createLblSetting = (_settingName, _adjY = 0, _settingLabel = _settingName) => {
|
|
5865
5985
|
const lbl = createDivCss2Label(`lbl${_settingName}`, g_lblNameObj[_settingLabel], {
|
|
@@ -5872,6 +5992,7 @@ const createLblSetting = (_settingName, _adjY = 0, _settingLabel = _settingName)
|
|
|
5872
5992
|
/**
|
|
5873
5993
|
* 設定名の置き換え処理
|
|
5874
5994
|
* @param {string} _name
|
|
5995
|
+
* @returns {string}
|
|
5875
5996
|
*/
|
|
5876
5997
|
const getStgDetailName = _name => {
|
|
5877
5998
|
return g_lblNameObj[`u_${_name}`] !== undefined &&
|
|
@@ -5882,9 +6003,9 @@ const getStgDetailName = _name => {
|
|
|
5882
6003
|
* 設定メイン・汎用
|
|
5883
6004
|
* @param {number} _scrollNum
|
|
5884
6005
|
* @param {string} _settingName
|
|
5885
|
-
* @param {string} _unitName 設定の単位名
|
|
5886
|
-
* @param {number} _roundNum 設定スキップ間隔の丸め基準数
|
|
5887
|
-
* @param {function} object.func 設定ボタンを押した後の追加処理
|
|
6006
|
+
* @param {string} [_unitName] 設定の単位名
|
|
6007
|
+
* @param {number} [_roundNum] 設定スキップ間隔の丸め基準数
|
|
6008
|
+
* @param {function} [object.func] 設定ボタンを押した後の追加処理
|
|
5888
6009
|
*/
|
|
5889
6010
|
const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0, { func = () => true } = {}) => {
|
|
5890
6011
|
let settingNum = g_settings[`${_settingName}Num`];
|
|
@@ -5915,6 +6036,7 @@ const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0, { f
|
|
|
5915
6036
|
* @param {string} _id
|
|
5916
6037
|
* @param {number} _heightPos
|
|
5917
6038
|
* @param {string} _defaultStr
|
|
6039
|
+
* @returns {HTMLDivElement}
|
|
5918
6040
|
*/
|
|
5919
6041
|
const makeDisabledLabel = (_id, _heightPos, _defaultStr) =>
|
|
5920
6042
|
createDivCss2Label(_id, _defaultStr, {
|
|
@@ -6066,6 +6188,7 @@ const setGauge = (_scrollNum, _gaugeInitFlg = false) => {
|
|
|
6066
6188
|
* @param {number} _dmg
|
|
6067
6189
|
* @param {number} _init
|
|
6068
6190
|
* @param {string} _lifeValFlg
|
|
6191
|
+
* @returns {string}
|
|
6069
6192
|
*/
|
|
6070
6193
|
const gaugeFormat = (_mode, _border, _rcv, _dmg, _init, _lifeValFlg) => {
|
|
6071
6194
|
const initVal = g_headerObj.maxLifeVal * _init / 100;
|
|
@@ -6143,6 +6266,7 @@ const gaugeFormat = (_mode, _border, _rcv, _dmg, _init, _lifeValFlg) => {
|
|
|
6143
6266
|
* @param {number} _dmg
|
|
6144
6267
|
* @param {number} _init
|
|
6145
6268
|
* @param {number} _allCnt
|
|
6269
|
+
* @returns {string[]}
|
|
6146
6270
|
*/
|
|
6147
6271
|
const getAccuracy = (_border, _rcv, _dmg, _init, _allCnt) => {
|
|
6148
6272
|
const justPoint = _rcv + _dmg > 0 ? Math.max(_border - _init + _dmg * _allCnt, 0) / (_rcv + _dmg) : 0;
|
|
@@ -6163,7 +6287,7 @@ const getAccuracy = (_border, _rcv, _dmg, _init, _allCnt) => {
|
|
|
6163
6287
|
|
|
6164
6288
|
/**
|
|
6165
6289
|
* 空押し判定の設定
|
|
6166
|
-
* @param {
|
|
6290
|
+
* @param {HTMLDivElement} _btn
|
|
6167
6291
|
*/
|
|
6168
6292
|
const setExcessive = _btn => {
|
|
6169
6293
|
g_settings.excessiveNum = (g_settings.excessiveNum + 1) % 2;
|
|
@@ -6219,26 +6343,21 @@ const getKeyCtrl = (_localStorage, _extraKeyName = ``) => {
|
|
|
6219
6343
|
* @param {string} _name 初期設定文字
|
|
6220
6344
|
* @param {number} _heightPos 上からの配置順
|
|
6221
6345
|
* @param {function} _func 通常ボタン処理
|
|
6222
|
-
* @param {number} object.x
|
|
6223
|
-
* @param {number} object.y
|
|
6224
|
-
* @param {number} object.w
|
|
6225
|
-
* @param {number} object.h
|
|
6226
|
-
* @param {number} object.siz
|
|
6227
|
-
* @param {function} object.cxtFunc 右クリック時の処理
|
|
6228
|
-
* @param {...any} object.rest
|
|
6346
|
+
* @param {number} [object.x]
|
|
6347
|
+
* @param {number} [object.y]
|
|
6348
|
+
* @param {number} [object.w]
|
|
6349
|
+
* @param {number} [object.h]
|
|
6350
|
+
* @param {number} [object.siz]
|
|
6351
|
+
* @param {function} [object.cxtFunc] 右クリック時の処理
|
|
6352
|
+
* @param {...any} [object.rest]
|
|
6229
6353
|
* @param {...any} _classes 追加するクラス
|
|
6354
|
+
* @returns {HTMLDivElement}
|
|
6230
6355
|
*/
|
|
6231
|
-
const makeSettingLblCssButton = (_id, _name, _heightPos, _func, {
|
|
6232
|
-
|
|
6233
|
-
|
|
6234
|
-
|
|
6235
|
-
|
|
6236
|
-
h: h ?? g_limitObj.setLblHeight,
|
|
6237
|
-
siz: siz ?? g_limitObj.setLblSiz,
|
|
6238
|
-
cxtFunc: cxtFunc ?? (() => true),
|
|
6239
|
-
};
|
|
6240
|
-
return createCss2Button(_id, _name, _func, { ...tmpObj, ...rest }, g_cssObj.button_Default, ..._classes);
|
|
6241
|
-
};
|
|
6356
|
+
const makeSettingLblCssButton = (_id, _name, _heightPos, _func, {
|
|
6357
|
+
x = g_limitObj.setLblLeft, y = g_limitObj.setLblHeight * _heightPos,
|
|
6358
|
+
w = g_limitObj.setLblWidth, h = g_limitObj.setLblHeight, siz = g_limitObj.setLblSiz,
|
|
6359
|
+
cxtFunc = () => true, ...rest } = {}, ..._classes) =>
|
|
6360
|
+
createCss2Button(_id, _name, _func, { x, y, w, h, siz, cxtFunc, ...rest }, g_cssObj.button_Default, ..._classes);
|
|
6242
6361
|
|
|
6243
6362
|
/**
|
|
6244
6363
|
* 譜面変更セレクター用ボタン
|
|
@@ -6246,15 +6365,19 @@ const makeSettingLblCssButton = (_id, _name, _heightPos, _func, { x, y, w, h, si
|
|
|
6246
6365
|
* @param {string} _name 初期設定文字
|
|
6247
6366
|
* @param {number} _heightPos 上からの配置順
|
|
6248
6367
|
* @param {function} _func
|
|
6249
|
-
* @param {number} object.x
|
|
6250
|
-
* @param {number} object.
|
|
6251
|
-
* @param {number} object.h
|
|
6252
|
-
* @param {
|
|
6253
|
-
|
|
6254
|
-
|
|
6255
|
-
|
|
6368
|
+
* @param {number} [object.x]
|
|
6369
|
+
* @param {number} [object.h]
|
|
6370
|
+
* @param {number} [object.y=h*_heightPos]
|
|
6371
|
+
* @param {number} [object.w]
|
|
6372
|
+
* @param {number} [object.siz]
|
|
6373
|
+
* @param {string} [object.btnStyle='Default']
|
|
6374
|
+
* @returns {HTMLDivElement}
|
|
6375
|
+
*/
|
|
6376
|
+
const makeDifLblCssButton = (_id, _name, _heightPos, _func, {
|
|
6377
|
+
x = 0, h = g_limitObj.setLblHeight, y = h * _heightPos,
|
|
6378
|
+
w = g_limitObj.difSelectorWidth, siz = g_limitObj.difSelectorSiz, btnStyle = `Default` } = {}) =>
|
|
6256
6379
|
createCss2Button(_id, _name, _func, {
|
|
6257
|
-
x, y
|
|
6380
|
+
x, y, w, h, siz, borderStyle: `solid`, title: g_msgObj[_id] ?? ``,
|
|
6258
6381
|
}, g_cssObj[`button_${btnStyle}`], g_cssObj.button_ON);
|
|
6259
6382
|
|
|
6260
6383
|
/**
|
|
@@ -6263,12 +6386,13 @@ const makeDifLblCssButton = (_id, _name, _heightPos, _func,
|
|
|
6263
6386
|
* @param {string} _directionFlg 表示用ボタンのどちら側に置くかを設定。(R, RR:右、L, LL:左)
|
|
6264
6387
|
* @param {number} _heightPos 上からの配置順
|
|
6265
6388
|
* @param {function} _func
|
|
6266
|
-
* @param {number} object.dx
|
|
6267
|
-
* @param {number} object.dy
|
|
6268
|
-
* @param {number} object.dw
|
|
6269
|
-
* @param {number} object.dh
|
|
6270
|
-
* @param {number} object.dsiz
|
|
6271
|
-
* @param {string} object.visibility
|
|
6389
|
+
* @param {number} [object.dx=0]
|
|
6390
|
+
* @param {number} [object.dy=0]
|
|
6391
|
+
* @param {number} [object.dw=0]
|
|
6392
|
+
* @param {number} [object.dh=0]
|
|
6393
|
+
* @param {number} [object.dsiz=0]
|
|
6394
|
+
* @param {string} [object.visibility='visible']
|
|
6395
|
+
* @returns {HTMLDivElement}
|
|
6272
6396
|
*/
|
|
6273
6397
|
const makeMiniCssButton = (_id, _directionFlg, _heightPos, _func, { dx = 0, dy = 0, dw = 0, dh = 0, dsiz = 0, visibility = `visible` } = {}) =>
|
|
6274
6398
|
createCss2Button(`${_id}${_directionFlg}`, g_settingBtnObj.chara[_directionFlg], _func, {
|
|
@@ -6584,7 +6708,8 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6584
6708
|
/**
|
|
6585
6709
|
* キーコンフィグ用の矢印色を取得
|
|
6586
6710
|
* @param {number} _j
|
|
6587
|
-
* @param {number} _colorPos
|
|
6711
|
+
* @param {number} _colorPos
|
|
6712
|
+
* @returns {string}
|
|
6588
6713
|
*/
|
|
6589
6714
|
const getKeyConfigColor = (_j, _colorPos) => {
|
|
6590
6715
|
let arrowColor = g_headerObj.setColor[_colorPos];
|
|
@@ -6612,6 +6737,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6612
6737
|
* @param {number} _len
|
|
6613
6738
|
* @param {number} _j
|
|
6614
6739
|
* @param {number} _scrollNum
|
|
6740
|
+
* @returns {number}
|
|
6615
6741
|
*/
|
|
6616
6742
|
const changeTmpData = (_type, _len, _j, _scrollNum) => {
|
|
6617
6743
|
const tmpNo = nextPos(g_keyObj[`${_type}${keyCtrlPtn}_${g_keycons[`${_type}GroupNum`]}`][_j], _scrollNum, _len);
|
|
@@ -6761,6 +6887,11 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6761
6887
|
}
|
|
6762
6888
|
}
|
|
6763
6889
|
};
|
|
6890
|
+
/**
|
|
6891
|
+
* カラー・シャッフルグループ設定
|
|
6892
|
+
* @param {string} _type
|
|
6893
|
+
* @param {number} [_scrollNum=1]
|
|
6894
|
+
*/
|
|
6764
6895
|
const setGroup = (_type, _scrollNum = 1) => {
|
|
6765
6896
|
g_keycons[`${_type}GroupNum`] = g_keycons[`${_type}Groups`][getNextNum(_scrollNum, `${_type}Groups`, g_keycons[`${_type}GroupNum`])];
|
|
6766
6897
|
g_keyObj[`${_type}${keyCtrlPtn}`] = structuredClone(g_keyObj[`${_type}${keyCtrlPtn}_${g_keycons[`${_type}GroupNum`]}`]);
|
|
@@ -6774,15 +6905,15 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6774
6905
|
* キーコンフィグ用設定ラベル
|
|
6775
6906
|
* @param {string} _id
|
|
6776
6907
|
* @param {string} _name
|
|
6777
|
-
* @param {number} object.x
|
|
6778
|
-
* @param {number} object.y
|
|
6779
|
-
* @param {number} object.w
|
|
6780
|
-
* @param {number} object.h
|
|
6781
|
-
* @param {number} object.siz
|
|
6782
|
-
* @param {string} object.align
|
|
6783
|
-
* @param {...any} object.rest
|
|
6784
|
-
* @param
|
|
6785
|
-
* @returns
|
|
6908
|
+
* @param {number} [object.x=g_btnX(5 / 6)]
|
|
6909
|
+
* @param {number} [object.y=0]
|
|
6910
|
+
* @param {number} [object.w=g_btnWidth(1 / 6)]
|
|
6911
|
+
* @param {number} [object.h=20]
|
|
6912
|
+
* @param {number} [object.siz=12]
|
|
6913
|
+
* @param {string} [object.align='left']
|
|
6914
|
+
* @param {...any} [object.rest]
|
|
6915
|
+
* @param {...any} _classes
|
|
6916
|
+
* @returns {HTMLDivElement}
|
|
6786
6917
|
*/
|
|
6787
6918
|
const makeKCButtonHeader = (_id, _name, {
|
|
6788
6919
|
x = g_btnX(5 / 6) - 30, y = 0, w = g_btnWidth(1 / 6), h = 20, siz = 12, align = C_ALIGN_LEFT, ...rest
|
|
@@ -6793,17 +6924,17 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6793
6924
|
* @param {string} _id
|
|
6794
6925
|
* @param {string} _text
|
|
6795
6926
|
* @param {function} _func
|
|
6796
|
-
* @param {number} object.x
|
|
6797
|
-
* @param {number} object.y
|
|
6798
|
-
* @param {number} object.w
|
|
6799
|
-
* @param {number} object.h
|
|
6800
|
-
* @param {number} object.siz
|
|
6801
|
-
* @param {string} object.borderStyle
|
|
6802
|
-
* @param {function} object.cxtFunc
|
|
6803
|
-
* @param {...any} object.rest
|
|
6804
|
-
* @param {string} _mainClass
|
|
6927
|
+
* @param {number} [object.x=g_btnX(5 / 6) - 20]
|
|
6928
|
+
* @param {number} [object.y=15]
|
|
6929
|
+
* @param {number} [object.w=g_btnWidth(1 / 6)]
|
|
6930
|
+
* @param {number} [object.h=18]
|
|
6931
|
+
* @param {number} [object.siz=g_limitObj.jdgCntsSiz]
|
|
6932
|
+
* @param {string} [object.borderStyle='solid']
|
|
6933
|
+
* @param {function} [object.cxtFunc]
|
|
6934
|
+
* @param {...any} [object.rest]
|
|
6935
|
+
* @param {string} [_mainClass=g_cssObj.button_RevOFF]
|
|
6805
6936
|
* @param {...any} _classes
|
|
6806
|
-
* @returns
|
|
6937
|
+
* @returns {HTMLDivElement}
|
|
6807
6938
|
*/
|
|
6808
6939
|
const makeKCButton = (_id, _text, _func, { x = g_btnX(5 / 6) - 20, y = 15, w = g_btnWidth(1 / 6), h = 18,
|
|
6809
6940
|
siz = g_limitObj.jdgCntsSiz, borderStyle = `solid`, cxtFunc, ...rest } = {}, _mainClass = g_cssObj.button_RevOFF, ..._classes) =>
|
|
@@ -6814,11 +6945,11 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6814
6945
|
* @param {string} _id
|
|
6815
6946
|
* @param {string} _directionFlg
|
|
6816
6947
|
* @param {function} _func
|
|
6817
|
-
* @param {number} object.x
|
|
6818
|
-
* @param {number} object.y
|
|
6819
|
-
* @param {number} object.w
|
|
6820
|
-
* @param {number} object.h
|
|
6821
|
-
* @param {number} object.siz
|
|
6948
|
+
* @param {number} [object.x=g_btnX(5 / 6) - 30]
|
|
6949
|
+
* @param {number} [object.y=15]
|
|
6950
|
+
* @param {number} [object.w=15]
|
|
6951
|
+
* @param {number} [object.h=20]
|
|
6952
|
+
* @param {number} [object.siz=g_limitObj.mainSiz]
|
|
6822
6953
|
*/
|
|
6823
6954
|
const makeMiniKCButton = (_id, _directionFlg, _func, { x = g_btnX(5 / 6) - 30, y = 15, w = 15, h = 20, siz = g_limitObj.mainSiz } = {}) =>
|
|
6824
6955
|
createCss2Button(`${_id}${_directionFlg}`, g_settingBtnObj.chara[_directionFlg], _func, { x, y, w, h, siz }, g_cssObj.button_Mini);
|
|
@@ -6826,9 +6957,9 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6826
6957
|
/**
|
|
6827
6958
|
* キーコンフィグ用グループ設定ラベル・ボタンの作成
|
|
6828
6959
|
* @param {string} _type
|
|
6829
|
-
* @param {number} object.baseX
|
|
6830
|
-
* @param {number} object.baseY
|
|
6831
|
-
* @param {string} object.cssName
|
|
6960
|
+
* @param {number} [object.baseX=g_btnX(5 / 6) - 20]
|
|
6961
|
+
* @param {number} [object.baseY=0]
|
|
6962
|
+
* @param {string} [object.cssName]
|
|
6832
6963
|
*/
|
|
6833
6964
|
const makeGroupButton = (_type, { baseX = g_btnX(5 / 6) - 20, baseY = 0, cssName } = {}) => {
|
|
6834
6965
|
if (g_headerObj[`${_type}Use`] && g_keycons[`${_type}Groups`].length > 1) {
|
|
@@ -6906,7 +7037,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6906
7037
|
|
|
6907
7038
|
/**
|
|
6908
7039
|
* カーソル位置の変更
|
|
6909
|
-
* @param {number} _nextj
|
|
7040
|
+
* @param {number} [_nextj] 次のカーソル位置
|
|
6910
7041
|
*/
|
|
6911
7042
|
const changeConfigCursor = (_nextj = ++g_keycons.cursorNum % g_keycons.cursorNumList.length) => {
|
|
6912
7043
|
g_keycons.cursorNum = _nextj;
|
|
@@ -6929,10 +7060,16 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6929
7060
|
}
|
|
6930
7061
|
}
|
|
6931
7062
|
}
|
|
6932
|
-
|
|
6933
7063
|
setKeyConfigCursor();
|
|
6934
7064
|
};
|
|
6935
7065
|
|
|
7066
|
+
/**
|
|
7067
|
+
* 次のカーソル位置の取得
|
|
7068
|
+
* @param {number} _scrollNum
|
|
7069
|
+
* @param {string} _groupName
|
|
7070
|
+
* @param {string} _target
|
|
7071
|
+
* @returns {number}
|
|
7072
|
+
*/
|
|
6936
7073
|
const getNextNum = (_scrollNum, _groupName, _target) =>
|
|
6937
7074
|
nextPos(g_keycons[_groupName].findIndex(value => value === _target), _scrollNum, g_keycons[_groupName].length);
|
|
6938
7075
|
|
|
@@ -7027,8 +7164,8 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
7027
7164
|
|
|
7028
7165
|
/**
|
|
7029
7166
|
* ColorTypeの制御
|
|
7030
|
-
* @param {number} _scrollNum
|
|
7031
|
-
* @param {boolean} _reloadFlg
|
|
7167
|
+
* @param {number} [_scrollNum=1]
|
|
7168
|
+
* @param {boolean} [_reloadFlg=true]
|
|
7032
7169
|
*/
|
|
7033
7170
|
const setColorType = (_scrollNum = 1, _reloadFlg = true) => {
|
|
7034
7171
|
const nextNum = getNextNum(_scrollNum, `colorTypes`, g_colorType);
|
|
@@ -7048,7 +7185,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
7048
7185
|
|
|
7049
7186
|
/**
|
|
7050
7187
|
* ImgTypeの制御
|
|
7051
|
-
* @param {number} _scrollNum
|
|
7188
|
+
* @param {number} [_scrollNum=1]
|
|
7052
7189
|
*/
|
|
7053
7190
|
const setImgType = (_scrollNum = 1) => {
|
|
7054
7191
|
const nextNum = getNextNum(_scrollNum, `imgTypes`, g_imgType);
|
|
@@ -7115,8 +7252,8 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
7115
7252
|
* @param {number} _j
|
|
7116
7253
|
* @param {string} _type
|
|
7117
7254
|
* @param {function} _func
|
|
7118
|
-
* @param {number} object.x
|
|
7119
|
-
* @param {number} object.y
|
|
7255
|
+
* @param {number} [object.x=0]
|
|
7256
|
+
* @param {number} [object.y=15]
|
|
7120
7257
|
*/
|
|
7121
7258
|
const createColorPickWindow = (_j, _type, _func, { x = 0, y = 15 } = {}) =>
|
|
7122
7259
|
createColorPicker(colorPickSprite, `pick${_type}${_j}`, _func, { x, y: y + 25 * _j });
|
|
@@ -7150,8 +7287,8 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
7150
7287
|
* キーパターン検索
|
|
7151
7288
|
* @param {number} _tempPtn
|
|
7152
7289
|
* @param {number} _sign
|
|
7153
|
-
* @param {boolean} _transKeyUse
|
|
7154
|
-
* @param {boolean} _skipFlg
|
|
7290
|
+
* @param {boolean} [_transKeyUse=false]
|
|
7291
|
+
* @param {boolean} [_skipFlg=false]
|
|
7155
7292
|
*/
|
|
7156
7293
|
const searchPattern = (_tempPtn, _sign, _transKeyUse = false, _skipFlg = false) => {
|
|
7157
7294
|
let nextPtn = _tempPtn + _sign;
|
|
@@ -7191,8 +7328,8 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
7191
7328
|
|
|
7192
7329
|
/**
|
|
7193
7330
|
* キーパターン変更時処理
|
|
7194
|
-
* @param {number} _sign
|
|
7195
|
-
* @param {boolean} _skipFlg
|
|
7331
|
+
* @param {number} [_sign=1]
|
|
7332
|
+
* @param {boolean} [_skipFlg=false]
|
|
7196
7333
|
*/
|
|
7197
7334
|
const changePattern = (_sign = 1, _skipFlg = false) => {
|
|
7198
7335
|
|
|
@@ -7341,12 +7478,17 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
7341
7478
|
* 影矢印色の取得
|
|
7342
7479
|
* @param {number} _colorPos
|
|
7343
7480
|
* @param {string} _arrowColor
|
|
7481
|
+
* @returns {string}
|
|
7344
7482
|
*/
|
|
7345
7483
|
const getShadowColor = (_colorPos, _arrowColor) => g_headerObj.setShadowColor[_colorPos] === `Default` ?
|
|
7346
7484
|
_arrowColor : g_headerObj.setShadowColor[_colorPos];
|
|
7347
7485
|
|
|
7348
7486
|
/**
|
|
7349
7487
|
* キー数基礎情報の取得
|
|
7488
|
+
* @returns {{
|
|
7489
|
+
* keyCtrlPtn: string, keyNum: number, posMax: number,
|
|
7490
|
+
* divideCnt: number, keyGroupMaps: string[], keyGroupList: string[]
|
|
7491
|
+
* }}
|
|
7350
7492
|
*/
|
|
7351
7493
|
const getKeyInfo = () => {
|
|
7352
7494
|
const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
|
|
@@ -7403,7 +7545,7 @@ const changeSetColor = () => {
|
|
|
7403
7545
|
|
|
7404
7546
|
/**
|
|
7405
7547
|
* コンフィグの色変更
|
|
7406
|
-
* @param {
|
|
7548
|
+
* @param {HTMLDivElement} _obj
|
|
7407
7549
|
* @param {string} _cssName
|
|
7408
7550
|
*/
|
|
7409
7551
|
const changeConfigColor = (_obj, _cssName) => {
|
|
@@ -7415,7 +7557,7 @@ const changeConfigColor = (_obj, _cssName) => {
|
|
|
7415
7557
|
* シャッフルグループの色変更
|
|
7416
7558
|
* - デフォルト値と違う番号になった場合、色付けする
|
|
7417
7559
|
* @param {string} _keyCtrlPtn キーコンフィグパターン
|
|
7418
|
-
* @param {
|
|
7560
|
+
* @param {number[]} _vals シャッフルグループ番号(群)
|
|
7419
7561
|
* @param {number} _j (-1: 全体に対して色付け, それ以外: 指定箇所のみ色付け)
|
|
7420
7562
|
*/
|
|
7421
7563
|
const changeShuffleConfigColor = (_keyCtrlPtn, _vals, _j = -1) => {
|
|
@@ -7728,7 +7870,7 @@ const loadingScoreInit = async () => {
|
|
|
7728
7870
|
* 譜面番号の取得
|
|
7729
7871
|
* @param {number} _scoreId
|
|
7730
7872
|
* @param {boolean} _scoreLockFlg
|
|
7731
|
-
* @returns
|
|
7873
|
+
* @returns {number|string}
|
|
7732
7874
|
*/
|
|
7733
7875
|
const setScoreIdHeader = (_scoreId = 0, _scoreLockFlg = false) => {
|
|
7734
7876
|
if (!_scoreLockFlg && _scoreId > 0) {
|
|
@@ -7741,9 +7883,9 @@ const setScoreIdHeader = (_scoreId = 0, _scoreLockFlg = false) => {
|
|
|
7741
7883
|
|
|
7742
7884
|
/**
|
|
7743
7885
|
* 譜面ファイル番号の取得
|
|
7744
|
-
* @param {number} _scoreId
|
|
7745
|
-
* @param {boolean} _scoreLockFlg
|
|
7746
|
-
* @returns
|
|
7886
|
+
* @param {number} [_scoreId=0]
|
|
7887
|
+
* @param {boolean} [_scoreLockFlg=false]
|
|
7888
|
+
* @returns {number|string}
|
|
7747
7889
|
*/
|
|
7748
7890
|
const setDosIdHeader = (_scoreId = 0, _scoreLockFlg = false) => {
|
|
7749
7891
|
if (_scoreLockFlg && g_headerObj.dosNos?.[_scoreId] > 0) {
|
|
@@ -7757,8 +7899,8 @@ const setDosIdHeader = (_scoreId = 0, _scoreLockFlg = false) => {
|
|
|
7757
7899
|
/**
|
|
7758
7900
|
* Mirror,Randomの適用
|
|
7759
7901
|
* @param {number} _keyNum
|
|
7760
|
-
* @param {
|
|
7761
|
-
* @param {
|
|
7902
|
+
* @param {number[][]} _shuffleGroup
|
|
7903
|
+
* @param {number[][]} _style
|
|
7762
7904
|
*/
|
|
7763
7905
|
const applyShuffle = (_keyNum, _shuffleGroup, _style) => {
|
|
7764
7906
|
// 並べ替え用の配列を作成
|
|
@@ -7782,8 +7924,8 @@ const applyShuffle = (_keyNum, _shuffleGroup, _style) => {
|
|
|
7782
7924
|
/**
|
|
7783
7925
|
* Mirrorの適用
|
|
7784
7926
|
* @param {number} _keyNum
|
|
7785
|
-
* @param {
|
|
7786
|
-
* @param {boolean} _swapFlg
|
|
7927
|
+
* @param {number[][]} _shuffleGroup
|
|
7928
|
+
* @param {boolean} [_swapFlg=false]
|
|
7787
7929
|
*/
|
|
7788
7930
|
const applyMirror = (_keyNum, _shuffleGroup, _swapFlg = false) => {
|
|
7789
7931
|
|
|
@@ -7816,7 +7958,7 @@ const applyMirror = (_keyNum, _shuffleGroup, _swapFlg = false) => {
|
|
|
7816
7958
|
/**
|
|
7817
7959
|
* Turningの適用
|
|
7818
7960
|
* @param {number} _keyNum
|
|
7819
|
-
* @param {
|
|
7961
|
+
* @param {number[][]} _shuffleGroup
|
|
7820
7962
|
*/
|
|
7821
7963
|
const applyTurning = (_keyNum, _shuffleGroup) => {
|
|
7822
7964
|
const mirrorOrNot = _array => Math.random() >= 0.5 ? _array.reverse() : _array;
|
|
@@ -7830,7 +7972,7 @@ const applyTurning = (_keyNum, _shuffleGroup) => {
|
|
|
7830
7972
|
/**
|
|
7831
7973
|
* Randomの適用
|
|
7832
7974
|
* @param {number} _keyNum
|
|
7833
|
-
* @param {
|
|
7975
|
+
* @param {number[][]} _shuffleGroup
|
|
7834
7976
|
*/
|
|
7835
7977
|
const applyRandom = (_keyNum, _shuffleGroup) => {
|
|
7836
7978
|
// シャッフルグループごとにシャッフル(Fisher-Yates)
|
|
@@ -7847,7 +7989,7 @@ const applyRandom = (_keyNum, _shuffleGroup) => {
|
|
|
7847
7989
|
/**
|
|
7848
7990
|
* S-Randomの適用
|
|
7849
7991
|
* @param {number} _keyNum
|
|
7850
|
-
* @param {
|
|
7992
|
+
* @param {number[][]} _shuffleGroup
|
|
7851
7993
|
* @param {string} _arrowHeader
|
|
7852
7994
|
* @param {string} _frzHeader
|
|
7853
7995
|
*/
|
|
@@ -7941,9 +8083,10 @@ const applySRandom = (_keyNum, _shuffleGroup, _arrowHeader, _frzHeader) => {
|
|
|
7941
8083
|
* @param {object} _dosObj
|
|
7942
8084
|
* @param {number} _scoreId 譜面番号
|
|
7943
8085
|
* @param {number} _preblankFrame 補完フレーム数
|
|
7944
|
-
* @param {string} _dummyNo ダミー用譜面番号添え字
|
|
7945
|
-
* @param {string} _keyCtrlPtn 選択キー及びパターン
|
|
7946
|
-
* @param {boolean} _scoreAnalyzeFlg
|
|
8086
|
+
* @param {string} [_dummyNo] ダミー用譜面番号添え字
|
|
8087
|
+
* @param {string} [_keyCtrlPtn] 選択キー及びパターン
|
|
8088
|
+
* @param {boolean} [_scoreAnalyzeFlg=false] 譜面詳細データのために必要分で読込を中断
|
|
8089
|
+
* @returns
|
|
7947
8090
|
*/
|
|
7948
8091
|
const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
7949
8092
|
_keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`, _scoreAnalyzeFlg = false) => {
|
|
@@ -7971,6 +8114,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
7971
8114
|
/**
|
|
7972
8115
|
* 矢印データの格納
|
|
7973
8116
|
* @param {string} _data
|
|
8117
|
+
* @returns {number[]}
|
|
7974
8118
|
*/
|
|
7975
8119
|
const storeArrowData = _data => hasVal(_data) ?
|
|
7976
8120
|
splitLF(_data)?.join(``).split(`,`).filter(data => !isNaN(parseFloat(data))).map(data => calcFrame(data)).sort((_a, _b) => _a - _b) : [];
|
|
@@ -8004,6 +8148,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8004
8148
|
* @param {string} _header
|
|
8005
8149
|
* @param {number} _scoreNo
|
|
8006
8150
|
* @param {string} _footer
|
|
8151
|
+
* @returns {number[]}
|
|
8007
8152
|
*/
|
|
8008
8153
|
const setSpeedData = (_header, _scoreNo, _footer = `_data`) => {
|
|
8009
8154
|
const dosSpeedData = getRefData(_header, `${_scoreNo}${_footer}`);
|
|
@@ -8034,6 +8179,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8034
8179
|
/**
|
|
8035
8180
|
* 個別・全体色変化データをマージして整列し、単純配列として返却
|
|
8036
8181
|
* @param {string} _header
|
|
8182
|
+
* @returns {any[]}
|
|
8037
8183
|
*/
|
|
8038
8184
|
const mergeColorData = (_header = ``) => {
|
|
8039
8185
|
if (obj[`color${_header}Data`] === undefined) return [];
|
|
@@ -8046,6 +8192,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8046
8192
|
* 後で個別・全体色変化をマージするため、二次元配列として返却
|
|
8047
8193
|
* @param {string} _header
|
|
8048
8194
|
* @param {number} _scoreNo
|
|
8195
|
+
* @returns {any[][]}
|
|
8049
8196
|
*/
|
|
8050
8197
|
const setColorData = (_header, _scoreNo) => {
|
|
8051
8198
|
const dosColorData = getRefData(_header, `${_scoreNo}_data`);
|
|
@@ -8148,6 +8295,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8148
8295
|
* 矢印モーションデータの分解・格納(フレーム数, 矢印番号)
|
|
8149
8296
|
* @param {string} _header
|
|
8150
8297
|
* @param {number} _scoreNo
|
|
8298
|
+
* @returns {any[]}
|
|
8151
8299
|
*/
|
|
8152
8300
|
const setCssMotionData = (_header, _scoreNo) => {
|
|
8153
8301
|
const dosCssMotionData = getRefData(`${_header}Motion`, `${_scoreNo}_data`) || _dosObj[`${_header}Motion_data`];
|
|
@@ -8174,6 +8322,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8174
8322
|
/**
|
|
8175
8323
|
* スクロール変化データの分解
|
|
8176
8324
|
* @param {number} _scoreNo
|
|
8325
|
+
* @returns {number[]}
|
|
8177
8326
|
*/
|
|
8178
8327
|
const setScrollchData = (_scoreNo) => {
|
|
8179
8328
|
const dosScrollchData = getRefData(`scrollch`, `${_scoreNo}_data`) || _dosObj.scrollch_data;
|
|
@@ -8201,6 +8350,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8201
8350
|
* 例) |backA2_data=back_data| -> back_dataで定義された値を使用
|
|
8202
8351
|
* @param {string} _header
|
|
8203
8352
|
* @param {string} _dataName
|
|
8353
|
+
* @returns
|
|
8204
8354
|
*/
|
|
8205
8355
|
const getRefData = (_header, _dataName) => {
|
|
8206
8356
|
const data = _dosObj[`${_header}${_dataName}`];
|
|
@@ -8214,6 +8364,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8214
8364
|
* 譜面データの優先順配列パターンの取得
|
|
8215
8365
|
* @param {string} _type
|
|
8216
8366
|
* @param {number} _scoreNo
|
|
8367
|
+
* @returns {string[]}
|
|
8217
8368
|
*/
|
|
8218
8369
|
const getPriorityVal = (_type, _scoreNo) => [
|
|
8219
8370
|
`${_type}${g_localeObj.val}${_scoreNo}_data`,
|
|
@@ -8224,7 +8375,8 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8224
8375
|
|
|
8225
8376
|
/**
|
|
8226
8377
|
* 歌詞表示、背景・マスクデータの優先順取得
|
|
8227
|
-
* @param {
|
|
8378
|
+
* @param {string[]} _defaultHeaders
|
|
8379
|
+
* @returns {string[]}
|
|
8228
8380
|
*/
|
|
8229
8381
|
const getPriorityHeader = (_defaultHeaders = []) => {
|
|
8230
8382
|
if (_defaultHeaders.length > 0) {
|
|
@@ -8255,6 +8407,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8255
8407
|
/**
|
|
8256
8408
|
* 歌詞データの分解
|
|
8257
8409
|
* @param {string} _scoreNo
|
|
8410
|
+
* @returns
|
|
8258
8411
|
*/
|
|
8259
8412
|
const makeWordData = _scoreNo => {
|
|
8260
8413
|
const wordDataList = [];
|
|
@@ -8294,6 +8447,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8294
8447
|
* 多層歌詞データの格納処理
|
|
8295
8448
|
* @param {object} _data
|
|
8296
8449
|
* @param {boolean} _reverseFlg
|
|
8450
|
+
* @returns
|
|
8297
8451
|
*/
|
|
8298
8452
|
const makeSpriteWordData = (_data, _reverseFlg = false) => {
|
|
8299
8453
|
const wordData = [];
|
|
@@ -8353,7 +8507,8 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8353
8507
|
* 背景・マスク、スキン変更データの分解
|
|
8354
8508
|
* @param {string} _header
|
|
8355
8509
|
* @param {string} _scoreNo 譜面番号
|
|
8356
|
-
* @param {
|
|
8510
|
+
* @param {string[]} [object.resultTypes] リザルトモーションの種類 (result, failedB, failedS)
|
|
8511
|
+
* @returns
|
|
8357
8512
|
*/
|
|
8358
8513
|
const makeBackgroundData = (_header, _scoreNo, { resultTypes = [] } = {}) => {
|
|
8359
8514
|
const dataList = [];
|
|
@@ -8496,7 +8651,8 @@ const calcLifeVal = (_val, _allArrows) => Math.round(_val * g_headerObj.maxLifeV
|
|
|
8496
8651
|
/**
|
|
8497
8652
|
* 最終フレーム数の取得
|
|
8498
8653
|
* @param {object} _dataObj
|
|
8499
|
-
* @param {string} _keyCtrlPtn
|
|
8654
|
+
* @param {string} [_keyCtrlPtn]
|
|
8655
|
+
* @returns {number}
|
|
8500
8656
|
*/
|
|
8501
8657
|
const getLastFrame = (_dataObj, _keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`) => {
|
|
8502
8658
|
|
|
@@ -8523,7 +8679,8 @@ const getLastFrame = (_dataObj, _keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj
|
|
|
8523
8679
|
/**
|
|
8524
8680
|
* 最初の矢印フレームの取得
|
|
8525
8681
|
* @param {object} _dataObj
|
|
8526
|
-
* @param {string} _keyCtrlPtn
|
|
8682
|
+
* @param {string} [_keyCtrlPtn]
|
|
8683
|
+
* @returns {number}
|
|
8527
8684
|
*/
|
|
8528
8685
|
const getFirstArrowFrame = (_dataObj, _keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`) => {
|
|
8529
8686
|
|
|
@@ -8550,8 +8707,9 @@ const getFirstArrowFrame = (_dataObj, _keyCtrlPtn = `${g_keyObj.currentKey}_${g_
|
|
|
8550
8707
|
/**
|
|
8551
8708
|
* 開始フレームの取得
|
|
8552
8709
|
* @param {number} _lastFrame
|
|
8553
|
-
* @param {number} _fadein
|
|
8554
|
-
* @param {number} _scoreId
|
|
8710
|
+
* @param {number} [_fadein=0]
|
|
8711
|
+
* @param {number} [_scoreId=g_scoreObj.scoreId]
|
|
8712
|
+
* @returns {number}
|
|
8555
8713
|
*/
|
|
8556
8714
|
const getStartFrame = (_lastFrame, _fadein = 0, _scoreId = g_stateObj.scoreId) => {
|
|
8557
8715
|
let frameNum = setIntVal(g_headerObj.startFrame?.[_scoreId], setIntVal(g_headerObj.startFrame?.[0], 0));
|
|
@@ -8565,6 +8723,7 @@ const getStartFrame = (_lastFrame, _fadein = 0, _scoreId = g_stateObj.scoreId) =
|
|
|
8565
8723
|
* 各フレームごとの速度を格納
|
|
8566
8724
|
* @param {object} _speedData
|
|
8567
8725
|
* @param {number} _lastFrame
|
|
8726
|
+
* @returns {number[]}
|
|
8568
8727
|
*/
|
|
8569
8728
|
const setSpeedOnFrame = (_speedData, _lastFrame) => {
|
|
8570
8729
|
|
|
@@ -8590,9 +8749,10 @@ const setMotionOnFrame = () => g_motionFunc[g_stateObj.motion](fillArray(g_heade
|
|
|
8590
8749
|
/**
|
|
8591
8750
|
* Boost用の適用関数
|
|
8592
8751
|
* - ステップゾーンに近づくにつれて加速量を大きく/小さくする (16 → 85)
|
|
8593
|
-
* @param {
|
|
8752
|
+
* @param {number[]} _frms
|
|
8594
8753
|
* @param {number} _spd
|
|
8595
|
-
* @param {number} _pnFlg 正負(1 もしくは -1)
|
|
8754
|
+
* @param {number} [_pnFlg=1] 正負(1 もしくは -1)
|
|
8755
|
+
* @returns {number[]}
|
|
8596
8756
|
*/
|
|
8597
8757
|
const getBoostTrace = (_frms, _spd, _pnFlg = 1) => {
|
|
8598
8758
|
for (let j = C_MOTION_STD_POS + 1; j < C_MOTION_STD_POS + 70; j++) {
|
|
@@ -8604,7 +8764,8 @@ const getBoostTrace = (_frms, _spd, _pnFlg = 1) => {
|
|
|
8604
8764
|
/**
|
|
8605
8765
|
* Brake用の適用関数
|
|
8606
8766
|
* - 初期は+2x、ステップゾーンに近づくにつれて加速量を下げる (20 → 34)
|
|
8607
|
-
* @param {
|
|
8767
|
+
* @param {number[]} _frms
|
|
8768
|
+
* @returns {number[]}
|
|
8608
8769
|
*/
|
|
8609
8770
|
const getBrakeTrace = _frms => {
|
|
8610
8771
|
for (let j = C_MOTION_STD_POS + 5; j < C_MOTION_STD_POS + 19; j++) {
|
|
@@ -8620,7 +8781,8 @@ const getBrakeTrace = _frms => {
|
|
|
8620
8781
|
* 最初のフレームで出現する矢印が、ステップゾーンに到達するまでのフレーム数を取得
|
|
8621
8782
|
* @param {number} _startFrame
|
|
8622
8783
|
* @param {object} _speedOnFrame
|
|
8623
|
-
* @param {object} _motionOnFrame
|
|
8784
|
+
* @param {object} _motionOnFrame
|
|
8785
|
+
* @returns {number}
|
|
8624
8786
|
*/
|
|
8625
8787
|
const getFirstArrivalFrame = (_startFrame, _speedOnFrame, _motionOnFrame) => {
|
|
8626
8788
|
let startY = 0;
|
|
@@ -8655,6 +8817,19 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
8655
8817
|
/** Motionの適用フレーム数 */
|
|
8656
8818
|
g_workObj.motionFrame = [];
|
|
8657
8819
|
|
|
8820
|
+
/**
|
|
8821
|
+
* 矢印・フリーズアローのデータ格納処理
|
|
8822
|
+
* @param {number} _j
|
|
8823
|
+
* @param {number} _k
|
|
8824
|
+
* @param {number[]} _data
|
|
8825
|
+
* @param {number} _startPoint
|
|
8826
|
+
* @param {string} _header
|
|
8827
|
+
* @param {boolean} _frzFlg
|
|
8828
|
+
* @param {number} object.initY
|
|
8829
|
+
* @param {number} object.initBoostY
|
|
8830
|
+
* @param {number} object.arrivalFrame
|
|
8831
|
+
* @param {number} object.motionFrame
|
|
8832
|
+
*/
|
|
8658
8833
|
const setNotes = (_j, _k, _data, _startPoint, _header, _frzFlg = false, { initY, initBoostY, arrivalFrame, motionFrame } = {}) => {
|
|
8659
8834
|
if (_startPoint >= 0) {
|
|
8660
8835
|
const arrowAttrs = { pos: _j, initY, initBoostY, arrivalFrame, motionFrame };
|
|
@@ -8684,10 +8859,9 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
8684
8859
|
/**
|
|
8685
8860
|
* 矢印・フリーズアローの出現位置計算
|
|
8686
8861
|
* @param {number} _j
|
|
8687
|
-
* @param {
|
|
8862
|
+
* @param {number[]} _data
|
|
8688
8863
|
* @param {string} _header
|
|
8689
8864
|
* @param {boolean} _frzFlg
|
|
8690
|
-
* @returns
|
|
8691
8865
|
*/
|
|
8692
8866
|
const calcNotes = (_j, _data, _header = ``, _frzFlg = false) => {
|
|
8693
8867
|
if (_data === undefined) {
|
|
@@ -8855,6 +9029,7 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
8855
9029
|
* 歌詞表示、背景・マスク表示のフェードイン時調整処理
|
|
8856
9030
|
* @param {string} _type
|
|
8857
9031
|
* @param {object} _data
|
|
9032
|
+
* @returns
|
|
8858
9033
|
*/
|
|
8859
9034
|
const calcAnimationData = (_type, _data) => {
|
|
8860
9035
|
|
|
@@ -8951,6 +9126,7 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
8951
9126
|
* @param {number} _frame
|
|
8952
9127
|
* @param {object} _speedOnFrame
|
|
8953
9128
|
* @param {object} _motionOnFrame
|
|
9129
|
+
* @returns {{ frm: number, startY: number, arrivalFrm: number, motionFrm: number }}
|
|
8954
9130
|
*/
|
|
8955
9131
|
const getArrowStartFrame = (_frame, _speedOnFrame, _motionOnFrame) => {
|
|
8956
9132
|
|
|
@@ -8979,6 +9155,7 @@ const getArrowStartFrame = (_frame, _speedOnFrame, _motionOnFrame) => {
|
|
|
8979
9155
|
* @param {object} _speedOnFrame
|
|
8980
9156
|
* @param {number} _startFrame
|
|
8981
9157
|
* @param {number} _endFrame
|
|
9158
|
+
* @returns {number}
|
|
8982
9159
|
*/
|
|
8983
9160
|
const getFrzLength = (_speedOnFrame, _startFrame, _endFrame) => {
|
|
8984
9161
|
let frzLength = 0;
|
|
@@ -9174,8 +9351,8 @@ const pushCssMotions = (_header, _frame, _val, _styleName, _styleNameRev) => {
|
|
|
9174
9351
|
* スクロール変化情報の格納
|
|
9175
9352
|
* @param {string} _header
|
|
9176
9353
|
* @param {number} _frameArrow
|
|
9177
|
-
* @param {number} _frameStep
|
|
9178
9354
|
* @param {number} _val
|
|
9355
|
+
* @param {number} _frameStep
|
|
9179
9356
|
* @param {number} _scrollDir
|
|
9180
9357
|
*/
|
|
9181
9358
|
const pushScrollchs = (_header, _frameArrow, _val, _frameStep, _scrollDir) => {
|
|
@@ -9388,6 +9565,7 @@ const getArrowSettings = () => {
|
|
|
9388
9565
|
* @param {object} _localStorage 保存先のローカルストレージ名
|
|
9389
9566
|
* @param {number} _keyNum
|
|
9390
9567
|
* @param {string} _keyCtrlPtn
|
|
9568
|
+
* @returns {any[][]}
|
|
9391
9569
|
*/
|
|
9392
9570
|
const setKeyCtrl = (_localStorage, _keyNum, _keyCtrlPtn) => {
|
|
9393
9571
|
const localPtn = `${g_keyObj.currentKey}_-1`;
|
|
@@ -9555,7 +9733,7 @@ const mainInit = () => {
|
|
|
9555
9733
|
];
|
|
9556
9734
|
|
|
9557
9735
|
// Appearanceのオプション適用時は一部描画を隠す
|
|
9558
|
-
changeAppearanceFilter(
|
|
9736
|
+
changeAppearanceFilter(g_appearanceRanges.includes(g_stateObj.appearance) ?
|
|
9559
9737
|
g_hidSudObj.filterPos : g_hidSudObj.filterPosDefault[g_stateObj.appearance]);
|
|
9560
9738
|
|
|
9561
9739
|
for (let j = 0; j < keyNum; j++) {
|
|
@@ -9875,17 +10053,15 @@ const mainInit = () => {
|
|
|
9875
10053
|
|
|
9876
10054
|
// 曲中リトライ、タイトルバック
|
|
9877
10055
|
if (setCode === g_kCdN[g_headerObj.keyRetry]) {
|
|
10056
|
+
g_audio.pause();
|
|
10057
|
+
clearTimeout(g_timeoutEvtId);
|
|
9878
10058
|
|
|
9879
10059
|
if (g_isMac && keyIsShift()) {
|
|
9880
10060
|
// Mac OS、IPad OSはDeleteキーが無いためShift+BSで代用
|
|
9881
|
-
g_audio.pause();
|
|
9882
|
-
clearTimeout(g_timeoutEvtId);
|
|
9883
10061
|
titleInit();
|
|
9884
10062
|
|
|
9885
10063
|
} else {
|
|
9886
10064
|
// その他の環境では単にRetryに対応するキーのみで適用
|
|
9887
|
-
g_audio.pause();
|
|
9888
|
-
clearTimeout(g_timeoutEvtId);
|
|
9889
10065
|
clearWindow();
|
|
9890
10066
|
musicAfterLoaded();
|
|
9891
10067
|
}
|
|
@@ -9904,12 +10080,12 @@ const mainInit = () => {
|
|
|
9904
10080
|
}
|
|
9905
10081
|
|
|
9906
10082
|
} else if (g_appearanceRanges.includes(g_stateObj.appearance) && g_stateObj.filterLock === C_FLG_OFF) {
|
|
10083
|
+
const MAX_FILTER_POS = 100;
|
|
10084
|
+
const MIN_FILTER_POS = 0;
|
|
9907
10085
|
if (setCode === g_hidSudObj.pgDown[g_stateObj.appearance][g_stateObj.reverse]) {
|
|
9908
|
-
changeAppearanceFilter(
|
|
9909
|
-
g_hidSudObj.filterPos + 1 : g_hidSudObj.filterPos);
|
|
10086
|
+
changeAppearanceFilter(Math.min(g_hidSudObj.filterPos + 1, MAX_FILTER_POS));
|
|
9910
10087
|
} else if (setCode === g_hidSudObj.pgUp[g_stateObj.appearance][g_stateObj.reverse]) {
|
|
9911
|
-
changeAppearanceFilter(
|
|
9912
|
-
g_hidSudObj.filterPos - 1 : g_hidSudObj.filterPos);
|
|
10088
|
+
changeAppearanceFilter(Math.max(g_hidSudObj.filterPos - 1, MIN_FILTER_POS));
|
|
9913
10089
|
}
|
|
9914
10090
|
}
|
|
9915
10091
|
return blockCode(setCode);
|
|
@@ -10234,7 +10410,7 @@ const mainInit = () => {
|
|
|
10234
10410
|
|
|
10235
10411
|
/**
|
|
10236
10412
|
* 矢印生成
|
|
10237
|
-
* @param {
|
|
10413
|
+
* @param {object} _attrs 矢印個別の属性
|
|
10238
10414
|
* (pos: 矢印種類, arrivalFrame: 到達フレーム数, initY: 初期表示位置,
|
|
10239
10415
|
* initBoostY: Motion有効時の初期表示位置加算, motionFrame: アニメーション有効フレーム数)
|
|
10240
10416
|
* @param {number} _arrowCnt 現在の判定矢印順
|
|
@@ -10255,13 +10431,29 @@ const mainInit = () => {
|
|
|
10255
10431
|
const stepRoot = createEmptySprite(arrowSprite[dividePos], arrowName, {
|
|
10256
10432
|
x: g_workObj.stepX[_j], y: firstPosY, w: C_ARW_WIDTH, h: C_ARW_WIDTH,
|
|
10257
10433
|
});
|
|
10434
|
+
/**
|
|
10435
|
+
* 矢印毎の属性情報
|
|
10436
|
+
*/
|
|
10258
10437
|
g_attrObj[arrowName] = {
|
|
10438
|
+
// 生存フレーム数
|
|
10259
10439
|
cnt: _attrs.arrivalFrame + 1,
|
|
10440
|
+
// 生存フレーム数 (ストップ分除去、個別加速/Motionオプション用)
|
|
10260
10441
|
boostCnt: _attrs.motionFrame,
|
|
10261
|
-
|
|
10262
|
-
|
|
10263
|
-
|
|
10442
|
+
// 個別加速量
|
|
10443
|
+
boostSpd: g_workObj.boostSpd,
|
|
10444
|
+
// ステップゾーン位置 (0: デフォルト, 1: リバース)
|
|
10445
|
+
dividePos: dividePos,
|
|
10446
|
+
// スクロール方向 (1: デフォルト, -1: リバース)
|
|
10447
|
+
dir: g_workObj.scrollDir[_j],
|
|
10448
|
+
// 個別加速方向 (1: 順方向加速, -1: 逆方向加速)
|
|
10449
|
+
boostDir: g_workObj.boostDir,
|
|
10450
|
+
// 前フレーム時の位置 (判定で使用)
|
|
10451
|
+
prevY: firstPosY,
|
|
10452
|
+
// 現フレーム時の位置
|
|
10453
|
+
y: firstPosY,
|
|
10264
10454
|
};
|
|
10455
|
+
// 矢印色の設定
|
|
10456
|
+
// - 枠/塗りつぶし色: g_attrObj[arrowName].Arrow / ArrowShadow
|
|
10265
10457
|
g_typeLists.arrowColor.forEach(val => g_attrObj[arrowName][`Arrow${val}`] = g_workObj[`${_name}${val}Colors`][_j]);
|
|
10266
10458
|
arrowSprite[dividePos].appendChild(stepRoot);
|
|
10267
10459
|
|
|
@@ -10270,12 +10462,13 @@ const mainInit = () => {
|
|
|
10270
10462
|
stepRoot.style.animationDuration = `${_attrs.arrivalFrame / g_fps}s`;
|
|
10271
10463
|
}
|
|
10272
10464
|
|
|
10273
|
-
|
|
10274
|
-
|
|
10275
|
-
|
|
10465
|
+
/**
|
|
10466
|
+
* 矢印オブジェクトの生成
|
|
10467
|
+
* - 後で生成されたものが手前に表示されるため、塗りつぶし ⇒ 枠の順で作成
|
|
10468
|
+
*/
|
|
10276
10469
|
// 矢印の内側を塗りつぶすか否か
|
|
10277
10470
|
if (g_headerObj.setShadowColor[colorPos] !== ``) {
|
|
10278
|
-
//
|
|
10471
|
+
// 矢印 (塗りつぶし)
|
|
10279
10472
|
const arrShadow = createColorObject2(`${_name}Shadow${_j}_${_arrowCnt}`, {
|
|
10280
10473
|
background: _shadowColor === `Default` ? _color : _shadowColor,
|
|
10281
10474
|
rotate: g_workObj.arrowRtn[_j], styleName: `Shadow`,
|
|
@@ -10286,7 +10479,7 @@ const mainInit = () => {
|
|
|
10286
10479
|
stepRoot.appendChild(arrShadow);
|
|
10287
10480
|
}
|
|
10288
10481
|
|
|
10289
|
-
// 矢印
|
|
10482
|
+
// 矢印 (枠)
|
|
10290
10483
|
stepRoot.appendChild(createColorObject2(`${_name}Top${_j}_${_arrowCnt}`, {
|
|
10291
10484
|
background: _color, rotate: g_workObj.arrowRtn[_j],
|
|
10292
10485
|
}));
|
|
@@ -10319,7 +10512,7 @@ const mainInit = () => {
|
|
|
10319
10512
|
|
|
10320
10513
|
/**
|
|
10321
10514
|
* フリーズアロー生成
|
|
10322
|
-
* @param {
|
|
10515
|
+
* @param {object} _attrs フリーズアロー個別の属性
|
|
10323
10516
|
* (pos: 矢印種類, arrivalFrame: 到達フレーム数, initY: 初期表示位置,
|
|
10324
10517
|
* initBoostY: Motion有効時の初期表示位置加算, motionFrame: アニメーション有効フレーム数)
|
|
10325
10518
|
* @param {number} _arrowCnt 現在の判定フリーズアロー順
|
|
@@ -10341,13 +10534,40 @@ const mainInit = () => {
|
|
|
10341
10534
|
const frzRoot = createEmptySprite(arrowSprite[dividePos], frzName, {
|
|
10342
10535
|
x: g_workObj.stepX[_j], y: firstPosY, w: C_ARW_WIDTH, h: C_ARW_WIDTH + firstBarLength,
|
|
10343
10536
|
});
|
|
10537
|
+
/**
|
|
10538
|
+
* フリーズアロー毎の属性情報
|
|
10539
|
+
*/
|
|
10344
10540
|
g_attrObj[frzName] = {
|
|
10541
|
+
// 生存フレーム数
|
|
10345
10542
|
cnt: _attrs.arrivalFrame + 1,
|
|
10543
|
+
// 生存フレーム数 (ストップ分除去、個別加速/Motionオプション用)
|
|
10346
10544
|
boostCnt: _attrs.motionFrame,
|
|
10347
|
-
|
|
10348
|
-
|
|
10349
|
-
|
|
10545
|
+
// 判定終了フラグ (false: 未判定, true: 判定済)
|
|
10546
|
+
judgEndFlg: false,
|
|
10547
|
+
// 移動中フラグ (false: 押しっぱなしの状態, true: 移動中)
|
|
10548
|
+
isMoving: true,
|
|
10549
|
+
// フリーズアローの長さ
|
|
10550
|
+
frzBarLength: firstBarLength,
|
|
10551
|
+
// キーを離していたフレーム数 (基準値超えでNG判定)
|
|
10552
|
+
keyUpFrame: 0,
|
|
10553
|
+
// 個別加速量
|
|
10554
|
+
boostSpd: g_workObj.boostSpd,
|
|
10555
|
+
// ステップゾーン位置 (0: デフォルト, 1: リバース)
|
|
10556
|
+
dividePos: dividePos,
|
|
10557
|
+
// スクロール方向 (1: デフォルト, -1: リバース)
|
|
10558
|
+
dir: g_workObj.scrollDir[_j],
|
|
10559
|
+
// 個別加速方向 (1: 順方向加速, -1: 逆方向加速)
|
|
10560
|
+
boostDir: g_workObj.boostDir,
|
|
10561
|
+
// 現フレーム時のフリーズアロー本体の位置
|
|
10562
|
+
y: firstPosY,
|
|
10563
|
+
// フリーズアロー(帯)の相対位置
|
|
10564
|
+
barY: C_ARW_WIDTH / 2 - firstBarLength * dividePos,
|
|
10565
|
+
// フリーズアロー(対矢印)の相対位置
|
|
10566
|
+
btmY: firstBarLength * g_workObj.scrollDir[_j],
|
|
10350
10567
|
};
|
|
10568
|
+
// フリーズアロー色の設定
|
|
10569
|
+
// - 通常時 (矢印枠/矢印塗りつぶし/帯): g_attrObj[frzName].Normal / NormalShadow / NormalBar
|
|
10570
|
+
// - ヒット時 (矢印枠/矢印塗りつぶし/帯): g_attrObj[frzName].Hit / HitShadow / HitBar
|
|
10351
10571
|
g_typeLists.frzColor.forEach(val => g_attrObj[frzName][val] = g_workObj[`${_name}${val}Colors`][_j]);
|
|
10352
10572
|
arrowSprite[dividePos].appendChild(frzRoot);
|
|
10353
10573
|
|
|
@@ -10357,8 +10577,10 @@ const mainInit = () => {
|
|
|
10357
10577
|
}
|
|
10358
10578
|
let shadowColor = _shadowColor === `Default` ? _normalColor : _shadowColor;
|
|
10359
10579
|
|
|
10360
|
-
|
|
10361
|
-
|
|
10580
|
+
/**
|
|
10581
|
+
* フリーズアローオブジェクトの生成
|
|
10582
|
+
* - 後で生成されたものが手前に表示されるため、以下の順で作成
|
|
10583
|
+
*/
|
|
10362
10584
|
multiAppend(frzRoot,
|
|
10363
10585
|
|
|
10364
10586
|
// フリーズアロー帯(frzBar)
|
|
@@ -10717,32 +10939,32 @@ const mainInit = () => {
|
|
|
10717
10939
|
|
|
10718
10940
|
/**
|
|
10719
10941
|
* アルファマスクの再描画 (Appearance: Hidden+, Sudden+ 用)
|
|
10720
|
-
* @param {string} _appearance
|
|
10721
10942
|
* @param {number} _num
|
|
10722
10943
|
*/
|
|
10723
|
-
const changeAppearanceFilter = (
|
|
10944
|
+
const changeAppearanceFilter = (_num = 10) => {
|
|
10945
|
+
const MAX_FILTER_POS = 100;
|
|
10724
10946
|
const topNum = g_hidSudObj[g_stateObj.appearance];
|
|
10725
10947
|
const bottomNum = (g_hidSudObj[g_stateObj.appearance] + 1) % 2;
|
|
10726
|
-
if (
|
|
10727
|
-
_num =
|
|
10948
|
+
if (g_stateObj.appearance === `Hid&Sud+` && _num > MAX_FILTER_POS / 2) {
|
|
10949
|
+
_num = MAX_FILTER_POS / 2;
|
|
10728
10950
|
}
|
|
10729
10951
|
|
|
10730
|
-
const numPlus = (
|
|
10952
|
+
const numPlus = (g_stateObj.appearance === `Hid&Sud+` ? _num : 0);
|
|
10731
10953
|
const topShape = `inset(${_num}% 0% ${numPlus}% 0%)`;
|
|
10732
10954
|
const bottomShape = `inset(${numPlus}% 0% ${_num}% 0%)`;
|
|
10733
10955
|
|
|
10734
10956
|
$id(`arrowSprite${topNum}`).clipPath = topShape;
|
|
10735
10957
|
$id(`arrowSprite${bottomNum}`).clipPath = bottomShape;
|
|
10736
10958
|
|
|
10737
|
-
$id(`filterBar0`).top = wUnit(g_posObj.arrowHeight * _num /
|
|
10738
|
-
$id(`filterBar1`).top = wUnit(g_posObj.arrowHeight * (
|
|
10959
|
+
$id(`filterBar0`).top = wUnit(g_posObj.arrowHeight * _num / MAX_FILTER_POS + g_stateObj.hitPosition);
|
|
10960
|
+
$id(`filterBar1`).top = wUnit(g_posObj.arrowHeight * (MAX_FILTER_POS - _num) / MAX_FILTER_POS - g_stateObj.hitPosition);
|
|
10739
10961
|
|
|
10740
|
-
if (g_appearanceRanges.includes(
|
|
10962
|
+
if (g_appearanceRanges.includes(g_stateObj.appearance)) {
|
|
10741
10963
|
$id(`filterView`).top =
|
|
10742
10964
|
$id(`filterBar${g_hidSudObj.std[g_stateObj.appearance][g_stateObj.reverse]}`).top;
|
|
10743
10965
|
filterView.textContent = `${_num}%`;
|
|
10744
10966
|
|
|
10745
|
-
if (
|
|
10967
|
+
if (g_stateObj.appearance !== `Hid&Sud+` && g_workObj.dividePos.every(v => v === g_workObj.dividePos[0])) {
|
|
10746
10968
|
$id(`filterBar${(g_hidSudObj.std[g_stateObj.appearance][g_stateObj.reverse] + 1) % 2}`).display = C_DIS_NONE;
|
|
10747
10969
|
}
|
|
10748
10970
|
g_hidSudObj.filterPos = _num;
|
|
@@ -10756,7 +10978,8 @@ const changeAppearanceFilter = (_appearance, _num = 10) => {
|
|
|
10756
10978
|
* @param {string} _class
|
|
10757
10979
|
* @param {number} _heightPos
|
|
10758
10980
|
* @param {string|number} _text
|
|
10759
|
-
* @param {string} _display 表示有無 (inherit: 表示 / none: 非表示)
|
|
10981
|
+
* @param {string} [_display='inherit'] 表示有無 (inherit: 表示 / none: 非表示)
|
|
10982
|
+
* @returns {HTMLDivElement}
|
|
10760
10983
|
*/
|
|
10761
10984
|
const makeCounterSymbol = (_id, _x, _class, _heightPos, _text, _display = C_DIS_INHERIT) => {
|
|
10762
10985
|
return createDivCss2Label(_id, _text, {
|
|
@@ -10770,7 +10993,7 @@ const makeCounterSymbol = (_id, _x, _class, _heightPos, _text, _display = C_DIS_
|
|
|
10770
10993
|
* ステップゾーンの表示・非表示切替
|
|
10771
10994
|
* @param {number} _j
|
|
10772
10995
|
* @param {string} _display
|
|
10773
|
-
* @param {number} _alpha
|
|
10996
|
+
* @param {number} [_alpha=1]
|
|
10774
10997
|
*/
|
|
10775
10998
|
const appearStepZone = (_j, _display, _alpha = 1) => {
|
|
10776
10999
|
$id(`stepRoot${_j}`).display = _display;
|
|
@@ -10780,8 +11003,8 @@ const appearStepZone = (_j, _display, _alpha = 1) => {
|
|
|
10780
11003
|
/**
|
|
10781
11004
|
* 部分キーのステップゾーン出現処理
|
|
10782
11005
|
* @param {number} _j
|
|
10783
|
-
* @param {
|
|
10784
|
-
* @param {
|
|
11006
|
+
* @param {string[]} _targets
|
|
11007
|
+
* @param {number[]} [_alphas] ステップゾーン毎の可視状況 (style.opacity の値)
|
|
10785
11008
|
*/
|
|
10786
11009
|
const appearKeyTypes = (_j, _targets, _alphas = fillArray(_targets.length, 1)) => {
|
|
10787
11010
|
appearStepZone(_j, C_DIS_NONE);
|
|
@@ -10794,8 +11017,8 @@ const appearKeyTypes = (_j, _targets, _alphas = fillArray(_targets.length, 1)) =
|
|
|
10794
11017
|
|
|
10795
11018
|
/**
|
|
10796
11019
|
* 個別・全体色変化
|
|
10797
|
-
* @param {
|
|
10798
|
-
* @param {
|
|
11020
|
+
* @param {number[]} _mkColor
|
|
11021
|
+
* @param {string[]} _mkColorCd
|
|
10799
11022
|
* @param {string} _header
|
|
10800
11023
|
* @param {string} _name
|
|
10801
11024
|
*/
|
|
@@ -10857,7 +11080,7 @@ const changeStepY = (_frameNum) =>
|
|
|
10857
11080
|
* @param {number} _j
|
|
10858
11081
|
* @param {number} _k
|
|
10859
11082
|
* @param {string} _name
|
|
10860
|
-
* @param {number} _difFrame
|
|
11083
|
+
* @param {number} [_difFrame=0]
|
|
10861
11084
|
*/
|
|
10862
11085
|
const changeHitFrz = (_j, _k, _name, _difFrame = 0) => {
|
|
10863
11086
|
const frzNo = `${_j}_${_k}`;
|
|
@@ -10894,6 +11117,7 @@ const changeHitFrz = (_j, _k, _name, _difFrame = 0) => {
|
|
|
10894
11117
|
* フリーズアロー(ヒット時)の色変更
|
|
10895
11118
|
* - 生成時以降で全体色変化がある場合はその値へ置き換える
|
|
10896
11119
|
* @param {string} _type
|
|
11120
|
+
* @returns {string}
|
|
10897
11121
|
*/
|
|
10898
11122
|
const getColor = (_type) => {
|
|
10899
11123
|
const cColor = g_workObj[`${_name}${_type}Colors`][_j];
|
|
@@ -10943,11 +11167,13 @@ const changeFailedFrz = (_j, _k) => {
|
|
|
10943
11167
|
/**
|
|
10944
11168
|
* キーを押したかどうかを判定
|
|
10945
11169
|
* @param {number} _keyCode
|
|
11170
|
+
* @returns {boolean}
|
|
10946
11171
|
*/
|
|
10947
11172
|
const keyIsDown = _keyCode => g_inputKeyBuffer[_keyCode];
|
|
10948
11173
|
|
|
10949
11174
|
/**
|
|
10950
11175
|
* 押したキーがシフトキーかどうかを判定
|
|
11176
|
+
* @returns {boolean}
|
|
10951
11177
|
*/
|
|
10952
11178
|
const keyIsShift = () => keyIsDown(g_kCdNameObj.shiftLKey) || keyIsDown(g_kCdNameObj.shiftRKey);
|
|
10953
11179
|
|
|
@@ -11064,7 +11290,7 @@ const displayDiff = (_difFrame, _fjdg = ``, _justFrames = g_headerObj.justFrames
|
|
|
11064
11290
|
|
|
11065
11291
|
/**
|
|
11066
11292
|
* ライフゲージバーの色、数値を変更
|
|
11067
|
-
* @param {string} _state
|
|
11293
|
+
* @param {string} [_state='']
|
|
11068
11294
|
*/
|
|
11069
11295
|
const changeLifeColor = (_state = ``) => {
|
|
11070
11296
|
const lblLife = document.getElementById(`lblLife`);
|
|
@@ -11099,7 +11325,7 @@ const lifeRecovery = () => {
|
|
|
11099
11325
|
|
|
11100
11326
|
/**
|
|
11101
11327
|
* ゲージダメージ処理
|
|
11102
|
-
* @param {boolean} _excessive 空押し判定有無
|
|
11328
|
+
* @param {boolean} [_excessive=false] 空押し判定有無
|
|
11103
11329
|
*/
|
|
11104
11330
|
const lifeDamage = (_excessive = false) => {
|
|
11105
11331
|
g_workObj.lifeVal -= g_workObj.lifeDmg * (_excessive ? 0.25 : 1);
|
|
@@ -11116,7 +11342,7 @@ const lifeDamage = (_excessive = false) => {
|
|
|
11116
11342
|
* 判定キャラクタの表示、判定済矢印数・判定数のカウンタ
|
|
11117
11343
|
* @param {string} _name
|
|
11118
11344
|
* @param {string} _character
|
|
11119
|
-
* @param {string} _fjdg
|
|
11345
|
+
* @param {string} [_fjdg='']
|
|
11120
11346
|
*/
|
|
11121
11347
|
const changeJudgeCharacter = (_name, _character, _fjdg = ``) => {
|
|
11122
11348
|
g_resultObj[_name]++;
|
|
@@ -11244,7 +11470,7 @@ const checkJudgment = (_difCnt) => {
|
|
|
11244
11470
|
/**
|
|
11245
11471
|
* クリア表示
|
|
11246
11472
|
* @param {string} _state
|
|
11247
|
-
* @returns
|
|
11473
|
+
* @returns {string}
|
|
11248
11474
|
*/
|
|
11249
11475
|
const resultViewText = _state => _state === `` ? `` :
|
|
11250
11476
|
`<span class="result_${toCapitalize(_state)}">${g_lblNameObj[_state]}</span>`;
|
|
@@ -11399,6 +11625,7 @@ const resultInit = () => {
|
|
|
11399
11625
|
* @param {string} _flg
|
|
11400
11626
|
* @param {string|boolean} _defaultSet デフォルト値
|
|
11401
11627
|
* @param {string} _displayText
|
|
11628
|
+
* @returns {string}
|
|
11402
11629
|
*/
|
|
11403
11630
|
const withOptions = (_flg, _defaultSet, _displayText = _flg) =>
|
|
11404
11631
|
(_flg !== _defaultSet ? getStgDetailName(_displayText) : ``);
|
|
@@ -11472,11 +11699,11 @@ const resultInit = () => {
|
|
|
11472
11699
|
|
|
11473
11700
|
/**
|
|
11474
11701
|
* キャラクタ、スコア描画のID共通部、色CSS名、スコア変数名
|
|
11475
|
-
* @
|
|
11476
|
-
* @
|
|
11477
|
-
* @
|
|
11478
|
-
* @
|
|
11479
|
-
* @
|
|
11702
|
+
* @property {number} pos 表示位置(縦)
|
|
11703
|
+
* @property {string} id 表示用ラベルフッター
|
|
11704
|
+
* @property {string} color CSS用ラベルフッター
|
|
11705
|
+
* @property {string} label 表示名
|
|
11706
|
+
* @property {string} dfColor 表示する文字のカラーコード (リザルト画像で使用)
|
|
11480
11707
|
*/
|
|
11481
11708
|
const jdgScoreObj = {
|
|
11482
11709
|
ii: { pos: 0, id: `Ii`, color: `ii`, label: g_lblNameObj.j_ii, dfColor: `#66ffff`, },
|
|
@@ -11824,7 +12051,7 @@ const resultInit = () => {
|
|
|
11824
12051
|
* @param {object} _posObj
|
|
11825
12052
|
* @param {function} _func
|
|
11826
12053
|
* @param {...any} _cssClass
|
|
11827
|
-
* @returns
|
|
12054
|
+
* @returns {HTMLDivElement}
|
|
11828
12055
|
*/
|
|
11829
12056
|
const resetCommonBtn = (_id, _name, _posObj, _func, _cssClass) =>
|
|
11830
12057
|
createCss2Button(_id, _name, () => {
|
|
@@ -11948,7 +12175,7 @@ const resultInit = () => {
|
|
|
11948
12175
|
* @param {string} object.tweetFrzJdg フリーズアロー判定状況
|
|
11949
12176
|
* @param {string} object.tweetMaxCombo コンボ数状況
|
|
11950
12177
|
* @param {string} object.baseTwitUrl X投稿用URL
|
|
11951
|
-
* @returns
|
|
12178
|
+
* @returns {string}
|
|
11952
12179
|
*/
|
|
11953
12180
|
const makeResultText = (_format, {
|
|
11954
12181
|
hashTag, musicTitle, tweetDifData, tuning, rankMark, playStyleData,
|
|
@@ -11975,8 +12202,9 @@ const makeResultText = (_format, {
|
|
|
11975
12202
|
* @param {number} _heightPos
|
|
11976
12203
|
* @param {string} _text
|
|
11977
12204
|
* @param {string} _align
|
|
11978
|
-
* @param {number} object.w
|
|
11979
|
-
* @param {number} object.siz
|
|
12205
|
+
* @param {number} [object.w=400]
|
|
12206
|
+
* @param {number} [object.siz=g_limitObj.mainSiz]
|
|
12207
|
+
* @returns {HTMLDivElement}
|
|
11980
12208
|
*/
|
|
11981
12209
|
const makeCssResultPlayData = (_id, _x, _class, _heightPos, _text, _align = C_ALIGN_CENTER, { w = 400, siz = g_limitObj.mainSiz } = {}) =>
|
|
11982
12210
|
createDivCss2Label(_id, _text, {
|
|
@@ -11991,6 +12219,7 @@ const makeCssResultPlayData = (_id, _x, _class, _heightPos, _text, _align = C_AL
|
|
|
11991
12219
|
* @param {number} _heightPos
|
|
11992
12220
|
* @param {string} _text
|
|
11993
12221
|
* @param {string} _align
|
|
12222
|
+
* @returns {HTMLDivElement}
|
|
11994
12223
|
*/
|
|
11995
12224
|
const makeCssResultSymbol = (_id, _x, _class, _heightPos, _text, _align = C_ALIGN_LEFT) =>
|
|
11996
12225
|
makeCssResultPlayData(_id, _x, _class, _heightPos, _text, _align, { w: 150, siz: g_limitObj.jdgCntsSiz });
|