danoniplus 37.6.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/11
7
+ * Revised : 2024/09/25
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 37.6.0`;
12
- const g_revisedDate = `2024/09/11`;
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
 
@@ -3687,6 +3770,7 @@ const getKeyCtrlVal = _kCdN => {
3687
3770
  /**
3688
3771
  * 一時的な追加キーの設定
3689
3772
  * @param {object} _dosObj
3773
+ * @param {array} object.keyExtraList
3690
3774
  */
3691
3775
  const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`) } = {}) => {
3692
3776
 
@@ -3796,10 +3880,12 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
3796
3880
  * @param {string} _key キー数
3797
3881
  * @param {string} _name 名前
3798
3882
  * @param {function} _convFunc マッピング関数
3799
- * @param {object} _obj errCd エラーコード, baseCopyFlg コピー配列の準備可否, loopFunc パターン別に処理する個別関数
3883
+ * @param {string} object.errCd エラーコード
3884
+ * @param {boolean} object.baseCopyFlg コピー配列の準備可否
3885
+ * @param {function} object.loopFunc パターン別に処理する個別関数
3800
3886
  * @returns 最小パターン数
3801
3887
  */
3802
- const newKeyMultiParam = (_key, _name, _convFunc, { errCd = ``, baseCopyFlg = false, loopFunc = _ => true } = {}) => {
3888
+ const newKeyMultiParam = (_key, _name, _convFunc, { errCd = ``, baseCopyFlg = false, loopFunc = () => true } = {}) => {
3803
3889
  let tmpMinPatterns = 1;
3804
3890
  const keyheader = _name + _key;
3805
3891
  const dfPtn = setIntVal(g_keyObj.dfPtnNum);
@@ -4083,7 +4169,7 @@ const setKeyDfVal = _ptnName => {
4083
4169
  /**
4084
4170
  * タイトル画面初期化
4085
4171
  */
4086
- const titleInit = _ => {
4172
+ const titleInit = () => {
4087
4173
 
4088
4174
  clearWindow(true);
4089
4175
  g_currentPage = `title`;
@@ -4236,19 +4322,19 @@ const titleInit = _ => {
4236
4322
  * @param {string} _url
4237
4323
  */
4238
4324
  const createCreditBtn = (_id, _text, _url) =>
4239
- createCss2Button(_id, _text, _ => true,
4240
- 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);
4241
4327
 
4242
4328
  // ボタン描画
4243
4329
  multiAppend(divRoot,
4244
4330
 
4245
4331
  // Click Here
4246
- createCss2Button(`btnStart`, g_lblNameObj.clickHere, _ => clearTimeout(g_timeoutEvtTitleId), {
4247
- 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(),
4248
4334
  }, g_cssObj.button_Start),
4249
4335
 
4250
4336
  // Reset
4251
- createCss2Button(`btnReset`, g_lblNameObj.dataReset, _ => {
4337
+ createCss2Button(`btnReset`, g_lblNameObj.dataReset, () => {
4252
4338
  reloadFlg = false;
4253
4339
  if (window.confirm(g_msgObj.dataResetConfirm)) {
4254
4340
  g_localStorage = {
@@ -4260,7 +4346,7 @@ const titleInit = _ => {
4260
4346
  reloadFlg = true;
4261
4347
  }
4262
4348
  }, Object.assign(g_lblPosObj.btnReset, {
4263
- resetFunc: _ => {
4349
+ resetFunc: () => {
4264
4350
  if (reloadFlg) {
4265
4351
  location.reload();
4266
4352
  }
@@ -4268,9 +4354,9 @@ const titleInit = _ => {
4268
4354
  }), g_cssObj.button_Reset),
4269
4355
 
4270
4356
  // ロケール切替
4271
- createCss2Button(`btnReload`, g_localeObj.val, _ => true,
4357
+ createCss2Button(`btnReload`, g_localeObj.val, () => true,
4272
4358
  Object.assign(g_lblPosObj.btnReload, {
4273
- resetFunc: _ => {
4359
+ resetFunc: () => {
4274
4360
  g_localeObj.num = (++g_localeObj.num) % g_localeObj.list.length;
4275
4361
  g_langStorage.locale = g_localeObj.list[g_localeObj.num];
4276
4362
  localStorage.setItem(`danoni-locale`, JSON.stringify(g_langStorage));
@@ -4279,9 +4365,9 @@ const titleInit = _ => {
4279
4365
  }), g_cssObj.button_Start),
4280
4366
 
4281
4367
  // ヘルプ
4282
- createCss2Button(`btnHelp`, `?`, _ => true,
4368
+ createCss2Button(`btnHelp`, `?`, () => true,
4283
4369
  Object.assign(g_lblPosObj.btnHelp, {
4284
- resetFunc: _ => openLink(g_lblNameObj.helpUrl),
4370
+ resetFunc: () => openLink(g_lblNameObj.helpUrl),
4285
4371
  }), g_cssObj.button_Setting),
4286
4372
 
4287
4373
  // 製作者表示
@@ -4291,16 +4377,16 @@ const titleInit = _ => {
4291
4377
  createCreditBtn(`lnkArtist`, `${g_lblNameObj.artist}: ${g_headerObj.artistName}`, g_headerObj.artistUrl),
4292
4378
 
4293
4379
  // バージョン描画
4294
- createCss2Button(`lnkVersion`, versionName, _ => true,
4380
+ createCss2Button(`lnkVersion`, versionName, () => true,
4295
4381
  Object.assign(g_lblPosObj.lnkVersion, {
4296
4382
  siz: getFontSize(versionName, g_sWidth * 3 / 4 - 20, getBasicFont(), 12),
4297
- resetFunc: _ => openLink(`https://github.com/cwtickle/danoniplus`),
4383
+ resetFunc: () => openLink(`https://github.com/cwtickle/danoniplus`),
4298
4384
  }), g_cssObj.button_Tweet),
4299
4385
 
4300
4386
  // セキュリティリンク
4301
- createCss2Button(`lnkComparison`, `&#x1f6e1;`, _ => true,
4387
+ createCss2Button(`lnkComparison`, `&#x1f6e1;`, () => true,
4302
4388
  Object.assign(g_lblPosObj.lnkComparison, {
4303
- resetFunc: _ => openLink(g_lblNameObj.securityUrl),
4389
+ resetFunc: () => openLink(g_lblNameObj.securityUrl),
4304
4390
  }), g_cssObj.button_Tweet),
4305
4391
  );
4306
4392
 
@@ -4316,7 +4402,7 @@ const titleInit = _ => {
4316
4402
  } else {
4317
4403
  multiAppend(divRoot,
4318
4404
  createDivCss2Label(`lblComment`, convCommentVal, g_lblPosObj.lblComment),
4319
- createCss2Button(`btnComment`, g_lblNameObj.comment, _ => {
4405
+ createCss2Button(`btnComment`, g_lblNameObj.comment, () => {
4320
4406
  const lblCommentDef = lblComment.style.display;
4321
4407
  lblComment.style.display = (lblCommentDef === C_DIS_NONE ? C_DIS_INHERIT : C_DIS_NONE);
4322
4408
  }, g_lblPosObj.btnComment, g_cssObj.button_Default),
@@ -4334,7 +4420,7 @@ const titleInit = _ => {
4334
4420
  /**
4335
4421
  * タイトルのモーション設定
4336
4422
  */
4337
- const flowTitleTimeline = _ => {
4423
+ const flowTitleTimeline = () => {
4338
4424
 
4339
4425
  // ユーザカスタムイベント(フレーム毎)
4340
4426
  g_customJsObj.titleEnterFrame.forEach(func => func());
@@ -4353,10 +4439,10 @@ const titleInit = _ => {
4353
4439
  g_timeoutEvtTitleId = setTimeout(flowTitleTimeline, 1000 / g_fps);
4354
4440
 
4355
4441
  // キー操作イベント(デフォルト)
4356
- setShortcutEvent(g_currentPage, _ => true, { dfEvtFlg: true });
4442
+ setShortcutEvent(g_currentPage, () => true, { dfEvtFlg: true });
4357
4443
 
4358
- document.oncontextmenu = _ => true;
4359
- divRoot.oncontextmenu = _ => false;
4444
+ document.oncontextmenu = () => true;
4445
+ divRoot.oncontextmenu = () => false;
4360
4446
 
4361
4447
  g_skinJsObj.title.forEach(func => func());
4362
4448
  };
@@ -4364,7 +4450,8 @@ const titleInit = _ => {
4364
4450
  /**
4365
4451
  * 警告用ウィンドウ(汎用)を表示
4366
4452
  * @param {string} _text
4367
- * @param {object} _options resetFlg: 警告リストをクリアして再作成, backBtnUse: Backボタンを付与
4453
+ * @param {boolean} object.resetFlg 警告リストをクリアして再作成
4454
+ * @param {boolean} object.backBtnUse Backボタンを付与
4368
4455
  */
4369
4456
  const makeWarningWindow = (_text = ``, { resetFlg = false, backBtnUse = false } = {}) => {
4370
4457
  const displayName = (g_currentPage === `initial` ? `title` : g_currentPage);
@@ -4381,8 +4468,8 @@ const makeWarningWindow = (_text = ``, { resetFlg = false, backBtnUse = false }
4381
4468
  }
4382
4469
  if (backBtnUse) {
4383
4470
  // タイトルバック用ボタン
4384
- divRoot.appendChild(createCss2Button(`btnBack`, g_lblNameObj.b_back, _ => true, {
4385
- resetFunc: _ => titleInit(),
4471
+ divRoot.appendChild(createCss2Button(`btnBack`, g_lblNameObj.b_back, () => true, {
4472
+ resetFunc: () => titleInit(),
4386
4473
  }, g_cssObj.button_Back));
4387
4474
  }
4388
4475
  };
@@ -4390,6 +4477,8 @@ const makeWarningWindow = (_text = ``, { resetFlg = false, backBtnUse = false }
4390
4477
  /**
4391
4478
  * お知らせウィンドウ(汎用)を表示
4392
4479
  * @param {string} _text
4480
+ * @param {string} _animationName
4481
+ * @param {string} object._backColor
4393
4482
  */
4394
4483
  const makeInfoWindow = (_text, _animationName = ``, { _backColor = `#ccccff` } = {}) => {
4395
4484
  const lblWarning = setWindowStyle(`<p>${_text}</p>`, _backColor, `#000066`, C_ALIGN_CENTER);
@@ -4410,6 +4499,9 @@ const makeInfoWindow = (_text, _animationName = ``, { _backColor = `#ccccff` } =
4410
4499
  * @param {string} _bkColor
4411
4500
  * @param {string} _textColor
4412
4501
  * @param {string} _align
4502
+ * @param {number} object._x
4503
+ * @param {number} object._y
4504
+ * @param {number} object._w
4413
4505
  */
4414
4506
  const setWindowStyle = (_text, _bkColor, _textColor, _align = C_ALIGN_LEFT, { _x = g_btnX(), _y = 0, _w = g_btnWidth() } = {}) => {
4415
4507
 
@@ -4460,24 +4552,24 @@ const commonSettingBtn = _labelName => {
4460
4552
  multiAppend(divRoot,
4461
4553
 
4462
4554
  // タイトル画面へ戻る
4463
- createCss2Button(`btnBack`, g_lblNameObj.b_back, _ => true,
4555
+ createCss2Button(`btnBack`, g_lblNameObj.b_back, () => true,
4464
4556
  Object.assign(g_lblPosObj.btnBack, {
4465
- animationName: (g_initialFlg ? `` : `smallToNormalY`), resetFunc: _ => titleInit(),
4557
+ animationName: (g_initialFlg ? `` : `smallToNormalY`), resetFunc: () => titleInit(),
4466
4558
  }), g_cssObj.button_Back),
4467
4559
 
4468
4560
  // キーコンフィグ画面へ移動
4469
- createCss2Button(`btnKeyConfig`, g_lblNameObj.b_keyConfig, _ => true,
4561
+ createCss2Button(`btnKeyConfig`, g_lblNameObj.b_keyConfig, () => true,
4470
4562
  Object.assign(g_lblPosObj.btnKeyConfig, {
4471
- animationName: (g_initialFlg ? `` : `smallToNormalY`), resetFunc: _ => keyConfigInit(`Main`),
4563
+ animationName: (g_initialFlg ? `` : `smallToNormalY`), resetFunc: () => keyConfigInit(`Main`),
4472
4564
  }), g_cssObj.button_Setting),
4473
4565
 
4474
4566
  // プレイ開始
4475
- makePlayButton(_ => loadMusic()),
4567
+ makePlayButton(() => loadMusic()),
4476
4568
 
4477
4569
  // Display設定へ移動
4478
- createCss2Button(`btn${_labelName}`, `>`, _ => true,
4570
+ createCss2Button(`btn${_labelName}`, `>`, () => true,
4479
4571
  Object.assign(g_lblPosObj.btnSwitchSetting, {
4480
- title: g_msgObj[`to${_labelName}`], resetFunc: _ => g_jumpSettingWindow[g_currentPage](),
4572
+ title: g_msgObj[`to${_labelName}`], resetFunc: () => g_jumpSettingWindow[g_currentPage](),
4481
4573
  }), g_cssObj.button_Mini),
4482
4574
 
4483
4575
  // データセーブフラグの切替
@@ -4492,7 +4584,7 @@ const commonSettingBtn = _labelName => {
4492
4584
  * PLAYボタンの作成
4493
4585
  * @param {function} _func
4494
4586
  */
4495
- const makePlayButton = _func => createCss2Button(`btnPlay`, g_lblNameObj.b_play, _ => true,
4587
+ const makePlayButton = _func => createCss2Button(`btnPlay`, g_lblNameObj.b_play, () => true,
4496
4588
  Object.assign(g_lblPosObj.btnPlay, {
4497
4589
  animationName: (g_initialFlg ? `` : `smallToNormalY`), resetFunc: _func,
4498
4590
  }), g_cssObj.button_Next);
@@ -4500,7 +4592,7 @@ const makePlayButton = _func => createCss2Button(`btnPlay`, g_lblNameObj.b_play,
4500
4592
  /**
4501
4593
  * 設定・オプション画面初期化
4502
4594
  */
4503
- const optionInit = _ => {
4595
+ const optionInit = () => {
4504
4596
 
4505
4597
  clearWindow(true);
4506
4598
  const divRoot = document.getElementById(`divRoot`);
@@ -4521,8 +4613,8 @@ const optionInit = _ => {
4521
4613
  commonSettingBtn(`Display`);
4522
4614
 
4523
4615
  // キー操作イベント(デフォルト)
4524
- setShortcutEvent(g_currentPage, _ => true, { dfEvtFlg: true });
4525
- document.oncontextmenu = _ => true;
4616
+ setShortcutEvent(g_currentPage, () => true, { dfEvtFlg: true });
4617
+ document.oncontextmenu = () => true;
4526
4618
  g_initialFlg = true;
4527
4619
 
4528
4620
  g_skinJsObj.option.forEach(func => func());
@@ -4568,12 +4660,12 @@ const inputSliderAppearance = (_slider, _link) => {
4568
4660
  /**
4569
4661
  * 譜面変更セレクターの削除
4570
4662
  */
4571
- const resetDifWindow = _ => {
4663
+ const resetDifWindow = () => {
4572
4664
  if (document.getElementById(`difList`) !== null) {
4573
4665
  deleteChildspriteAll(`difList`);
4574
4666
  [`difList`, `difCover`, `btnDifU`, `btnDifD`].forEach(obj => document.getElementById(obj).remove());
4575
4667
  g_currentPage = `option`;
4576
- setShortcutEvent(g_currentPage, _ => true, { displayFlg: false, dfEvtFlg: true });
4668
+ setShortcutEvent(g_currentPage, () => true, { displayFlg: false, dfEvtFlg: true });
4577
4669
  }
4578
4670
  };
4579
4671
 
@@ -4613,7 +4705,7 @@ const makeDifList = (_difList, _targetKey = ``) => {
4613
4705
  if (g_headerObj.makerView) {
4614
4706
  text += ` (${g_headerObj.creatorNames[j]})`;
4615
4707
  }
4616
- _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),
4617
4709
  { btnStyle: (j === g_stateObj.scoreId ? `Setting` : `Default`) }));
4618
4710
  if (j === g_stateObj.scoreId) {
4619
4711
  pos = k + 6.5 * (g_sHeight - 239) / 261;
@@ -4640,7 +4732,7 @@ const makeDifList = (_difList, _targetKey = ``) => {
4640
4732
  */
4641
4733
  const makeDifBtn = (_scrollNum = 1) => {
4642
4734
  const dir = _scrollNum === 1 ? `D` : `U`;
4643
- return createCss2Button(`btnDif${dir}`, g_settingBtnObj.chara[dir], _ => {
4735
+ return createCss2Button(`btnDif${dir}`, g_settingBtnObj.chara[dir], () => {
4644
4736
  do {
4645
4737
  g_stateObj.scoreId = getNextDifficulty(g_stateObj.scoreId, _scrollNum);
4646
4738
  } while (g_stateObj.filterKeys !== `` && g_stateObj.filterKeys !== g_headerObj.keyLabels[g_stateObj.scoreId]);
@@ -4669,14 +4761,14 @@ const createDifWindow = (_key = ``) => {
4669
4761
 
4670
4762
  // ランダム選択
4671
4763
  difCover.appendChild(
4672
- makeDifLblCssButton(`difRandom`, `RANDOM`, 0, _ => {
4764
+ makeDifLblCssButton(`difRandom`, `RANDOM`, 0, () => {
4673
4765
  nextDifficulty(Math.floor(Math.random() * g_headerObj.keyLabels.length));
4674
4766
  }, { w: g_limitObj.difCoverWidth })
4675
4767
  );
4676
4768
 
4677
4769
  // 全リスト
4678
4770
  difCover.appendChild(
4679
- makeDifLblCssButton(`keyFilter`, `ALL`, 1.9, _ => {
4771
+ makeDifLblCssButton(`keyFilter`, `ALL`, 1.9, () => {
4680
4772
  resetDifWindow();
4681
4773
  g_stateObj.filterKeys = ``;
4682
4774
  createDifWindow();
@@ -4687,7 +4779,7 @@ const createDifWindow = (_key = ``) => {
4687
4779
  let pos = 0;
4688
4780
  g_headerObj.viewKeyLists.forEach((targetKey, m) => {
4689
4781
  difFilter.appendChild(
4690
- makeDifLblCssButton(`keyFilter${m}`, `${getKeyName(targetKey)} ${getStgDetailName(getKeyUnitName(targetKey))}`, m, _ => {
4782
+ makeDifLblCssButton(`keyFilter${m}`, `${getKeyName(targetKey)} ${getStgDetailName(getKeyUnitName(targetKey))}`, m, () => {
4691
4783
  resetDifWindow();
4692
4784
  g_stateObj.filterKeys = targetKey;
4693
4785
  createDifWindow(targetKey);
@@ -4702,6 +4794,10 @@ const createDifWindow = (_key = ``) => {
4702
4794
  multiAppend(optionsprite, makeDifBtn(-1), makeDifBtn());
4703
4795
  };
4704
4796
 
4797
+ /**
4798
+ * 譜面変更ボタンを押したときの処理
4799
+ * @param {number} _num
4800
+ */
4705
4801
  const changeDifficulty = (_num = 1) => {
4706
4802
  if (g_headerObj.difSelectorUse) {
4707
4803
  g_stateObj.filterKeys = ``;
@@ -4883,7 +4979,13 @@ const updateScoreDetailLabel = (_name, _label, _value, _pos = 0, _labelname = _l
4883
4979
  /**
4884
4980
  * グラフの縦軸を描画
4885
4981
  * @param {object} _context
4886
- * @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座標)目盛の上限値
4887
4989
  */
4888
4990
  const drawBaseLine = (_context, { _fixed = 2, _mark = ``, _resolution = 10, _a = -90, _b = 105, _min = 0, _max = 2 } = {}) => {
4889
4991
  _context.clearRect(0, 0, g_limitObj.graphWidth, g_limitObj.graphHeight);
@@ -4904,7 +5006,10 @@ const drawBaseLine = (_context, { _fixed = 2, _mark = ``, _resolution = 10, _a =
4904
5006
  * @param {object} _context
4905
5007
  * @param {number} _y
4906
5008
  * @param {string} _lineType
4907
- * @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
4908
5013
  */
4909
5014
  const drawLine = (_context, _y, _lineType, { _fixed, _mark, _a, _b } = {}) => {
4910
5015
  const lineY = (_y - 1) * _a + _b;
@@ -4977,7 +5082,7 @@ const makeDifInfoLabels = _scoreId => {
4977
5082
  makeDifInfoLabel(`dataArrowInfo`, ``, g_lblPosObj.dataArrowInfo),
4978
5083
  makeDifInfoLabel(`lblArrowInfo2`, ``, g_lblPosObj.lblArrowInfo2),
4979
5084
  makeDifInfoLabel(`dataArrowInfo2`, ``, g_lblPosObj.dataArrowInfo2),
4980
- makeDifLblCssButton(`lnkDifInfo`, g_lblNameObj.s_print, 8, _ => {
5085
+ makeDifLblCssButton(`lnkDifInfo`, g_lblNameObj.s_print, 8, () => {
4981
5086
  copyTextToClipboard(
4982
5087
  `****** ${g_lblNameObj.s_printTitle} [${g_version}] ******\r\n\r\n`
4983
5088
  + `\t${g_lblNameObj.s_printHeader}\r\n\r\n${printData}`, g_msgInfoObj.I_0003
@@ -5162,13 +5267,13 @@ const makeHighScore = _scoreId => {
5162
5267
  }
5163
5268
  const resultText = `${unEscapeHtml(tweetResultTmp)}`;
5164
5269
  multiAppend(detailHighScore,
5165
- makeDifLblCssButton(`lnkResetHighScore`, g_lblNameObj.s_resetResult, 7, _ => {
5270
+ makeDifLblCssButton(`lnkResetHighScore`, g_lblNameObj.s_resetResult, 7, () => {
5166
5271
  if (window.confirm(g_msgObj.highscResetConfirm)) {
5167
5272
  delete g_localStorage.highscores[scoreName];
5168
5273
  makeHighScore(_scoreId);
5169
5274
  }
5170
5275
  }, Object.assign({ btnStyle: `Reset` }, g_lblPosObj.lnkHighScore)),
5171
- makeDifLblCssButton(`lnkHighScore`, g_lblNameObj.s_result, 8, _ => {
5276
+ makeDifLblCssButton(`lnkHighScore`, g_lblNameObj.s_result, 8, () => {
5172
5277
  copyTextToClipboard(keyIsShift() ? resultCommon : resultText, g_msgInfoObj.I_0001);
5173
5278
  }, g_lblPosObj.lnkHighScore),
5174
5279
  );
@@ -5183,6 +5288,8 @@ const makeHighScore = _scoreId => {
5183
5288
  * この関数を実行後、このフラグはONに戻るようになっている
5184
5289
  * - [キーコン]->[初期化]->[名称設定]の順に配置する。
5185
5290
  * 初期化処理にてキー数関連の設定を行っているため、この順序で無いとデータが正しく格納されない
5291
+ *
5292
+ * @param {boolean} _initFlg
5186
5293
  */
5187
5294
  const setDifficulty = (_initFlg) => {
5188
5295
 
@@ -5378,15 +5485,15 @@ const createOptionWindow = _sprite => {
5378
5485
  // 縦位置: 0
5379
5486
  spriteList.difficulty.appendChild(createLblSetting(`Difficulty`, -5));
5380
5487
 
5381
- const lnkDifficulty = makeSettingLblCssButton(`lnkDifficulty`, ``, 0, _ => changeDifficulty(), {
5382
- 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),
5383
5490
  });
5384
5491
 
5385
5492
  // 譜面選択ボタン(メイン、右回し、左回し)
5386
5493
  multiAppend(spriteList.difficulty,
5387
5494
  lnkDifficulty,
5388
- makeMiniCssButton(`lnkDifficulty`, `R`, 0, _ => nextDifficulty(), { dy: -10, dh: 10 }),
5389
- 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 }),
5390
5497
  );
5391
5498
  createScText(spriteList.difficulty, `Difficulty`);
5392
5499
  if (g_headerObj.difSelectorUse) {
@@ -5440,12 +5547,12 @@ const createOptionWindow = _sprite => {
5440
5547
 
5441
5548
  if (g_settings.scoreDetails.length > 0) {
5442
5549
  multiAppend(spriteList.speed,
5443
- createCss2Button(`btnGraphB`, ``, _ => true, {
5444
- 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),
5445
5552
  }, g_cssObj.button_Mini),
5446
- createCss2Button(`btnGraph`, `i`, _ => true, {
5553
+ createCss2Button(`btnGraph`, `i`, () => true, {
5447
5554
  x: -25, y: -60, w: 30, h: 30, siz: g_limitObj.jdgCharaSiz, title: g_msgObj.graph,
5448
- resetFunc: _ => setScoreDetail(), cxtFunc: _ => setScoreDetail(),
5555
+ resetFunc: () => setScoreDetail(), cxtFunc: () => setScoreDetail(),
5449
5556
  }, g_cssObj.button_Mini)
5450
5557
  );
5451
5558
  g_stateObj.scoreDetailViewFlg = false;
@@ -5483,7 +5590,7 @@ const createOptionWindow = _sprite => {
5483
5590
  );
5484
5591
  g_settings.scoreDetails.forEach((sd, j) => {
5485
5592
  scoreDetail.appendChild(
5486
- makeDifLblCssButton(`lnk${sd}G`, getStgDetailName(sd), j, _ => changeScoreDetail(j), {
5593
+ makeDifLblCssButton(`lnk${sd}G`, getStgDetailName(sd), j, () => changeScoreDetail(j), {
5487
5594
  w: g_limitObj.difCoverWidth, h: 20, title: g_msgObj[`s_${sd}`],
5488
5595
  btnStyle: (g_stateObj.scoreDetail === sd ? `Setting` : `Default`),
5489
5596
  })
@@ -5494,6 +5601,7 @@ const createOptionWindow = _sprite => {
5494
5601
 
5495
5602
  /**
5496
5603
  * 譜面明細表示/非表示ボタンの処理
5604
+ * @param {boolean} _resetFlg
5497
5605
  */
5498
5606
  const setScoreDetail = (_resetFlg = false) => {
5499
5607
  if (g_currentPage === `difSelector`) {
@@ -5524,7 +5632,7 @@ const createOptionWindow = _sprite => {
5524
5632
  // リバース (Reverse) / スクロール (Scroll)
5525
5633
  // 縦位置: 4
5526
5634
  createGeneralSetting(spriteList.reverse, `reverse`, {
5527
- addRFunc: _ => {
5635
+ addRFunc: () => {
5528
5636
  if (g_headerObj.scrollUse && g_settings.scrolls.length > 1) {
5529
5637
  setReverseView(document.getElementById(`btnReverse`));
5530
5638
  }
@@ -5551,14 +5659,14 @@ const createOptionWindow = _sprite => {
5551
5659
  // ミラー・ランダム (Shuffle)
5552
5660
  // 縦位置: 5.5
5553
5661
  createGeneralSetting(spriteList.shuffle, `shuffle`, g_settings.scoreDetails.length > 0 ? {
5554
- addRFunc: _ => makeHighScore(g_stateObj.scoreId),
5662
+ addRFunc: () => makeHighScore(g_stateObj.scoreId),
5555
5663
  } : {});
5556
5664
 
5557
5665
  // ---------------------------------------------------
5558
5666
  // 鑑賞モード設定 (AutoPlay)
5559
5667
  // 縦位置: 6.5
5560
5668
  createGeneralSetting(spriteList.autoPlay, `autoPlay`, g_settings.scoreDetails.length > 0 ? {
5561
- addRFunc: _ => makeHighScore(g_stateObj.scoreId),
5669
+ addRFunc: () => makeHighScore(g_stateObj.scoreId),
5562
5670
  } : {});
5563
5671
 
5564
5672
  // ---------------------------------------------------
@@ -5571,9 +5679,9 @@ const createOptionWindow = _sprite => {
5571
5679
 
5572
5680
  if (g_headerObj.gaugeUse) {
5573
5681
  multiAppend(spriteList.gauge,
5574
- makeSettingLblCssButton(`lnkGauge`, ``, 0, _ => setGauge(1), { cxtFunc: _ => setGauge(-1) }),
5575
- makeMiniCssButton(`lnkGauge`, `R`, 0, _ => setGauge(1)),
5576
- 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)),
5577
5685
  );
5578
5686
  createScText(spriteList.gauge, `Gauge`);
5579
5687
  } else {
@@ -5602,10 +5710,10 @@ const createOptionWindow = _sprite => {
5602
5710
  // 縦位置: 10.5 短縮ショートカットあり
5603
5711
  createGeneralSetting(spriteList.adjustment, `adjustment`, {
5604
5712
  skipTerms: g_settings.adjustmentTerms, hiddenBtn: true, scLabel: g_lblNameObj.sc_adjustment, roundNum: 5,
5605
- unitName: g_lblNameObj.frame, addRFunc: _ => viewAdjustment(),
5713
+ unitName: g_lblNameObj.frame, addRFunc: () => viewAdjustment(),
5606
5714
  });
5607
5715
 
5608
- const viewAdjustment = _ => {
5716
+ const viewAdjustment = () => {
5609
5717
  if (g_headerObj.playbackRate !== 1) {
5610
5718
  const adjustmentVal = isLocalMusicFile(g_stateObj.scoreId) ?
5611
5719
  Math.round(g_stateObj.adjustment / g_headerObj.playbackRate) :
@@ -5636,8 +5744,8 @@ const createOptionWindow = _sprite => {
5636
5744
  multiAppend(spriteList.fadein,
5637
5745
 
5638
5746
  // 右回し・左回しボタン
5639
- makeMiniCssButton(`lnkFadein`, `R`, 0, _ => setFadein(1)),
5640
- makeMiniCssButton(`lnkFadein`, `L`, 0, _ => setFadein(-1)),
5747
+ makeMiniCssButton(`lnkFadein`, `R`, 0, () => setFadein(1)),
5748
+ makeMiniCssButton(`lnkFadein`, `L`, 0, () => setFadein(-1)),
5641
5749
 
5642
5750
  // フェードインのスライダー処理
5643
5751
  createDivCss2Label(`lblFadeinBar`, `<input id="fadeinSlider" type="range" value="${g_stateObj.fadein}" min="0" max="99" step="1">`,
@@ -5646,7 +5754,7 @@ const createOptionWindow = _sprite => {
5646
5754
  );
5647
5755
 
5648
5756
  const fadeinSlider = document.getElementById(`fadeinSlider`);
5649
- fadeinSlider.addEventListener(`input`, _ =>
5757
+ fadeinSlider.addEventListener(`input`, () =>
5650
5758
  g_stateObj.fadein = inputSlider(fadeinSlider, lnkFadein), false);
5651
5759
 
5652
5760
  // ---------------------------------------------------
@@ -5662,17 +5770,26 @@ const createOptionWindow = _sprite => {
5662
5770
 
5663
5771
  // 設定画面の一通りのオブジェクトを作成後に譜面・速度・ゲージ設定をまとめて行う
5664
5772
  setDifficulty(false);
5665
- optionsprite.oncontextmenu = _ => false;
5773
+ optionsprite.oncontextmenu = () => false;
5666
5774
  };
5667
5775
 
5668
5776
  /**
5669
5777
  * 汎用設定
5670
5778
  * @param {object} _obj
5671
5779
  * @param {string} _settingName
5672
- * @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座標位置
5673
5790
  */
5674
5791
  const createGeneralSetting = (_obj, _settingName, { unitName = ``,
5675
- skipTerms = fillArray(3, 1), hiddenBtn = false, addRFunc = _ => { }, addLFunc = addRFunc,
5792
+ skipTerms = fillArray(3, 1), hiddenBtn = false, addRFunc = () => { }, addLFunc = addRFunc,
5676
5793
  settingLabel = _settingName, displayName = g_currentPage, scLabel = ``, roundNum = 0, adjY = 0 } = {}) => {
5677
5794
 
5678
5795
  const settingUpper = toCapitalize(_settingName);
@@ -5684,39 +5801,39 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
5684
5801
 
5685
5802
  multiAppend(_obj,
5686
5803
  makeSettingLblCssButton(linkId, `${initName}${g_localStorage[_settingName] === g_stateObj[_settingName] ? ' *' : ''}`, 0,
5687
- _ => {
5688
- setSetting(skipTerms[1], _settingName, unitName, roundNum, { func: _ => addRFunc() });
5804
+ () => {
5805
+ setSetting(skipTerms[1], _settingName, unitName, roundNum, { func: () => addRFunc() });
5689
5806
  }, {
5690
- cxtFunc: _ => {
5691
- setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() });
5807
+ cxtFunc: () => {
5808
+ setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum, { func: () => addLFunc() });
5692
5809
  }
5693
5810
  }),
5694
5811
 
5695
5812
  // 右回し・左回しボタン(外側)
5696
- makeMiniCssButton(linkId, `R`, 0, _ =>
5697
- setSetting(skipTerms[0], _settingName, unitName, roundNum, { func: _ => addRFunc() })),
5698
- makeMiniCssButton(linkId, `L`, 0, _ =>
5699
- 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() })),
5700
5817
  );
5701
5818
 
5702
5819
  // 右回し・左回しボタン(内側)
5703
5820
  if (skipTerms[1] > 1) {
5704
5821
  multiAppend(_obj,
5705
- makeMiniCssButton(linkId, `RR`, 0, _ =>
5706
- setSetting(skipTerms[1], _settingName, unitName, roundNum, { func: _ => addRFunc() })),
5707
- makeMiniCssButton(linkId, `LL`, 0, _ =>
5708
- 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() })),
5709
5826
  );
5710
5827
  }
5711
5828
 
5712
5829
  // 右回し・左回しボタン(最内側)
5713
5830
  if (skipTerms[2] > 1) {
5714
5831
  multiAppend(_obj,
5715
- makeMiniCssButton(linkId, `RRR`, 0, _ =>
5716
- setSetting(skipTerms[2], _settingName, unitName, roundNum, { func: _ => addRFunc() })
5832
+ makeMiniCssButton(linkId, `RRR`, 0, () =>
5833
+ setSetting(skipTerms[2], _settingName, unitName, roundNum, { func: () => addRFunc() })
5717
5834
  , { dw: -g_limitObj.setMiniWidth / 2 }),
5718
- makeMiniCssButton(linkId, `LLL`, 0, _ =>
5719
- setSetting(skipTerms[2] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() })
5835
+ makeMiniCssButton(linkId, `LLL`, 0, () =>
5836
+ setSetting(skipTerms[2] * (-1), _settingName, unitName, roundNum, { func: () => addLFunc() })
5720
5837
  , { dw: -g_limitObj.setMiniWidth / 2 }),
5721
5838
  );
5722
5839
  }
@@ -5724,8 +5841,8 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
5724
5841
  // 右回し・左回しボタン(不可視)
5725
5842
  if (hiddenBtn) {
5726
5843
  multiAppend(_obj,
5727
- makeMiniCssButton(linkId, `HR`, 0, _ => setSetting(1, _settingName, unitName, roundNum, { func: _ => addRFunc() }), { visibility: `hidden` }),
5728
- 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` }),
5729
5846
  );
5730
5847
  }
5731
5848
 
@@ -5765,10 +5882,11 @@ const getStgDetailName = _name => {
5765
5882
  * 設定メイン・汎用
5766
5883
  * @param {number} _scrollNum
5767
5884
  * @param {string} _settingName
5768
- * @param {string} _unitName
5769
- * @param {number} _roundNum
5885
+ * @param {string} _unitName 設定の単位名
5886
+ * @param {number} _roundNum 設定スキップ間隔の丸め基準数
5887
+ * @param {function} object.func 設定ボタンを押した後の追加処理
5770
5888
  */
5771
- const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0, { func = _ => true } = {}) => {
5889
+ const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0, { func = () => true } = {}) => {
5772
5890
  let settingNum = g_settings[`${_settingName}Num`];
5773
5891
  const settingList = g_settings[`${_settingName}s`];
5774
5892
  const settingMax = settingList.length - 1;
@@ -5820,7 +5938,7 @@ const getKeyReverse = (_localStorage, _extraKeyName = ``) => {
5820
5938
  /**
5821
5939
  * リバースのデフォルト化処理
5822
5940
  */
5823
- const setReverseDefault = _ => {
5941
+ const setReverseDefault = () => {
5824
5942
  g_stateObj.reverse = C_FLG_OFF;
5825
5943
  g_settings.reverseNum = 0;
5826
5944
  };
@@ -5847,13 +5965,16 @@ const setReverseView = _btn => {
5847
5965
  /**
5848
5966
  * ゲージ設定メイン
5849
5967
  * @param {number} _scrollNum
5968
+ * @param {boolean} _gaugeInitFlg
5850
5969
  */
5851
5970
  const setGauge = (_scrollNum, _gaugeInitFlg = false) => {
5852
5971
 
5853
5972
  /**
5854
5973
  * ゲージ詳細一括変更
5855
5974
  * @param {object} _baseObj
5856
- * @param {object} _obj
5975
+ * @param {number} object.magInit
5976
+ * @param {number} object.magRcv
5977
+ * @param {number} object.magDmg
5857
5978
  */
5858
5979
  const setLifeCategory = (_baseObj, { _magInit = 1, _magRcv = 1, _magDmg = 1 } = {}) => {
5859
5980
  if (hasVal(_baseObj.lifeInits[g_stateObj.scoreId])) {
@@ -6042,6 +6163,7 @@ const getAccuracy = (_border, _rcv, _dmg, _init, _allCnt) => {
6042
6163
 
6043
6164
  /**
6044
6165
  * 空押し判定の設定
6166
+ * @param {object} _btn
6045
6167
  */
6046
6168
  const setExcessive = _btn => {
6047
6169
  g_settings.excessiveNum = (g_settings.excessiveNum + 1) % 2;
@@ -6064,8 +6186,8 @@ const getKeyCtrl = (_localStorage, _extraKeyName = ``) => {
6064
6186
  const prevPtn = g_keyObj.currentPtn;
6065
6187
  g_keyObj.currentPtn = -1;
6066
6188
  const copyPtn = `${g_keyObj.currentKey}_-1`;
6067
- g_keyObj[`keyCtrl${copyPtn}`] = [...Array(baseKeyNum)].map(_ => []);
6068
- 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(() => []);
6069
6191
 
6070
6192
  for (let j = 0; j < baseKeyNum; j++) {
6071
6193
  for (let k = 0; k < g_keyObj[`keyCtrl${basePtn}`][j].length; k++) {
@@ -6097,17 +6219,23 @@ const getKeyCtrl = (_localStorage, _extraKeyName = ``) => {
6097
6219
  * @param {string} _name 初期設定文字
6098
6220
  * @param {number} _heightPos 上からの配置順
6099
6221
  * @param {function} _func 通常ボタン処理
6100
- * @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
6101
6229
  * @param {...any} _classes 追加するクラス
6102
6230
  */
6103
- 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) => {
6104
6232
  const tmpObj = {
6105
6233
  x: x ?? g_limitObj.setLblLeft,
6106
6234
  y: y ?? g_limitObj.setLblHeight * _heightPos,
6107
6235
  w: w ?? g_limitObj.setLblWidth,
6108
6236
  h: h ?? g_limitObj.setLblHeight,
6109
6237
  siz: siz ?? g_limitObj.setLblSiz,
6110
- cxtFunc: cxtFunc ?? (_ => true),
6238
+ cxtFunc: cxtFunc ?? (() => true),
6111
6239
  };
6112
6240
  return createCss2Button(_id, _name, _func, { ...tmpObj, ...rest }, g_cssObj.button_Default, ..._classes);
6113
6241
  };
@@ -6118,6 +6246,10 @@ const makeSettingLblCssButton = (_id, _name, _heightPos, _func, { x, y, w, h, si
6118
6246
  * @param {string} _name 初期設定文字
6119
6247
  * @param {number} _heightPos 上からの配置順
6120
6248
  * @param {function} _func
6249
+ * @param {number} object.x
6250
+ * @param {number} object.w
6251
+ * @param {number} object.h
6252
+ * @param {string} object.btnStyle
6121
6253
  */
6122
6254
  const makeDifLblCssButton = (_id, _name, _heightPos, _func,
6123
6255
  { x = 0, w = g_limitObj.difSelectorWidth, h = g_limitObj.setLblHeight, btnStyle = `Default` } = {}) =>
@@ -6131,6 +6263,12 @@ const makeDifLblCssButton = (_id, _name, _heightPos, _func,
6131
6263
  * @param {string} _directionFlg 表示用ボタンのどちら側に置くかを設定。(R, RR:右、L, LL:左)
6132
6264
  * @param {number} _heightPos 上からの配置順
6133
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
6134
6272
  */
6135
6273
  const makeMiniCssButton = (_id, _directionFlg, _heightPos, _func, { dx = 0, dy = 0, dw = 0, dh = 0, dsiz = 0, visibility = `visible` } = {}) =>
6136
6274
  createCss2Button(`${_id}${_directionFlg}`, g_settingBtnObj.chara[_directionFlg], _func, {
@@ -6141,6 +6279,7 @@ const makeMiniCssButton = (_id, _directionFlg, _heightPos, _func, { dx = 0, dy =
6141
6279
  /**
6142
6280
  * カラーグループ、シャッフルグループの再設定
6143
6281
  * @param {string} _type
6282
+ * @param {string} _keyCtrlPtn
6144
6283
  */
6145
6284
  const resetGroupList = (_type, _keyCtrlPtn) => {
6146
6285
  let k = 1;
@@ -6160,7 +6299,7 @@ const resetGroupList = (_type, _keyCtrlPtn) => {
6160
6299
  /* Scene : SETTINGS-DISPLAY [lemon] */
6161
6300
  /*-----------------------------------------------------------*/
6162
6301
 
6163
- const settingsDisplayInit = _ => {
6302
+ const settingsDisplayInit = () => {
6164
6303
 
6165
6304
  clearWindow(true);
6166
6305
  const divRoot = document.getElementById(`divRoot`);
@@ -6187,7 +6326,7 @@ const settingsDisplayInit = _ => {
6187
6326
 
6188
6327
  // キー操作イベント(デフォルト)
6189
6328
  setShortcutEvent(g_currentPage);
6190
- document.oncontextmenu = _ => true;
6329
+ document.oncontextmenu = () => true;
6191
6330
 
6192
6331
  g_skinJsObj.settingsDisplay.forEach(func => func());
6193
6332
  };
@@ -6200,9 +6339,9 @@ const createSettingsDisplayWindow = _sprite => {
6200
6339
 
6201
6340
  /**
6202
6341
  * Display表示/非表示ボタン
6203
- * @param {*} _name
6204
- * @param {*} _heightPos 縦位置
6205
- * @param {*} _widthPos 横位置
6342
+ * @param {string} _name
6343
+ * @param {number} _heightPos 縦位置
6344
+ * @param {number} _widthPos 横位置
6206
6345
  */
6207
6346
  const makeDisplayButton = (_name, _heightPos, _widthPos) => {
6208
6347
 
@@ -6217,10 +6356,10 @@ const createSettingsDisplayWindow = _sprite => {
6217
6356
  const cssBgList = [g_settings.d_cssBgName, g_settings.d_cssBgName].concat(Array(g_settings[`d_${_name}s`]?.length).fill(g_settings.d_cssBgExName) || []);
6218
6357
  const lbls = [toCapitalize(_name), toCapitalize(_name)].concat(g_settings[`d_${_name}s`] || []);
6219
6358
 
6220
- 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()}`]) ?
6221
6360
  g_lblNameObj[`d_${toCapitalize(_name)}`] : getStgDetailName(lbls[g_settings.displayNum[_name]]);
6222
6361
 
6223
- const withShortCutDesc = _ => createScText(document.getElementById(linkId), `${toCapitalize(_name)}`,
6362
+ const withShortCutDesc = () => createScText(document.getElementById(linkId), `${toCapitalize(_name)}`,
6224
6363
  { displayName: g_currentPage, targetLabel: linkId, x: -5 });
6225
6364
 
6226
6365
  /**
@@ -6248,10 +6387,10 @@ const createSettingsDisplayWindow = _sprite => {
6248
6387
  // Displayボタン初期化
6249
6388
  g_settings.displayNum[_name] = list.findIndex(flg => flg === g_stateObj[`d_${_name.toLowerCase()}`]);
6250
6389
  displaySprite.appendChild(
6251
- makeSettingLblCssButton(linkId, dispView(), _heightPos, _ => switchDisplay(), {
6390
+ makeSettingLblCssButton(linkId, dispView(), _heightPos, () => switchDisplay(), {
6252
6391
  x: 30 + 180 * _widthPos, w: 170,
6253
6392
  title: g_msgObj[`d_${_name.toLowerCase()}`], borderStyle: `solid`,
6254
- cxtFunc: _ => switchDisplay(-1),
6393
+ cxtFunc: () => switchDisplay(-1),
6255
6394
  }, `button_${cssBgList[g_settings.displayNum[_name]]}`, `button_${cssBarList[g_settings.displayNum[_name]]}`)
6256
6395
  );
6257
6396
  withShortCutDesc();
@@ -6259,7 +6398,7 @@ const createSettingsDisplayWindow = _sprite => {
6259
6398
  // Display切替ボタン(ON/OFF以外用)
6260
6399
  if (g_settings[`d_${_name}s`] !== undefined) {
6261
6400
  displaySprite.appendChild(
6262
- makeSettingLblCssButton(`${linkId}R`, `>`, _heightPos, _ => switchDisplay(1, false), {
6401
+ makeSettingLblCssButton(`${linkId}R`, `>`, _heightPos, () => switchDisplay(1, false), {
6263
6402
  x: 175 + 180 * _widthPos, w: 25,
6264
6403
  }, g_cssObj.button_Mini)
6265
6404
  );
@@ -6288,7 +6427,7 @@ const createSettingsDisplayWindow = _sprite => {
6288
6427
  // 矢印の見え方 (Appearance)
6289
6428
  // 縦位置: 7.4
6290
6429
  createGeneralSetting(spriteList.appearance, `appearance`, {
6291
- addRFunc: _ => dispAppearanceSlider(),
6430
+ addRFunc: () => dispAppearanceSlider(),
6292
6431
  });
6293
6432
 
6294
6433
  // Hidden+/Sudden+初期値用スライダー、ロックボタン
@@ -6312,10 +6451,10 @@ const createSettingsDisplayWindow = _sprite => {
6312
6451
  };
6313
6452
 
6314
6453
  const appearanceSlider = document.getElementById(`appearanceSlider`);
6315
- appearanceSlider.addEventListener(`input`, _ =>
6454
+ appearanceSlider.addEventListener(`input`, () =>
6316
6455
  g_hidSudObj.filterPos = inputSliderAppearance(appearanceSlider, lblAppearancePos), false);
6317
6456
 
6318
- const dispAppearanceSlider = _ => {
6457
+ const dispAppearanceSlider = () => {
6319
6458
  [`lblAppearanceBar`, `lnkLockBtn`, `lnkfilterLine`].forEach(obj =>
6320
6459
  $id(obj).visibility = g_appearanceRanges.includes(g_stateObj.appearance) ? `Visible` : `Hidden`);
6321
6460
  inputSliderAppearance(appearanceSlider, lblAppearancePos);
@@ -6387,6 +6526,7 @@ const interlockingButton = (_headerObj, _name, _current, _next, _buttonFlg = fal
6387
6526
 
6388
6527
  /**
6389
6528
  * キーコンフィグ画面初期化
6529
+ * @param {string} _kcType
6390
6530
  */
6391
6531
  const keyConfigInit = (_kcType = g_kcType) => {
6392
6532
 
@@ -6443,6 +6583,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6443
6583
 
6444
6584
  /**
6445
6585
  * キーコンフィグ用の矢印色を取得
6586
+ * @param {number} _j
6446
6587
  * @param {number} _colorPos
6447
6588
  */
6448
6589
  const getKeyConfigColor = (_j, _colorPos) => {
@@ -6519,9 +6660,9 @@ const keyConfigInit = (_kcType = g_kcType) => {
6519
6660
  const arrowColor = getKeyConfigColor(j, colorPos);
6520
6661
 
6521
6662
  keyconSprite.appendChild(
6522
- createCss2Button(`color${j}`, ``, _ => changeTmpColor(j), {
6663
+ createCss2Button(`color${j}`, ``, () => changeTmpColor(j), {
6523
6664
  x: keyconX, y: keyconY, w: C_ARW_WIDTH, h: C_ARW_WIDTH,
6524
- cxtFunc: _ => changeTmpColor(j, -1),
6665
+ cxtFunc: () => changeTmpColor(j, -1),
6525
6666
  }, g_cssObj.button_Default_NoColor, g_cssObj.title_base)
6526
6667
  );
6527
6668
  // キーコンフィグ表示用の矢印・おにぎりを表示
@@ -6538,10 +6679,10 @@ const keyConfigInit = (_kcType = g_kcType) => {
6538
6679
  );
6539
6680
  if (g_headerObj.shuffleUse && g_keyObj[`shuffle${keyCtrlPtn}`] !== undefined) {
6540
6681
  keyconSprite.appendChild(
6541
- createCss2Button(`sArrow${j}`, ``, _ => changeTmpShuffleNum(j), {
6682
+ createCss2Button(`sArrow${j}`, ``, () => changeTmpShuffleNum(j), {
6542
6683
  x: keyconX, y: keyconY - 12, w: C_ARW_WIDTH, h: 15, siz: 12, fontWeight: `bold`,
6543
6684
  pointerEvents: (g_settings.shuffles.filter(val => val.endsWith(`+`)).length > 0 ? `auto` : `none`),
6544
- cxtFunc: _ => changeTmpShuffleNum(j, -1),
6685
+ cxtFunc: () => changeTmpShuffleNum(j, -1),
6545
6686
  }, g_cssObj.button_Default_NoColor, g_cssObj.title_base)
6546
6687
  );
6547
6688
  }
@@ -6552,7 +6693,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6552
6693
  g_keyObj[`keyCtrl${keyCtrlPtn}d`][j][k] = setIntVal(g_keyObj[`keyCtrl${keyCtrlPtn}d`][j][k]);
6553
6694
 
6554
6695
  keyconSprite.appendChild(
6555
- 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]], () => {
6556
6697
  g_currentj = j;
6557
6698
  g_currentk = k;
6558
6699
  g_prevKey = -1;
@@ -6633,7 +6774,13 @@ const keyConfigInit = (_kcType = g_kcType) => {
6633
6774
  * キーコンフィグ用設定ラベル
6634
6775
  * @param {string} _id
6635
6776
  * @param {string} _name
6636
- * @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
6637
6784
  * @param {...any} _classes
6638
6785
  * @returns ラベル
6639
6786
  */
@@ -6646,7 +6793,14 @@ const keyConfigInit = (_kcType = g_kcType) => {
6646
6793
  * @param {string} _id
6647
6794
  * @param {string} _text
6648
6795
  * @param {function} _func
6649
- * @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
6650
6804
  * @param {string} _mainClass
6651
6805
  * @param {...any} _classes
6652
6806
  * @returns ボタン
@@ -6660,7 +6814,11 @@ const keyConfigInit = (_kcType = g_kcType) => {
6660
6814
  * @param {string} _id
6661
6815
  * @param {string} _directionFlg
6662
6816
  * @param {function} _func
6663
- * @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
6664
6822
  */
6665
6823
  const makeMiniKCButton = (_id, _directionFlg, _func, { x = g_btnX(5 / 6) - 30, y = 15, w = 15, h = 20, siz = g_limitObj.mainSiz } = {}) =>
6666
6824
  createCss2Button(`${_id}${_directionFlg}`, g_settingBtnObj.chara[_directionFlg], _func, { x, y, w, h, siz }, g_cssObj.button_Mini);
@@ -6668,18 +6826,20 @@ const keyConfigInit = (_kcType = g_kcType) => {
6668
6826
  /**
6669
6827
  * キーコンフィグ用グループ設定ラベル・ボタンの作成
6670
6828
  * @param {string} _type
6671
- * @param {object} obj (baseX)
6829
+ * @param {number} object.baseX
6830
+ * @param {number} object.baseY
6831
+ * @param {string} object.cssName
6672
6832
  */
6673
6833
  const makeGroupButton = (_type, { baseX = g_btnX(5 / 6) - 20, baseY = 0, cssName } = {}) => {
6674
6834
  if (g_headerObj[`${_type}Use`] && g_keycons[`${_type}Groups`].length > 1) {
6675
6835
  const typeName = toCapitalize(_type);
6676
6836
  multiAppend(divRoot,
6677
6837
  makeKCButtonHeader(`lbl${_type}Group`, `${typeName}Group`, { x: baseX - 10, y: baseY }, cssName),
6678
- makeKCButton(`lnk${typeName}Group`, ``, _ => setGroup(_type), {
6679
- 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),
6680
6840
  }),
6681
- makeMiniKCButton(`lnk${typeName}Group`, `L`, _ => setGroup(_type, -1), { x: baseX - 10, y: baseY + 13 }),
6682
- 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 }),
6683
6843
  );
6684
6844
  } else {
6685
6845
  g_keycons[`${_type}GroupNum`] = 0;
@@ -6703,11 +6863,11 @@ const keyConfigInit = (_kcType = g_kcType) => {
6703
6863
 
6704
6864
  // キーカラータイプ切替ボタン
6705
6865
  makeKCButtonHeader(`lblcolorType`, `ColorType`, { x: 10 + g_btnX() }, g_cssObj.keyconfig_ColorType),
6706
- makeKCButton(`lnkColorType`, g_colorType, _ => setColorType(), {
6707
- 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),
6708
6868
  }),
6709
- makeMiniKCButton(`lnkColorType`, `L`, _ => setColorType(-1), { x: 10 + g_btnX() }),
6710
- 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) }),
6711
6871
  );
6712
6872
 
6713
6873
  if (g_headerObj.imgType.length > 1) {
@@ -6715,11 +6875,11 @@ const keyConfigInit = (_kcType = g_kcType) => {
6715
6875
  multiAppend(divRoot,
6716
6876
  // オブジェクトタイプの切り替え(リロードあり)
6717
6877
  makeKCButtonHeader(`lblImgType`, `ImgType`, { x: imgBaseX - 10, y: 37 }, g_cssObj.keyconfig_ConfigType),
6718
- makeKCButton(`lnkImgType`, g_imgType, _ => setImgType(), {
6719
- 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),
6720
6880
  }),
6721
- makeMiniKCButton(`lnkImgType`, `L`, _ => setImgType(-1), { x: imgBaseX - 10, y: imgBaseY }),
6722
- 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 }),
6723
6883
  );
6724
6884
  }
6725
6885
 
@@ -6731,7 +6891,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6731
6891
  /**
6732
6892
  * カーソル位置の設定
6733
6893
  */
6734
- const setKeyConfigCursor = _ => {
6894
+ const setKeyConfigCursor = () => {
6735
6895
  const posj = g_keyObj[`pos${keyCtrlPtn}`][g_currentj];
6736
6896
  const stdPos = posj - ((posj > divideCnt ? posMax : 0) + divideCnt) / 2;
6737
6897
 
@@ -6854,7 +7014,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6854
7014
  /**
6855
7015
  * ColorPicker(一式)の切替
6856
7016
  */
6857
- const changeColorPickers = _ => {
7017
+ const changeColorPickers = () => {
6858
7018
  lnkColorR.innerHTML = `[${g_keycons.colorCursorNum + 1} /`;
6859
7019
  for (let j = 0; j < g_limitObj.kcColorPickerNum; j++) {
6860
7020
  const m = getGroupNum(j);
@@ -6868,6 +7028,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6868
7028
  /**
6869
7029
  * ColorTypeの制御
6870
7030
  * @param {number} _scrollNum
7031
+ * @param {boolean} _reloadFlg
6871
7032
  */
6872
7033
  const setColorType = (_scrollNum = 1, _reloadFlg = true) => {
6873
7034
  const nextNum = getNextNum(_scrollNum, `colorTypes`, g_colorType);
@@ -6885,6 +7046,10 @@ const keyConfigInit = (_kcType = g_kcType) => {
6885
7046
  }
6886
7047
  };
6887
7048
 
7049
+ /**
7050
+ * ImgTypeの制御
7051
+ * @param {number} _scrollNum
7052
+ */
6888
7053
  const setImgType = (_scrollNum = 1) => {
6889
7054
  const nextNum = getNextNum(_scrollNum, `imgTypes`, g_imgType);
6890
7055
  g_imgType = g_keycons.imgTypes[nextNum];
@@ -6902,13 +7067,13 @@ const keyConfigInit = (_kcType = g_kcType) => {
6902
7067
  multiAppend(colorPickSprite,
6903
7068
 
6904
7069
  // ColorPickerの切替
6905
- createCss2Button(`lnkColorR`, `[${g_keycons.colorCursorNum + 1} /`, _ => {
7070
+ createCss2Button(`lnkColorR`, `[${g_keycons.colorCursorNum + 1} /`, () => {
6906
7071
  g_keycons.colorCursorNum = (g_keycons.colorCursorNum + 1) % Math.ceil(g_headerObj.setColor.length / g_limitObj.kcColorPickerNum);
6907
7072
  changeColorPickers();
6908
7073
  }, g_lblPosObj.lnkColorR, g_cssObj.button_Start),
6909
7074
 
6910
7075
  // 矢印の配色をフリーズアローへ反映
6911
- createCss2Button(`lnkColorCopy`, `↓]`, _ => {
7076
+ createCss2Button(`lnkColorCopy`, `↓]`, () => {
6912
7077
  if (window.confirm(g_msgObj.colorCopyConfirm)) {
6913
7078
  for (let j = 0; j < g_headerObj.setColor.length; j++) {
6914
7079
  g_headerObj.frzColor[j] = g_headerObj[`frzColor${g_colorType}`][j] =
@@ -6926,7 +7091,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
6926
7091
  createDivCss2Label(`lblPickFrz`, g_lblNameObj.s_frz, Object.assign({ y: 140 }, g_lblPosObj.pickPos)),
6927
7092
 
6928
7093
  // ColorPickerの色を元に戻す
6929
- createCss2Button(`lnkColorReset`, g_lblNameObj.b_cReset, _ => {
7094
+ createCss2Button(`lnkColorReset`, g_lblNameObj.b_cReset, () => {
6930
7095
  if (window.confirm(g_msgObj.colorResetConfirm)) {
6931
7096
  resetColorType({ _from: g_colorType, _to: ``, _fromObj: g_dfColorObj });
6932
7097
  resetColorType({ _from: g_colorType, _to: g_colorType, _fromObj: g_dfColorObj });
@@ -6950,24 +7115,25 @@ const keyConfigInit = (_kcType = g_kcType) => {
6950
7115
  * @param {number} _j
6951
7116
  * @param {string} _type
6952
7117
  * @param {function} _func
6953
- * @param {object} _obj
7118
+ * @param {number} object.x
7119
+ * @param {number} object.y
6954
7120
  */
6955
7121
  const createColorPickWindow = (_j, _type, _func, { x = 0, y = 15 } = {}) =>
6956
7122
  createColorPicker(colorPickSprite, `pick${_type}${_j}`, _func, { x, y: y + 25 * _j });
6957
7123
 
6958
7124
  for (let j = 0; j < g_limitObj.kcColorPickerNum; j++) {
6959
- createColorPickWindow(j, `arrow`, _ => {
7125
+ createColorPickWindow(j, `arrow`, () => {
6960
7126
  g_headerObj[`setColor${g_colorType}`][getGroupNum(j)] = document.getElementById(`pickarrow${j}`).value;
6961
7127
  setColorType(0, false);
6962
7128
  });
6963
7129
 
6964
- createColorPickWindow(j, `arrowShadow`, _ => {
7130
+ createColorPickWindow(j, `arrowShadow`, () => {
6965
7131
  g_headerObj[`setShadowColor${g_colorType}`][getGroupNum(j)] = `${document.getElementById(`pickarrowShadow${j}`).value}80`;
6966
7132
  setColorType(0, false);
6967
7133
  }, { x: 25 });
6968
7134
 
6969
7135
  [``, `Bar`].forEach((val, k) =>
6970
- createColorPickWindow(j, `frz${val}`, _ => {
7136
+ createColorPickWindow(j, `frz${val}`, () => {
6971
7137
  g_headerObj[`frzColor${g_colorType}`][getGroupNum(j)][k] = document.getElementById(`pickfrz${val}${j}`).value;
6972
7138
  }, { x: 25 * k, y: 155 }));
6973
7139
  }
@@ -6985,12 +7151,13 @@ const keyConfigInit = (_kcType = g_kcType) => {
6985
7151
  * @param {number} _tempPtn
6986
7152
  * @param {number} _sign
6987
7153
  * @param {boolean} _transKeyUse
7154
+ * @param {boolean} _skipFlg
6988
7155
  */
6989
7156
  const searchPattern = (_tempPtn, _sign, _transKeyUse = false, _skipFlg = false) => {
6990
7157
  let nextPtn = _tempPtn + _sign;
6991
7158
  const initialPtn = hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_-1`]) ? -1 : 0;
6992
7159
 
6993
- const searchStart = _ => {
7160
+ const searchStart = () => {
6994
7161
  if (!hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_${nextPtn}`])) {
6995
7162
  nextPtn = 0;
6996
7163
  while (hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_${nextPtn}`])) {
@@ -7000,7 +7167,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
7000
7167
  }
7001
7168
  };
7002
7169
 
7003
- const searchNextGroup = _ => {
7170
+ const searchNextGroup = () => {
7004
7171
  while (nextPtn !== initialPtn &&
7005
7172
  g_keyObj[`transKey${g_keyObj.currentKey}_${_tempPtn}`] === g_keyObj[`transKey${g_keyObj.currentKey}_${nextPtn}`] &&
7006
7173
  hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_${nextPtn}`])) {
@@ -7054,7 +7221,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
7054
7221
  createDivCss2Label(`lblkey`, `KeySwitch`, g_lblPosObj.lblkey));
7055
7222
  configKeyGroupList.forEach((val, j) =>
7056
7223
  divRoot.appendChild(
7057
- createCss2Button(`key${j}`, `${j + 1}`, _ => appearConfigSteps(j),
7224
+ createCss2Button(`key${j}`, `${j + 1}`, () => appearConfigSteps(j),
7058
7225
  Object.assign({ y: 110 + j * 20 }, g_lblPosObj.lnkKeySwitch), g_cssObj.button_Mini),
7059
7226
  ));
7060
7227
  }
@@ -7066,39 +7233,39 @@ const keyConfigInit = (_kcType = g_kcType) => {
7066
7233
  multiAppend(divRoot,
7067
7234
 
7068
7235
  // 設定画面へ戻る
7069
- createCss2Button(`btnBack`, g_lblNameObj.b_settings, _ => {
7236
+ createCss2Button(`btnBack`, g_lblNameObj.b_settings, () => {
7070
7237
  g_currentj = 0;
7071
7238
  g_currentk = 0;
7072
7239
  g_prevKey = 0;
7073
7240
  }, Object.assign(g_lblPosObj.btnKcBack, {
7074
- resetFunc: _ => (g_baseDisp === `Settings` ? optionInit() : settingsDisplayInit()),
7241
+ resetFunc: () => (g_baseDisp === `Settings` ? optionInit() : settingsDisplayInit()),
7075
7242
  }), g_cssObj.button_Back),
7076
7243
 
7077
7244
  createDivCss2Label(`lblPattern`, `${g_lblNameObj.KeyPattern}: ${g_keyObj.currentPtn === -1 ?
7078
7245
  'Self' : g_keyObj.currentPtn + 1}${lblTransKey}`, g_lblPosObj.lblPattern),
7079
7246
 
7080
7247
  // パターン変更ボタン描画(右回り)
7081
- createCss2Button(`btnPtnChangeR`, `>`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeR, {
7082
- resetFunc: _ => changePattern(),
7248
+ createCss2Button(`btnPtnChangeR`, `>`, () => true, Object.assign(g_lblPosObj.btnPtnChangeR, {
7249
+ resetFunc: () => changePattern(),
7083
7250
  }), g_cssObj.button_Mini),
7084
7251
 
7085
7252
  // パターン変更ボタン描画(左回り)
7086
- createCss2Button(`btnPtnChangeL`, `<`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeL, {
7087
- resetFunc: _ => changePattern(-1),
7253
+ createCss2Button(`btnPtnChangeL`, `<`, () => true, Object.assign(g_lblPosObj.btnPtnChangeL, {
7254
+ resetFunc: () => changePattern(-1),
7088
7255
  }), g_cssObj.button_Mini),
7089
7256
 
7090
7257
  // パターン変更ボタン描画(右回り/別キーモード間スキップ)
7091
- createCss2Button(`btnPtnChangeRR`, `|>`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeRR, {
7092
- resetFunc: _ => changePattern(1, true),
7258
+ createCss2Button(`btnPtnChangeRR`, `|>`, () => true, Object.assign(g_lblPosObj.btnPtnChangeRR, {
7259
+ resetFunc: () => changePattern(1, true),
7093
7260
  }), g_cssObj.button_Setting),
7094
7261
 
7095
7262
  // パターン変更ボタン描画(左回り/別キーモード間スキップ)
7096
- createCss2Button(`btnPtnChangeLL`, `<|`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeLL, {
7097
- resetFunc: _ => changePattern(-1, true),
7263
+ createCss2Button(`btnPtnChangeLL`, `<|`, () => true, Object.assign(g_lblPosObj.btnPtnChangeLL, {
7264
+ resetFunc: () => changePattern(-1, true),
7098
7265
  }), g_cssObj.button_Setting),
7099
7266
 
7100
7267
  // キーコンフィグリセットボタン描画
7101
- createCss2Button(`btnReset`, g_lblNameObj.b_reset, _ => {
7268
+ createCss2Button(`btnReset`, g_lblNameObj.b_reset, () => {
7102
7269
  if (window.confirm(g_msgObj.keyResetConfirm)) {
7103
7270
  const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
7104
7271
 
@@ -7115,7 +7282,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
7115
7282
  }, g_lblPosObj.btnKcReset, g_cssObj.button_Reset),
7116
7283
 
7117
7284
  // プレイ開始
7118
- makePlayButton(_ => loadMusic())
7285
+ makePlayButton(() => loadMusic())
7119
7286
  );
7120
7287
 
7121
7288
  // キーボード押下時処理
@@ -7167,7 +7334,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
7167
7334
 
7168
7335
  g_skinJsObj.keyconfig.forEach(func => func());
7169
7336
  document.onkeyup = evt => commonKeyUp(evt);
7170
- document.oncontextmenu = _ => false;
7337
+ document.oncontextmenu = () => false;
7171
7338
  };
7172
7339
 
7173
7340
  /**
@@ -7181,7 +7348,7 @@ const getShadowColor = (_colorPos, _arrowColor) => g_headerObj.setShadowColor[_c
7181
7348
  /**
7182
7349
  * キー数基礎情報の取得
7183
7350
  */
7184
- const getKeyInfo = _ => {
7351
+ const getKeyInfo = () => {
7185
7352
  const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
7186
7353
  const keyNum = g_keyObj[`${g_keyObj.defaultProp}${keyCtrlPtn}`].length;
7187
7354
  const posMax = g_keyObj[`divMax${keyCtrlPtn}`] ?? Math.max(...g_keyObj[`pos${keyCtrlPtn}`]) + 1;
@@ -7207,7 +7374,7 @@ const updateKeyInfo = (_header, _keyCtrlPtn) => {
7207
7374
  /**
7208
7375
  * 初期矢印色・フリーズアロー色の変更
7209
7376
  */
7210
- const changeSetColor = _ => {
7377
+ const changeSetColor = () => {
7211
7378
  const isDefault = [`Default`, `Type0`].includes(g_colorType);
7212
7379
  const idHeader = setScoreIdHeader(g_stateObj.scoreId);
7213
7380
  const defaultType = idHeader + g_colorType;
@@ -7268,7 +7435,7 @@ const changeShuffleConfigColor = (_keyCtrlPtn, _vals, _j = -1) => {
7268
7435
  /* Scene : LOADING [strawberry] */
7269
7436
  /*-----------------------------------------------------------*/
7270
7437
 
7271
- const loadMusic = _ => {
7438
+ const loadMusic = () => {
7272
7439
 
7273
7440
  clearWindow(true);
7274
7441
  g_currentPage = `loading`;
@@ -7300,7 +7467,7 @@ const loadMusic = _ => {
7300
7467
  request.responseType = `blob`;
7301
7468
 
7302
7469
  // 読み込み完了時
7303
- request.addEventListener(`load`, _ => {
7470
+ request.addEventListener(`load`, () => {
7304
7471
  if (request.status >= 200 && request.status < 300) {
7305
7472
  const blobUrl = URL.createObjectURL(request.response);
7306
7473
  createEmptySprite(divRoot, `loader`, g_windowObj.loader);
@@ -7327,8 +7494,8 @@ const loadMusic = _ => {
7327
7494
  });
7328
7495
 
7329
7496
  // エラー処理
7330
- request.addEventListener(`timeout`, _ => makeWarningWindow(g_msgInfoObj.E_0033, { backBtnUse: true }));
7331
- 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 }));
7332
7499
 
7333
7500
  request.send();
7334
7501
  };
@@ -7340,7 +7507,7 @@ const loadMusic = _ => {
7340
7507
  */
7341
7508
  const setAudio = async (_url) => {
7342
7509
 
7343
- const loadMp3 = _ => {
7510
+ const loadMp3 = () => {
7344
7511
  if (g_isFile) {
7345
7512
  g_audio.src = _url;
7346
7513
  musicAfterLoaded();
@@ -7369,13 +7536,13 @@ const setAudio = async (_url) => {
7369
7536
  await loadScript2(_url);
7370
7537
  if (typeof musicInit === C_TYP_FUNCTION) {
7371
7538
  musicInit();
7372
- readyToStart(_ => initWebAudioAPIfromBase64(g_musicdata));
7539
+ readyToStart(() => initWebAudioAPIfromBase64(g_musicdata));
7373
7540
  } else {
7374
7541
  makeWarningWindow(g_msgInfoObj.E_0031);
7375
7542
  musicAfterLoaded();
7376
7543
  }
7377
7544
  } else {
7378
- readyToStart(_ => loadMp3());
7545
+ readyToStart(() => loadMp3());
7379
7546
  }
7380
7547
  };
7381
7548
 
@@ -7396,7 +7563,7 @@ const initWebAudioAPIfromURL = async (_url) => {
7396
7563
  await g_audio.init(arrayBuffer);
7397
7564
  };
7398
7565
 
7399
- const musicAfterLoaded = _ => {
7566
+ const musicAfterLoaded = () => {
7400
7567
  g_audio.load();
7401
7568
 
7402
7569
  if (g_audio.readyState === 4) {
@@ -7404,13 +7571,13 @@ const musicAfterLoaded = _ => {
7404
7571
  loadingScoreInit();
7405
7572
  } else {
7406
7573
  // 読込中の状態
7407
- g_audio.addEventListener(`canplaythrough`, (_ => function f() {
7574
+ g_audio.addEventListener(`canplaythrough`, (() => function f() {
7408
7575
  g_audio.removeEventListener(`canplaythrough`, f, false);
7409
7576
  loadingScoreInit();
7410
7577
  })(), false);
7411
7578
 
7412
7579
  // エラー時
7413
- g_audio.addEventListener(`error`, (_ => function f() {
7580
+ g_audio.addEventListener(`error`, (() => function f() {
7414
7581
  g_audio.removeEventListener(`error`, f, false);
7415
7582
  makeWarningWindow(g_msgInfoObj.E_0041.split(`{0}`).join(g_audio.src), { backBtnUse: true });
7416
7583
  })(), false);
@@ -7616,6 +7783,7 @@ const applyShuffle = (_keyNum, _shuffleGroup, _style) => {
7616
7783
  * Mirrorの適用
7617
7784
  * @param {number} _keyNum
7618
7785
  * @param {array} _shuffleGroup
7786
+ * @param {boolean} _swapFlg
7619
7787
  */
7620
7788
  const applyMirror = (_keyNum, _shuffleGroup, _swapFlg = false) => {
7621
7789
 
@@ -7680,11 +7848,13 @@ const applyRandom = (_keyNum, _shuffleGroup) => {
7680
7848
  * S-Randomの適用
7681
7849
  * @param {number} _keyNum
7682
7850
  * @param {array} _shuffleGroup
7851
+ * @param {string} _arrowHeader
7852
+ * @param {string} _frzHeader
7683
7853
  */
7684
7854
  const applySRandom = (_keyNum, _shuffleGroup, _arrowHeader, _frzHeader) => {
7685
7855
 
7686
- const tmpArrowData = [...Array(_keyNum)].map(_ => []);
7687
- const tmpFrzData = [...Array(_keyNum)].map(_ => []);
7856
+ const tmpArrowData = [...Array(_keyNum)].map(() => []);
7857
+ const tmpFrzData = [...Array(_keyNum)].map(() => []);
7688
7858
  const scatterFrame = 10;
7689
7859
 
7690
7860
  // シャッフルグループごとに処理
@@ -8053,7 +8223,8 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
8053
8223
  ];
8054
8224
 
8055
8225
  /**
8056
- * 歌詞表示、背景・マスクデータの優先順取得
8226
+ * 歌詞表示、背景・マスクデータの優先順取得
8227
+ * @param {array} _defaultHeaders
8057
8228
  */
8058
8229
  const getPriorityHeader = (_defaultHeaders = []) => {
8059
8230
  if (_defaultHeaders.length > 0) {
@@ -8182,7 +8353,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
8182
8353
  * 背景・マスク、スキン変更データの分解
8183
8354
  * @param {string} _header
8184
8355
  * @param {string} _scoreNo 譜面番号
8185
- * @param {array} resultTypes リザルトモーションの種類 (result, failedB, failedS)
8356
+ * @param {array} object.resultTypes リザルトモーションの種類 (result, failedB, failedS)
8186
8357
  */
8187
8358
  const makeBackgroundData = (_header, _scoreNo, { resultTypes = [] } = {}) => {
8188
8359
  const dataList = [];
@@ -8414,7 +8585,7 @@ const setSpeedOnFrame = (_speedData, _lastFrame) => {
8414
8585
  * Motionオプション適用時の矢印別の速度設定
8415
8586
  * - 矢印が表示される最大フレーム数を 縦ピクセル数×20 と定義。
8416
8587
  */
8417
- 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));
8418
8589
 
8419
8590
  /**
8420
8591
  * Boost用の適用関数
@@ -8510,6 +8681,14 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
8510
8681
  }
8511
8682
  };
8512
8683
 
8684
+ /**
8685
+ * 矢印・フリーズアローの出現位置計算
8686
+ * @param {number} _j
8687
+ * @param {array} _data
8688
+ * @param {string} _header
8689
+ * @param {boolean} _frzFlg
8690
+ * @returns
8691
+ */
8513
8692
  const calcNotes = (_j, _data, _header = ``, _frzFlg = false) => {
8514
8693
  if (_data === undefined) {
8515
8694
  return;
@@ -8631,10 +8810,13 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
8631
8810
  * - この関数を使用する場合、配列グループの先頭2つが「フレーム数、矢印番号」となっていないと動作しない
8632
8811
  * @param {string} _type
8633
8812
  * @param {string} _header
8634
- * @param {function} _setFunc
8635
- * @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, ...)
8636
8818
  */
8637
- const calcDataTiming = (_type, _header, _setFunc = _ => true,
8819
+ const calcDataTiming = (_type, _header, _setFunc = () => true,
8638
8820
  { _term = 4, _colorFlg = false, _calcFrameFlg = false, _propName = `` } = {}) => {
8639
8821
 
8640
8822
  const camelHeader = _header === `` ? _type : `${_header}${toCapitalize(_type)}`;
@@ -8810,7 +8992,7 @@ const getFrzLength = (_speedOnFrame, _startFrame, _endFrame) => {
8810
8992
  /**
8811
8993
  * キーパターン(デフォルト)に対応する矢印番号を格納
8812
8994
  */
8813
- const convertReplaceNums = _ => {
8995
+ const convertReplaceNums = () => {
8814
8996
  const tkObj = getKeyInfo();
8815
8997
  const baseCharas = g_keyObj[`chara${g_keyObj.currentKey}_0`];
8816
8998
  const convCharas = g_keyObj[`chara${tkObj.keyCtrlPtn}`];
@@ -8831,9 +9013,10 @@ const convertReplaceNums = _ => {
8831
9013
  * 色情報の格納
8832
9014
  * @param {string} _header
8833
9015
  * @param {number} _frame
8834
- * @param {number} _val
8835
- * @param {string} _colorCd
8836
- * @param {string} _allFlg
9016
+ * @param {number} _val 色番号
9017
+ * @param {string} _colorCd カラーコード
9018
+ * @param {string} _allFlg 全体色変化有無
9019
+ * @param {string} _pattern 色変化種類 (Arrow, ArrowShadow, FrzNormal, FrzNormalBar, ...)
8837
9020
  */
8838
9021
  const pushColors = (_header, _frame, _val, _colorCd, _allFlg, _pattern = ``) => {
8839
9022
 
@@ -9026,7 +9209,7 @@ const pushScrollchs = (_header, _frameArrow, _val, _frameStep, _scrollDir) => {
9026
9209
  /**
9027
9210
  * メイン画面前の初期化処理
9028
9211
  */
9029
- const getArrowSettings = _ => {
9212
+ const getArrowSettings = () => {
9030
9213
 
9031
9214
  g_attrObj = {};
9032
9215
  const tkObj = getKeyInfo();
@@ -9056,8 +9239,8 @@ const getArrowSettings = _ => {
9056
9239
  g_workObj.keyGroupList = tkObj.keyGroupList;
9057
9240
 
9058
9241
  const keyCtrlLen = g_workObj.keyCtrl.length;
9059
- g_workObj.keyCtrlN = [...Array(keyCtrlLen)].map(_ => []);
9060
- g_workObj.keyHitFlg = [...Array(keyCtrlLen)].map(_ => []);
9242
+ g_workObj.keyCtrlN = [...Array(keyCtrlLen)].map(() => []);
9243
+ g_workObj.keyHitFlg = [...Array(keyCtrlLen)].map(() => []);
9061
9244
  for (let j = 0; j < g_workObj.keyCtrl.length; j++) {
9062
9245
  for (let k = 0; k < g_workObj.keyCtrl[j].length; k++) {
9063
9246
  g_workObj.keyCtrlN[j][k] = g_kCdN[g_workObj.keyCtrl[j][k]];
@@ -9208,7 +9391,7 @@ const getArrowSettings = _ => {
9208
9391
  */
9209
9392
  const setKeyCtrl = (_localStorage, _keyNum, _keyCtrlPtn) => {
9210
9393
  const localPtn = `${g_keyObj.currentKey}_-1`;
9211
- const keyCtrl = [...Array(_keyNum)].map(_ => []);
9394
+ const keyCtrl = [...Array(_keyNum)].map(() => []);
9212
9395
  for (let j = 0; j < _keyNum; j++) {
9213
9396
  for (let k = 0; k < g_keyObj[`keyCtrl${_keyCtrlPtn}`][j].length; k++) {
9214
9397
  keyCtrl[j][k] = g_keyObj[`keyCtrl${_keyCtrlPtn}`][j][k];
@@ -9231,10 +9414,10 @@ const setKeyCtrl = (_localStorage, _keyNum, _keyCtrlPtn) => {
9231
9414
  /**
9232
9415
  * メイン画面初期化
9233
9416
  */
9234
- const mainInit = _ => {
9417
+ const mainInit = () => {
9235
9418
  clearWindow(true, `Main`);
9236
9419
  const divRoot = document.getElementById(`divRoot`);
9237
- document.oncontextmenu = _ => false;
9420
+ document.oncontextmenu = () => false;
9238
9421
  g_currentPage = `main`;
9239
9422
 
9240
9423
  g_currentArrows = 0;
@@ -9737,7 +9920,7 @@ const mainInit = _ => {
9737
9920
  */
9738
9921
  const mainKeyUpActFunc = {
9739
9922
 
9740
- OFF: _ => {
9923
+ OFF: () => {
9741
9924
  for (let j = 0; j < keyNum; j++) {
9742
9925
  if (g_workObj.keyCtrlN[j].find(key => keyIsDown(key)) === undefined) {
9743
9926
  $id(`stepDiv${j}`).display = C_DIS_NONE;
@@ -9745,7 +9928,7 @@ const mainInit = _ => {
9745
9928
  }
9746
9929
  },
9747
9930
 
9748
- ON: _ => { },
9931
+ ON: () => { },
9749
9932
  };
9750
9933
 
9751
9934
  document.onkeyup = evt => {
@@ -9755,9 +9938,9 @@ const mainInit = _ => {
9755
9938
 
9756
9939
  /**
9757
9940
  * 全体色変化(矢印)
9758
- * @param {number} _j
9759
- * @param {number} _k
9760
- * @param {string} _name
9941
+ * @param {number} _j 矢印位置
9942
+ * @param {number} _k 矢印の表示順
9943
+ * @param {string} _name 通常, ダミー
9761
9944
  */
9762
9945
  const changeArrowColor = (_j, _k, _name) => {
9763
9946
  if (g_workObj[`mk${toCapitalize(_name)}ColorChangeAll`][g_scoreObj.frameNum]) {
@@ -9849,8 +10032,8 @@ const mainInit = _ => {
9849
10032
  /**
9850
10033
  * 矢印・フリーズアロー消去
9851
10034
  *
9852
- * @param _j 矢印位置
9853
- * @param _deleteObj 削除オブジェクト
10035
+ * @param {number} _j 矢印位置
10036
+ * @param {string} _deleteName 削除オブジェクト名
9854
10037
  */
9855
10038
  const judgeObjDelete = {};
9856
10039
  g_typeLists.arrow.forEach(type =>
@@ -9864,13 +10047,13 @@ const mainInit = _ => {
9864
10047
  * 自動判定
9865
10048
  * ※mainInit内部で指定必須(arrowSprite指定)
9866
10049
  *
9867
- * @param _j 矢印位置
9868
- * @param _arrow 矢印(オブジェクト)
10050
+ * @param {number} _j 矢印位置
10051
+ * @param {object} _arrow 矢印(オブジェクト)
9869
10052
  *
9870
- * @param _k 矢印の表示順
9871
- * @param _frzRoot フリーズアロー(オブジェクト)
9872
- * @param _cnt ステップゾーン到達までのフレーム数
9873
- * @param _keyUpFrame キーを離したフレーム数
10053
+ * @param {number} _k 矢印の表示順
10054
+ * @param {object} _frzRoot フリーズアロー(オブジェクト)
10055
+ * @param {number} _cnt ステップゾーン到達までのフレーム数
10056
+ * @param {number} _keyUpFrame キーを離したフレーム数
9874
10057
  */
9875
10058
  const judgeMotionFunc = {
9876
10059
 
@@ -9965,9 +10148,9 @@ const mainInit = _ => {
9965
10148
  * - ただし、判定対象の矢印/フリーズアローがジャスト付近の場合は判定対象を優先する
9966
10149
  * (フリーズアローの場合、ヒット中の場合も判定対象が優先される)
9967
10150
  *
9968
- * @param _j 矢印の位置
9969
- * @param _k 矢印の表示順
9970
- * @param _cnt ステップゾーン到達までのフレーム数
10151
+ * @param {number} _j 矢印の位置
10152
+ * @param {number} _k 矢印の表示順
10153
+ * @param {number} _cnt ステップゾーン到達までのフレーム数
9971
10154
  */
9972
10155
  const judgeNextFunc = {
9973
10156
 
@@ -10136,12 +10319,14 @@ const mainInit = _ => {
10136
10319
 
10137
10320
  /**
10138
10321
  * フリーズアロー生成
10139
- * @param {number} _attrs
10140
- * @param {number} _arrowCnt
10141
- * @param {string} _name
10142
- * @param {string} _normalColor
10143
- * @param {string} _barColor
10144
- * @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 フリーズアロー(塗りつぶし)の色
10145
10330
  */
10146
10331
  const makeFrzArrow = (_attrs, _arrowCnt, _name, _normalColor, _barColor, _shadowColor) => {
10147
10332
  const _j = _attrs.pos;
@@ -10278,7 +10463,7 @@ const mainInit = _ => {
10278
10463
  /**
10279
10464
  * フレーム処理(譜面台)
10280
10465
  */
10281
- const flowTimeline = _ => {
10466
+ const flowTimeline = () => {
10282
10467
 
10283
10468
  const currentFrame = g_scoreObj.frameNum;
10284
10469
  lblframe.textContent = g_scoreObj.baseFrame;
@@ -10570,7 +10755,8 @@ const changeAppearanceFilter = (_appearance, _num = 10) => {
10570
10755
  * @param {number} _x
10571
10756
  * @param {string} _class
10572
10757
  * @param {number} _heightPos
10573
- * @param {string, number} _text
10758
+ * @param {string|number} _text
10759
+ * @param {string} _display 表示有無 (inherit: 表示 / none: 非表示)
10574
10760
  */
10575
10761
  const makeCounterSymbol = (_id, _x, _class, _heightPos, _text, _display = C_DIS_INHERIT) => {
10576
10762
  return createDivCss2Label(_id, _text, {
@@ -10583,7 +10769,8 @@ const makeCounterSymbol = (_id, _x, _class, _heightPos, _text, _display = C_DIS_
10583
10769
  /**
10584
10770
  * ステップゾーンの表示・非表示切替
10585
10771
  * @param {number} _j
10586
- * @param {string} _display
10772
+ * @param {string} _display
10773
+ * @param {number} _alpha
10587
10774
  */
10588
10775
  const appearStepZone = (_j, _display, _alpha = 1) => {
10589
10776
  $id(`stepRoot${_j}`).display = _display;
@@ -10593,7 +10780,8 @@ const appearStepZone = (_j, _display, _alpha = 1) => {
10593
10780
  /**
10594
10781
  * 部分キーのステップゾーン出現処理
10595
10782
  * @param {number} _j
10596
- * @param {array} _targets
10783
+ * @param {array} _targets
10784
+ * @param {array} _alphas ステップゾーン毎の可視状況 (style.opacity の値)
10597
10785
  */
10598
10786
  const appearKeyTypes = (_j, _targets, _alphas = fillArray(_targets.length, 1)) => {
10599
10787
  appearStepZone(_j, C_DIS_NONE);
@@ -10761,7 +10949,7 @@ const keyIsDown = _keyCode => g_inputKeyBuffer[_keyCode];
10761
10949
  /**
10762
10950
  * 押したキーがシフトキーかどうかを判定
10763
10951
  */
10764
- const keyIsShift = _ => keyIsDown(g_kCdNameObj.shiftLKey) || keyIsDown(g_kCdNameObj.shiftRKey);
10952
+ const keyIsShift = () => keyIsDown(g_kCdNameObj.shiftLKey) || keyIsDown(g_kCdNameObj.shiftRKey);
10765
10953
 
10766
10954
  /**
10767
10955
  * 矢印・フリーズアロー判定
@@ -10853,8 +11041,8 @@ const judgeArrow = _j => {
10853
11041
  /**
10854
11042
  * タイミングズレを表示
10855
11043
  * @param {number} _difFrame
10856
- * @param {string} _fjdg
10857
- * @param {number} _justFrames
11044
+ * @param {string} _fjdg フリーズアロー判定有無 (フリーズアローのときは"F"が入る)
11045
+ * @param {number} _justFrames Fast/Slowの表示条件フレーム数
10858
11046
  */
10859
11047
  const displayDiff = (_difFrame, _fjdg = ``, _justFrames = g_headerObj.justFrames) => {
10860
11048
  let diffJDisp = ``;
@@ -10895,7 +11083,10 @@ const changeLifeColor = (_state = ``) => {
10895
11083
  lifeBar.style.height = wUnit((g_headerObj.playingHeight - 100) * intLifeVal / g_headerObj.maxLifeVal);
10896
11084
  };
10897
11085
 
10898
- const lifeRecovery = _ => {
11086
+ /**
11087
+ * ゲージ回復処理
11088
+ */
11089
+ const lifeRecovery = () => {
10899
11090
  g_workObj.lifeVal += g_workObj.lifeRcv;
10900
11091
 
10901
11092
  if (g_workObj.lifeVal >= g_headerObj.maxLifeVal) {
@@ -10908,7 +11099,7 @@ const lifeRecovery = _ => {
10908
11099
 
10909
11100
  /**
10910
11101
  * ゲージダメージ処理
10911
- * @param {boolean} _excessive
11102
+ * @param {boolean} _excessive 空押し判定有無
10912
11103
  */
10913
11104
  const lifeDamage = (_excessive = false) => {
10914
11105
  g_workObj.lifeVal -= g_workObj.lifeDmg * (_excessive ? 0.25 : 1);
@@ -10938,7 +11129,7 @@ const changeJudgeCharacter = (_name, _character, _fjdg = ``) => {
10938
11129
  /**
10939
11130
  * コンボの更新
10940
11131
  */
10941
- const updateCombo = _ => {
11132
+ const updateCombo = () => {
10942
11133
  if (++g_resultObj.combo > g_resultObj.maxCombo) {
10943
11134
  g_resultObj.maxCombo = g_resultObj.combo;
10944
11135
  lblMCombo.textContent = g_resultObj.maxCombo;
@@ -11050,7 +11241,11 @@ const checkJudgment = (_difCnt) => {
11050
11241
  return [jdgFuncList[idx], jdgList[idx]];
11051
11242
  };
11052
11243
 
11053
- // クリア表示
11244
+ /**
11245
+ * クリア表示
11246
+ * @param {string} _state
11247
+ * @returns
11248
+ */
11054
11249
  const resultViewText = _state => _state === `` ? `` :
11055
11250
  `<span class="result_${toCapitalize(_state)}">${g_lblNameObj[_state]}</span>`;
11056
11251
 
@@ -11065,7 +11260,7 @@ const makeFinishView = _text => {
11065
11260
  document.getElementById(label).textContent = ``);
11066
11261
  };
11067
11262
 
11068
- const finishViewing = _ => {
11263
+ const finishViewing = () => {
11069
11264
  if (g_currentArrows === g_fullArrows) {
11070
11265
  if (g_resultObj.ii + g_resultObj.kita === g_fullArrows) {
11071
11266
  g_resultObj.spState = `allPerfect`;
@@ -11087,7 +11282,7 @@ const finishViewing = _ => {
11087
11282
  /**
11088
11283
  * リザルト画面初期化
11089
11284
  */
11090
- const resultInit = _ => {
11285
+ const resultInit = () => {
11091
11286
 
11092
11287
  clearWindow(true);
11093
11288
  g_currentPage = `result`;
@@ -11202,7 +11397,7 @@ const resultInit = _ => {
11202
11397
  /**
11203
11398
  * プレイスタイルのカスタム有無
11204
11399
  * @param {string} _flg
11205
- * @param {string, boolean} _defaultSet デフォルト値
11400
+ * @param {string|boolean} _defaultSet デフォルト値
11206
11401
  * @param {string} _displayText
11207
11402
  */
11208
11403
  const withOptions = (_flg, _defaultSet, _displayText = _flg) =>
@@ -11275,7 +11470,14 @@ const resultInit = _ => {
11275
11470
  makeCssResultPlayData(`lblDisplay2Data`, dataRX, g_cssObj.result_style, 5, display2Data),
11276
11471
  );
11277
11472
 
11278
- // キャラクタ、スコア描画の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
+ */
11279
11481
  const jdgScoreObj = {
11280
11482
  ii: { pos: 0, id: `Ii`, color: `ii`, label: g_lblNameObj.j_ii, dfColor: `#66ffff`, },
11281
11483
  shakin: { pos: 1, id: `Shakin`, color: `shakin`, label: g_lblNameObj.j_shakin, dfColor: `#99ff99`, },
@@ -11391,7 +11593,7 @@ const resultInit = _ => {
11391
11593
 
11392
11594
  if (g_stateObj.dataSaveFlg) {
11393
11595
 
11394
- const setScoreData = _ => {
11596
+ const setScoreData = () => {
11395
11597
  g_localStorage.highscores[scoreName].dateTime = currentDateTime;
11396
11598
  g_localStorage.highscores[scoreName].rankMark = rankMark;
11397
11599
  g_localStorage.highscores[scoreName].rankColor = rankColor;
@@ -11573,16 +11775,16 @@ const resultInit = _ => {
11573
11775
 
11574
11776
  tmpDiv.appendChild(canvas);
11575
11777
 
11576
- const viewResultImage = _ => {
11778
+ const viewResultImage = () => {
11577
11779
  if (document.getElementById(`tmpClose`) === null) {
11578
- divRoot.oncontextmenu = _ => true;
11780
+ divRoot.oncontextmenu = () => true;
11579
11781
  makeLinkButton(tmpDiv, `Tmp`);
11580
- tmpDiv.appendChild(createCss2Button(`tmpClose`, g_lblNameObj.b_close, _ => true,
11782
+ tmpDiv.appendChild(createCss2Button(`tmpClose`, g_lblNameObj.b_close, () => true,
11581
11783
  Object.assign(g_lblPosObj.btnRsCopyClose, {
11582
- resetFunc: _ => {
11784
+ resetFunc: () => {
11583
11785
  tmpDiv.removeChild(canvas);
11584
11786
  divRoot.removeChild(tmpDiv);
11585
- divRoot.oncontextmenu = _ => false;
11787
+ divRoot.oncontextmenu = () => false;
11586
11788
  },
11587
11789
  }), g_cssObj.button_Back));
11588
11790
  tmpDiv.appendChild(createDescDiv(`resultImageDesc`, g_lblNameObj.resultImageDesc));
@@ -11615,9 +11817,17 @@ const resultInit = _ => {
11615
11817
  }
11616
11818
  };
11617
11819
 
11618
- /** 音源、ループ処理の停止 */
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
+ */
11619
11829
  const resetCommonBtn = (_id, _name, _posObj, _func, _cssClass) =>
11620
- createCss2Button(_id, _name, _ => {
11830
+ createCss2Button(_id, _name, () => {
11621
11831
  if (g_finishFlg) {
11622
11832
  g_audio.pause();
11623
11833
  }
@@ -11633,13 +11843,13 @@ const resultInit = _ => {
11633
11843
  const makeLinkButton = (_div = divRoot, _param = ``) => {
11634
11844
  multiAppend(_div,
11635
11845
  // リザルトデータをX (Twitter)へ転送
11636
- createCss2Button(`btnTweet${_param}`, g_lblNameObj.b_tweet, _ => true, Object.assign(g_lblPosObj.btnRsTweet, {
11637
- resetFunc: _ => openLink(tweetResult),
11846
+ createCss2Button(`btnTweet${_param}`, g_lblNameObj.b_tweet, () => true, Object.assign(g_lblPosObj.btnRsTweet, {
11847
+ resetFunc: () => openLink(tweetResult),
11638
11848
  }), g_cssObj.button_Tweet),
11639
11849
 
11640
11850
  // Discordへのリンク
11641
- createCss2Button(`btnGitter${_param}`, g_lblNameObj.b_gitter, _ => true, Object.assign(g_lblPosObj.btnRsGitter, {
11642
- 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),
11643
11853
  }), g_cssObj.button_Discord),
11644
11854
  );
11645
11855
  }
@@ -11651,7 +11861,7 @@ const resultInit = _ => {
11651
11861
  resetCommonBtn(`btnBack`, g_lblNameObj.b_back, g_lblPosObj.btnRsBack, titleInit, g_cssObj.button_Back),
11652
11862
 
11653
11863
  // リザルトデータをクリップボードへコピー
11654
- createCss2Button(`btnCopy`, g_lblNameObj.b_copy, _ =>
11864
+ createCss2Button(`btnCopy`, g_lblNameObj.b_copy, () =>
11655
11865
  copyTextToClipboard(keyIsShift() ?
11656
11866
  unEscapeHtml(resultCommonTmp) : resultText, g_msgInfoObj.I_0001),
11657
11867
  g_lblPosObj.btnRsCopy, g_cssObj.button_Setting),
@@ -11661,9 +11871,9 @@ const resultInit = _ => {
11661
11871
  // リトライ
11662
11872
  resetCommonBtn(`btnRetry`, g_lblNameObj.b_retry, g_lblPosObj.btnRsRetry, loadMusic, g_cssObj.button_Reset),
11663
11873
 
11664
- createCss2Button(`btnCopyImage`, `📷`, _ => true,
11874
+ createCss2Button(`btnCopyImage`, `📷`, () => true,
11665
11875
  Object.assign(g_lblPosObj.btnRsCopyImage, {
11666
- resetFunc: _ => copyResultImageData(g_msgInfoObj.I_0001),
11876
+ resetFunc: () => copyResultImageData(g_msgInfoObj.I_0001),
11667
11877
  }), g_cssObj.button_Default_NoColor),
11668
11878
  );
11669
11879
 
@@ -11683,7 +11893,7 @@ const resultInit = _ => {
11683
11893
  /**
11684
11894
  * タイトルのモーション設定
11685
11895
  */
11686
- const flowResultTimeline = _ => {
11896
+ const flowResultTimeline = () => {
11687
11897
 
11688
11898
  // ユーザカスタムイベント(フレーム毎)
11689
11899
  g_customJsObj.resultEnterFrame.forEach(func => func());
@@ -11717,8 +11927,8 @@ const resultInit = _ => {
11717
11927
  flowResultTimeline();
11718
11928
 
11719
11929
  // キー操作イベント(デフォルト)
11720
- setShortcutEvent(g_currentPage, _ => true, { dfEvtFlg: true });
11721
- document.oncontextmenu = _ => true;
11930
+ setShortcutEvent(g_currentPage, () => true, { dfEvtFlg: true });
11931
+ document.oncontextmenu = () => true;
11722
11932
 
11723
11933
  g_skinJsObj.result.forEach(func => func());
11724
11934
  };
@@ -11726,7 +11936,18 @@ const resultInit = _ => {
11726
11936
  /**
11727
11937
  * リザルトフォーマットの整形処理
11728
11938
  * @param {string} _format
11729
- * @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
11730
11951
  * @returns
11731
11952
  */
11732
11953
  const makeResultText = (_format, {
@@ -11754,6 +11975,8 @@ const makeResultText = (_format, {
11754
11975
  * @param {number} _heightPos
11755
11976
  * @param {string} _text
11756
11977
  * @param {string} _align
11978
+ * @param {number} object.w
11979
+ * @param {number} object.siz
11757
11980
  */
11758
11981
  const makeCssResultPlayData = (_id, _x, _class, _heightPos, _text, _align = C_ALIGN_CENTER, { w = 400, siz = g_limitObj.mainSiz } = {}) =>
11759
11982
  createDivCss2Label(_id, _text, {