danoniplus 37.5.0 → 37.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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/09/04
7
+ * Revised : 2024/09/25
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 37.5.0`;
12
- const g_revisedDate = `2024/09/04`;
11
+ const g_version = `Ver 37.6.1`;
12
+ const g_revisedDate = `2024/09/25`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -29,7 +29,7 @@ let g_localVersion2 = ``;
29
29
  * clearWindow()で[divRoot]以外の全てのスプライトを削除。
30
30
  * 特定のスプライトに限り削除する場合は deleteChildspriteAll() 。
31
31
  */
32
- const current = _ => {
32
+ const current = () => {
33
33
  if (document.currentScript) {
34
34
  return document.currentScript.src;
35
35
  }
@@ -212,7 +212,7 @@ const multiAppend = (_baseObj, ...rest) => _baseObj.append(...rest);
212
212
  /**
213
213
  * 複数の属性をまとめて設定
214
214
  * @param {object} _baseObj
215
- * @param {object} rest
215
+ * @param {...any} rest
216
216
  */
217
217
  const setAttrs = (_baseObj, { ...rest } = {}) =>
218
218
  Object.keys(rest).forEach(property => _baseObj.setAttribute(property, rest[property]));
@@ -250,13 +250,15 @@ const trimStr = _str => _str?.split(`\t`).join(``).replace(/^ +| +$/g, ``);
250
250
 
251
251
  /**
252
252
  * 変数が存在するかどうかをチェック
253
- * @param {string} _data
253
+ * @param {string} _data
254
+ * @param {...any} strs
254
255
  */
255
256
  const hasVal = (_data, ...strs) => _data !== undefined && _data !== `` && (!strs || strs.every(str => _data !== str));
256
257
 
257
258
  /**
258
259
  * 変数が存在するかどうかをチェック(null無しを含む)
259
260
  * @param {string} _data
261
+ * @param {...any} strs
260
262
  */
261
263
  const hasValN = (_data, ...strs) => hasVal(_data, ...strs) && _data !== null;
262
264
 
@@ -347,7 +349,7 @@ const getCurrentNo = (_list, _target) => roundZero(_list.indexOf(_target));
347
349
  * 配列内に存在するかどうかをチェック
348
350
  * @param {string} _val
349
351
  * @param {array} _array
350
- * @param {integer} _pos
352
+ * @param {number} _pos
351
353
  */
352
354
  const hasValInArray = (_val, _array, _pos = 0) =>
353
355
  _array.findIndex(data => data[_pos] === _val) !== -1;
@@ -355,7 +357,7 @@ const hasValInArray = (_val, _array, _pos = 0) =>
355
357
  /**
356
358
  * 配列が既定長以上かどうかをチェック
357
359
  * @param {array} _data
358
- * @param {integer} _length
360
+ * @param {number} _length
359
361
  */
360
362
  const hasArrayList = (_data, _length = 1) => _data?.length >= _length;
361
363
 
@@ -460,8 +462,8 @@ const getMaxValIdxs = (_array, _num = 1) => {
460
462
  * 部分一致検索(リストのいずれかに合致、大小文字問わず)
461
463
  * @param {string} _str 検索文字
462
464
  * @param {array} _list 検索リスト (英字は小文字にする必要あり)
463
- * @param {string} prefix 前方一致条件 (前方一致時は ^)
464
- * @param {string} suffix 後方一致条件 (後方一致時は $)
465
+ * @param {string} object.prefix 前方一致条件 (前方一致時は ^)
466
+ * @param {string} object.suffix 後方一致条件 (後方一致時は $)
465
467
  */
466
468
  const listMatching = (_str, _list, { prefix = ``, suffix = `` } = {}) =>
467
469
  _list.findIndex(value => _str.toLowerCase().match(new RegExp(String.raw`${prefix}${value}${suffix}`, 'i'))) !== -1;
@@ -596,7 +598,13 @@ const commonKeyUp = _evt => {
596
598
  * ショートカットキー表示
597
599
  * @param {object} _obj
598
600
  * @param {string} _settingLabel
599
- * @param {object} objectList
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
600
608
  */
601
609
  const createScText = (_obj, _settingLabel, { displayName = `option`, dfLabel = ``, targetLabel = `lnk${_settingLabel}R`,
602
610
  x = g_scViewObj.x, y = g_scViewObj.y, w = g_scViewObj.w, siz = g_scViewObj.siz } = {}) => {
@@ -628,19 +636,21 @@ const createScTextCommon = _displayName =>
628
636
  * ショートカットキー有効化
629
637
  * @param {string} _displayName
630
638
  * @param {function} _func
639
+ * @param {boolean} object.displayFlg
640
+ * @param {boolean} object.dfEvtFlg
631
641
  */
632
- const setShortcutEvent = (_displayName, _func = _ => true, { displayFlg = true, dfEvtFlg = false } = {}) => {
642
+ const setShortcutEvent = (_displayName, _func = () => true, { displayFlg = true, dfEvtFlg = false } = {}) => {
633
643
  if (displayFlg) {
634
644
  createScTextCommon(_displayName);
635
645
  }
636
- const evList = _ => {
646
+ const evList = () => {
637
647
  document.onkeydown = evt => commonKeyDown(evt, _displayName, _func, dfEvtFlg);
638
648
  document.onkeyup = evt => commonKeyUp(evt);
639
649
  };
640
650
  if (g_initialFlg && g_btnWaitFrame[_displayName].initial) {
641
651
  evList();
642
652
  } else {
643
- setTimeout(_ => {
653
+ setTimeout(() => {
644
654
  if (g_currentPage === _displayName) {
645
655
  evList();
646
656
  }
@@ -718,7 +728,7 @@ const loadScript2 = (_url, _requiredFlg = true, _charset = `UTF-8`) => {
718
728
  script.type = `text/javascript`;
719
729
  script.src = _url;
720
730
  script.charset = _charset;
721
- script.onload = _ => {
731
+ script.onload = () => {
722
732
  g_loadObj[baseUrl] = true;
723
733
  resolve(script);
724
734
  };
@@ -738,6 +748,7 @@ const loadScript2 = (_url, _requiredFlg = true, _charset = `UTF-8`) => {
738
748
  * CSSファイルの読み込み (Promise)
739
749
  * デフォルトは danoni_skin_default.css を読み込む
740
750
  * @param {url} _href
751
+ * @param {string} object.crossOrigin
741
752
  */
742
753
  const importCssFile2 = (_href, { crossOrigin = `anonymous` } = {}) => {
743
754
  const baseUrl = _href.split(`?`)[0];
@@ -750,11 +761,11 @@ const importCssFile2 = (_href, { crossOrigin = `anonymous` } = {}) => {
750
761
  if (!g_isFile) {
751
762
  link.crossOrigin = crossOrigin;
752
763
  }
753
- link.onload = _ => {
764
+ link.onload = () => {
754
765
  g_loadObj[baseUrl] = true;
755
766
  resolve(link);
756
767
  };
757
- link.onerror = _ => {
768
+ link.onerror = () => {
758
769
  makeWarningWindow(g_msgInfoObj.E_0041.split(`{0}`).join(getFullPath(baseUrl)), { resetFlg: `title` });
759
770
  resolve(link);
760
771
  };
@@ -803,9 +814,9 @@ const getFilePath = (_fileName, _directory = ``) => {
803
814
 
804
815
  /**
805
816
  * 画像ファイルの存在チェック後、プリロードする処理
806
- * @param {string} _imgPath
807
- * @param {string} directory
808
- * @param {boolean} syncBackPath
817
+ * @param {string} _imgPath
818
+ * @param {string} object.directory
819
+ * @param {boolean} object.syncBackPath
809
820
  * @returns
810
821
  */
811
822
  const preloadImgFile = (_imgPath, { directory = ``, syncBackPath = true } = {}) => {
@@ -917,11 +928,10 @@ const colorCdPadding = (_useFlg, _colorStr) => _useFlg ? `#${_colorStr.slice(1).
917
928
  /**
918
929
  * グラデーション用のカラーフォーマットを作成
919
930
  * @param {string} _colorStr
920
- * @param {object} _options
921
- * defaultColorgrd
922
- * colorCdPaddingUse
923
- * objType (normal: 汎用, titleMusic: タイトル曲名, titleArrow: タイトル矢印)
924
- * shadowFlg
931
+ * @param {array} object._defaultColorgrd
932
+ * @param {boolean} object._colorCdPaddingUse
933
+ * @param {string} object._objType (normal: 汎用, titleMusic: タイトル曲名, titleArrow: タイトル矢印)
934
+ * @param {boolean} object._shadowFlg
925
935
  */
