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