926
936
  const makeColorGradation = (_colorStr, { _defaultColorgrd = g_headerObj.defaultColorgrd,
927
937
  _colorCdPaddingUse = false, _objType = `normal`, _shadowFlg = false } = {}) => {
@@ -1023,7 +1033,8 @@ const getFontSize = (_str, _maxWidth, _font = getBasicFont(), _maxFontsize = 64,
1023
1033
  * 補足説明部分のラベル作成
1024
1034
  * @param {string} _id
1025
1035
  * @param {string} _str
1026
- * @param {string} _altId
1036
+ * @param {string} object.altId
1037
+ * @param {number} object.siz
1027
1038
  */
1028
1039
  const createDescDiv = (_id, _str, { altId = _id, siz = g_limitObj.mainSiz } = {}) =>
1029
1040
  createDivCss2Label(_id, _str, Object.assign(g_lblPosObj[altId], {
@@ -1076,7 +1087,13 @@ const setUserSelect = (_style, _value = C_DIS_NONE) => {
1076
1087
  * 子div要素のラベル文字作成 (CSS版・拡張属性対応)
1077
1088
  * @param {string} _id
1078
1089
  * @param {string} _text
1079
- * @param {object} _obj (x, y, w, h, siz, align, ...rest)
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
1080
1097
  * @param {...any} _classes
1081
1098
  */
1082
1099
  const createDivCss2Label = (_id, _text, { x = 0, y = 0, w = g_limitObj.setLblWidth, h = g_limitObj.setLblHeight,
@@ -1114,7 +1131,8 @@ const createImg = (_id, _imgPath, _x, _y, _width, _height) => {
1114
1131
  * @param {string} _parentObj
1115
1132
  * @param {string} _id
1116
1133
  * @param {function} _func
1117
- * @param {object} _obj
1134
+ * @param {number} object.x
1135
+ * @param {number} object.y
1118
1136
  */
1119
1137
  const createColorPicker = (_parentObj, _id, _func, { x = 0, y = 0 } = {}) => {
1120
1138
  const picker = document.createElement(`input`);
@@ -1131,7 +1149,14 @@ const createColorPicker = (_parentObj, _id, _func, { x = 0, y = 0 } = {}) => {
1131
1149
  /**
1132
1150
  * 色付きオブジェクトの作成 (拡張属性対応)
1133
1151
  * @param {string} _id
1134
- * @param {object} _obj (x, y, w, h, color, rotate, styleName, ...rest)
1152
+ * @param {number} object.x
1153
+ * @param {number} object.y
1154
+ * @param {number} object.w
1155
+ * @param {number} object.h
1156
+ * @param {number} object.color
1157
+ * @param {string} object.rotate
1158
+ * @param {string} object.styleName
1159
+ * @param {...any} object.rest
1135
1160
  * @param {...any} _classes
1136
1161
  */
1137
1162
  const createColorObject2 = (_id,
@@ -1166,7 +1191,12 @@ const createColorObject2 = (_id,
1166
1191
  * - 作成済みの場合はすでに作成済のスプライトを返却する
1167
1192
  * @param {object} _parentObj 親スプライト
1168
1193
  * @param {string} _newObjId 作成する子スプライト名
1169
- * @param {object} _obj (x, y, w, h, ...rest)
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
1170
1200
  * @param {...any} _classes
1171
1201
  */
1172
1202
  const createEmptySprite = (_parentObj, _newObjId, { x = 0, y = 0, w = g_sWidth, h = g_sHeight, title = ``, ...rest } = {}, ..._classes) => {
@@ -1188,6 +1218,7 @@ const createEmptySprite = (_parentObj, _newObjId, { x = 0, y = 0, w = g_sWidth,
1188
1218
  * 階層スプライト(全体)の作成
1189
1219
  * @param {string} _baseName
1190
1220
  * @param {number} _num
1221
+ * @param {number} object.x
1191
1222
  */
1192
1223
  const createMultipleSprite = (_baseName, _num, { x = 0 } = {}) => {
1193
1224
  const sprite = createEmptySprite(divRoot, _baseName);
@@ -1204,7 +1235,7 @@ const createMultipleSprite = (_baseName, _num, { x = 0 } = {}) => {
1204
1235
  * - イベントリスナー作成時にリスナーキー(key)を発行する
1205
1236
  * - 削除時は発行したリスナーキーを指定して削除する
1206
1237
  */
1207
- const g_handler = (_ => {
1238
+ const g_handler = (() => {
1208
1239
  const events = {};
1209
1240
  let key = 0;
1210
1241
 
@@ -1259,13 +1290,24 @@ const deleteDiv = (_parentId, _idName) => {
1259
1290
  * @param {string} _id
1260
1291
  * @param {string} _text
1261
1292
  * @param {function} _func
1262
- * @param {object} _obj (x, y, w, h, siz, align, title, groupName, initDisabledFlg, ...rest)
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
1263
1305
  * @param {...any} _classes
1264
1306
  */
1265
- const createCss2Button = (_id, _text, _func = _ => true, {
1307
+ const createCss2Button = (_id, _text, _func = () => true, {
1266
1308
  x = 0, y = g_sHeight - 100, w = g_btnWidth() / 3, h = g_limitObj.btnHeight,
1267
1309
  siz = g_limitObj.btnSiz, align = C_ALIGN_CENTER, title = ``, groupName = g_currentPage, initDisabledFlg = true,
1268
- resetFunc = _ => true, cxtFunc = _ => true, ...rest } = {}, ..._classes) => {
1310
+ resetFunc = () => true, cxtFunc = () => true, ...rest } = {}, ..._classes) => {
1269
1311
 
1270
1312
  const div = createDiv(_id, x, y, w, h, [`button_common`, ..._classes]);
1271
1313
  div.innerHTML = _text;
@@ -1285,7 +1327,7 @@ const createCss2Button = (_id, _text, _func = _ => true, {
1285
1327
  if (g_initialFlg && g_btnWaitFrame[groupName].initial) {
1286
1328
  } else {
1287
1329
  style.pointerEvents = C_DIS_NONE;
1288
- setTimeout(_ => style.pointerEvents = rest.pointerEvents ?? `auto`,
1330
+ setTimeout(() => style.pointerEvents = rest.pointerEvents ?? `auto`,
1289
1331
  g_btnWaitFrame[groupName].b_frame * 1000 / g_fps);
1290
1332
  }
1291
1333
  }
@@ -1331,7 +1373,13 @@ const createCss2Button = (_id, _text, _func = _ => true, {
1331
1373
  /**
1332
1374
  * オブジェクトのスタイル一括変更
1333
1375
  * @param {string} _id
1334
- * @param {object} _obj (x, y, w, h, siz, align, title, ...rest)
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
1335
1383
  */
1336
1384
  const changeStyle = (_id, { x, y, w, h, siz, align, title, ...rest } = {}) => {
1337
1385
  const div = document.getElementById(_id);
@@ -1362,6 +1410,7 @@ const changeStyle = (_id, { x, y, w, h, siz, align, title, ...rest } = {}) => {
1362
1410
  * @param {string} _titlename
1363
1411
  * @param {number} _x
1364
1412
  * @param {number} _y
1413
+ * @param {...any} _classes
1365
1414
  */
1366
1415
  const getTitleDivLabel = (_id, _titlename, _x, _y, ..._classes) =>
1367
1416
  createDivCss2Label(_id, _titlename, { x: _x, y: _y, w: g_sWidth, h: 50, siz: g_limitObj.btnSiz }, ..._classes);
@@ -1369,8 +1418,8 @@ const getTitleDivLabel = (_id, _titlename, _x, _y, ..._classes) =>
1369
1418
  /**
1370
1419
  * キーコントロールの初期化
1371
1420
  */
1372
- const resetKeyControl = _ => {
1373
- document.onkeyup = _ => { };
1421
+ const resetKeyControl = () => {
1422
+ document.onkeyup = () => { };
1374
1423
  document.onkeydown = evt => {
1375
1424
  evt.preventDefault();
1376
1425
  return blockCode(transCode(evt));
@@ -1380,7 +1429,9 @@ const resetKeyControl = _ => {
1380
1429
 
1381
1430
  /**
1382
1431
  * Canvasのベース背景を作成
1383
- * @param {*} _ctx
1432
+ * @param {object} _ctx
1433
+ * @param {number} object.w
1434
+ * @param {number} object.h
1384
1435
  */
1385
1436
  const makeBgCanvas = (_ctx, { w = g_sWidth, h = g_sHeight } = {}) => {
1386
1437
  const grd = _ctx.createLinearGradient(0, 0, 0, h);
@@ -1395,6 +1446,8 @@ const makeBgCanvas = (_ctx, { w = g_sWidth, h = g_sHeight } = {}) => {
1395
1446
  * - divオブジェクト(ボタンなど)はdivRoot配下で管理しているため、子要素のみを全削除している。
1396
1447
  * - dicRoot自体を削除しないよう注意すること。
1397
1448
  * - 再描画時に共通で表示する箇所はここで指定している。
1449
+ * @param {boolean} _redrawFlg 画面横幅を再定義し、Canvas背景を再描画するかどうか
1450
+ * @param {string} _customDisplayName 画面名(メイン画面: 'Main', それ以外: 空)
1398
1451
  */
1399
1452
  const clearWindow = (_redrawFlg = false, _customDisplayName = ``) => {
1400
1453
  resetKeyControl();
@@ -1485,7 +1538,7 @@ const getCssCustomProperty = (_prop, _propData) =>
1485
1538
  /**
1486
1539
  * CSSカスタムプロパティの値をオブジェクトへ退避
1487
1540
  */
1488
- const getCssCustomProperties = _ => {
1541
+ const getCssCustomProperties = () => {
1489
1542
  try {
1490
1543
  const htmlStyle = document.documentElement.computedStyleMap();
1491
1544
  for (const [propertyName, value] of htmlStyle.entries()) {
@@ -1521,6 +1574,15 @@ const getCssCustomProperties = _ => {
1521
1574
  /**
1522
1575
  * 背景・マスク用画像の描画
1523
1576
  * @param {object} _obj
1577
+ * @param {string} _obj.path 画像のパス
1578
+ * @param {string} _obj.class 画像を装飾するCSSクラス名
1579
+ * @param {string} _obj.left 画像の位置(x座標)
1580
+ * @param {string} _obj.top 画像の位置(y座標)
1581
+ * @param {number} _obj.width 画像の幅
1582
+ * @param {string} _obj.height 画像の高さ (他との共用項目のため、stringで受ける)
1583
+ * @param {string} _obj.animationName アニメーション名
1584
+ * @param {string} _obj.animationDuration アニメーションを動かす間隔(秒)
1585
+ * @param {number} _obj.opacity 画像の不透明度
1524
1586
  */
1525
1587
  const makeSpriteImage = _obj => {
1526
1588
  let tmpInnerHTML = `<img src=${_obj.path} class="${_obj.class}" style="position:absolute;left:${wUnit(_obj.left)};top:${wUnit(_obj.top)}`;
@@ -1537,6 +1599,15 @@ const makeSpriteImage = _obj => {
1537
1599
  /**
1538
1600
  * 背景・マスク用テキストの描画
1539
1601
  * @param {object} _obj
1602
+ * @param {string} _obj.path テキスト本体
1603
+ * @param {string} _obj.class テキストを装飾するCSSクラス名
1604
+ * @param {string} _obj.left テキストの位置(x座標)
1605
+ * @param {string} _obj.top テキストの位置(y座標)
1606
+ * @param {number} _obj.width テキストのフォントサイズ (font-size)
1607
+ * @param {string} _obj.height テキストの色 (color)
1608
+ * @param {string} _obj.animationName アニメーション名
1609
+ * @param {string} _obj.animationDuration アニメーションを動かす間隔(秒)
1610
+ * @param {number} _obj.opacity テキストの不透明度
1540
1611
  */
1541
1612
  const makeSpriteText = _obj => {
1542
1613
  let tmpInnerHTML = `<span class="${_obj.class}" style="display:inline-block;position:absolute;left:${wUnit(_obj.left)};top:${wUnit(_obj.top)}`;
@@ -1699,7 +1770,7 @@ const checkImage = _str => listMatching(_str, g_imgExtensions, { prefix: `[.]`,
1699
1770
 
1700
1771
  /**
1701
1772
  * back/masktitle(result)において、ジャンプ先のフレーム数を取得
1702
- * @param {string} _frames
1773
+ * @param {string} _frames ジャンプ先のフレーム数情報。コロン指定でジャンプ先を確率で分岐 (ex. 300:1500:1500)
1703
1774
  */
1704
1775
  const getSpriteJumpFrame = _frames => {
1705
1776
  const jumpFrames = _frames.split(`:`);
@@ -1930,7 +2001,7 @@ const getQueryParamVal = _name => {
1930
2001
  /**
1931
2002
  * ローディング文字用ラベルの作成
1932
2003
  */
1933
- const getLoadingLabel = _ => createDivCss2Label(`lblLoading`, g_lblNameObj.nowLoading, {
2004
+ const getLoadingLabel = () => createDivCss2Label(`lblLoading`, g_lblNameObj.nowLoading, {
1934
2005
  x: 0, y: g_sHeight - 40, w: g_sWidth, h: g_limitObj.setLblHeight,
1935
2006
  siz: g_limitObj.setLblSiz, align: C_ALIGN_RIGHT,
1936
2007
  });
@@ -2139,7 +2210,7 @@ const initialControl = async () => {
2139
2210
  /**
2140
2211
  * 作品別ローカルストレージの読み込み・初期設定
2141
2212
  */
2142
- const loadLocalStorage = _ => {
2213
+ const loadLocalStorage = () => {
2143
2214
  // URLからscoreId, h(高さ)を削除
2144
2215
  const url = new URL(location.href);
2145
2216
  url.searchParams.delete(`scoreId`);
@@ -2421,6 +2492,8 @@ const storeBaseData = (_scoreId, _scoreObj, _keyCtrlPtn) => {
2421
2492
  /**
2422
2493
  * ツール計算
2423
2494
  * @param {object} _scoreObj
2495
+ * @param {array} _scoreObj.arrowData
2496
+ * @param {array} _scoreObj.frzData
2424
2497
  */
2425
2498
  const calcLevel = _scoreObj => {
2426
2499
  //--------------------------------------------------------------
@@ -3320,7 +3393,10 @@ const getDifSelectorUse = (_headerFlg, _viewLists = g_headerObj.viewLists) => se
3320
3393
 
3321
3394
  /**
3322
3395
  * カラーセットの格納
3323
- * @param {object} obj
3396
+ * @param {string} object._from コピー元矢印カラーセット(の譜面番号)
3397
+ * @param {string} object._to コピー先矢印のカラーセット(の譜面番号)
3398
+ * @param {object} object._fromObj コピー元オブジェクト
3399
+ * @param {object} object._toObj コピー先オブジェクト
3324
3400
  */
3325
3401
  const resetColorType = ({ _from = ``, _to = ``, _fromObj = g_headerObj, _toObj = g_headerObj } = {}) => {
3326
3402
  _toObj[`setColor${_to}`] = structuredClone(_fromObj[`setColor${_from}`]);
@@ -3358,7 +3434,10 @@ const getMusicNameMultiLine = _musicName => {
3358
3434
 
3359
3435
  /**
3360
3436
  * 画像セットの入れ替え処理
3361
- * @param {array} _imgType
3437
+ * @param {object} _imgType
3438
+ * @param {string} _imgType.name
3439
+ * @param {string} _imgType.extension
3440
+ * @param {boolean} _initFlg
3362
3441
  */
3363
3442
  const updateImgType = (_imgType, _initFlg = false) => {
3364
3443
  if (_initFlg) {
@@ -3386,7 +3465,7 @@ const addGaugeFulls = _obj => _obj.map(key => g_gaugeOptionObj.customFulls[key]
3386
3465
  * 矢印・フリーズアロー色のデータ変換
3387
3466
  * @param {object} _baseObj
3388
3467
  * @param {object} _dosObj
3389
- * @param {object} objectList
3468
+ * @param {string} object.scoreId
3390
3469
  * @returns オブジェクト ※Object.assign(obj, resetBaseColorList(...))の形で呼び出しが必要
3391
3470
  */
3392
3471
  const resetBaseColorList = (_baseObj, _dosObj, { scoreId = `` } = {}) => {
@@ -3462,7 +3541,11 @@ const resetBaseColorList = (_baseObj, _dosObj, { scoreId = `` } = {}) => {
3462
3541
  * @param {string} _data
3463
3542
  * @param {array} _colorInit
3464
3543
  * @param {number} _colorInitLength
3465
- * @param {object} objectList
3544
+ * @param {array} object._defaultColorgrd
3545
+ * @param {boolean} object._colorCdPaddingUse
3546
+ * @param {boolean} object._defaultFrzColorUse
3547
+ * @param {string} object._objType
3548
+ * @param {boolean} object._shadowFlg
3466
3549
  */
3467
3550
  const setColorList = (_data, _colorInit, _colorInitLength,
3468
3551
  { _defaultColorgrd = g_headerObj.defaultColorgrd, _colorCdPaddingUse = false,
@@ -3532,7 +3615,7 @@ const setColorList = (_data, _colorInit, _colorInitLength,
3532
3615
  * 複合カスタムゲージの定義設定
3533
3616
  * |customGauge=Original::F,Normal::V,Escape::V|
3534
3617
  * @param {object} _dosObj
3535
- * @param {object} objectList
3618
+ * @param {string} object.scoreId
3536
3619
  * @returns オブジェクト ※Object.assign(obj, resetCustomGauge(...))の形で呼び出しが必要
3537
3620
  */
3538
3621
  const resetCustomGauge = (_dosObj, { scoreId = 0 } = {}) => {
@@ -3574,7 +3657,7 @@ const resetCustomGauge = (_dosObj, { scoreId = 0 } = {}) => {
3574
3657
  * @param {object} _dosObj
3575
3658
  * @param {string} _name
3576
3659
  * @param {number} _difLength
3577
- * @param {object} objectList
3660
+ * @param {string} object.scoreId
3578
3661
  */
3579
3662
  const getGaugeSetting = (_dosObj, _name, _difLength, { scoreId = 0 } = {}) => {
3580
3663
 
@@ -3661,8 +3744,16 @@ const getGaugeSetting = (_dosObj, _name, _difLength, { scoreId = 0 } = {}) => {
3661
3744
  /**
3662
3745
  * キー名の取得
3663
3746
  * @param {string} _key
3747
+ * @returns {string} キー名
3748
+ */
3749
+ const getKeyName = _key => unEscapeHtml(escapeHtml(g_keyObj[`keyName${_key}`]?.[0] ?? _key));
3750
+
3751
+ /**
3752
+ * キー単位名の取得
3753
+ * @param {string} _key
3754
+ * @returns {string} キー単位名(デフォルト: key)
3664
3755
  */
3665
- const getKeyName = _key => hasVal(g_keyObj[`keyName${_key}`]) ? g_keyObj[`keyName${_key}`] : _key;
3756
+ const getKeyUnitName = _key => unEscapeHtml(escapeHtml(g_keyObj[`keyName${_key}`]?.[1] ?? `key`));
3666
3757
 
3667
3758
  /**
3668
3759
  * KeyBoardEvent.code の値をCW Edition用のキーコードに変換
@@ -3679,6 +3770,7 @@ const getKeyCtrlVal = _kCdN => {
3679
3770
  /**
3680
3771
  * 一時的な追加キーの設定
3681
3772
  * @param {object} _dosObj
3773
+ * @param {array} object.keyExtraList
3682
3774
  */
3683
3775
  const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`) } = {}) => {
3684
3776
 
@@ -3788,10 +3880,12 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
3788
3880
  * @param {string} _key キー数
3789
3881
  * @param {string} _name 名前
3790
3882
  * @param {function} _convFunc マッピング関数
3791
- * @param {object} _obj errCd エラーコード, baseCopyFlg コピー配列の準備可否, loopFunc パターン別に処理する個別関数
3883
+ * @param {string} object.errCd エラーコード
3884
+ * @param {boolean} object.baseCopyFlg コピー配列の準備可否
3885
+ * @param {function} object.loopFunc パターン別に処理する個別関数
3792
3886
  * @returns 最小パターン数
3793
3887
  */
3794
- const newKeyMultiParam = (_key, _name, _convFunc, { errCd = ``, baseCopyFlg = false, loopFunc = _ => true } = {}) => {
3888
+ const newKeyMultiParam = (_key, _name, _convFunc, { errCd = ``, baseCopyFlg = false, loopFunc = () => true } = {}) => {
3795
3889
  let tmpMinPatterns = 1;
3796
3890
  const keyheader = _name + _key;
3797
3891
  const dfPtn = setIntVal(g_keyObj.dfPtnNum);
@@ -3956,7 +4050,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
3956
4050
  const dfPtnNum = g_keyObj.dfPtnNum;
3957
4051
 
3958
4052
  // キーの名前 (keyNameX)
3959
- g_keyObj[`keyName${newKey}`] = _dosObj[`keyName${newKey}`] ?? newKey;
4053
+ g_keyObj[`keyName${newKey}`] = _dosObj[`keyName${newKey}`]?.split(`,`) ?? [newKey, `key`];
3960
4054
 
3961
4055
  // キーの最小横幅 (minWidthX)
3962
4056
  g_keyObj[`minWidth${newKey}`] = _dosObj[`minWidth${newKey}`] ?? g_keyObj[`minWidth${newKey}`] ?? g_keyObj.minWidthDefault;
@@ -4075,7 +4169,7 @@ const setKeyDfVal = _ptnName => {
4075
4169
  /**
4076
4170
  * タイトル画面初期化
4077
4171
  */
4078
- const titleInit = _ => {
4172
+ const titleInit = () => {
4079
4173
 
4080
4174
  clearWindow(true);
4081
4175
  g_currentPage = `title`;
@@ -4228,19 +4322,19 @@ const titleInit = _ => {
4228
4322
  * @param {string} _url
4229
4323
  */
4230
4324
  const createCreditBtn = (_id, _text, _url) =>
4231
- createCss2Button(_id, _text, _ => true,
4232
- Object.assign(g_lblPosObj[_id], { siz: getLinkSiz(_text), whiteSpace: `normal`, resetFunc: _ => openLink(_url) }), g_cssObj.button_Default);
4325
+ createCss2Button(_id, _text, () => true,
4326
+ Object.assign(g_lblPosObj[_id], { siz: getLinkSiz(_text), whiteSpace: `normal`, resetFunc: () => openLink(_url) }), g_cssObj.button_Default);
4233
4327
 
4234
4328
  // ボタン描画
4235
4329
  multiAppend(divRoot,
4236
4330
 
4237
4331
  // Click Here
4238
- createCss2Button(`btnStart`, g_lblNameObj.clickHere, _ => clearTimeout(g_timeoutEvtTitleId), {
4239
- x: g_btnX(), w: g_btnWidth(), siz: g_limitObj.titleSiz, resetFunc: _ => optionInit(),
4332
+ createCss2Button(`btnStart`, g_lblNameObj.clickHere, () => clearTimeout(g_timeoutEvtTitleId), {
4333
+ x: g_btnX(), w: g_btnWidth(), siz: g_limitObj.titleSiz, resetFunc: () => optionInit(),
4240
4334
  }, g_cssObj.button_Start),
4241
4335
 
4242
4336
  // Reset
4243
- createCss2Button(`btnReset`, g_lblNameObj.dataReset, _ => {
4337
+ createCss2Button(`btnReset`, g_lblNameObj.dataReset, () => {
4244
4338
  reloadFlg = false;
4245
4339
  if (window.confirm(g_msgObj.dataResetConfirm)) {
4246
4340
  g_localStorage = {
@@ -4252,7 +4346,7 @@ const titleInit = _ => {
4252
4346
  reloadFlg = true;
4253
4347
  }
4254
4348
  }, Object.assign(g_lblPosObj.btnReset, {
4255
- resetFunc: _ => {
4349
+ resetFunc: () => {
4256
4350
  if (reloadFlg) {
4257
4351
  location.reload();
4258
4352
  }
@@ -4260,9 +4354,9 @@ const titleInit = _ => {
4260
4354
  }), g_cssObj.button_Reset),
4261
4355
 
4262
4356
  // ロケール切替
4263
- createCss2Button(`btnReload`, g_localeObj.val, _ => true,
4357
+ createCss2Button(`btnReload`, g_localeObj.val, () => true,
4264
4358
  Object.assign(g_lblPosObj.btnReload, {
4265
- resetFunc: _ => {
4359
+ resetFunc: () => {
4266
4360
  g_localeObj.num = (++g_localeObj.num) % g_localeObj.list.length;
4267
4361
  g_langStorage.locale = g_localeObj.list[g_localeObj.num];
4268
4362
  localStorage.setItem(`danoni-locale`, JSON.stringify(g_langStorage));
@@ -4271,9 +4365,9 @@ const titleInit = _ => {
4271
4365
  }), g_cssObj.button_Start),
4272
4366
 
4273
4367
  // ヘルプ
4274
- createCss2Button(`btnHelp`, `?`, _ => true,
4368
+ createCss2Button(`btnHelp`, `?`, () => true,
4275
4369
  Object.assign(g_lblPosObj.btnHelp, {
4276
- resetFunc: _ => openLink(g_lblNameObj.helpUrl),
4370
+ resetFunc: () => openLink(g_lblNameObj.helpUrl),
4277
4371
  }), g_cssObj.button_Setting),
4278
4372
 
4279
4373
  // 製作者表示
@@ -4283,16 +4377,16 @@ const titleInit = _ => {
4283
4377
  createCreditBtn(`lnkArtist`, `${g_lblNameObj.artist}: ${g_headerObj.artistName}`, g_headerObj.artistUrl),
4284
4378
 
4285
4379
  // バージョン描画
4286
- createCss2Button(`lnkVersion`, versionName, _ => true,
4380
+ createCss2Button(`lnkVersion`, versionName, () => true,
4287
4381
  Object.assign(g_lblPosObj.lnkVersion, {
4288
4382
  siz: getFontSize(versionName, g_sWidth * 3 / 4 - 20, getBasicFont(), 12),
4289
- resetFunc: _ => openLink(`https://github.com/cwtickle/danoniplus`),
4383
+ resetFunc: () => openLink(`https://github.com/cwtickle/danoniplus`),
4290
4384
  }), g_cssObj.button_Tweet),
4291
4385
 
4292
4386
  // セキュリティリンク
4293
- createCss2Button(`lnkComparison`, `&#x1f6e1;`, _ => true,
4387
+ createCss2Button(`lnkComparison`, `&#x1f6e1;`, () => true,
4294
4388
  Object.assign(g_lblPosObj.lnkComparison, {
4295
- resetFunc: _ => openLink(g_lblNameObj.securityUrl),
4389
+ resetFunc: () => openLink(g_lblNameObj.securityUrl),
4296
4390
  }), g_cssObj.button_Tweet),
4297
4391
  );
4298
4392
 
@@ -4308,7 +4402,7 @@ const titleInit = _ => {
4308
4402
  } else {
4309
4403
  multiAppend(divRoot,
4310
4404
  createDivCss2Label(`lblComment`, convCommentVal, g_lblPosObj.lblComment),
4311
- createCss2Button(`btnComment`, g_lblNameObj.comment, _ => {
4405
+ createCss2Button(`btnComment`, g_lblNameObj.comment, () => {
4312
4406
  const lblCommentDef = lblComment.style.display;
4313
4407
  lblComment.style.display = (lblCommentDef === C_DIS_NONE ? C_DIS_INHERIT : C_DIS_NONE);
4314
4408
  }, g_lblPosObj.btnComment, g_cssObj.button_Default),
@@ -4326,7 +4420,7 @@ const titleInit = _ => {
4326
4420
  /**
4327
4421
  * タイトルのモーション設定
4328
4422
  */
4329
- const flowTitleTimeline = _ => {
4423
+ const flowTitleTimeline = () => {
4330
4424
 
4331
4425
  // ユーザカスタムイベント(フレーム毎)
4332
4426
  g_customJsObj.titleEnterFrame.forEach(func => func());
@@ -4345,10 +4439,10 @@ const titleInit = _ => {
4345
4439
  g_timeoutEvtTitleId = setTimeout(flowTitleTimeline, 1000 / g_fps);
4346
4440
 
4347
4441
  // キー操作イベント(デフォルト)
4348
- setShortcutEvent(g_currentPage, _ => true, { dfEvtFlg: true });
4442
+ setShortcutEvent(g_currentPage, () => true, { dfEvtFlg: true });
4349
4443
 
4350
- document.oncontextmenu = _ => true;
4351
- divRoot.oncontextmenu = _ => false;
4444
+ document.oncontextmenu = () => true;
4445
+ divRoot.oncontextmenu = () => false;
4352
4446
 
4353
4447
  g_skinJsObj.title.forEach(func => func());
4354
4448
  };
@@ -4356,7 +4450,8 @@ const titleInit = _ => {
4356
4450
  /**
4357
4451
  * 警告用ウィンドウ(汎用)を表示
4358
4452
  * @param {string} _text
4359
- * @param {object} _options resetFlg: 警告リストをクリアして再作成, backBtnUse: Backボタンを付与
4453
+ * @param {boolean} object.resetFlg 警告リストをクリアして再作成
4454
+ * @param {boolean} object.backBtnUse Backボタンを付与
4360
4455
  */
4361
4456
  const makeWarningWindow = (_text = ``, { resetFlg = false, backBtnUse = false } = {}) => {
4362
4457
  const displayName = (g_currentPage === `initial` ? `title` : g_currentPage);
@@ -4373,8 +4468,8 @@ const makeWarningWindow = (_text = ``, { resetFlg = false, backBtnUse = false }
4373
4468
  }
4374
4469
  if (backBtnUse) {
4375
4470
  // タイトルバック用ボタン
4376
- divRoot.appendChild(createCss2Button(`btnBack`, g_lblNameObj.b_back, _ => true, {
4377
- resetFunc: _ => titleInit(),
4471
+ divRoot.appendChild(createCss2Button(`btnBack`, g_lblNameObj.b_back, () => true, {
4472
+ resetFunc: () => titleInit(),
4378
4473
  }, g_cssObj.button_Back));
4379
4474
  }
4380
4475
  };
@@ -4382,6 +4477,8 @@ const makeWarningWindow = (_text = ``, { resetFlg = false, backBtnUse = false }
4382
4477
  /**
4383
4478
  * お知らせウィンドウ(汎用)を表示
4384
4479
  * @param {string} _text
4480
+ * @param {string} _animationName
4481
+ * @param {string} object._backColor
4385
4482
  */
4386
4483
  const makeInfoWindow = (_text, _animationName = ``, { _backColor = `#ccccff` } = {}) => {
4387
4484
  const lblWarning = setWindowStyle(`<p>${_text}</p>`, _backColor, `#000066`, C_ALIGN_CENTER);
@@ -4402,6 +4499,9 @@ const makeInfoWindow = (_text, _animationName = ``, { _backColor = `#ccccff` } =
4402
4499
  * @param {string} _bkColor
4403
4500
  * @param {string} _textColor
4404
4501
  * @param {string} _align
4502
+ * @param {number} object._x
4503
+ * @param {number} object._y
4504
+ * @param {number} object._w
4405
4505
  */
4406
4506
  const setWindowStyle = (_text, _bkColor, _textColor, _align = C_ALIGN_LEFT, { _x = g_btnX(), _y = 0, _w = g_btnWidth() } = {}) => {
4407
4507
 
@@ -4452,24 +4552,24 @@ const commonSettingBtn = _labelName => {
4452
4552
  multiAppend(divRoot,
4453
4553
 
4454
4554
  // タイトル画面へ戻る
4455
- createCss2Button(`btnBack`, g_lblNameObj.b_back, _ => true,
4555
+ createCss2Button(`btnBack`, g_lblNameObj.b_back, () => true,
4456
4556
  Object.assign(g_lblPosObj.btnBack, {
4457
- animationName: (g_initialFlg ? `` : `smallToNormalY`), resetFunc: _ => titleInit(),
4557
+ animationName: (g_initialFlg ? `` : `smallToNormalY`), resetFunc: () => titleInit(),
4458
4558
  }), g_cssObj.button_Back),
4459
4559
 
4460
4560
  // キーコンフィグ画面へ移動
4461
- createCss2Button(`btnKeyConfig`, g_lblNameObj.b_keyConfig, _ => true,
4561
+ createCss2Button(`btnKeyConfig`, g_lblNameObj.b_keyConfig, () => true,
4462
4562
  Object.assign(g_lblPosObj.btnKeyConfig, {
4463
- animationName: (g_initialFlg ? `` : `smallToNormalY`), resetFunc: _ => keyConfigInit(`Main`),
4563
+ animationName: (g_initialFlg ? `` : `smallToNormalY`), resetFunc: () => keyConfigInit(`Main`),
4464
4564
  }), g_cssObj.button_Setting),
4465
4565
 
4466
4566
  // プレイ開始
4467
- makePlayButton(_ => loadMusic()),
4567
+ makePlayButton(() => loadMusic()),
4468
4568
 
4469
4569
  // Display設定へ移動
4470
- createCss2Button(`btn${_labelName}`, `>`, _ => true,
4570
+ createCss2Button(`btn${_labelName}`, `>`, () => true,
4471
4571
  Object.assign(g_lblPosObj.btnSwitchSetting, {
4472
- title: g_msgObj[`to${_labelName}`], resetFunc: _ => g_jumpSettingWindow[g_currentPage](),
4572
+ title: g_msgObj[`to${_labelName}`], resetFunc: () => g_jumpSettingWindow[g_currentPage](),
4473
4573
  }), g_cssObj.button_Mini),
4474
4574
 
4475
4575
  // データセーブフラグの切替
@@ -4484,7 +4584,7 @@ const commonSettingBtn = _labelName => {
4484
4584
  * PLAYボタンの作成
4485
4585
  * @param {function} _func
4486
4586
  */
4487
- const makePlayButton = _func => createCss2Button(`btnPlay`, g_lblNameObj.b_play, _ => true,
4587
+ const makePlayButton = _func => createCss2Button(`btnPlay`, g_lblNameObj.b_play, () => true,
4488
4588
  Object.assign(g_lblPosObj.btnPlay, {
4489
4589
  animationName: (g_initialFlg ? `` : `smallToNormalY`), resetFunc: _func,
4490
4590
  }), g_cssObj.button_Next);
@@ -4492,7 +4592,7 @@ const makePlayButton = _func => createCss2Button(`btnPlay`, g_lblNameObj.b_play,
4492
4592
  /**
4493
4593
  * 設定・オプション画面初期化
4494
4594
  */
4495
- const optionInit = _ => {
4595
+ const optionInit = () => {
4496
4596
 
4497
4597
  clearWindow(true);
4498
4598
  const divRoot = document.getElementById(`divRoot`);
@@ -4513,8 +4613,8 @@ const optionInit = _ => {
4513
4613
  commonSettingBtn(`Display`);
4514
4614
 
4515
4615
  // キー操作イベント(デフォルト)
4516
- setShortcutEvent(g_currentPage, _ => true, { dfEvtFlg: true });
4517
- document.oncontextmenu = _ => true;
4616
+ setShortcutEvent(g_currentPage, () => true, { dfEvtFlg: true });
4617
+ document.oncontextmenu = () => true;
4518
4618
  g_initialFlg = true;
4519
4619
 
4520
4620
  g_skinJsObj.option.forEach(func => func());
@@ -4560,12 +4660,12 @@ const inputSliderAppearance = (_slider, _link) => {
4560
4660
  /**
4561
4661
  * 譜面変更セレクターの削除
4562
4662
  */
4563
- const resetDifWindow = _ => {
4663
+ const resetDifWindow = () => {
4564
4664
  if (document.getElementById(`difList`) !== null) {
4565
4665
  deleteChildspriteAll(`difList`);
4566
4666
  [`difList`, `difCover`, `btnDifU`, `btnDifD`].forEach(obj => document.getElementById(obj).remove());
4567
4667
  g_currentPage = `option`;
4568
- setShortcutEvent(g_currentPage, _ => true, { displayFlg: false, dfEvtFlg: true });
4668
+ setShortcutEvent(g_currentPage, () => true, { displayFlg: false, dfEvtFlg: true });
4569
4669
  }
4570
4670
  };
4571
4671
 
@@ -4605,7 +4705,7 @@ const makeDifList = (_difList, _targetKey = ``) => {
4605
4705
  if (g_headerObj.makerView) {
4606
4706
  text += ` (${g_headerObj.creatorNames[j]})`;
4607
4707
  }
4608
- _difList.appendChild(makeDifLblCssButton(`dif${k}`, text, k, _ => nextDifficulty(j - g_stateObj.scoreId),
4708
+ _difList.appendChild(makeDifLblCssButton(`dif${k}`, text, k, () => nextDifficulty(j - g_stateObj.scoreId),
4609
4709
  { btnStyle: (j === g_stateObj.scoreId ? `Setting` : `Default`) }));
4610
4710
  if (j === g_stateObj.scoreId) {
4611
4711
  pos = k + 6.5 * (g_sHeight - 239) / 261;
@@ -4619,7 +4719,10 @@ const makeDifList = (_difList, _targetKey = ``) => {
4619
4719
  x: 0, y: 27, w: g_limitObj.difCoverWidth, h: 16, siz: 12, fontWeight: `bold`,
4620
4720
  }));
4621
4721
  }
4622
- lblDifCnt.innerHTML = `${_targetKey === '' ? 'ALL' : _targetKey + 'k'}: ${curk === -1 ? '-' : curk + 1} / ${k}`;
4722
+ // フィルタなし> ALL: 1/ 5, フィルタあり> 7k: 1/ 1 のように現在位置と(フィルタされた)譜面数を表示
4723
+ // 現在位置が不確定の場合は、7k: -/ 1 のように現在位置を「-」で表示
4724
+ const keyUnitAbbName = getStgDetailName(getKeyUnitName(_targetKey)).slice(0, 1) || ``;
4725
+ lblDifCnt.innerHTML = `${_targetKey === '' ? 'ALL' : getKeyName(_targetKey) + keyUnitAbbName}: ${curk === -1 ? '-' : curk + 1} / ${k}`;
4623
4726
  _difList.scrollTop = Math.max(pos * g_limitObj.setLblHeight - parseInt(_difList.style.height), 0);
4624
4727
  };
4625
4728
 
@@ -4629,7 +4732,7 @@ const makeDifList = (_difList, _targetKey = ``) => {
4629
4732
  */
4630
4733
  const makeDifBtn = (_scrollNum = 1) => {
4631
4734
  const dir = _scrollNum === 1 ? `D` : `U`;
4632
- return createCss2Button(`btnDif${dir}`, g_settingBtnObj.chara[dir], _ => {
4735
+ return createCss2Button(`btnDif${dir}`, g_settingBtnObj.chara[dir], () => {
4633
4736
  do {
4634
4737
  g_stateObj.scoreId = getNextDifficulty(g_stateObj.scoreId, _scrollNum);
4635
4738
  } while (g_stateObj.filterKeys !== `` && g_stateObj.filterKeys !== g_headerObj.keyLabels[g_stateObj.scoreId]);
@@ -4658,14 +4761,14 @@ const createDifWindow = (_key = ``) => {
4658
4761
 
4659
4762
  // ランダム選択
4660
4763
  difCover.appendChild(
4661
- makeDifLblCssButton(`difRandom`, `RANDOM`, 0, _ => {
4764
+ makeDifLblCssButton(`difRandom`, `RANDOM`, 0, () => {
4662
4765
  nextDifficulty(Math.floor(Math.random() * g_headerObj.keyLabels.length));
4663
4766
  }, { w: g_limitObj.difCoverWidth })
4664
4767
  );
4665
4768
 
4666
4769
  // 全リスト
4667
4770
  difCover.appendChild(
4668
- makeDifLblCssButton(`keyFilter`, `ALL`, 1.9, _ => {
4771
+ makeDifLblCssButton(`keyFilter`, `ALL`, 1.9, () => {
4669
4772
  resetDifWindow();
4670
4773
  g_stateObj.filterKeys = ``;
4671
4774
  createDifWindow();
@@ -4676,7 +4779,7 @@ const createDifWindow = (_key = ``) => {
4676
4779
  let pos = 0;
4677
4780
  g_headerObj.viewKeyLists.forEach((targetKey, m) => {
4678
4781
  difFilter.appendChild(
4679
- makeDifLblCssButton(`keyFilter${m}`, `${getKeyName(targetKey)} ${getStgDetailName('key')}`, m, _ => {
4782
+ makeDifLblCssButton(`keyFilter${m}`, `${getKeyName(targetKey)} ${getStgDetailName(getKeyUnitName(targetKey))}`, m, () => {
4680
4783
  resetDifWindow();
4681
4784
  g_stateObj.filterKeys = targetKey;
4682
4785
  createDifWindow(targetKey);
@@ -4691,6 +4794,10 @@ const createDifWindow = (_key = ``) => {
4691
4794
  multiAppend(optionsprite, makeDifBtn(-1), makeDifBtn());
4692
4795
  };
4693
4796
 
4797
+ /**
4798
+ * 譜面変更ボタンを押したときの処理
4799
+ * @param {number} _num
4800
+ */
4694
4801
  const changeDifficulty = (_num = 1) => {
4695
4802
  if (g_headerObj.difSelectorUse) {
4696
4803
  g_stateObj.filterKeys = ``;
@@ -4872,7 +4979,13 @@ const updateScoreDetailLabel = (_name, _label, _value, _pos = 0, _labelname = _l
4872
4979
  /**
4873
4980
  * グラフの縦軸を描画
4874
4981
  * @param {object} _context
4875
- * @param {number} _resolution
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座標)目盛の上限値
4876
4989
  */
4877
4990
  const drawBaseLine = (_context, { _fixed = 2, _mark = ``, _resolution = 10, _a = -90, _b = 105, _min = 0, _max = 2 } = {}) => {
4878
4991
  _context.clearRect(0, 0, g_limitObj.graphWidth, g_limitObj.graphHeight);
@@ -4893,7 +5006,10 @@ const drawBaseLine = (_context, { _fixed = 2, _mark = ``, _resolution = 10, _a =
4893
5006
  * @param {object} _context
4894
5007
  * @param {number} _y
4895
5008
  * @param {string} _lineType
4896
- * @param {number} _fixed
5009
+ * @param {number} object._fixed y座標)目盛表記する小数桁数
5010
+ * @param {string} object._mark y座標)目盛の単位
5011
+ * @param {number} object._a
5012
+ * @param {number} object._b
4897
5013
  */
4898
5014
  const drawLine = (_context, _y, _lineType, { _fixed, _mark, _a, _b } = {}) => {
4899
5015
  const lineY = (_y - 1) * _a + _b;
@@ -4966,7 +5082,7 @@ const makeDifInfoLabels = _scoreId => {
4966
5082
  makeDifInfoLabel(`dataArrowInfo`, ``, g_lblPosObj.dataArrowInfo),
4967
5083
  makeDifInfoLabel(`lblArrowInfo2`, ``, g_lblPosObj.lblArrowInfo2),
4968
5084
  makeDifInfoLabel(`dataArrowInfo2`, ``, g_lblPosObj.dataArrowInfo2),
4969
- makeDifLblCssButton(`lnkDifInfo`, g_lblNameObj.s_print, 8, _ => {
5085
+ makeDifLblCssButton(`lnkDifInfo`, g_lblNameObj.s_print, 8, () => {
4970
5086
  copyTextToClipboard(
4971
5087
  `****** ${g_lblNameObj.s_printTitle} [${g_version}] ******\r\n\r\n`
4972
5088
  + `\t${g_lblNameObj.s_printHeader}\r\n\r\n${printData}`, g_msgInfoObj.I_0003
@@ -5151,13 +5267,13 @@ const makeHighScore = _scoreId => {
5151
5267
  }
5152
5268
  const resultText = `${unEscapeHtml(tweetResultTmp)}`;
5153
5269
  multiAppend(detailHighScore,
5154
- makeDifLblCssButton(`lnkResetHighScore`, g_lblNameObj.s_resetResult, 7, _ => {
5270
+ makeDifLblCssButton(`lnkResetHighScore`, g_lblNameObj.s_resetResult, 7, () => {
5155
5271
  if (window.confirm(g_msgObj.highscResetConfirm)) {
5156
5272
  delete g_localStorage.highscores[scoreName];
5157
5273
  makeHighScore(_scoreId);
5158
5274
  }
5159
5275
  }, Object.assign({ btnStyle: `Reset` }, g_lblPosObj.lnkHighScore)),
5160
- makeDifLblCssButton(`lnkHighScore`, g_lblNameObj.s_result, 8, _ => {
5276
+ makeDifLblCssButton(`lnkHighScore`, g_lblNameObj.s_result, 8, () => {
5161
5277
  copyTextToClipboard(keyIsShift() ? resultCommon : resultText, g_msgInfoObj.I_0001);
5162
5278
  }, g_lblPosObj.lnkHighScore),
5163
5279
  );
@@ -5172,6 +5288,8 @@ const makeHighScore = _scoreId => {
5172
5288
  * この関数を実行後、このフラグはONに戻るようになっている
5173
5289
  * - [キーコン]->[初期化]->[名称設定]の順に配置する。
5174
5290
  * 初期化処理にてキー数関連の設定を行っているため、この順序で無いとデータが正しく格納されない
5291
+ *
5292
+ * @param {boolean} _initFlg
5175
5293
  */
5176
5294
  const setDifficulty = (_initFlg) => {
5177
5295
 
@@ -5295,7 +5413,8 @@ const setDifficulty = (_initFlg) => {
5295
5413
 
5296
5414
  // 譜面名設定 (Difficulty)
5297
5415
  const difWidth = parseFloat(lnkDifficulty.style.width);
5298
- const difNames = [`${getKeyName(g_keyObj.currentKey)} ${getStgDetailName('key')} / ${g_headerObj.difLabels[g_stateObj.scoreId]}`];
5416
+ const keyUnitName = getStgDetailName(getKeyUnitName(g_keyObj.currentKey));
5417
+ const difNames = [`${getKeyName(g_keyObj.currentKey)} ${keyUnitName} / ${g_headerObj.difLabels[g_stateObj.scoreId]}`];
5299
5418
  lnkDifficulty.style.fontSize = wUnit(getFontSize(difNames[0], difWidth, getBasicFont(), g_limitObj.setLblSiz));
5300
5419
 
5301
5420
  if (g_headerObj.makerView) {
@@ -5366,15 +5485,15 @@ const createOptionWindow = _sprite => {
5366
5485
  // 縦位置: 0
5367
5486
  spriteList.difficulty.appendChild(createLblSetting(`Difficulty`, -5));
5368
5487
 
5369
- const lnkDifficulty = makeSettingLblCssButton(`lnkDifficulty`, ``, 0, _ => changeDifficulty(), {
5370
- y: -10, h: g_limitObj.setLblHeight + 10, cxtFunc: _ => changeDifficulty(-1),
5488
+ const lnkDifficulty = makeSettingLblCssButton(`lnkDifficulty`, ``, 0, () => changeDifficulty(), {
5489
+ y: -10, h: g_limitObj.setLblHeight + 10, cxtFunc: () => changeDifficulty(-1),
5371
5490
  });
5372
5491
 
5373
5492
  // 譜面選択ボタン(メイン、右回し、左回し)
5374
5493
  multiAppend(spriteList.difficulty,
5375
5494
  lnkDifficulty,
5376
- makeMiniCssButton(`lnkDifficulty`, `R`, 0, _ => nextDifficulty(), { dy: -10, dh: 10 }),
5377
- makeMiniCssButton(`lnkDifficulty`, `L`, 0, _ => nextDifficulty(-1), { dy: -10, dh: 10 }),
5495
+ makeMiniCssButton(`lnkDifficulty`, `R`, 0, () => nextDifficulty(), { dy: -10, dh: 10 }),
5496
+ makeMiniCssButton(`lnkDifficulty`, `L`, 0, () => nextDifficulty(-1), { dy: -10, dh: 10 }),
5378
5497
  );
5379
5498
  createScText(spriteList.difficulty, `Difficulty`);
5380
5499
  if (g_headerObj.difSelectorUse) {
@@ -5428,12 +5547,12 @@ const createOptionWindow = _sprite => {
5428
5547
 
5429
5548
  if (g_settings.scoreDetails.length > 0) {
5430
5549
  multiAppend(spriteList.speed,
5431
- createCss2Button(`btnGraphB`, ``, _ => true, {
5432
- x: -25, y: -60, w: 0, h: 0, opacity: 0, resetFunc: _ => setScoreDetail(true),
5550
+ createCss2Button(`btnGraphB`, ``, () => true, {
5551
+ x: -25, y: -60, w: 0, h: 0, opacity: 0, resetFunc: () => setScoreDetail(true),
5433
5552
  }, g_cssObj.button_Mini),
5434
- createCss2Button(`btnGraph`, `i`, _ => true, {
5553
+ createCss2Button(`btnGraph`, `i`, () => true, {
5435
5554
  x: -25, y: -60, w: 30, h: 30, siz: g_limitObj.jdgCharaSiz, title: g_msgObj.graph,
5436
- resetFunc: _ => setScoreDetail(), cxtFunc: _ => setScoreDetail(),
5555
+ resetFunc: () => setScoreDetail(), cxtFunc: () => setScoreDetail(),
5437
5556
  }, g_cssObj.button_Mini)
5438
5557
  );
5439
5558
  g_stateObj.scoreDetailViewFlg = false;
@@ -5471,7 +5590,7 @@ const createOptionWindow = _sprite => {
5471
5590
  );
5472
5591
  g_settings.scoreDetails.forEach((sd, j) => {
5473
5592
  scoreDetail.appendChild(
5474
- makeDifLblCssButton(`lnk${sd}G`, getStgDetailName(sd), j, _ => changeScoreDetail(j), {
5593
+ makeDifLblCssButton(`lnk${sd}G`, getStgDetailName(sd), j, () => changeScoreDetail(j), {
5475
5594
  w: g_limitObj.difCoverWidth, h: 20, title: g_msgObj[`s_${sd}`],
5476
5595
  btnStyle: (g_stateObj.scoreDetail === sd ? `Setting` : `Default`),
5477
5596
  })
@@ -5482,6 +5601,7 @@ const createOptionWindow = _sprite => {
5482
5601
 
5483
5602
  /**
5484
5603
  * 譜面明細表示/非表示ボタンの処理
5604
+ * @param {boolean} _resetFlg
5485
5605
  */
5486
5606
  const setScoreDetail = (_resetFlg = false) => {
5487
5607
  if (g_currentPage === `difSelector`) {
@@ -5512,7 +5632,7 @@ const createOptionWindow = _sprite => {
5512
5632
  // リバース (Reverse) / スクロール (Scroll)
5513
5633
  // 縦位置: 4
5514
5634
  createGeneralSetting(spriteList.reverse, `reverse`, {
5515
- addRFunc: _ => {
5635
+ addRFunc: () => {
5516
5636
  if (g_headerObj.scrollUse && g_settings.scrolls.length > 1) {
5517
5637
  setReverseView(document.getElementById(`btnReverse`));
5518
5638
  }
@@ -5539,14 +5659,14 @@ const createOptionWindow = _sprite => {
5539
5659
  // ミラー・ランダム (Shuffle)
5540
5660
  // 縦位置: 5.5
5541
5661
  createGeneralSetting(spriteList.shuffle, `shuffle`, g_settings.scoreDetails.length > 0 ? {
5542
- addRFunc: _ => makeHighScore(g_stateObj.scoreId),
5662
+ addRFunc: () => makeHighScore(g_stateObj.scoreId),
5543
5663
  } : {});
5544
5664
 
5545
5665
  // ---------------------------------------------------
5546
5666
  // 鑑賞モード設定 (AutoPlay)
5547
5667
  // 縦位置: 6.5
5548
5668
  createGeneralSetting(spriteList.autoPlay, `autoPlay`, g_settings.scoreDetails.length > 0 ? {
5549
- addRFunc: _ => makeHighScore(g_stateObj.scoreId),
5669
+ addRFunc: () => makeHighScore(g_stateObj.scoreId),
5550
5670
  } : {});
5551
5671
 
5552
5672
  // ---------------------------------------------------
@@ -5559,9 +5679,9 @@ const createOptionWindow = _sprite => {
5559
5679
 
5560
5680
  if (g_headerObj.gaugeUse) {
5561
5681
  multiAppend(spriteList.gauge,
5562
- makeSettingLblCssButton(`lnkGauge`, ``, 0, _ => setGauge(1), { cxtFunc: _ => setGauge(-1) }),
5563
- makeMiniCssButton(`lnkGauge`, `R`, 0, _ => setGauge(1)),
5564
- makeMiniCssButton(`lnkGauge`, `L`, 0, _ => setGauge(-1)),
5682
+ makeSettingLblCssButton(`lnkGauge`, ``, 0, () => setGauge(1), { cxtFunc: () => setGauge(-1) }),
5683
+ makeMiniCssButton(`lnkGauge`, `R`, 0, () => setGauge(1)),
5684
+ makeMiniCssButton(`lnkGauge`, `L`, 0, () => setGauge(-1)),
5565
5685
  );
5566
5686
  createScText(spriteList.gauge, `Gauge`);
5567
5687
  } else {
@@ -5590,10 +5710,10 @@ const createOptionWindow = _sprite => {
5590
5710
  // 縦位置: 10.5 短縮ショートカットあり
5591
5711
  createGeneralSetting(spriteList.adjustment, `adjustment`, {
5592
5712
  skipTerms: g_settings.adjustmentTerms, hiddenBtn: true, scLabel: g_lblNameObj.sc_adjustment, roundNum: 5,
5593
- unitName: g_lblNameObj.frame, addRFunc: _ => viewAdjustment(),
5713
+ unitName: g_lblNameObj.frame, addRFunc: () => viewAdjustment(),
5594
5714
  });
5595
5715
 
5596
- const viewAdjustment = _ => {
5716
+ const viewAdjustment = () => {
5597
5717
  if (g_headerObj.playbackRate !== 1) {
5598
5718
  const adjustmentVal = isLocalMusicFile(g_stateObj.scoreId) ?
5599
5719
  Math.round(g_stateObj.adjustment / g_headerObj.playbackRate) :
@@ -5624,8 +5744,8 @@ const createOptionWindow = _sprite => {
5624
5744
  multiAppend(spriteList.fadein,
5625
5745
 
5626
5746
  // 右回し・左回しボタン
5627
- makeMiniCssButton(`lnkFadein`, `R`, 0, _ => setFadein(1)),
5628
- makeMiniCssButton(`lnkFadein`, `L`, 0, _ => setFadein(-1)),
5747
+ makeMiniCssButton(`lnkFadein`, `R`, 0, () => setFadein(1)),
5748
+ makeMiniCssButton(`lnkFadein`, `L`, 0, () => setFadein(-1)),
5629
5749
 
5630
5750
  // フェードインのスライダー処理
5631
5751
  createDivCss2Label(`lblFadeinBar`, `<input id="fadeinSlider" type="range" value="${g_stateObj.fadein}" min="0" max="99" step="1">`,
@@ -5634,7 +5754,7 @@ const createOptionWindow = _sprite => {
5634
5754
  );
5635
5755
 
5636
5756
  const fadeinSlider = document.getElementById(`fadeinSlider`);
5637
- fadeinSlider.addEventListener(`input`, _ =>
5757
+ fadeinSlider.addEventListener(`input`, () =>
5638
5758
  g_stateObj.fadein = inputSlider(fadeinSlider, lnkFadein), false);
5639
5759
 
5640
5760
  // ---------------------------------------------------
@@ -5650,17 +5770,26 @@ const createOptionWindow = _sprite => {
5650
5770
 
5651
5771
  // 設定画面の一通りのオブジェクトを作成後に譜面・速度・ゲージ設定をまとめて行う
5652
5772
  setDifficulty(false);
5653
- optionsprite.oncontextmenu = _ => false;
5773
+ optionsprite.oncontextmenu = () => false;
5654
5774
  };
5655
5775
 
5656
5776
  /**
5657
5777
  * 汎用設定
5658
5778
  * @param {object} _obj
5659
5779
  * @param {string} _settingName
5660
- * @param {object} _options
5780
+ * @param {string} object.unitName 設定名の単位
5781
+ * @param {array} object.skipTerms ボタンの設定スキップ間隔(デフォルト:[1(外側), 1(内側), 1(最内側)])
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座標位置
5661
5790
  */
5662
5791
  const createGeneralSetting = (_obj, _settingName, { unitName = ``,
5663
- skipTerms = fillArray(3, 1), hiddenBtn = false, addRFunc = _ => { }, addLFunc = addRFunc,
5792
+ skipTerms = fillArray(3, 1), hiddenBtn = false, addRFunc = () => { }, addLFunc = addRFunc,
5664
5793
  settingLabel = _settingName, displayName = g_currentPage, scLabel = ``, roundNum = 0, adjY = 0 } = {}) => {
5665
5794
 
5666
5795
  const settingUpper = toCapitalize(_settingName);
@@ -5672,39 +5801,39 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
5672
5801
 
5673
5802
  multiAppend(_obj,
5674
5803
  makeSettingLblCssButton(linkId, `${initName}${g_localStorage[_settingName] === g_stateObj[_settingName] ? ' *' : ''}`, 0,
5675
- _ => {
5676
- setSetting(skipTerms[1], _settingName, unitName, roundNum, { func: _ => addRFunc() });
5804
+ () => {
5805
+ setSetting(skipTerms[1], _settingName, unitName, roundNum, { func: () => addRFunc() });
5677
5806
  }, {
5678
- cxtFunc: _ => {
5679
- setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() });
5807
+ cxtFunc: () => {
5808
+ setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum, { func: () => addLFunc() });
5680
5809
  }
5681
5810
  }),
5682
5811
 
5683
5812
  // 右回し・左回しボタン(外側)
5684
- makeMiniCssButton(linkId, `R`, 0, _ =>
5685
- setSetting(skipTerms[0], _settingName, unitName, roundNum, { func: _ => addRFunc() })),
5686
- makeMiniCssButton(linkId, `L`, 0, _ =>
5687
- setSetting(skipTerms[0] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() })),
5813
+ makeMiniCssButton(linkId, `R`, 0, () =>
5814
+ setSetting(skipTerms[0], _settingName, unitName, roundNum, { func: () => addRFunc() })),
5815
+ makeMiniCssButton(linkId, `L`, 0, () =>
5816
+ setSetting(skipTerms[0] * (-1), _settingName, unitName, roundNum, { func: () => addLFunc() })),
5688
5817
  );
5689
5818
 
5690
5819
  // 右回し・左回しボタン(内側)
5691
5820
  if (skipTerms[1] > 1) {
5692
5821
  multiAppend(_obj,
5693
- makeMiniCssButton(linkId, `RR`, 0, _ =>
5694
- setSetting(skipTerms[1], _settingName, unitName, roundNum, { func: _ => addRFunc() })),
5695
- makeMiniCssButton(linkId, `LL`, 0, _ =>
5696
- setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() })),
5822
+ makeMiniCssButton(linkId, `RR`, 0, () =>
5823
+ setSetting(skipTerms[1], _settingName, unitName, roundNum, { func: () => addRFunc() })),
5824
+ makeMiniCssButton(linkId, `LL`, 0, () =>
5825
+ setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum, { func: () => addLFunc() })),
5697
5826
  );
5698
5827
  }
5699
5828
 
5700
5829
  // 右回し・左回しボタン(最内側)
5701
5830
  if (skipTerms[2] > 1) {
5702
5831
  multiAppend(_obj,
5703
- makeMiniCssButton(linkId, `RRR`, 0, _ =>
5704
- setSetting(skipTerms[2], _settingName, unitName, roundNum, { func: _ => addRFunc() })
5832
+ makeMiniCssButton(linkId, `RRR`, 0, () =>
5833
+ setSetting(skipTerms[2], _settingName, unitName, roundNum, { func: () => addRFunc() })
5705
5834
  , { dw: -g_limitObj.setMiniWidth / 2 }),
5706
- makeMiniCssButton(linkId, `LLL`, 0, _ =>
5707
- setSetting(skipTerms[2] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() })
5835
+ makeMiniCssButton(linkId, `LLL`, 0, () =>
5836
+ setSetting(skipTerms[2] * (-1), _settingName, unitName, roundNum, { func: () => addLFunc() })
5708
5837
  , { dw: -g_limitObj.setMiniWidth / 2 }),
5709
5838
  );
5710
5839
  }
@@ -5712,8 +5841,8 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
5712
5841
  // 右回し・左回しボタン(不可視)
5713
5842
  if (hiddenBtn) {
5714
5843
  multiAppend(_obj,
5715
- makeMiniCssButton(linkId, `HR`, 0, _ => setSetting(1, _settingName, unitName, roundNum, { func: _ => addRFunc() }), { visibility: `hidden` }),
5716
- makeMiniCssButton(linkId, `HL`, 0, _ => setSetting(-1, _settingName, unitName, roundNum, { func: _ => addLFunc() }), { visibility: `hidden` }),
5844
+ makeMiniCssButton(linkId, `HR`, 0, () => setSetting(1, _settingName, unitName, roundNum, { func: () => addRFunc() }), { visibility: `hidden` }),
5845
+ makeMiniCssButton(linkId, `HL`, 0, () => setSetting(-1, _settingName, unitName, roundNum, { func: () => addLFunc() }), { visibility: `hidden` }),
5717
5846
  );
5718
5847
  }
5719
5848
 
@@ -5753,10 +5882,11 @@ const getStgDetailName = _name => {
5753
5882
  * 設定メイン・汎用
5754
5883
  * @param {number} _scrollNum
5755
5884
  * @param {string} _settingName
5756
- * @param {string} _unitName
5757
- * @param {number} _roundNum
5885
+ * @param {string} _unitName 設定の単位名
5886
+ * @param {number} _roundNum 設定スキップ間隔の丸め基準数
5887
+ * @param {function} object.func 設定ボタンを押した後の追加処理
5758
5888
  */
5759
- const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0, { func = _ => true } = {}) => {
5889
+ const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0, { func = () => true } = {}) => {
5760
5890
  let settingNum = g_settings[`${_settingName}Num`];
5761
5891
  const settingList = g_settings[`${_settingName}s`];
5762
5892
  const settingMax = settingList.length - 1;
@@ -5808,7 +5938,7 @@ const getKeyReverse = (_localStorage, _extraKeyName = ``) => {
5808
5938
  /**
5809
5939
  * リバースのデフォルト化処理
5810
5940
  */
5811
- const setReverseDefault = _ => {
5941
+ const setReverseDefault = () => {
5812
5942
  g_stateObj.reverse = C_FLG_OFF;
5813
5943
  g_settings.reverseNum = 0;
5814
5944
  };
@@ -5835,13 +5965,16 @@ const setReverseView = _btn => {
5835
5965
  /**
5836
5966
  * ゲージ設定メイン
5837
5967
  * @param {number} _scrollNum
5968
+ * @param {boolean} _gaugeInitFlg
5838
5969
  */
5839
5970
  const setGauge = (_scrollNum, _gaugeInitFlg = false) => {
5840
5971
 
5841
5972
  /**
5842
5973
  * ゲージ詳細一括変更
5843
5974
  * @param {object} _baseObj
5844
- * @param {object} _obj
5975
+ * @param {number} object.magInit
5976
+ * @param {number} object.magRcv
5977
+ * @param {number} object.magDmg
5845
5978
  */
5846
5979
  const setLifeCategory = (_baseObj, { _magInit = 1, _magRcv = 1, _magDmg = 1 } = {}) => {
5847
5980
  if (hasVal(_baseObj.lifeInits[g_stateObj.scoreId])) {
@@ -6030,6 +6163,7 @@ const getAccuracy = (_border, _rcv, _dmg, _init, _allCnt) => {
6030
6163
 
6031
6164
  /**
6032
6165
  * 空押し判定の設定
6166
+ * @param {object} _btn
6033
6167
  */
6034
6168
  const setExcessive = _btn => {
6035
6169
  g_settings.excessiveNum = (g_settings.excessiveNum + 1) % 2;
@@ -6052,8 +6186,8 @@ const getKeyCtrl = (_localStorage, _extraKeyName = ``) => {
6052
6186
  const prevPtn = g_keyObj.currentPtn;
6053
6187
  g_keyObj.currentPtn = -1;
6054
6188
  const copyPtn = `${g_keyObj.currentKey}_-1`;
6055
- g_keyObj[`keyCtrl${copyPtn}`] = [...Array(baseKeyNum)].map(_ => []);
6056
- g_keyObj[`keyCtrl${copyPtn}d`] = [...Array(baseKeyNum)].map(_ => []);
6189
+ g_keyObj[`keyCtrl${copyPtn}`] = [...Array(baseKeyNum)].map(() => []);
6190
+ g_keyObj[`keyCtrl${copyPtn}d`] = [...Array(baseKeyNum)].map(() => []);
6057
6191
 
6058
6192
  for (let j = 0; j < baseKeyNum; j++) {
6059
6193
  for (let k = 0; k < g_keyObj[`keyCtrl${basePtn}`][j].length; k++) {
@@ -6085,17 +6219,23 @@ const getKeyCtrl = (_localStorage, _extraKeyName = ``) => {
6085
6219
  * @param {string} _name 初期設定文字
6086
6220
  * @param {number} _heightPos 上からの配置順
6087
6221
  * @param {function} _func 通常ボタン処理
6088
- * @param {object} objectList 座標設定(既定を上書き)
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
6089
6229
  * @param {...any} _classes 追加するクラス
6090
6230
  */
6091
- const makeSettingLblCssButton = (_id, _name, _heightPos, _func, { x, y, w, h, siz, cxtFunc = _ => true, ...rest } = {}, ..._classes) => {
6231
+ const makeSettingLblCssButton = (_id, _name, _heightPos, _func, { x, y, w, h, siz, cxtFunc = () => true, ...rest } = {}, ..._classes) => {
6092
6232
  const tmpObj = {
6093
6233
  x: x ?? g_limitObj.setLblLeft,
6094
6234
  y: y ?? g_limitObj.setLblHeight * _heightPos,
6095
6235
  w: w ?? g_limitObj.setLblWidth,
6096
6236
  h: h ?? g_limitObj.setLblHeight,
6097
6237
  siz: siz ?? g_limitObj.setLblSiz,
6098
- cxtFunc: cxtFunc ?? (_ => true),
6238
+ cxtFunc: cxtFunc ?? (() => true),
6099
6239
  };
6100
6240
  return createCss2Button(_id, _name, _func, { ...tmpObj, ...rest }, g_cssObj.button_Default, ..._classes);
6101
6241
  };
@@ -6106,6 +6246,10 @@ const makeSettingLblCssButton = (_id, _name, _heightPos, _func, { x, y, w, h, si
6106
6246
  * @param {string} _name 初期設定文字
6107
6247
  * @param {number} _heightPos 上からの配置順
6108
6248
  * @param {function} _func
6249
+ * @param {number} object.x
6250
+ * @param {number} object.w
6251
+ * @param {number} object.h
6252
+ * @param {string} object.btnStyle
6109
6253
  */
6110
6254
  const makeDifLblCssButton = (_id, _name, _heightPos, _func,
6111
6255
  { x = 0, w = g_limitObj.difSelectorWidth, h = g_limitObj.setLblHeight, btnStyle = `Default` } = {}) =>
@@ -6119,6 +6263,12 @@ const makeDifLblCssButton = (_id, _name, _heightPos, _func,
6119
6263
  * @param {string} _directionFlg 表示用ボタンのどちら側に置くかを設定。(R, RR:右、L, LL:左)
6120
6264
  * @param {number} _heightPos 上からの配置順
6121
6265
  * @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
6122
6272
  */
6123
6273
  const makeMiniCssButton = (_id, _directionFlg, _heightPos, _func, { dx = 0, dy = 0, dw = 0, dh = 0, dsiz = 0, visibility = `visible` } = {}) =>
6124
6274
  createCss2Button(`${_id}${_directionFlg}`, g_settingBtnObj.chara[_directionFlg], _func, {
@@ -6129,6 +6279,7 @@ const makeMiniCssButton = (_id, _directionFlg, _heightPos, _func, { dx = 0, dy =
6129
6279
  /**
6130
6280
  * カラーグループ、シャッフルグループの再設定
6131
6281
  * @param {string} _type
6282
+ * @param {string} _keyCtrlPtn
6132
6283
  */
6133
6284
  const resetGroupList = (_type, _keyCtrlPtn) => {
6134
6285
  let k = 1;
@@ -6148,7 +6299,7 @@ const resetGroupList = (_type, _keyCtrlPtn) => {
6148
6299
  /* Scene : SETTINGS-DISPLAY [lemon] */
6149
6300
  /*-----------------------------------------------------------*/
6150
6301
 
6151
- const settingsDisplayInit = _ => {
6302
+ const settingsDisplayInit = () => {
6152
6303
 
6153
6304
  clearWindow(true);
6154
6305
  const divRoot = document.getElementById(`divRoot`);
@@ -6175,7 +6326,7 @@ const settingsDisplayInit = _ => {
6175
6326
 
6176
6327
  // キー操作イベント(デフォルト)
6177
6328
  setShortcutEvent(g_currentPage);
6178
- document.oncontextmenu = _ => true;
6329
+ document.oncontextmenu = () => true;
6179
6330
 
6180
6331
  g_skinJsObj.settingsDisplay.forEach(func => func());
6181
6332
  };
@@ -6188,9 +6339,9 @@ const createSettingsDisplayWindow = _sprite => {
6188
6339
 
6189
6340
  /**
6190
6341
  * Display表示/非表示ボタン
6191
- * @param {*} _name
6192
- * @param {*} _heightPos 縦位置
6193
- * @param {*} _widthPos 横位置
6342
+ * @param {string} _name
6343
+ * @param {number} _heightPos 縦位置
6344
+ * @param {number} _widthPos 横位置
6194
6345
  */
6195
6346
  const makeDisplayButton = (_name, _heightPos, _widthPos) => {
6196
6347
 
@@ -6205,10 +6356,10 @@ const createSettingsDisplayWindow = _sprite => {
6205
6356
  const cssBgList = [g_settings.d_cssBgName, g_settings.d_cssBgName].concat(Array(g_settings[`d_${_name}s`]?.length).fill(g_settings.d_cssBgExName) || []);
6206
6357
  const lbls = [toCapitalize(_name), toCapitalize(_name)].concat(g_settings[`d_${_name}s`] || []);
6207
6358
 
6208
- const dispView = _ => [C_FLG_OFF, C_FLG_ON].includes(g_stateObj[`d_${_name.toLowerCase()}`]) ?
6359
+ const dispView = () => [C_FLG_OFF, C_FLG_ON].includes(g_stateObj[`d_${_name.toLowerCase()}`]) ?
6209
6360
  g_lblNameObj[`d_${toCapitalize(_name)}`] : getStgDetailName(lbls[g_settings.displayNum[_name]]);
6210
6361
 
6211
- const withShortCutDesc = _ => createScText(document.getElementById(linkId), `${toCapitalize(_name)}`,
6362
+ const withShortCutDesc = () => createScText(document.getElementById(linkId), `${toCapitalize(_name)}`,
6212
6363
  { displayName: g_currentPage, targetLabel: linkId, x: -5 });
6213
6364
 
6214
6365
  /**
@@ -6236,10 +6387,10 @@ const createSettingsDisplayWindow = _sprite => {
6236
6387
  // Displayボタン初期化
6237
6388
  g_settings.displayNum[_name] = list.findIndex(flg => flg === g_stateObj[`d_${_name.toLowerCase()}`]);
6238
6389
  displaySprite.appendChild(
6239
- makeSettingLblCssButton(linkId, dispView(), _heightPos, _ => switchDisplay(), {
6390
+ makeSettingLblCssButton(linkId, dispView(), _heightPos, () => switchDisplay(), {
6240
6391
  x: 30 + 180 * _widthPos, w: 170,
6241
6392
  title: g_msgObj[`d_${_name.toLowerCase()}`], borderStyle: `solid`,
6242
- cxtFunc: _ => switchDisplay(-1),
6393
+ cxtFunc: () => switchDisplay(-1),
6243
6394
  }, `button_${cssBgList[g_settings.displayNum[_name]]}`, `button_${cssBarList[g_settings.displayNum[_name]]}`)
6244
6395
  );
6245
6396
  withShortCutDesc();
@@ -6247,7 +6398,7 @@ const createSettingsDisplayWindow = _sprite => {
6247
6398
  // Display切替ボタン(ON/OFF以外用)
6248
6399
  if (g_settings[`d_${_name}s`] !== undefined) {
6249
6400
  displaySprite.appendChild(
6250
- makeSettingLblCssButton(`${linkId}R`, `>`, _heightPos, _ => switchDisplay(1, false), {
6401
+ makeSettingLblCssButton(`${linkId}R`, `>`, _heightPos, () => switchDisplay(1, false), {
6251
6402
  x: 175 + 180 * _widthPos, w: 25,
6252
6403
  }, g_cssObj.button_Mini)
6253
6404
  );
@@ -6276,7 +6427,7 @@ const createSettingsDisplayWindow = _sprite => {
6276
6427
  // 矢印の見え方 (Appearance)
6277
6428
  // 縦位置: 7.4
6278
6429
  createGeneralSetting(spriteList.appearance, `appearance`, {
6279
- addRFunc: _ => dispAppearanceSlider(),
6430
+ addRFunc: () => dispAppearanceSlider(),
6280
6431
  });
6281
6432
 
6282
6433
  // Hidden+/Sudden+初期値用スライダー、ロックボタン
@@ -6300,10 +6451,10 @@ const createSettingsDisplayWindow = _sprite => {
6300
6451
  };
6301
6452
 
6302
6453
  const appearanceSlider = document.getElementById(`appearanceSlider`);
6303
- appearanceSlider.addEventListener(`input`, _ =>
6454
+ appearanceSlider.addEventListener(`input`, () =>
6304
6455
  g_hidSudObj.filterPos = inputSliderAppearance(appearanceSlider, lblAppearancePos), false);
6305
6456
 
6306
- const dispAppearanceSlider = _ => {
6457
+ const dispAppearanceSlider = () => {
6307
6458
  [`lblAppearanceBar`, `lnkLockBtn`, `lnkfilterLine`].forEach(obj =>
6308
6459
  $id(obj).visibility = g_appearanceRanges.includes(g_stateObj.appearance) ? `Visible` : `Hidden`);
6309
6460
  inputSliderAppearance(appearanceSlider, lblAppearancePos);
@@ -6375,6 +6526,7 @@ const interlockingButton = (_headerObj, _name, _current, _next, _buttonFlg = fal
6375
6526
 
6376
6527
  /**
6377
6528
  * キーコンフィグ画面初期化
6529
+ * @param {string} _kcType
6378
6530
  */
6379
6531
  const keyConfigInit = (_kcType = g_kcType) => {
6380
6532
 
@@ -6431,6 +6583,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6431
6583
 
6432
6584
  /**
6433
6585
  * キーコンフィグ用の矢印色を取得
6586
+ * @param {number} _j
6434
6587
  * @param {number} _colorPos
6435
6588
  */
6436
6589
  const getKeyConfigColor = (_j, _colorPos) => {
@@ -6507,9 +6660,9 @@ const keyConfigInit = (_kcType = g_kcType) => {
6507
6660
  const arrowColor = getKeyConfigColor(j, colorPos);
6508
6661
 
6509
6662
  keyconSprite.appendChild(
6510
- createCss2Button(`color${j}`, ``, _ => changeTmpColor(j), {
6663
+ createCss2Button(`color${j}`, ``, () => changeTmpColor(j), {
6511
6664
  x: keyconX, y: keyconY, w: C_ARW_WIDTH, h: C_ARW_WIDTH,
6512
- cxtFunc: _ => changeTmpColor(j, -1),
6665
+ cxtFunc: () => changeTmpColor(j, -1),
6513
6666
  }, g_cssObj.button_Default_NoColor, g_cssObj.title_base)
6514
6667
  );
6515
6668
  // キーコンフィグ表示用の矢印・おにぎりを表示
@@ -6526,10 +6679,10 @@ const keyConfigInit = (_kcType = g_kcType) => {
6526
6679
  );
6527
6680
  if (g_headerObj.shuffleUse && g_keyObj[`shuffle${keyCtrlPtn}`] !== undefined) {
6528
6681
  keyconSprite.appendChild(
6529
- createCss2Button(`sArrow${j}`, ``, _ => changeTmpShuffleNum(j), {
6682
+ createCss2Button(`sArrow${j}`, ``, () => changeTmpShuffleNum(j), {
6530
6683
  x: keyconX, y: keyconY - 12, w: C_ARW_WIDTH, h: 15, siz: 12, fontWeight: `bold`,
6531
6684
  pointerEvents: (g_settings.shuffles.filter(val => val.endsWith(`+`)).length > 0 ? `auto` : `none`),
6532
- cxtFunc: _ => changeTmpShuffleNum(j, -1),
6685
+ cxtFunc: () => changeTmpShuffleNum(j, -1),
6533
6686
  }, g_cssObj.button_Default_NoColor, g_cssObj.title_base)
6534
6687
  );
6535
6688
  }
@@ -6540,7 +6693,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6540
6693
  g_keyObj[`keyCtrl${keyCtrlPtn}d`][j][k] = setIntVal(g_keyObj[`keyCtrl${keyCtrlPtn}d`][j][k]);
6541
6694
 
6542
6695
  keyconSprite.appendChild(
6543
- createCss2Button(`keycon${j}_${k}`, g_kCd[g_keyObj[`keyCtrl${keyCtrlPtn}`][j][k]], _ => {
6696
+ createCss2Button(`keycon${j}_${k}`, g_kCd[g_keyObj[`keyCtrl${keyCtrlPtn}`][j][k]], () => {
6544
6697
  g_currentj = j;
6545
6698
  g_currentk = k;
6546
6699
  g_prevKey = -1;
@@ -6621,7 +6774,13 @@ const keyConfigInit = (_kcType = g_kcType) => {
6621
6774
  * キーコンフィグ用設定ラベル
6622
6775
  * @param {string} _id
6623
6776
  * @param {string} _name
6624
- * @param {object} object (x, y, w, h, siz, align, ...rest)
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
6625
6784
  * @param {...any} _classes
6626
6785
  * @returns ラベル
6627
6786
  */
@@ -6634,7 +6793,14 @@ const keyConfigInit = (_kcType = g_kcType) => {
6634
6793
  * @param {string} _id
6635
6794
  * @param {string} _text
6636
6795
  * @param {function} _func
6637
- * @param {object} object (x, y, w, h, siz, borderStyle, cxtFunc, ...rest)
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
6638
6804
  * @param {string} _mainClass
6639
6805
  * @param {...any} _classes
6640
6806
  * @returns ボタン
@@ -6648,7 +6814,11 @@ const keyConfigInit = (_kcType = g_kcType) => {
6648
6814
  * @param {string} _id
6649
6815
  * @param {string} _directionFlg
6650
6816
  * @param {function} _func
6651
- * @param {*} object (x, y, w, h, siz)
6817
+ * @param {number} object.x (x, y, w, h, siz)
6818
+ * @param {number} object.y
6819
+ * @param {number} object.w
6820
+ * @param {number} object.h
6821
+ * @param {number} object.siz
6652
6822
  */
6653
6823
  const makeMiniKCButton = (_id, _directionFlg, _func, { x = g_btnX(5 / 6) - 30, y = 15, w = 15, h = 20, siz = g_limitObj.mainSiz } = {}) =>
6654
6824
  createCss2Button(`${_id}${_directionFlg}`, g_settingBtnObj.chara[_directionFlg], _func, { x, y, w, h, siz }, g_cssObj.button_Mini);
@@ -6656,18 +6826,20 @@ const keyConfigInit = (_kcType = g_kcType) => {
6656
6826
  /**
6657
6827
  * キーコンフィグ用グループ設定ラベル・ボタンの作成
6658
6828
  * @param {string} _type
6659
- * @param {object} obj (baseX)
6829
+ * @param {number} object.baseX
6830
+ * @param {number} object.baseY
6831
+ * @param {string} object.cssName
6660
6832
  */
6661
6833
  const makeGroupButton = (_type, { baseX = g_btnX(5 / 6) - 20, baseY = 0, cssName } = {}) => {
6662
6834
  if (g_headerObj[`${_type}Use`] && g_keycons[`${_type}Groups`].length > 1) {
6663
6835
  const typeName = toCapitalize(_type);
6664
6836
  multiAppend(divRoot,
6665
6837
  makeKCButtonHeader(`lbl${_type}Group`, `${typeName}Group`, { x: baseX - 10, y: baseY }, cssName),
6666
- makeKCButton(`lnk${typeName}Group`, ``, _ => setGroup(_type), {
6667
- x: baseX, y: baseY + 13, w: g_btnWidth(1 / 18), title: g_msgObj[`${_type}Group`], cxtFunc: _ => setGroup(_type, -1),
6838
+ makeKCButton(`lnk${typeName}Group`, ``, () => setGroup(_type), {
6839
+ x: baseX, y: baseY + 13, w: g_btnWidth(1 / 18), title: g_msgObj[`${_type}Group`], cxtFunc: () => setGroup(_type, -1),
6668
6840
  }),
6669
- makeMiniKCButton(`lnk${typeName}Group`, `L`, _ => setGroup(_type, -1), { x: baseX - 10, y: baseY + 13 }),
6670
- makeMiniKCButton(`lnk${typeName}Group`, `R`, _ => setGroup(_type), { x: baseX + g_btnWidth(1 / 18), y: baseY + 13 }),
6841
+ makeMiniKCButton(`lnk${typeName}Group`, `L`, () => setGroup(_type, -1), { x: baseX - 10, y: baseY + 13 }),
6842
+ makeMiniKCButton(`lnk${typeName}Group`, `R`, () => setGroup(_type), { x: baseX + g_btnWidth(1 / 18), y: baseY + 13 }),
6671
6843
  );
6672
6844
  } else {
6673
6845
  g_keycons[`${_type}GroupNum`] = 0;
@@ -6691,11 +6863,11 @@ const keyConfigInit = (_kcType = g_kcType) => {
6691
6863
 
6692
6864
  // キーカラータイプ切替ボタン
6693
6865
  makeKCButtonHeader(`lblcolorType`, `ColorType`, { x: 10 + g_btnX() }, g_cssObj.keyconfig_ColorType),
6694
- makeKCButton(`lnkColorType`, g_colorType, _ => setColorType(), {
6695
- x: 20 + g_btnX(), title: g_msgObj.colorType, cxtFunc: _ => setColorType(-1),
6866
+ makeKCButton(`lnkColorType`, g_colorType, () => setColorType(), {
6867
+ x: 20 + g_btnX(), title: g_msgObj.colorType, cxtFunc: () => setColorType(-1),
6696
6868
  }),
6697
- makeMiniKCButton(`lnkColorType`, `L`, _ => setColorType(-1), { x: 10 + g_btnX() }),
6698
- makeMiniKCButton(`lnkColorType`, `R`, _ => setColorType(), { x: 20 + g_btnX(1 / 6) }),
6869
+ makeMiniKCButton(`lnkColorType`, `L`, () => setColorType(-1), { x: 10 + g_btnX() }),
6870
+ makeMiniKCButton(`lnkColorType`, `R`, () => setColorType(), { x: 20 + g_btnX(1 / 6) }),
6699
6871
  );
6700
6872
 
6701
6873
  if (g_headerObj.imgType.length > 1) {
@@ -6703,11 +6875,11 @@ const keyConfigInit = (_kcType = g_kcType) => {
6703
6875
  multiAppend(divRoot,
6704
6876
  // オブジェクトタイプの切り替え(リロードあり)
6705
6877
  makeKCButtonHeader(`lblImgType`, `ImgType`, { x: imgBaseX - 10, y: 37 }, g_cssObj.keyconfig_ConfigType),
6706
- makeKCButton(`lnkImgType`, g_imgType, _ => setImgType(), {
6707
- x: imgBaseX, y: imgBaseY, title: g_msgObj.imgType, cxtFunc: _ => setImgType(-1),
6878
+ makeKCButton(`lnkImgType`, g_imgType, () => setImgType(), {
6879
+ x: imgBaseX, y: imgBaseY, title: g_msgObj.imgType, cxtFunc: () => setImgType(-1),
6708
6880
  }),
6709
- makeMiniKCButton(`lnkImgType`, `L`, _ => setImgType(-1), { x: imgBaseX - 10, y: imgBaseY }),
6710
- makeMiniKCButton(`lnkImgType`, `R`, _ => setImgType(), { x: imgBaseX + g_btnWidth(1 / 6), y: imgBaseY }),
6881
+ makeMiniKCButton(`lnkImgType`, `L`, () => setImgType(-1), { x: imgBaseX - 10, y: imgBaseY }),
6882
+ makeMiniKCButton(`lnkImgType`, `R`, () => setImgType(), { x: imgBaseX + g_btnWidth(1 / 6), y: imgBaseY }),
6711
6883
  );
6712
6884
  }
6713
6885
 
@@ -6719,7 +6891,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6719
6891
  /**
6720
6892
  * カーソル位置の設定
6721
6893
  */
6722
- const setKeyConfigCursor = _ => {
6894
+ const setKeyConfigCursor = () => {
6723
6895
  const posj = g_keyObj[`pos${keyCtrlPtn}`][g_currentj];
6724
6896
  const stdPos = posj - ((posj > divideCnt ? posMax : 0) + divideCnt) / 2;
6725
6897
 
@@ -6842,7 +7014,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6842
7014
  /**
6843
7015
  * ColorPicker(一式)の切替
6844
7016
  */
6845
- const changeColorPickers = _ => {
7017
+ const changeColorPickers = () => {
6846
7018
  lnkColorR.innerHTML = `[${g_keycons.colorCursorNum + 1} /`;
6847
7019
  for (let j = 0; j < g_limitObj.kcColorPickerNum; j++) {
6848
7020
  const m = getGroupNum(j);
@@ -6856,6 +7028,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6856
7028
  /**
6857
7029
  * ColorTypeの制御
6858
7030
  * @param {number} _scrollNum
7031
+ * @param {boolean} _reloadFlg
6859
7032
  */
6860
7033
  const setColorType = (_scrollNum = 1, _reloadFlg = true) => {
6861
7034
  const nextNum = getNextNum(_scrollNum, `colorTypes`, g_colorType);
@@ -6873,6 +7046,10 @@ const keyConfigInit = (_kcType = g_kcType) => {
6873
7046
  }
6874
7047
  };
6875
7048
 
7049
+ /**
7050
+ * ImgTypeの制御
7051
+ * @param {number} _scrollNum
7052
+ */
6876
7053
  const setImgType = (_scrollNum = 1) => {
6877
7054
  const nextNum = getNextNum(_scrollNum, `imgTypes`, g_imgType);
6878
7055
  g_imgType = g_keycons.imgTypes[nextNum];
@@ -6890,13 +7067,13 @@ const keyConfigInit = (_kcType = g_kcType) => {
6890
7067
  multiAppend(colorPickSprite,
6891
7068
 
6892
7069
  // ColorPickerの切替
6893
- createCss2Button(`lnkColorR`, `[${g_keycons.colorCursorNum + 1} /`, _ => {
7070
+ createCss2Button(`lnkColorR`, `[${g_keycons.colorCursorNum + 1} /`, () => {
6894
7071
  g_keycons.colorCursorNum = (g_keycons.colorCursorNum + 1) % Math.ceil(g_headerObj.setColor.length / g_limitObj.kcColorPickerNum);
6895
7072
  changeColorPickers();
6896
7073
  }, g_lblPosObj.lnkColorR, g_cssObj.button_Start),
6897
7074
 
6898
7075
  // 矢印の配色をフリーズアローへ反映
6899
- createCss2Button(`lnkColorCopy`, `↓]`, _ => {
7076
+ createCss2Button(`lnkColorCopy`, `↓]`, () => {
6900
7077
  if (window.confirm(g_msgObj.colorCopyConfirm)) {
6901
7078
  for (let j = 0; j < g_headerObj.setColor.length; j++) {
6902
7079
  g_headerObj.frzColor[j] = g_headerObj[`frzColor${g_colorType}`][j] =
@@ -6914,7 +7091,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6914
7091
  createDivCss2Label(`lblPickFrz`, g_lblNameObj.s_frz, Object.assign({ y: 140 }, g_lblPosObj.pickPos)),
6915
7092
 
6916
7093
  // ColorPickerの色を元に戻す
6917
- createCss2Button(`lnkColorReset`, g_lblNameObj.b_cReset, _ => {
7094
+ createCss2Button(`lnkColorReset`, g_lblNameObj.b_cReset, () => {
6918
7095
  if (window.confirm(g_msgObj.colorResetConfirm)) {
6919
7096
  resetColorType({ _from: g_colorType, _to: ``, _fromObj: g_dfColorObj });
6920
7097
  resetColorType({ _from: g_colorType, _to: g_colorType, _fromObj: g_dfColorObj });
@@ -6938,24 +7115,25 @@ const keyConfigInit = (_kcType = g_kcType) => {
6938
7115
  * @param {number} _j
6939
7116
  * @param {string} _type
6940
7117
  * @param {function} _func
6941
- * @param {object} _obj
7118
+ * @param {number} object.x
7119
+ * @param {number} object.y
6942
7120
  */
6943
7121
  const createColorPickWindow = (_j, _type, _func, { x = 0, y = 15 } = {}) =>
6944
7122
  createColorPicker(colorPickSprite, `pick${_type}${_j}`, _func, { x, y: y + 25 * _j });
6945
7123
 
6946
7124
  for (let j = 0; j < g_limitObj.kcColorPickerNum; j++) {
6947
- createColorPickWindow(j, `arrow`, _ => {
7125
+ createColorPickWindow(j, `arrow`, () => {
6948
7126
  g_headerObj[`setColor${g_colorType}`][getGroupNum(j)] = document.getElementById(`pickarrow${j}`).value;
6949
7127
  setColorType(0, false);
6950
7128
  });
6951
7129
 
6952
- createColorPickWindow(j, `arrowShadow`, _ => {
7130
+ createColorPickWindow(j, `arrowShadow`, () => {
6953
7131
  g_headerObj[`setShadowColor${g_colorType}`][getGroupNum(j)] = `${document.getElementById(`pickarrowShadow${j}`).value}80`;
6954
7132
  setColorType(0, false);
6955
7133
  }, { x: 25 });
6956
7134
 
6957
7135
  [``, `Bar`].forEach((val, k) =>
6958
- createColorPickWindow(j, `frz${val}`, _ => {
7136
+ createColorPickWindow(j, `frz${val}`, () => {
6959
7137
  g_headerObj[`frzColor${g_colorType}`][getGroupNum(j)][k] = document.getElementById(`pickfrz${val}${j}`).value;
6960
7138
  }, { x: 25 * k, y: 155 }));
6961
7139
  }
@@ -6973,12 +7151,13 @@ const keyConfigInit = (_kcType = g_kcType) => {
6973
7151
  * @param {number} _tempPtn
6974
7152
  * @param {number} _sign
6975
7153
  * @param {boolean} _transKeyUse
7154
+ * @param {boolean} _skipFlg
6976
7155
  */
6977
7156
  const searchPattern = (_tempPtn, _sign, _transKeyUse = false, _skipFlg = false) => {
6978
7157
  let nextPtn = _tempPtn + _sign;
6979
7158
  const initialPtn = hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_-1`]) ? -1 : 0;
6980
7159
 
6981
- const searchStart = _ => {
7160
+ const searchStart = () => {
6982
7161
  if (!hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_${nextPtn}`])) {
6983
7162
  nextPtn = 0;
6984
7163
  while (hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_${nextPtn}`])) {
@@ -6988,7 +7167,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6988
7167
  }
6989
7168
  };
6990
7169
 
6991
- const searchNextGroup = _ => {
7170
+ const searchNextGroup = () => {
6992
7171
  while (nextPtn !== initialPtn &&
6993
7172
  g_keyObj[`transKey${g_keyObj.currentKey}_${_tempPtn}`] === g_keyObj[`transKey${g_keyObj.currentKey}_${nextPtn}`] &&
6994
7173
  hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_${nextPtn}`])) {
@@ -7042,7 +7221,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
7042
7221
  createDivCss2Label(`lblkey`, `KeySwitch`, g_lblPosObj.lblkey));
7043
7222
  configKeyGroupList.forEach((val, j) =>
7044
7223
  divRoot.appendChild(
7045
- createCss2Button(`key${j}`, `${j + 1}`, _ => appearConfigSteps(j),
7224
+ createCss2Button(`key${j}`, `${j + 1}`, () => appearConfigSteps(j),
7046
7225
  Object.assign({ y: 110 + j * 20 }, g_lblPosObj.lnkKeySwitch), g_cssObj.button_Mini),
7047
7226
  ));
7048
7227
  }
@@ -7054,39 +7233,39 @@ const keyConfigInit = (_kcType = g_kcType) => {
7054
7233
  multiAppend(divRoot,
7055
7234
 
7056
7235
  // 設定画面へ戻る
7057
- createCss2Button(`btnBack`, g_lblNameObj.b_settings, _ => {
7236
+ createCss2Button(`btnBack`, g_lblNameObj.b_settings, () => {
7058
7237
  g_currentj = 0;
7059
7238
  g_currentk = 0;
7060
7239
  g_prevKey = 0;
7061
7240
  }, Object.assign(g_lblPosObj.btnKcBack, {
7062
- resetFunc: _ => (g_baseDisp === `Settings` ? optionInit() : settingsDisplayInit()),
7241
+ resetFunc: () => (g_baseDisp === `Settings` ? optionInit() : settingsDisplayInit()),
7063
7242
  }), g_cssObj.button_Back),
7064
7243
 
7065
7244
  createDivCss2Label(`lblPattern`, `${g_lblNameObj.KeyPattern}: ${g_keyObj.currentPtn === -1 ?
7066
7245
  'Self' : g_keyObj.currentPtn + 1}${lblTransKey}`, g_lblPosObj.lblPattern),
7067
7246
 
7068
7247
  // パターン変更ボタン描画(右回り)
7069
- createCss2Button(`btnPtnChangeR`, `>`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeR, {
7070
- resetFunc: _ => changePattern(),
7248
+ createCss2Button(`btnPtnChangeR`, `>`, () => true, Object.assign(g_lblPosObj.btnPtnChangeR, {
7249
+ resetFunc: () => changePattern(),
7071
7250
  }), g_cssObj.button_Mini),
7072
7251
 
7073
7252
  // パターン変更ボタン描画(左回り)
7074
- createCss2Button(`btnPtnChangeL`, `<`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeL, {
7075
- resetFunc: _ => changePattern(-1),
7253
+ createCss2Button(`btnPtnChangeL`, `<`, () => true, Object.assign(g_lblPosObj.btnPtnChangeL, {
7254
+ resetFunc: () => changePattern(-1),
7076
7255
  }), g_cssObj.button_Mini),
7077
7256
 
7078
7257
  // パターン変更ボタン描画(右回り/別キーモード間スキップ)
7079
- createCss2Button(`btnPtnChangeRR`, `|>`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeRR, {
7080
- resetFunc: _ => changePattern(1, true),
7258
+ createCss2Button(`btnPtnChangeRR`, `|>`, () => true, Object.assign(g_lblPosObj.btnPtnChangeRR, {
7259
+ resetFunc: () => changePattern(1, true),
7081
7260
  }), g_cssObj.button_Setting),
7082
7261
 
7083
7262
  // パターン変更ボタン描画(左回り/別キーモード間スキップ)
7084
- createCss2Button(`btnPtnChangeLL`, `<|`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeLL, {
7085
- resetFunc: _ => changePattern(-1, true),
7263
+ createCss2Button(`btnPtnChangeLL`, `<|`, () => true, Object.assign(g_lblPosObj.btnPtnChangeLL, {
7264
+ resetFunc: () => changePattern(-1, true),
7086
7265
  }), g_cssObj.button_Setting),
7087
7266
 
7088
7267
  // キーコンフィグリセットボタン描画
7089
- createCss2Button(`btnReset`, g_lblNameObj.b_reset, _ => {
7268
+ createCss2Button(`btnReset`, g_lblNameObj.b_reset, () => {
7090
7269
  if (window.confirm(g_msgObj.keyResetConfirm)) {
7091
7270
  const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
7092
7271
 
@@ -7103,7 +7282,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
7103
7282
  }, g_lblPosObj.btnKcReset, g_cssObj.button_Reset),
7104
7283
 
7105
7284
  // プレイ開始
7106
- makePlayButton(_ => loadMusic())
7285
+ makePlayButton(() => loadMusic())
7107
7286
  );
7108
7287
 
7109
7288
  // キーボード押下時処理
@@ -7155,7 +7334,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
7155
7334
 
7156
7335
  g_skinJsObj.keyconfig.forEach(func => func());
7157
7336
  document.onkeyup = evt => commonKeyUp(evt);
7158
- document.oncontextmenu = _ => false;
7337
+ document.oncontextmenu = () => false;
7159
7338
  };
7160
7339
 
7161
7340
  /**
@@ -7169,7 +7348,7 @@ const getShadowColor = (_colorPos, _arrowColor) => g_headerObj.setShadowColor[_c
7169
7348
  /**
7170
7349
  * キー数基礎情報の取得
7171
7350
  */
7172
- const getKeyInfo = _ => {
7351
+ const getKeyInfo = () => {
7173
7352
  const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
7174
7353
  const keyNum = g_keyObj[`${g_keyObj.defaultProp}${keyCtrlPtn}`].length;
7175
7354
  const posMax = g_keyObj[`divMax${keyCtrlPtn}`] ?? Math.max(...g_keyObj[`pos${keyCtrlPtn}`]) + 1;
@@ -7195,7 +7374,7 @@ const updateKeyInfo = (_header, _keyCtrlPtn) => {
7195
7374
  /**
7196
7375
  * 初期矢印色・フリーズアロー色の変更
7197
7376
  */
7198
- const changeSetColor = _ => {
7377
+ const changeSetColor = () => {
7199
7378
  const isDefault = [`Default`, `Type0`].includes(g_colorType);
7200
7379
  const idHeader = setScoreIdHeader(g_stateObj.scoreId);
7201
7380
  const defaultType = idHeader + g_colorType;
@@ -7256,7 +7435,7 @@ const changeShuffleConfigColor = (_keyCtrlPtn, _vals, _j = -1) => {
7256
7435
  /* Scene : LOADING [strawberry] */
7257
7436
  /*-----------------------------------------------------------*/
7258
7437
 
7259
- const loadMusic = _ => {
7438
+ const loadMusic = () => {
7260
7439
 
7261
7440
  clearWindow(true);
7262
7441
  g_currentPage = `loading`;
@@ -7288,7 +7467,7 @@ const loadMusic = _ => {
7288
7467
  request.responseType = `blob`;
7289
7468
 
7290
7469
  // 読み込み完了時
7291
- request.addEventListener(`load`, _ => {
7470
+ request.addEventListener(`load`, () => {
7292
7471
  if (request.status >= 200 && request.status < 300) {
7293
7472
  const blobUrl = URL.createObjectURL(request.response);
7294
7473
  createEmptySprite(divRoot, `loader`, g_windowObj.loader);
@@ -7315,8 +7494,8 @@ const loadMusic = _ => {
7315
7494
  });
7316
7495
 
7317
7496
  // エラー処理
7318
- request.addEventListener(`timeout`, _ => makeWarningWindow(g_msgInfoObj.E_0033, { backBtnUse: true }));
7319
- request.addEventListener(`error`, _ => makeWarningWindow(g_msgInfoObj.E_0034, { backBtnUse: true }));
7497
+ request.addEventListener(`timeout`, () => makeWarningWindow(g_msgInfoObj.E_0033, { backBtnUse: true }));
7498
+ request.addEventListener(`error`, () => makeWarningWindow(g_msgInfoObj.E_0034, { backBtnUse: true }));
7320
7499
 
7321
7500
  request.send();
7322
7501
  };
@@ -7328,7 +7507,7 @@ const loadMusic = _ => {
7328
7507
  */
7329
7508
  const setAudio = async (_url) => {
7330
7509
 
7331
- const loadMp3 = _ => {
7510
+ const loadMp3 = () => {
7332
7511
  if (g_isFile) {
7333
7512
  g_audio.src = _url;
7334
7513
  musicAfterLoaded();
@@ -7357,13 +7536,13 @@ const setAudio = async (_url) => {
7357
7536
  await loadScript2(_url);
7358
7537
  if (typeof musicInit === C_TYP_FUNCTION) {
7359
7538
  musicInit();
7360
- readyToStart(_ => initWebAudioAPIfromBase64(g_musicdata));
7539
+ readyToStart(() => initWebAudioAPIfromBase64(g_musicdata));
7361
7540
  } else {
7362
7541
  makeWarningWindow(g_msgInfoObj.E_0031);
7363
7542
  musicAfterLoaded();
7364
7543
  }
7365
7544
  } else {
7366
- readyToStart(_ => loadMp3());
7545
+ readyToStart(() => loadMp3());
7367
7546
  }
7368
7547
  };
7369
7548
 
@@ -7384,7 +7563,7 @@ const initWebAudioAPIfromURL = async (_url) => {
7384
7563
  await g_audio.init(arrayBuffer);
7385
7564
  };
7386
7565
 
7387
- const musicAfterLoaded = _ => {
7566
+ const musicAfterLoaded = () => {
7388
7567
  g_audio.load();
7389
7568
 
7390
7569
  if (g_audio.readyState === 4) {
@@ -7392,13 +7571,13 @@ const musicAfterLoaded = _ => {
7392
7571
  loadingScoreInit();
7393
7572
  } else {
7394
7573
  // 読込中の状態
7395
- g_audio.addEventListener(`canplaythrough`, (_ => function f() {
7574
+ g_audio.addEventListener(`canplaythrough`, (() => function f() {
7396
7575
  g_audio.removeEventListener(`canplaythrough`, f, false);
7397
7576
  loadingScoreInit();
7398
7577
  })(), false);
7399
7578
 
7400
7579
  // エラー時
7401
- g_audio.addEventListener(`error`, (_ => function f() {
7580
+ g_audio.addEventListener(`error`, (() => function f() {
7402
7581
  g_audio.removeEventListener(`error`, f, false);
7403
7582
  makeWarningWindow(g_msgInfoObj.E_0041.split(`{0}`).join(g_audio.src), { backBtnUse: true });
7404
7583
  })(), false);
@@ -7604,6 +7783,7 @@ const applyShuffle = (_keyNum, _shuffleGroup, _style) => {
7604
7783
  * Mirrorの適用
7605
7784
  * @param {number} _keyNum
7606
7785
  * @param {array} _shuffleGroup
7786
+ * @param {boolean} _swapFlg
7607
7787
  */
7608
7788
  const applyMirror = (_keyNum, _shuffleGroup, _swapFlg = false) => {
7609
7789
 
@@ -7668,11 +7848,13 @@ const applyRandom = (_keyNum, _shuffleGroup) => {
7668
7848
  * S-Randomの適用
7669
7849
  * @param {number} _keyNum
7670
7850
  * @param {array} _shuffleGroup
7851
+ * @param {string} _arrowHeader
7852
+ * @param {string} _frzHeader
7671
7853
  */
7672
7854
  const applySRandom = (_keyNum, _shuffleGroup, _arrowHeader, _frzHeader) => {
7673
7855
 
7674
- const tmpArrowData = [...Array(_keyNum)].map(_ => []);
7675
- const tmpFrzData = [...Array(_keyNum)].map(_ => []);
7856
+ const tmpArrowData = [...Array(_keyNum)].map(() => []);
7857
+ const tmpFrzData = [...Array(_keyNum)].map(() => []);
7676
7858
  const scatterFrame = 10;
7677
7859
 
7678
7860
  // シャッフルグループごとに処理
@@ -8041,7 +8223,8 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
8041
8223
  ];
8042
8224
 
8043
8225
  /**
8044
- * 歌詞表示、背景・マスクデータの優先順取得
8226
+ * 歌詞表示、背景・マスクデータの優先順取得
8227
+ * @param {array} _defaultHeaders
8045
8228
  */
8046
8229
  const getPriorityHeader = (_defaultHeaders = []) => {
8047
8230
  if (_defaultHeaders.length > 0) {
@@ -8170,7 +8353,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
8170
8353
  * 背景・マスク、スキン変更データの分解
8171
8354
  * @param {string} _header
8172
8355
  * @param {string} _scoreNo 譜面番号
8173
- * @param {array} resultTypes リザルトモーションの種類 (result, failedB, failedS)
8356
+ * @param {array} object.resultTypes リザルトモーションの種類 (result, failedB, failedS)
8174
8357
  */
8175
8358
  const makeBackgroundData = (_header, _scoreNo, { resultTypes = [] } = {}) => {
8176
8359
  const dataList = [];
@@ -8402,7 +8585,7 @@ const setSpeedOnFrame = (_speedData, _lastFrame) => {
8402
8585
  * Motionオプション適用時の矢印別の速度設定
8403
8586
  * - 矢印が表示される最大フレーム数を 縦ピクセル数×20 と定義。
8404
8587
  */
8405
- const setMotionOnFrame = _ => g_motionFunc[g_stateObj.motion](fillArray(g_headerObj.playingHeight * 20 + 1));
8588
+ const setMotionOnFrame = () => g_motionFunc[g_stateObj.motion](fillArray(g_headerObj.playingHeight * 20 + 1));
8406
8589
 
8407
8590
  /**
8408
8591
  * Boost用の適用関数
@@ -8498,6 +8681,14 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
8498
8681
  }
8499
8682
  };
8500
8683
 
8684
+ /**
8685
+ * 矢印・フリーズアローの出現位置計算
8686
+ * @param {number} _j
8687
+ * @param {array} _data
8688
+ * @param {string} _header
8689
+ * @param {boolean} _frzFlg
8690
+ * @returns
8691
+ */
8501
8692
  const calcNotes = (_j, _data, _header = ``, _frzFlg = false) => {
8502
8693
  if (_data === undefined) {
8503
8694
  return;
@@ -8619,10 +8810,13 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
8619
8810
  * - この関数を使用する場合、配列グループの先頭2つが「フレーム数、矢印番号」となっていないと動作しない
8620
8811
  * @param {string} _type
8621
8812
  * @param {string} _header
8622
- * @param {function} _setFunc
8623
- * @param {object} obj _colorFlg: 個別色変化フラグ, _calcFrameFlg: 逆算を無条件で行うかどうかの可否
8813
+ * @param {function} _setFunc 後続実行関数
8814
+ * @param {number} object._term 1セット当たりのデータ数
8815
+ * @param {boolean} object._colorFlg 個別色変化フラグ
8816
+ * @param {boolean} object._calcFrameFlg 逆算を無条件で行うかどうかの可否
8817
+ * @param {string} object._propName 色変化種類 (Arrow, ArrowShadow, FrzNormal, FrzNormalBar, ...)
8624
8818
  */
8625
- const calcDataTiming = (_type, _header, _setFunc = _ => true,
8819
+ const calcDataTiming = (_type, _header, _setFunc = () => true,
8626
8820
  { _term = 4, _colorFlg = false, _calcFrameFlg = false, _propName = `` } = {}) => {
8627
8821
 
8628
8822
  const camelHeader = _header === `` ? _type : `${_header}${toCapitalize(_type)}`;
@@ -8798,7 +8992,7 @@ const getFrzLength = (_speedOnFrame, _startFrame, _endFrame) => {
8798
8992
  /**
8799
8993
  * キーパターン(デフォルト)に対応する矢印番号を格納
8800
8994
  */
8801
- const convertReplaceNums = _ => {
8995
+ const convertReplaceNums = () => {
8802
8996
  const tkObj = getKeyInfo();
8803
8997
  const baseCharas = g_keyObj[`chara${g_keyObj.currentKey}_0`];
8804
8998
  const convCharas = g_keyObj[`chara${tkObj.keyCtrlPtn}`];
@@ -8819,9 +9013,10 @@ const convertReplaceNums = _ => {
8819
9013
  * 色情報の格納
8820
9014
  * @param {string} _header
8821
9015
  * @param {number} _frame
8822
- * @param {number} _val
8823
- * @param {string} _colorCd
8824
- * @param {string} _allFlg
9016
+ * @param {number} _val 色番号
9017
+ * @param {string} _colorCd カラーコード
9018
+ * @param {string} _allFlg 全体色変化有無
9019
+ * @param {string} _pattern 色変化種類 (Arrow, ArrowShadow, FrzNormal, FrzNormalBar, ...)
8825
9020
  */
8826
9021
  const pushColors = (_header, _frame, _val, _colorCd, _allFlg, _pattern = ``) => {
8827
9022
 
@@ -9014,7 +9209,7 @@ const pushScrollchs = (_header, _frameArrow, _val, _frameStep, _scrollDir) => {
9014
9209
  /**
9015
9210
  * メイン画面前の初期化処理
9016
9211
  */
9017
- const getArrowSettings = _ => {
9212
+ const getArrowSettings = () => {
9018
9213
 
9019
9214
  g_attrObj = {};
9020
9215
  const tkObj = getKeyInfo();
@@ -9044,8 +9239,8 @@ const getArrowSettings = _ => {
9044
9239
  g_workObj.keyGroupList = tkObj.keyGroupList;
9045
9240
 
9046
9241
  const keyCtrlLen = g_workObj.keyCtrl.length;
9047
- g_workObj.keyCtrlN = [...Array(keyCtrlLen)].map(_ => []);
9048
- g_workObj.keyHitFlg = [...Array(keyCtrlLen)].map(_ => []);
9242
+ g_workObj.keyCtrlN = [...Array(keyCtrlLen)].map(() => []);
9243
+ g_workObj.keyHitFlg = [...Array(keyCtrlLen)].map(() => []);
9049
9244
  for (let j = 0; j < g_workObj.keyCtrl.length; j++) {
9050
9245
  for (let k = 0; k < g_workObj.keyCtrl[j].length; k++) {
9051
9246
  g_workObj.keyCtrlN[j][k] = g_kCdN[g_workObj.keyCtrl[j][k]];
@@ -9196,7 +9391,7 @@ const getArrowSettings = _ => {
9196
9391
  */
9197
9392
  const setKeyCtrl = (_localStorage, _keyNum, _keyCtrlPtn) => {
9198
9393
  const localPtn = `${g_keyObj.currentKey}_-1`;
9199
- const keyCtrl = [...Array(_keyNum)].map(_ => []);
9394
+ const keyCtrl = [...Array(_keyNum)].map(() => []);
9200
9395
  for (let j = 0; j < _keyNum; j++) {
9201
9396
  for (let k = 0; k < g_keyObj[`keyCtrl${_keyCtrlPtn}`][j].length; k++) {
9202
9397
  keyCtrl[j][k] = g_keyObj[`keyCtrl${_keyCtrlPtn}`][j][k];
@@ -9219,10 +9414,10 @@ const setKeyCtrl = (_localStorage, _keyNum, _keyCtrlPtn) => {
9219
9414
  /**
9220
9415
  * メイン画面初期化
9221
9416
  */
9222
- const mainInit = _ => {
9417
+ const mainInit = () => {
9223
9418
  clearWindow(true, `Main`);
9224
9419
  const divRoot = document.getElementById(`divRoot`);
9225
- document.oncontextmenu = _ => false;
9420
+ document.oncontextmenu = () => false;
9226
9421
  g_currentPage = `main`;
9227
9422
 
9228
9423
  g_currentArrows = 0;
@@ -9725,7 +9920,7 @@ const mainInit = _ => {
9725
9920
  */
9726
9921
  const mainKeyUpActFunc = {
9727
9922
 
9728
- OFF: _ => {
9923
+ OFF: () => {
9729
9924
  for (let j = 0; j < keyNum; j++) {
9730
9925
  if (g_workObj.keyCtrlN[j].find(key => keyIsDown(key)) === undefined) {
9731
9926
  $id(`stepDiv${j}`).display = C_DIS_NONE;
@@ -9733,7 +9928,7 @@ const mainInit = _ => {
9733
9928
  }
9734
9929
  },
9735
9930
 
9736
- ON: _ => { },
9931
+ ON: () => { },
9737
9932
  };
9738
9933
 
9739
9934
  document.onkeyup = evt => {
@@ -9743,9 +9938,9 @@ const mainInit = _ => {
9743
9938
 
9744
9939
  /**
9745
9940
  * 全体色変化(矢印)
9746
- * @param {number} _j
9747
- * @param {number} _k
9748
- * @param {string} _name
9941
+ * @param {number} _j 矢印位置
9942
+ * @param {number} _k 矢印の表示順
9943
+ * @param {string} _name 通常, ダミー
9749
9944
  */
9750
9945
  const changeArrowColor = (_j, _k, _name) => {
9751
9946
  if (g_workObj[`mk${toCapitalize(_name)}ColorChangeAll`][g_scoreObj.frameNum]) {
@@ -9837,8 +10032,8 @@ const mainInit = _ => {
9837
10032
  /**
9838
10033
  * 矢印・フリーズアロー消去
9839
10034
  *
9840
- * @param _j 矢印位置
9841
- * @param _deleteObj 削除オブジェクト
10035
+ * @param {number} _j 矢印位置
10036
+ * @param {string} _deleteName 削除オブジェクト名
9842
10037
  */
9843
10038
  const judgeObjDelete = {};
9844
10039
  g_typeLists.arrow.forEach(type =>
@@ -9852,13 +10047,13 @@ const mainInit = _ => {
9852
10047
  * 自動判定
9853
10048
  * ※mainInit内部で指定必須(arrowSprite指定)
9854
10049
  *
9855
- * @param _j 矢印位置
9856
- * @param _arrow 矢印(オブジェクト)
10050
+ * @param {number} _j 矢印位置
10051
+ * @param {object} _arrow 矢印(オブジェクト)
9857
10052
  *
9858
- * @param _k 矢印の表示順
9859
- * @param _frzRoot フリーズアロー(オブジェクト)
9860
- * @param _cnt ステップゾーン到達までのフレーム数
9861
- * @param _keyUpFrame キーを離したフレーム数
10053
+ * @param {number} _k 矢印の表示順
10054
+ * @param {object} _frzRoot フリーズアロー(オブジェクト)
10055
+ * @param {number} _cnt ステップゾーン到達までのフレーム数
10056
+ * @param {number} _keyUpFrame キーを離したフレーム数
9862
10057
  */
9863
10058
  const judgeMotionFunc = {
9864
10059
 
@@ -9953,9 +10148,9 @@ const mainInit = _ => {
9953
10148
  * - ただし、判定対象の矢印/フリーズアローがジャスト付近の場合は判定対象を優先する
9954
10149
  * (フリーズアローの場合、ヒット中の場合も判定対象が優先される)
9955
10150
  *
9956
- * @param _j 矢印の位置
9957
- * @param _k 矢印の表示順
9958
- * @param _cnt ステップゾーン到達までのフレーム数
10151
+ * @param {number} _j 矢印の位置
10152
+ * @param {number} _k 矢印の表示順
10153
+ * @param {number} _cnt ステップゾーン到達までのフレーム数
9959
10154
  */
9960
10155
  const judgeNextFunc = {
9961
10156
 
@@ -10124,12 +10319,14 @@ const mainInit = _ => {
10124
10319
 
10125
10320
  /**
10126
10321
  * フリーズアロー生成
10127
- * @param {number} _attrs
10128
- * @param {number} _arrowCnt
10129
- * @param {string} _name
10130
- * @param {string} _normalColor
10131
- * @param {string} _barColor
10132
- * @param {string} _shadowColor
10322
+ * @param {number} _attrs フリーズアロー個別の属性
10323
+ * (pos: 矢印種類, arrivalFrame: 到達フレーム数, initY: 初期表示位置,
10324
+ * initBoostY: Motion有効時の初期表示位置加算, motionFrame: アニメーション有効フレーム数)
10325
+ * @param {number} _arrowCnt 現在の判定フリーズアロー順
10326
+ * @param {string} _name フリーズアロー名
10327
+ * @param {string} _normalColor フリーズアロー(矢印)の色
10328
+ * @param {string} _barColor フリーズアロー(帯)の色
10329
+ * @param {string} _shadowColor フリーズアロー(塗りつぶし)の色
10133
10330
  */
10134
10331
  const makeFrzArrow = (_attrs, _arrowCnt, _name, _normalColor, _barColor, _shadowColor) => {
10135
10332
  const _j = _attrs.pos;
@@ -10266,7 +10463,7 @@ const mainInit = _ => {
10266
10463
  /**
10267
10464
  * フレーム処理(譜面台)
10268
10465
  */
10269
- const flowTimeline = _ => {
10466
+ const flowTimeline = () => {
10270
10467
 
10271
10468
  const currentFrame = g_scoreObj.frameNum;
10272
10469
  lblframe.textContent = g_scoreObj.baseFrame;
@@ -10558,7 +10755,8 @@ const changeAppearanceFilter = (_appearance, _num = 10) => {
10558
10755
  * @param {number} _x
10559
10756
  * @param {string} _class
10560
10757
  * @param {number} _heightPos
10561
- * @param {string, number} _text
10758
+ * @param {string|number} _text
10759
+ * @param {string} _display 表示有無 (inherit: 表示 / none: 非表示)
10562
10760
  */
10563
10761
  const makeCounterSymbol = (_id, _x, _class, _heightPos, _text, _display = C_DIS_INHERIT) => {
10564
10762
  return createDivCss2Label(_id, _text, {
@@ -10571,7 +10769,8 @@ const makeCounterSymbol = (_id, _x, _class, _heightPos, _text, _display = C_DIS_
10571
10769
  /**
10572
10770
  * ステップゾーンの表示・非表示切替
10573
10771
  * @param {number} _j
10574
- * @param {string} _display
10772
+ * @param {string} _display
10773
+ * @param {number} _alpha
10575
10774
  */
10576
10775
  const appearStepZone = (_j, _display, _alpha = 1) => {
10577
10776
  $id(`stepRoot${_j}`).display = _display;
@@ -10581,7 +10780,8 @@ const appearStepZone = (_j, _display, _alpha = 1) => {
10581
10780
  /**
10582
10781
  * 部分キーのステップゾーン出現処理
10583
10782
  * @param {number} _j
10584
- * @param {array} _targets
10783
+ * @param {array} _targets
10784
+ * @param {array} _alphas ステップゾーン毎の可視状況 (style.opacity の値)
10585
10785
  */
10586
10786
  const appearKeyTypes = (_j, _targets, _alphas = fillArray(_targets.length, 1)) => {
10587
10787
  appearStepZone(_j, C_DIS_NONE);
@@ -10749,7 +10949,7 @@ const keyIsDown = _keyCode => g_inputKeyBuffer[_keyCode];
10749
10949
  /**
10750
10950
  * 押したキーがシフトキーかどうかを判定
10751
10951
  */
10752
- const keyIsShift = _ => keyIsDown(g_kCdNameObj.shiftLKey) || keyIsDown(g_kCdNameObj.shiftRKey);
10952
+ const keyIsShift = () => keyIsDown(g_kCdNameObj.shiftLKey) || keyIsDown(g_kCdNameObj.shiftRKey);
10753
10953
 
10754
10954
  /**
10755
10955
  * 矢印・フリーズアロー判定
@@ -10841,8 +11041,8 @@ const judgeArrow = _j => {
10841
11041
  /**
10842
11042
  * タイミングズレを表示
10843
11043
  * @param {number} _difFrame
10844
- * @param {string} _fjdg
10845
- * @param {number} _justFrames
11044
+ * @param {string} _fjdg フリーズアロー判定有無 (フリーズアローのときは"F"が入る)
11045
+ * @param {number} _justFrames Fast/Slowの表示条件フレーム数
10846
11046
  */
10847
11047
  const displayDiff = (_difFrame, _fjdg = ``, _justFrames = g_headerObj.justFrames) => {
10848
11048
  let diffJDisp = ``;
@@ -10883,7 +11083,10 @@ const changeLifeColor = (_state = ``) => {
10883
11083
  lifeBar.style.height = wUnit((g_headerObj.playingHeight - 100) * intLifeVal / g_headerObj.maxLifeVal);
10884
11084
  };
10885
11085
 
10886
- const lifeRecovery = _ => {
11086
+ /**
11087
+ * ゲージ回復処理
11088
+ */
11089
+ const lifeRecovery = () => {
10887
11090
  g_workObj.lifeVal += g_workObj.lifeRcv;
10888
11091
 
10889
11092
  if (g_workObj.lifeVal >= g_headerObj.maxLifeVal) {
@@ -10896,7 +11099,7 @@ const lifeRecovery = _ => {
10896
11099
 
10897
11100
  /**
10898
11101
  * ゲージダメージ処理
10899
- * @param {boolean} _excessive
11102
+ * @param {boolean} _excessive 空押し判定有無
10900
11103
  */
10901
11104
  const lifeDamage = (_excessive = false) => {
10902
11105
  g_workObj.lifeVal -= g_workObj.lifeDmg * (_excessive ? 0.25 : 1);
@@ -10926,7 +11129,7 @@ const changeJudgeCharacter = (_name, _character, _fjdg = ``) => {
10926
11129
  /**
10927
11130
  * コンボの更新
10928
11131
  */
10929
- const updateCombo = _ => {
11132
+ const updateCombo = () => {
10930
11133
  if (++g_resultObj.combo > g_resultObj.maxCombo) {
10931
11134
  g_resultObj.maxCombo = g_resultObj.combo;
10932
11135
  lblMCombo.textContent = g_resultObj.maxCombo;
@@ -11038,7 +11241,11 @@ const checkJudgment = (_difCnt) => {
11038
11241
  return [jdgFuncList[idx], jdgList[idx]];
11039
11242
  };
11040
11243
 
11041
- // クリア表示
11244
+ /**
11245
+ * クリア表示
11246
+ * @param {string} _state
11247
+ * @returns
11248
+ */
11042
11249
  const resultViewText = _state => _state === `` ? `` :
11043
11250
  `<span class="result_${toCapitalize(_state)}">${g_lblNameObj[_state]}</span>`;
11044
11251
 
@@ -11053,7 +11260,7 @@ const makeFinishView = _text => {
11053
11260
  document.getElementById(label).textContent = ``);
11054
11261
  };
11055
11262
 
11056
- const finishViewing = _ => {
11263
+ const finishViewing = () => {
11057
11264
  if (g_currentArrows === g_fullArrows) {
11058
11265
  if (g_resultObj.ii + g_resultObj.kita === g_fullArrows) {
11059
11266
  g_resultObj.spState = `allPerfect`;
@@ -11075,7 +11282,7 @@ const finishViewing = _ => {
11075
11282
  /**
11076
11283
  * リザルト画面初期化
11077
11284
  */
11078
- const resultInit = _ => {
11285
+ const resultInit = () => {
11079
11286
 
11080
11287
  clearWindow(true);
11081
11288
  g_currentPage = `result`;
@@ -11190,14 +11397,16 @@ const resultInit = _ => {
11190
11397
  /**
11191
11398
  * プレイスタイルのカスタム有無
11192
11399
  * @param {string} _flg
11193
- * @param {string, boolean} _defaultSet デフォルト値
11400
+ * @param {string|boolean} _defaultSet デフォルト値
11194
11401
  * @param {string} _displayText
11195
11402
  */
11196
11403
  const withOptions = (_flg, _defaultSet, _displayText = _flg) =>
11197
11404
  (_flg !== _defaultSet ? getStgDetailName(_displayText) : ``);
11198
11405
 
11406
+ // 譜面名の組み立て処理 (Ex: 9Akey / Normal-Leftless (maker) [X-Mirror])
11407
+ const keyUnitName = getStgDetailName(getKeyUnitName(g_keyObj.currentKey));
11199
11408
  const difDatas = [
11200
- `${getKeyName(g_headerObj.keyLabels[g_stateObj.scoreId])}${transKeyName} ${getStgDetailName('key')} / ${g_headerObj.difLabels[g_stateObj.scoreId]}`,
11409
+ `${getKeyName(g_headerObj.keyLabels[g_stateObj.scoreId])}${transKeyName} ${keyUnitName} / ${g_headerObj.difLabels[g_stateObj.scoreId]}`,
11201
11410
  `${withOptions(g_autoPlaysBase.includes(g_stateObj.autoPlay), true, `-${getStgDetailName(g_stateObj.autoPlay)}${getStgDetailName('less')}`)}`,
11202
11411
  `${withOptions(g_headerObj.makerView, false, `(${g_headerObj.creatorNames[g_stateObj.scoreId]})`)}`,
11203
11412
  `${withOptions(g_stateObj.shuffle, C_FLG_OFF, `[${shuffleName}]`)}`
@@ -11205,6 +11414,7 @@ const resultInit = _ => {
11205
11414
  let difData = difDatas.filter(value => value !== ``).join(` `);
11206
11415
  const difDataForImage = difDatas.filter((value, j) => value !== `` && j !== 2).join(` `);
11207
11416
 
11417
+ // 設定の組み立て処理 (Ex: 4x, Brake, Reverse, Sudden+, NoRecovery)
11208
11418
  let playStyleData = [
11209
11419
  `${g_stateObj.speed}${g_lblNameObj.multi}`,
11210
11420
  `${withOptions(g_stateObj.motion, C_FLG_OFF)}`,
@@ -11214,6 +11424,7 @@ const resultInit = _ => {
11214
11424
  `${withOptions(g_stateObj.gauge, g_settings.gauges[0])}`
11215
11425
  ].filter(value => value !== ``).join(`, `);
11216
11426
 
11427
+ // Display設定の組み立て処理 (Ex: Step : FlatBar, Judge, Life : OFF)
11217
11428
  let displayData = [
11218
11429
  withOptions(g_stateObj.d_stepzone, C_FLG_ON, g_lblNameObj.rd_StepZone +
11219
11430
  `${g_stateObj.d_stepzone === C_FLG_OFF ? `` : ` : ${g_stateObj.d_stepzone}`}`),
@@ -11259,7 +11470,14 @@ const resultInit = _ => {
11259
11470
  makeCssResultPlayData(`lblDisplay2Data`, dataRX, g_cssObj.result_style, 5, display2Data),
11260
11471
  );
11261
11472
 
11262
- // キャラクタ、スコア描画のID共通部、色CSS名、スコア変数名
11473
+ /**
11474
+ * キャラクタ、スコア描画のID共通部、色CSS名、スコア変数名
11475
+ * @param {number} pos 表示位置(縦)
11476
+ * @param {string} id 表示用ラベルフッター
11477
+ * @param {string} color CSS用ラベルフッター
11478
+ * @param {string} label 表示名
11479
+ * @param {string} dfColor 表示する文字のカラーコード (リザルト画像で使用)
11480
+ */
11263
11481
  const jdgScoreObj = {
11264
11482
  ii: { pos: 0, id: `Ii`, color: `ii`, label: g_lblNameObj.j_ii, dfColor: `#66ffff`, },
11265
11483
  shakin: { pos: 1, id: `Shakin`, color: `shakin`, label: g_lblNameObj.j_shakin, dfColor: `#99ff99`, },
@@ -11375,7 +11593,7 @@ const resultInit = _ => {
11375
11593
 
11376
11594
  if (g_stateObj.dataSaveFlg) {
11377
11595
 
11378
- const setScoreData = _ => {
11596
+ const setScoreData = () => {
11379
11597
  g_localStorage.highscores[scoreName].dateTime = currentDateTime;
11380
11598
  g_localStorage.highscores[scoreName].rankMark = rankMark;
11381
11599
  g_localStorage.highscores[scoreName].rankColor = rankColor;
@@ -11451,7 +11669,8 @@ const resultInit = _ => {
11451
11669
  // X (Twitter)用リザルト
11452
11670
  // スコアを上塗りする可能性があるため、カスタムイベント後に配置
11453
11671
  const hashTag = (hasVal(g_headerObj.hashTag) ? ` ${g_headerObj.hashTag}` : ``);
11454
- let tweetDifData = `${getKeyName(g_headerObj.keyLabels[g_stateObj.scoreId])}${transKeyName}${getStgDetailName('k-')}${g_headerObj.difLabels[g_stateObj.scoreId]}${assistFlg}`;
11672
+ const keyUnitAbbName = keyUnitName.slice(0, 1) || ``;
11673
+ let tweetDifData = `${getKeyName(g_headerObj.keyLabels[g_stateObj.scoreId])}${transKeyName}${getStgDetailName(keyUnitAbbName + '-')}${g_headerObj.difLabels[g_stateObj.scoreId]}${assistFlg}`;
11455
11674
  if (g_stateObj.shuffle !== `OFF`) {
11456
11675
  tweetDifData += `:${shuffleName}`;
11457
11676
  }
@@ -11556,16 +11775,16 @@ const resultInit = _ => {
11556
11775
 
11557
11776
  tmpDiv.appendChild(canvas);
11558
11777
 
11559
- const viewResultImage = _ => {
11778
+ const viewResultImage = () => {
11560
11779
  if (document.getElementById(`tmpClose`) === null) {
11561
- divRoot.oncontextmenu = _ => true;
11780
+ divRoot.oncontextmenu = () => true;
11562
11781
  makeLinkButton(tmpDiv, `Tmp`);
11563
- tmpDiv.appendChild(createCss2Button(`tmpClose`, g_lblNameObj.b_close, _ => true,
11782
+ tmpDiv.appendChild(createCss2Button(`tmpClose`, g_lblNameObj.b_close, () => true,
11564
11783
  Object.assign(g_lblPosObj.btnRsCopyClose, {
11565
- resetFunc: _ => {
11784
+ resetFunc: () => {
11566
11785
  tmpDiv.removeChild(canvas);
11567
11786
  divRoot.removeChild(tmpDiv);
11568
- divRoot.oncontextmenu = _ => false;
11787
+ divRoot.oncontextmenu = () => false;
11569
11788
  },
11570
11789
  }), g_cssObj.button_Back));
11571
11790
  tmpDiv.appendChild(createDescDiv(`resultImageDesc`, g_lblNameObj.resultImageDesc));
@@ -11598,9 +11817,17 @@ const resultInit = _ => {
11598
11817
  }
11599
11818
  };
11600
11819
 
11601
- /** 音源、ループ処理の停止 */
11820
+ /**
11821
+ * 音源、ループ処理の停止
11822
+ * @param {string} _id
11823
+ * @param {string} _name
11824
+ * @param {object} _posObj
11825
+ * @param {function} _func
11826
+ * @param {...any} _cssClass
11827
+ * @returns
11828
+ */
11602
11829
  const resetCommonBtn = (_id, _name, _posObj, _func, _cssClass) =>
11603
- createCss2Button(_id, _name, _ => {
11830
+ createCss2Button(_id, _name, () => {
11604
11831
  if (g_finishFlg) {
11605
11832
  g_audio.pause();
11606
11833
  }
@@ -11616,13 +11843,13 @@ const resultInit = _ => {
11616
11843
  const makeLinkButton = (_div = divRoot, _param = ``) => {
11617
11844
  multiAppend(_div,
11618
11845
  // リザルトデータをX (Twitter)へ転送
11619
- createCss2Button(`btnTweet${_param}`, g_lblNameObj.b_tweet, _ => true, Object.assign(g_lblPosObj.btnRsTweet, {
11620
- resetFunc: _ => openLink(tweetResult),
11846
+ createCss2Button(`btnTweet${_param}`, g_lblNameObj.b_tweet, () => true, Object.assign(g_lblPosObj.btnRsTweet, {
11847
+ resetFunc: () => openLink(tweetResult),
11621
11848
  }), g_cssObj.button_Tweet),
11622
11849
 
11623
11850
  // Discordへのリンク
11624
- createCss2Button(`btnGitter${_param}`, g_lblNameObj.b_gitter, _ => true, Object.assign(g_lblPosObj.btnRsGitter, {
11625
- resetFunc: _ => openLink(g_linkObj.discord),
11851
+ createCss2Button(`btnGitter${_param}`, g_lblNameObj.b_gitter, () => true, Object.assign(g_lblPosObj.btnRsGitter, {
11852
+ resetFunc: () => openLink(g_linkObj.discord),
11626
11853
  }), g_cssObj.button_Discord),
11627
11854
  );
11628
11855
  }
@@ -11634,7 +11861,7 @@ const resultInit = _ => {
11634
11861
  resetCommonBtn(`btnBack`, g_lblNameObj.b_back, g_lblPosObj.btnRsBack, titleInit, g_cssObj.button_Back),
11635
11862
 
11636
11863
  // リザルトデータをクリップボードへコピー
11637
- createCss2Button(`btnCopy`, g_lblNameObj.b_copy, _ =>
11864
+ createCss2Button(`btnCopy`, g_lblNameObj.b_copy, () =>
11638
11865
  copyTextToClipboard(keyIsShift() ?
11639
11866
  unEscapeHtml(resultCommonTmp) : resultText, g_msgInfoObj.I_0001),
11640
11867
  g_lblPosObj.btnRsCopy, g_cssObj.button_Setting),
@@ -11644,9 +11871,9 @@ const resultInit = _ => {
11644
11871
  // リトライ
11645
11872
  resetCommonBtn(`btnRetry`, g_lblNameObj.b_retry, g_lblPosObj.btnRsRetry, loadMusic, g_cssObj.button_Reset),
11646
11873
 
11647
- createCss2Button(`btnCopyImage`, `📷`, _ => true,
11874
+ createCss2Button(`btnCopyImage`, `📷`, () => true,
11648
11875
  Object.assign(g_lblPosObj.btnRsCopyImage, {
11649
- resetFunc: _ => copyResultImageData(g_msgInfoObj.I_0001),
11876
+ resetFunc: () => copyResultImageData(g_msgInfoObj.I_0001),
11650
11877
  }), g_cssObj.button_Default_NoColor),
11651
11878
  );
11652
11879
 
@@ -11666,7 +11893,7 @@ const resultInit = _ => {
11666
11893
  /**
11667
11894
  * タイトルのモーション設定
11668
11895
  */
11669
- const flowResultTimeline = _ => {
11896
+ const flowResultTimeline = () => {
11670
11897
 
11671
11898
  // ユーザカスタムイベント(フレーム毎)
11672
11899
  g_customJsObj.resultEnterFrame.forEach(func => func());
@@ -11700,8 +11927,8 @@ const resultInit = _ => {
11700
11927
  flowResultTimeline();
11701
11928
 
11702
11929
  // キー操作イベント(デフォルト)
11703
- setShortcutEvent(g_currentPage, _ => true, { dfEvtFlg: true });
11704
- document.oncontextmenu = _ => true;
11930
+ setShortcutEvent(g_currentPage, () => true, { dfEvtFlg: true });
11931
+ document.oncontextmenu = () => true;
11705
11932
 
11706
11933
  g_skinJsObj.result.forEach(func => func());
11707
11934
  };
@@ -11709,7 +11936,18 @@ const resultInit = _ => {
11709
11936
  /**
11710
11937
  * リザルトフォーマットの整形処理
11711
11938
  * @param {string} _format
11712
- * @param {object} フォーマット置き換え変数群
11939
+ * @param {object} object フォーマット置き換え変数群
11940
+ * @param {string} object.hashTag ハッシュタグ
11941
+ * @param {string} object.musicTitle 曲名
11942
+ * @param {string} object.tweetDifData 譜面名
11943
+ * @param {string} object.tuning 製作者名
11944
+ * @param {string} object.rankMark ランク
11945
+ * @param {string} object.playStyleData プレイ設定
11946
+ * @param {object} object.highscore ハイスコア(判定別)
11947
+ * @param {string} object.tweetExcessive 空押し判定状況
11948
+ * @param {string} object.tweetFrzJdg フリーズアロー判定状況
11949
+ * @param {string} object.tweetMaxCombo コンボ数状況
11950
+ * @param {string} object.baseTwitUrl X投稿用URL
11713
11951
  * @returns
11714
11952
  */
11715
11953
  const makeResultText = (_format, {
@@ -11737,6 +11975,8 @@ const makeResultText = (_format, {
11737
11975
  * @param {number} _heightPos
11738
11976
  * @param {string} _text
11739
11977
  * @param {string} _align
11978
+ * @param {number} object.w
11979
+ * @param {number} object.siz
11740
11980
  */
11741
11981
  const makeCssResultPlayData = (_id, _x, _class, _heightPos, _text, _align = C_ALIGN_CENTER, { w = 400, siz = g_limitObj.mainSiz } = {}) =>
11742
11982
  createDivCss2Label(_id, _text, {