danoniplus 31.2.0 → 31.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/js/danoni_main.js +155 -139
- package/js/lib/danoni_constants.js +237 -151
- 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 : 2023/04/
|
|
7
|
+
* Revised : 2023/04/08
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 31.
|
|
12
|
-
const g_revisedDate = `2023/04/
|
|
11
|
+
const g_version = `Ver 31.4.0`;
|
|
12
|
+
const g_revisedDate = `2023/04/08`;
|
|
13
13
|
const g_alphaVersion = ``;
|
|
14
14
|
|
|
15
15
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
@@ -373,7 +373,7 @@ const splitLF2 = (_str, _delim = `$`) => splitLF(_str).filter(val => val !== ``)
|
|
|
373
373
|
* @returns
|
|
374
374
|
*/
|
|
375
375
|
const makeDedupliArray = (_array1, ..._arrays) =>
|
|
376
|
-
Array.from((new Set([..._array1, ..._arrays.flat()])).values());
|
|
376
|
+
Array.from((new Set([..._array1, ..._arrays.flat()])).values()).filter(val => val !== undefined);
|
|
377
377
|
|
|
378
378
|
/**
|
|
379
379
|
* 二次元配列のコピー
|
|
@@ -396,10 +396,21 @@ const sumData = _array => _array.reduce((p, x) => p + x);
|
|
|
396
396
|
* @param {number} _defaultVal
|
|
397
397
|
* @returns
|
|
398
398
|
*/
|
|
399
|
-
const makeBaseArray = (_array, _minLength, _defaultVal) =>
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
399
|
+
const makeBaseArray = (_array = [], _minLength, _defaultVal) => padArray(_array, [...Array(_minLength)].fill(_defaultVal));
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* ベースとする配列に対して別の配列で上書き
|
|
403
|
+
* @param {array} _array
|
|
404
|
+
* @param {array} _baseArray ベースとする配列
|
|
405
|
+
* @returns
|
|
406
|
+
*/
|
|
407
|
+
const padArray = (_array, _baseArray) => {
|
|
408
|
+
_array?.forEach((val, j) => {
|
|
409
|
+
if (hasVal(val)) {
|
|
410
|
+
_baseArray[j] = val;
|
|
411
|
+
}
|
|
412
|
+
});
|
|
413
|
+
return _baseArray;
|
|
403
414
|
};
|
|
404
415
|
|
|
405
416
|
/**
|
|
@@ -514,7 +525,7 @@ const transCode = _setCode => {
|
|
|
514
525
|
* 特定キーをブロックする処理
|
|
515
526
|
* @param {string} _setCode
|
|
516
527
|
*/
|
|
517
|
-
const blockCode = _setCode => !C_BLOCK_KEYS.
|
|
528
|
+
const blockCode = _setCode => !C_BLOCK_KEYS.includes(_setCode);
|
|
518
529
|
|
|
519
530
|
|
|
520
531
|
/*-----------------------------------------------------------*/
|
|
@@ -979,7 +990,7 @@ const getFontSize = (_str, _maxWidth, _font = getBasicFont(), _maxFontsize = 64,
|
|
|
979
990
|
*/
|
|
980
991
|
const createDescDiv = (_id, _str, _altId = _id) =>
|
|
981
992
|
createDivCss2Label(_id, _str, Object.assign(g_lblPosObj[_altId], {
|
|
982
|
-
siz: getFontSize(_str, g_sWidth, getBasicFont(),
|
|
993
|
+
siz: getFontSize(_str, g_sWidth, getBasicFont(), g_limitObj.mainSiz),
|
|
983
994
|
}));
|
|
984
995
|
|
|
985
996
|
/*-----------------------------------------------------------*/
|
|
@@ -1031,8 +1042,8 @@ const setUserSelect = (_style, _value = C_DIS_NONE) => {
|
|
|
1031
1042
|
* @param {object} _obj (x, y, w, h, siz, align, ...rest)
|
|
1032
1043
|
* @param {...any} _classes
|
|
1033
1044
|
*/
|
|
1034
|
-
const createDivCss2Label = (_id, _text, { x = 0, y = 0, w =
|
|
1035
|
-
siz =
|
|
1045
|
+
const createDivCss2Label = (_id, _text, { x = 0, y = 0, w = g_limitObj.setLblWidth, h = g_limitObj.setLblHeight,
|
|
1046
|
+
siz = g_limitObj.setLblSiz, align = C_ALIGN_CENTER, ...rest } = {}, ..._classes) => {
|
|
1036
1047
|
const div = createDiv(_id, x, y, w, h, [g_cssObj.title_base, ..._classes]);
|
|
1037
1048
|
|
|
1038
1049
|
const style = div.style;
|
|
@@ -1218,8 +1229,8 @@ const deleteDiv = (_parentId, _idName) => {
|
|
|
1218
1229
|
* @param {object} _obj (x, y, w, h, siz, align, title, groupName, initDisabledFlg, ...rest)
|
|
1219
1230
|
* @param {...any} _classes
|
|
1220
1231
|
*/
|
|
1221
|
-
const createCss2Button = (_id, _text, _func = _ => true, { x = 0, y = g_sHeight - 100, w = g_sWidth / 3, h =
|
|
1222
|
-
siz =
|
|
1232
|
+
const createCss2Button = (_id, _text, _func = _ => true, { x = 0, y = g_sHeight - 100, w = g_sWidth / 3, h = g_limitObj.btnHeight,
|
|
1233
|
+
siz = g_limitObj.btnSiz, align = C_ALIGN_CENTER, title = ``, groupName = g_currentPage, initDisabledFlg = true,
|
|
1223
1234
|
resetFunc = _ => true, cxtFunc = _ => true, ...rest } = {}, ..._classes) => {
|
|
1224
1235
|
|
|
1225
1236
|
const div = createDiv(_id, x, y, w, h, [`button_common`, ..._classes]);
|
|
@@ -1315,7 +1326,7 @@ const changeStyle = (_id, { x, y, w, h, siz, align, title, ...rest } = {}) => {
|
|
|
1315
1326
|
* @param {number} _y
|
|
1316
1327
|
*/
|
|
1317
1328
|
const getTitleDivLabel = (_id, _titlename, _x, _y, ..._classes) =>
|
|
1318
|
-
createDivCss2Label(_id, _titlename, { x: _x, y: _y, w: g_sWidth, h: 50, siz:
|
|
1329
|
+
createDivCss2Label(_id, _titlename, { x: _x, y: _y, w: g_sWidth, h: 50, siz: g_limitObj.btnSiz }, ..._classes);
|
|
1319
1330
|
|
|
1320
1331
|
/**
|
|
1321
1332
|
* キーコントロールの初期化
|
|
@@ -1803,8 +1814,8 @@ const getQueryParamVal = _name => {
|
|
|
1803
1814
|
* ローディング文字用ラベルの作成
|
|
1804
1815
|
*/
|
|
1805
1816
|
const getLoadingLabel = _ => createDivCss2Label(`lblLoading`, g_lblNameObj.nowLoading, {
|
|
1806
|
-
x: 0, y: g_sHeight - 40, w: g_sWidth, h:
|
|
1807
|
-
siz:
|
|
1817
|
+
x: 0, y: g_sHeight - 40, w: g_sWidth, h: g_limitObj.setLblHeight,
|
|
1818
|
+
siz: g_limitObj.setLblSiz, align: C_ALIGN_RIGHT,
|
|
1808
1819
|
});
|
|
1809
1820
|
|
|
1810
1821
|
/**
|
|
@@ -1910,15 +1921,14 @@ const initialControl = async () => {
|
|
|
1910
1921
|
Object.assign(g_headerObj, headerConvert(g_rootObj));
|
|
1911
1922
|
const importKeysData = _data => {
|
|
1912
1923
|
keysConvert(dosConvert(_data));
|
|
1913
|
-
g_headerObj.undefinedKeyLists = g_headerObj.undefinedKeyLists.filter(key => g_keyObj[
|
|
1924
|
+
g_headerObj.undefinedKeyLists = g_headerObj.undefinedKeyLists.filter(key => g_keyObj[`${g_keyObj.defaultProp}${key}_0`] === undefined);
|
|
1914
1925
|
};
|
|
1915
1926
|
g_presetObj.keysDataLib.forEach(list => importKeysData(list));
|
|
1916
1927
|
if (g_presetObj.keysData !== undefined) {
|
|
1917
1928
|
importKeysData(g_presetObj.keysData);
|
|
1918
1929
|
}
|
|
1919
1930
|
g_headerObj.keyExtraList = keysConvert(g_rootObj, {
|
|
1920
|
-
keyExtraList: (g_rootObj.keyExtraList
|
|
1921
|
-
makeDedupliArray(g_rootObj.keyExtraList.split(`,`), g_headerObj.undefinedKeyLists) : g_headerObj.undefinedKeyLists),
|
|
1931
|
+
keyExtraList: makeDedupliArray(g_headerObj.undefinedKeyLists, g_rootObj.keyExtraList?.split(`,`)),
|
|
1922
1932
|
});
|
|
1923
1933
|
|
|
1924
1934
|
// デフォルトのカラー・シャッフルグループ設定を退避
|
|
@@ -2089,7 +2099,7 @@ const loadLocalStorage = _ => {
|
|
|
2089
2099
|
* 譜面データを分割して値を取得
|
|
2090
2100
|
* @param {string} _dos 譜面データ
|
|
2091
2101
|
*/
|
|
2092
|
-
const dosConvert = _dos => {
|
|
2102
|
+
const dosConvert = (_dos = ``) => {
|
|
2093
2103
|
|
|
2094
2104
|
const obj = {};
|
|
2095
2105
|
const paramsTmp = g_enableAmpersandSplit ? _dos.split(`&`).join(`|`) : _dos;
|
|
@@ -2228,7 +2238,7 @@ const storeBaseData = (_scoreId, _scoreObj, _keyCtrlPtn) => {
|
|
|
2228
2238
|
const startFrame = getStartFrame(lastFrame, 0, _scoreId);
|
|
2229
2239
|
const firstArrowFrame = getFirstArrowFrame(_scoreObj, _keyCtrlPtn);
|
|
2230
2240
|
const playingFrame = lastFrame - firstArrowFrame;
|
|
2231
|
-
const keyNum = g_keyObj[
|
|
2241
|
+
const keyNum = g_keyObj[`${g_keyObj.defaultProp}${_keyCtrlPtn}`].length;
|
|
2232
2242
|
|
|
2233
2243
|
// 譜面密度グラフ用のデータ作成
|
|
2234
2244
|
const noteCnt = { arrow: [], frz: [] };
|
|
@@ -2658,9 +2668,9 @@ const headerConvert = _dosObj => {
|
|
|
2658
2668
|
g_settings.speeds = [...Array((obj.maxSpeed - obj.minSpeed) * 20 + 1).keys()].map(i => obj.minSpeed + i / 20);
|
|
2659
2669
|
|
|
2660
2670
|
// プレイ中のショートカットキー
|
|
2661
|
-
obj.keyRetry = setIntVal(_dosObj.keyRetry, C_KEY_RETRY);
|
|
2671
|
+
obj.keyRetry = setIntVal(getKeyCtrlVal(_dosObj.keyRetry), C_KEY_RETRY);
|
|
2662
2672
|
obj.keyRetryDef = obj.keyRetry;
|
|
2663
|
-
obj.keyTitleBack = setIntVal(_dosObj.keyTitleBack, C_KEY_TITLEBACK);
|
|
2673
|
+
obj.keyTitleBack = setIntVal(getKeyCtrlVal(_dosObj.keyTitleBack), C_KEY_TITLEBACK);
|
|
2664
2674
|
obj.keyTitleBackDef = obj.keyTitleBack;
|
|
2665
2675
|
|
|
2666
2676
|
// フリーズアローの許容フレーム数設定
|
|
@@ -2735,7 +2745,7 @@ const headerConvert = _dosObj => {
|
|
|
2735
2745
|
}
|
|
2736
2746
|
const keyLists = makeDedupliArray(obj.keyLabels);
|
|
2737
2747
|
obj.keyLists = keyLists.sort((a, b) => parseInt(a) - parseInt(b));
|
|
2738
|
-
obj.undefinedKeyLists = obj.keyLists.filter(key => g_keyObj[
|
|
2748
|
+
obj.undefinedKeyLists = obj.keyLists.filter(key => g_keyObj[`${g_keyObj.defaultProp}${key}_0`] === undefined);
|
|
2739
2749
|
|
|
2740
2750
|
// 譜面変更セレクターの利用有無
|
|
2741
2751
|
obj.difSelectorUse = (setBoolVal(_dosObj.difSelectorUse, obj.keyLabels.length > 5));
|
|
@@ -3489,22 +3499,40 @@ const getGaugeSetting = (_dosObj, _name, _difLength, { scoreId = 0 } = {}) => {
|
|
|
3489
3499
|
*/
|
|
3490
3500
|
const getKeyName = _key => hasVal(g_keyObj[`keyName${_key}`]) ? g_keyObj[`keyName${_key}`] : _key;
|
|
3491
3501
|
|
|
3502
|
+
/**
|
|
3503
|
+
* KeyBoardEvent.code の値をCW Edition用のキーコードに変換
|
|
3504
|
+
* 簡略指定ができるように、以下の記述を許容
|
|
3505
|
+
* 例) KeyD -> D, ArrowDown -> Down, AltLeft -> Alt
|
|
3506
|
+
* @param {string} _kCdN
|
|
3507
|
+
* @returns
|
|
3508
|
+
*/
|
|
3509
|
+
const getKeyCtrlVal = _kCdN => {
|
|
3510
|
+
const convVal = Object.keys(g_kCdN).findIndex(val =>
|
|
3511
|
+
[_kCdN, `Key${_kCdN}`, `Arrow${_kCdN}`].includes(g_kCdN[val]) || _kCdN === replaceStr(g_kCdN[val], g_escapeStr.keyCtrlName));
|
|
3512
|
+
return convVal !== -1 ? convVal : parseInt(_kCdN, 10);
|
|
3513
|
+
};
|
|
3514
|
+
|
|
3492
3515
|
/**
|
|
3493
3516
|
* 一時的な追加キーの設定
|
|
3494
3517
|
* @param {object} _dosObj
|
|
3495
3518
|
*/
|
|
3496
|
-
const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList
|
|
3519
|
+
const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`) } = {}) => {
|
|
3497
3520
|
|
|
3498
3521
|
if (keyExtraList === undefined) {
|
|
3499
|
-
|
|
3522
|
+
keyExtraList = [];
|
|
3523
|
+
Object.keys(_dosObj).filter(val => val.startsWith(g_keyObj.defaultProp))
|
|
3524
|
+
.forEach(keyName => keyExtraList.push(keyName.slice(g_keyObj.defaultProp.length)));
|
|
3525
|
+
|
|
3526
|
+
if (keyExtraList.length === 0) {
|
|
3527
|
+
return [];
|
|
3528
|
+
}
|
|
3500
3529
|
}
|
|
3501
3530
|
|
|
3502
3531
|
const existParam = (_data, _paramName) => !hasVal(_data) && g_keyObj[_paramName] !== undefined;
|
|
3503
3532
|
const toString = _str => _str;
|
|
3504
|
-
const toNumber = _num => parseInt(_num, 10);
|
|
3505
3533
|
const toFloat = _num => parseFloat(_num);
|
|
3506
|
-
const
|
|
3507
|
-
|
|
3534
|
+
const toKeyCtrlArray = _str =>
|
|
3535
|
+
makeBaseArray(_str.split(`/`).map(n => getKeyCtrlVal(n)), g_keyObj.minKeyCtrlNum, 0);
|
|
3508
3536
|
const toSplitArrayStr = _str => _str.split(`/`).map(n => n);
|
|
3509
3537
|
|
|
3510
3538
|
/**
|
|
@@ -3580,7 +3608,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3580
3608
|
const keyPtn = getKeyPtnName(list);
|
|
3581
3609
|
if (list === ``) {
|
|
3582
3610
|
// 空指定の場合は一律同じグループへ割り当て
|
|
3583
|
-
g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] = [...Array(g_keyObj[
|
|
3611
|
+
g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] = [...Array(g_keyObj[`${g_keyObj.defaultProp}${_key}_${k + dfPtn}`].length)].fill(0);
|
|
3584
3612
|
|
|
3585
3613
|
} else if (g_keyObj[`${_name}${keyPtn}_0`] !== undefined) {
|
|
3586
3614
|
// 他のキーパターン (例: |shuffle8i=8_0| ) を指定した場合、該当があれば既存パターンからコピー
|
|
@@ -3592,7 +3620,9 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3592
3620
|
}
|
|
3593
3621
|
} else {
|
|
3594
3622
|
// 通常の指定方法 (例: |shuffle8i=1,1,1,2,0,0,0,0/1,1,1,1,0,0,0,0| )の場合の取り込み
|
|
3595
|
-
g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] =
|
|
3623
|
+
g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] =
|
|
3624
|
+
makeBaseArray(list.split(`,`).map(n => isNaN(parseInt(n)) ? n : parseInt(n, 10)),
|
|
3625
|
+
g_keyObj[`${g_keyObj.defaultProp}${_key}_${k + dfPtn}`].length, 0);
|
|
3596
3626
|
ptnCnt++;
|
|
3597
3627
|
}
|
|
3598
3628
|
});
|
|
@@ -3600,10 +3630,10 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3600
3630
|
}
|
|
3601
3631
|
|
|
3602
3632
|
} else if (g_keyObj[`${keyheader}_${dfPtn}_0`] === undefined) {
|
|
3603
|
-
// 特に指定が無い場合は
|
|
3633
|
+
// 特に指定が無い場合はkeyCtrlX_Yの配列長で決定
|
|
3604
3634
|
for (let k = 0; k < g_keyObj.minPatterns; k++) {
|
|
3605
3635
|
const ptnName = `${_key}_${k + dfPtn}`;
|
|
3606
|
-
g_keyObj[`${_name}${ptnName}_0`] = [...Array(g_keyObj[
|
|
3636
|
+
g_keyObj[`${_name}${ptnName}_0`] = [...Array(g_keyObj[`${g_keyObj.defaultProp}${ptnName}`].length)].fill(0);
|
|
3607
3637
|
g_keyObj[`${_name}${ptnName}`] = structuredClone(g_keyObj[`${_name}${ptnName}_0`]);
|
|
3608
3638
|
}
|
|
3609
3639
|
}
|
|
@@ -3649,7 +3679,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3649
3679
|
|
|
3650
3680
|
// デフォルト項目がある場合は先に定義
|
|
3651
3681
|
if (_defaultName !== ``) {
|
|
3652
|
-
g_keyObj[pairName][_defaultName] = [...Array(g_keyObj[
|
|
3682
|
+
g_keyObj[pairName][_defaultName] = [...Array(g_keyObj[`${g_keyObj.defaultProp}${_key}_${k + dfPtn}`].length)].fill(_defaultVal);
|
|
3653
3683
|
}
|
|
3654
3684
|
tmpParams[k].split(`/`).forEach(pairs => {
|
|
3655
3685
|
const keyPtn = getKeyPtnName(pairs);
|
|
@@ -3660,7 +3690,9 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3660
3690
|
} else {
|
|
3661
3691
|
// 通常の指定方法(例:|scroll8i=Cross::1,1,1,-1,-1,-1,1,1/Split::1,1,1,1,-1,-1,-1,-1|)から取り込み
|
|
3662
3692
|
const tmpParamPair = pairs.split(`::`);
|
|
3663
|
-
g_keyObj[pairName][tmpParamPair[0]] =
|
|
3693
|
+
g_keyObj[pairName][tmpParamPair[0]] =
|
|
3694
|
+
makeBaseArray(tmpParamPair[1].split(`,`).map(n => parseInt(n, 10)),
|
|
3695
|
+
g_keyObj[`${g_keyObj.defaultProp}${_key}_${k + dfPtn}`].length, _defaultVal);
|
|
3664
3696
|
}
|
|
3665
3697
|
});
|
|
3666
3698
|
}
|
|
@@ -3675,7 +3707,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3675
3707
|
// キーパターンの追記 (appendX)
|
|
3676
3708
|
if (setBoolVal(_dosObj[`append${newKey}`])) {
|
|
3677
3709
|
for (let j = 0; ; j++) {
|
|
3678
|
-
if (g_keyObj[
|
|
3710
|
+
if (g_keyObj[`${g_keyObj.defaultProp}${newKey}_${j}`] === undefined) {
|
|
3679
3711
|
break;
|
|
3680
3712
|
}
|
|
3681
3713
|
g_keyObj.dfPtnNum++;
|
|
@@ -3689,8 +3721,11 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3689
3721
|
// キーの最小横幅 (minWidthX)
|
|
3690
3722
|
g_keyObj[`minWidth${newKey}`] = _dosObj[`minWidth${newKey}`] ?? g_keyObj[`minWidth${newKey}`] ?? g_keyObj.minWidthDefault;
|
|
3691
3723
|
|
|
3724
|
+
// キーコンフィグ (keyCtrlX_Y)
|
|
3725
|
+
g_keyObj.minPatterns = newKeyMultiParam(newKey, `keyCtrl`, toKeyCtrlArray, { errCd: `E_0104`, baseCopyFlg: true });
|
|
3726
|
+
|
|
3692
3727
|
// 読込変数の接頭辞 (charaX_Y)
|
|
3693
|
-
|
|
3728
|
+
newKeyMultiParam(newKey, `chara`, toString);
|
|
3694
3729
|
|
|
3695
3730
|
// 矢印色パターン (colorX_Y)
|
|
3696
3731
|
newKeyTripleParam(newKey, `color`);
|
|
@@ -3698,9 +3733,6 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3698
3733
|
// 矢印の回転量指定、キャラクタパターン (stepRtnX_Y)
|
|
3699
3734
|
newKeyTripleParam(newKey, `stepRtn`);
|
|
3700
3735
|
|
|
3701
|
-
// キーコンフィグ (keyCtrlX_Y)
|
|
3702
|
-
newKeyMultiParam(newKey, `keyCtrl`, toKeyCtrlArray, { errCd: `E_0104`, baseCopyFlg: true });
|
|
3703
|
-
|
|
3704
3736
|
// ステップゾーン位置 (posX_Y)
|
|
3705
3737
|
newKeyMultiParam(newKey, `pos`, toFloat);
|
|
3706
3738
|
|
|
@@ -3725,7 +3757,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3725
3757
|
}
|
|
3726
3758
|
}
|
|
3727
3759
|
}
|
|
3728
|
-
// posX_Y, divX_Y, divMaxX_Yが未指定の場合は
|
|
3760
|
+
// charaX_Y, posX_Y, keyGroupX_Y, divX_Y, divMaxX_Yが未指定の場合はkeyCtrlX_Yを元に適用
|
|
3729
3761
|
for (let k = 0; k < g_keyObj.minPatterns; k++) {
|
|
3730
3762
|
setKeyDfVal(`${newKey}_${k + dfPtnNum}`);
|
|
3731
3763
|
}
|
|
@@ -3737,10 +3769,10 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3737
3769
|
newKeySingleParam(newKey, `scale`, C_TYP_FLOAT);
|
|
3738
3770
|
|
|
3739
3771
|
// プレイ中ショートカット:リトライ (keyRetryX_Y)
|
|
3740
|
-
newKeySingleParam(newKey, `keyRetry`,
|
|
3772
|
+
newKeySingleParam(newKey, `keyRetry`, C_TYP_STRING);
|
|
3741
3773
|
|
|
3742
3774
|
// プレイ中ショートカット:タイトルバック (keyTitleBackX_Y)
|
|
3743
|
-
newKeySingleParam(newKey, `keyTitleBack`,
|
|
3775
|
+
newKeySingleParam(newKey, `keyTitleBack`, C_TYP_STRING);
|
|
3744
3776
|
|
|
3745
3777
|
// 別キーフラグ (transKeyX_Y)
|
|
3746
3778
|
newKeySingleParam(newKey, `transKey`, C_TYP_STRING);
|
|
@@ -3758,6 +3790,10 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3758
3790
|
// アシストパターン (assistX_Y)
|
|
3759
3791
|
// |assist(newKey)=Onigiri::0,0,0,0,0,1/AA::0,0,0,1,1,1$...|
|
|
3760
3792
|
newKeyPairParam(newKey, `assist`, `assistPos`);
|
|
3793
|
+
|
|
3794
|
+
// keyRetry, keyTitleBackのキー名をキーコードに変換
|
|
3795
|
+
const keyTypePatterns = Object.keys(g_keyObj).filter(val => val.startsWith(`keyRetry${newKey}`) || val.startsWith(`keyTitleBack${newKey}`));
|
|
3796
|
+
keyTypePatterns.forEach(name => g_keyObj[name] = getKeyCtrlVal(g_keyObj[name]));
|
|
3761
3797
|
});
|
|
3762
3798
|
|
|
3763
3799
|
return keyExtraList;
|
|
@@ -3768,9 +3804,11 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3768
3804
|
* @param {string} _ptnName
|
|
3769
3805
|
*/
|
|
3770
3806
|
const setKeyDfVal = _ptnName => {
|
|
3771
|
-
|
|
3772
|
-
|
|
3773
|
-
}
|
|
3807
|
+
const baseLength = g_keyObj[`${g_keyObj.defaultProp}${_ptnName}`].length;
|
|
3808
|
+
g_keyObj[`chara${_ptnName}`] = padArray(g_keyObj[`chara${_ptnName}`], [...Array(baseLength).keys()].map(i => `${i + 1}a`));
|
|
3809
|
+
g_keyObj[`pos${_ptnName}`] = padArray(g_keyObj[`pos${_ptnName}`], [...Array(baseLength).keys()].map(i => i));
|
|
3810
|
+
g_keyObj[`keyGroup${_ptnName}`] = padArray(g_keyObj[`keyGroup${_ptnName}`], [...Array(baseLength)].fill([`0`]));
|
|
3811
|
+
|
|
3774
3812
|
if (g_keyObj[`div${_ptnName}`] === undefined) {
|
|
3775
3813
|
g_keyObj[`div${_ptnName}`] = Math.max(...g_keyObj[`pos${_ptnName}`]) + 1;
|
|
3776
3814
|
}
|
|
@@ -3930,7 +3968,7 @@ const titleInit = _ => {
|
|
|
3930
3968
|
const versionName = `© 2018-${g_revisedDate.slice(0, 4)} ティックル, CW ${g_version}${g_alphaVersion}${customVersion}${releaseDate}`;
|
|
3931
3969
|
|
|
3932
3970
|
let reloadFlg = false;
|
|
3933
|
-
const getLinkSiz = _name => getFontSize(_name, g_sWidth / 2 - 20, getBasicFont(),
|
|
3971
|
+
const getLinkSiz = _name => getFontSize(_name, g_sWidth / 2 - 20, getBasicFont(), g_limitObj.lnkSiz, 12);
|
|
3934
3972
|
|
|
3935
3973
|
/**
|
|
3936
3974
|
* クレジット用リンク作成
|
|
@@ -3948,7 +3986,7 @@ const titleInit = _ => {
|
|
|
3948
3986
|
|
|
3949
3987
|
// Click Here
|
|
3950
3988
|
createCss2Button(`btnStart`, g_lblNameObj.clickHere, _ => clearTimeout(g_timeoutEvtTitleId), {
|
|
3951
|
-
w: g_sWidth, siz:
|
|
3989
|
+
w: g_sWidth, siz: g_limitObj.titleSiz, resetFunc: _ => optionInit(),
|
|
3952
3990
|
}, g_cssObj.button_Start),
|
|
3953
3991
|
|
|
3954
3992
|
// Reset
|
|
@@ -4122,7 +4160,7 @@ const setWindowStyle = (_text, _bkColor, _textColor, _align = C_ALIGN_LEFT) => {
|
|
|
4122
4160
|
|
|
4123
4161
|
// ウィンドウ枠の行を取得するために一時的な枠を作成
|
|
4124
4162
|
const tmplbl = createDivCss2Label(`lblTmpWarning`, _text, {
|
|
4125
|
-
x: 0, y: 70, w: g_sWidth, h: 20, siz:
|
|
4163
|
+
x: 0, y: 70, w: g_sWidth, h: 20, siz: g_limitObj.mainSiz, lineHeight: `15px`, fontFamily: getBasicFont(),
|
|
4126
4164
|
whiteSpace: `normal`,
|
|
4127
4165
|
});
|
|
4128
4166
|
divRoot.appendChild(tmplbl);
|
|
@@ -4133,7 +4171,7 @@ const setWindowStyle = (_text, _bkColor, _textColor, _align = C_ALIGN_LEFT) => {
|
|
|
4133
4171
|
const warnHeight = Math.min(150, Math.max(range.getClientRects().length,
|
|
4134
4172
|
_text.split(`<br>`).length + _text.split(`<p>`).length - 1) * 21);
|
|
4135
4173
|
const lbl = createDivCss2Label(`lblWarning`, _text, {
|
|
4136
|
-
x: 0, y: 70, w: g_sWidth, h: warnHeight, siz:
|
|
4174
|
+
x: 0, y: 70, w: g_sWidth, h: warnHeight, siz: g_limitObj.mainSiz, backgroundColor: _bkColor,
|
|
4137
4175
|
opacity: 0.9, lineHeight: `15px`, color: _textColor, align: _align, fontFamily: getBasicFont(),
|
|
4138
4176
|
whiteSpace: `normal`,
|
|
4139
4177
|
});
|
|
@@ -4239,10 +4277,10 @@ const optionInit = _ => {
|
|
|
4239
4277
|
const setSpriteList = _settingList => {
|
|
4240
4278
|
const optionWidth = (g_sWidth - 450) / 2;
|
|
4241
4279
|
const spriteList = [];
|
|
4242
|
-
_settingList.forEach(setting =>
|
|
4243
|
-
spriteList[setting
|
|
4244
|
-
x: 25, y: setting
|
|
4245
|
-
w: optionWidth + setting
|
|
4280
|
+
Object.keys(_settingList).forEach(setting =>
|
|
4281
|
+
spriteList[setting] = createEmptySprite(optionsprite, `${setting}Sprite`, {
|
|
4282
|
+
x: 25, y: _settingList[setting].heightPos * g_limitObj.setLblHeight + _settingList[setting].y + 20,
|
|
4283
|
+
w: optionWidth + _settingList[setting].dw, h: g_limitObj.setLblHeight + _settingList[setting].dh,
|
|
4246
4284
|
}));
|
|
4247
4285
|
return spriteList;
|
|
4248
4286
|
};
|
|
@@ -4275,23 +4313,8 @@ const createOptionWindow = _sprite => {
|
|
|
4275
4313
|
// 各ボタン用のスプライトを作成
|
|
4276
4314
|
const optionsprite = createOptionSprite(_sprite);
|
|
4277
4315
|
|
|
4278
|
-
// 設定名、縦位置、縦位置差分、幅差分、高さ差分
|
|
4279
|
-
const settingList = [
|
|
4280
|
-
[`difficulty`, 0, -5, 0, 10],
|
|
4281
|
-
[`speed`, 2, 0, 0, 0],
|
|
4282
|
-
[`motion`, 3, 0, 0, 0],
|
|
4283
|
-
[`reverse`, 4, 0, 0, 0],
|
|
4284
|
-
[`scroll`, 4, 0, 0, 0],
|
|
4285
|
-
[`shuffle`, 5.5, 0, 0, 0],
|
|
4286
|
-
[`autoPlay`, 6.5, 0, 0, 0],
|
|
4287
|
-
[`gauge`, 7.5, 0, 0, 0],
|
|
4288
|
-
[`adjustment`, 10.5, 0, 0, 0],
|
|
4289
|
-
[`fadein`, 11.5, 0, 0, 0],
|
|
4290
|
-
[`volume`, 12.5, 0, 0, 0],
|
|
4291
|
-
];
|
|
4292
|
-
|
|
4293
4316
|
// 設定毎に個別のスプライトを作成し、その中にラベル・ボタン類を配置
|
|
4294
|
-
const spriteList = setSpriteList(
|
|
4317
|
+
const spriteList = setSpriteList(g_settingPos.option);
|
|
4295
4318
|
|
|
4296
4319
|
// ---------------------------------------------------
|
|
4297
4320
|
// 難易度 (Difficulty)
|
|
@@ -4344,7 +4367,7 @@ const createOptionWindow = _sprite => {
|
|
|
4344
4367
|
k++;
|
|
4345
4368
|
}
|
|
4346
4369
|
});
|
|
4347
|
-
const overlength = pos *
|
|
4370
|
+
const overlength = pos * g_limitObj.setLblHeight - parseInt(difList.style.height);
|
|
4348
4371
|
difList.scrollTop = (overlength > 0 ? overlength : 0);
|
|
4349
4372
|
};
|
|
4350
4373
|
|
|
@@ -4366,7 +4389,7 @@ const createOptionWindow = _sprite => {
|
|
|
4366
4389
|
g_keyObj.prevKey = g_keyObj.currentKey;
|
|
4367
4390
|
}
|
|
4368
4391
|
}, {
|
|
4369
|
-
x: 430 + _scrollNum * 10, y: 40, w: 20, h: 20, siz:
|
|
4392
|
+
x: 430 + _scrollNum * 10, y: 40, w: 20, h: 20, siz: g_limitObj.jdgCntsSiz,
|
|
4370
4393
|
}, g_cssObj.button_Mini);
|
|
4371
4394
|
};
|
|
4372
4395
|
|
|
@@ -4387,7 +4410,7 @@ const createOptionWindow = _sprite => {
|
|
|
4387
4410
|
difCover.appendChild(
|
|
4388
4411
|
makeDifLblCssButton(`difRandom`, `RANDOM`, 0, _ => {
|
|
4389
4412
|
nextDifficulty(Math.floor(Math.random() * g_headerObj.keyLabels.length));
|
|
4390
|
-
}, { w:
|
|
4413
|
+
}, { w: g_limitObj.difCoverWidth })
|
|
4391
4414
|
);
|
|
4392
4415
|
|
|
4393
4416
|
// 全リスト
|
|
@@ -4396,7 +4419,7 @@ const createOptionWindow = _sprite => {
|
|
|
4396
4419
|
resetDifWindow();
|
|
4397
4420
|
g_stateObj.filterKeys = ``;
|
|
4398
4421
|
createDifWindow();
|
|
4399
|
-
}, { w:
|
|
4422
|
+
}, { w: g_limitObj.difCoverWidth, btnStyle: (g_stateObj.filterKeys === `` ? `Setting` : `Default`) })
|
|
4400
4423
|
);
|
|
4401
4424
|
|
|
4402
4425
|
// キー別フィルタボタン作成
|
|
@@ -4407,13 +4430,13 @@ const createOptionWindow = _sprite => {
|
|
|
4407
4430
|
resetDifWindow();
|
|
4408
4431
|
g_stateObj.filterKeys = targetKey;
|
|
4409
4432
|
createDifWindow(targetKey);
|
|
4410
|
-
}, { w:
|
|
4433
|
+
}, { w: g_limitObj.difCoverWidth, btnStyle: (g_stateObj.filterKeys === targetKey ? `Setting` : `Default`) })
|
|
4411
4434
|
);
|
|
4412
4435
|
if (g_stateObj.filterKeys === targetKey) {
|
|
4413
4436
|
pos = m + 9;
|
|
4414
4437
|
}
|
|
4415
4438
|
});
|
|
4416
|
-
const overlength = pos *
|
|
4439
|
+
const overlength = pos * g_limitObj.setLblHeight - parseInt(difCover.style.height);
|
|
4417
4440
|
difCover.scrollTop = (overlength > 0 ? overlength : 0);
|
|
4418
4441
|
|
|
4419
4442
|
multiAppend(optionsprite, makeDifBtn(-1), makeDifBtn());
|
|
@@ -4432,7 +4455,7 @@ const createOptionWindow = _sprite => {
|
|
|
4432
4455
|
}
|
|
4433
4456
|
};
|
|
4434
4457
|
const lnkDifficulty = makeSettingLblCssButton(`lnkDifficulty`, ``, 0, _ => changeDifficulty(), {
|
|
4435
|
-
y: -10, h:
|
|
4458
|
+
y: -10, h: g_limitObj.setLblHeight + 10, cxtFunc: _ => changeDifficulty(-1),
|
|
4436
4459
|
});
|
|
4437
4460
|
|
|
4438
4461
|
// 譜面選択ボタン(メイン、右回し、左回し)
|
|
@@ -4472,8 +4495,8 @@ const createOptionWindow = _sprite => {
|
|
|
4472
4495
|
const bkColor = window.getComputedStyle(textBaseObj, ``).backgroundColor;
|
|
4473
4496
|
|
|
4474
4497
|
graphObj.id = `graph${_name}`;
|
|
4475
|
-
graphObj.width =
|
|
4476
|
-
graphObj.height =
|
|
4498
|
+
graphObj.width = g_limitObj.graphWidth;
|
|
4499
|
+
graphObj.height = g_limitObj.graphHeight;
|
|
4477
4500
|
graphObj.style.left = `125px`;
|
|
4478
4501
|
graphObj.style.top = `0px`;
|
|
4479
4502
|
graphObj.style.position = `absolute`;
|
|
@@ -4489,7 +4512,7 @@ const createOptionWindow = _sprite => {
|
|
|
4489
4512
|
if (g_headerObj.scoreDetailUse) {
|
|
4490
4513
|
spriteList.speed.appendChild(
|
|
4491
4514
|
createCss2Button(`btnGraph`, `i`, _ => true, {
|
|
4492
|
-
x: -25, y: -60, w: 30, h: 30, siz:
|
|
4515
|
+
x: -25, y: -60, w: 30, h: 30, siz: g_limitObj.jdgCharaSiz, title: g_msgObj.graph,
|
|
4493
4516
|
resetFunc: _ => setScoreDetail(), cxtFunc: _ => setScoreDetail(),
|
|
4494
4517
|
}, g_cssObj.button_Mini)
|
|
4495
4518
|
);
|
|
@@ -4527,7 +4550,7 @@ const createOptionWindow = _sprite => {
|
|
|
4527
4550
|
);
|
|
4528
4551
|
g_settings.scoreDetails.forEach((sd, j) => {
|
|
4529
4552
|
scoreDetail.appendChild(
|
|
4530
|
-
makeDifLblCssButton(`lnk${sd}G`, getStgDetailName(sd), j, _ => changeScoreDetail(j), { w:
|
|
4553
|
+
makeDifLblCssButton(`lnk${sd}G`, getStgDetailName(sd), j, _ => changeScoreDetail(j), { w: g_limitObj.difCoverWidth, btnStyle: (g_stateObj.scoreDetail === sd ? `Setting` : `Default`) })
|
|
4531
4554
|
);
|
|
4532
4555
|
createScText(document.getElementById(`lnk${sd}G`), `${sd}G`, { targetLabel: `lnk${sd}G`, x: -10 });
|
|
4533
4556
|
});
|
|
@@ -4577,8 +4600,8 @@ const createOptionWindow = _sprite => {
|
|
|
4577
4600
|
const startFrame = g_detailObj.startFrame[_scoreId];
|
|
4578
4601
|
const playingFrame = g_detailObj.playingFrameWithBlank[_scoreId];
|
|
4579
4602
|
const speedObj = {
|
|
4580
|
-
speed: { frame: [0], speed: [1], cnt: 0, strokeColor:
|
|
4581
|
-
boost: { frame: [0], speed: [1], cnt: 0, strokeColor:
|
|
4603
|
+
speed: { frame: [0], speed: [1], cnt: 0, strokeColor: g_graphColorObj.speed },
|
|
4604
|
+
boost: { frame: [0], speed: [1], cnt: 0, strokeColor: g_graphColorObj.boost }
|
|
4582
4605
|
};
|
|
4583
4606
|
|
|
4584
4607
|
Object.keys(speedObj).forEach(speedType => {
|
|
@@ -4608,7 +4631,7 @@ const createOptionWindow = _sprite => {
|
|
|
4608
4631
|
let preY;
|
|
4609
4632
|
|
|
4610
4633
|
for (let i = 0; i < speedObj[speedType].frame.length; i++) {
|
|
4611
|
-
const x = speedObj[speedType].frame[i] * (
|
|
4634
|
+
const x = speedObj[speedType].frame[i] * (g_limitObj.graphWidth - 30) / playingFrame + 30;
|
|
4612
4635
|
const y = (speedObj[speedType].speed[i] - 1) * -90 + 105;
|
|
4613
4636
|
|
|
4614
4637
|
context.lineTo(x, preY);
|
|
@@ -4625,7 +4648,7 @@ const createOptionWindow = _sprite => {
|
|
|
4625
4648
|
context.moveTo(lineX, 215);
|
|
4626
4649
|
context.lineTo(lineX + 30, 215);
|
|
4627
4650
|
context.stroke();
|
|
4628
|
-
context.font = `${
|
|
4651
|
+
context.font = `${g_limitObj.difSelectorSiz}px ${getBasicFont()}`;
|
|
4629
4652
|
context.fillText(speedType, lineX + 35, 218);
|
|
4630
4653
|
|
|
4631
4654
|
updateScoreDetailLabel(`Speed`, `${speedType}S`, speedObj[speedType].cnt, j, g_lblNameObj[`s_${speedType}`]);
|
|
@@ -4663,7 +4686,7 @@ const createOptionWindow = _sprite => {
|
|
|
4663
4686
|
context.moveTo(lineX, 215);
|
|
4664
4687
|
context.lineTo(lineX + 20, 215);
|
|
4665
4688
|
context.stroke();
|
|
4666
|
-
context.font = `${
|
|
4689
|
+
context.font = `${g_limitObj.difSelectorSiz}px ${getBasicFont()}`;
|
|
4667
4690
|
context.fillText(lineNames[j], lineX + 20, 218);
|
|
4668
4691
|
});
|
|
4669
4692
|
|
|
@@ -4686,7 +4709,7 @@ const createOptionWindow = _sprite => {
|
|
|
4686
4709
|
const baseLabel = (_bLabel, _bLabelname, _bAlign) =>
|
|
4687
4710
|
document.querySelector(`#detail${_name}`).appendChild(
|
|
4688
4711
|
createDivCss2Label(`${_bLabel}`, `${_bLabelname}`, {
|
|
4689
|
-
x: 10, y: 105 + _pos * 20, w: 100, h: 20, siz:
|
|
4712
|
+
x: 10, y: 105 + _pos * 20, w: 100, h: 20, siz: g_limitObj.difSelectorSiz, align: _bAlign,
|
|
4690
4713
|
})
|
|
4691
4714
|
);
|
|
4692
4715
|
if (document.querySelector(`#data${_label}`) === null) {
|
|
@@ -4703,7 +4726,7 @@ const createOptionWindow = _sprite => {
|
|
|
4703
4726
|
* @param {number} _resolution
|
|
4704
4727
|
*/
|
|
4705
4728
|
const drawBaseLine = (_context, _resolution = 10) => {
|
|
4706
|
-
_context.clearRect(0, 0,
|
|
4729
|
+
_context.clearRect(0, 0, g_limitObj.graphWidth, g_limitObj.graphHeight);
|
|
4707
4730
|
|
|
4708
4731
|
for (let j = 0; j <= 2 * _resolution; j += 5) {
|
|
4709
4732
|
drawLine(_context, j / _resolution, `main`, 2);
|
|
@@ -4724,7 +4747,7 @@ const createOptionWindow = _sprite => {
|
|
|
4724
4747
|
const lineY = (_y - 1) * -90 + 105;
|
|
4725
4748
|
_context.beginPath();
|
|
4726
4749
|
_context.moveTo(30, lineY);
|
|
4727
|
-
_context.lineTo(
|
|
4750
|
+
_context.lineTo(g_limitObj.graphWidth, lineY);
|
|
4728
4751
|
_context.lineWidth = 1;
|
|
4729
4752
|
|
|
4730
4753
|
if (_lineType === `main`) {
|
|
@@ -4754,7 +4777,7 @@ const createOptionWindow = _sprite => {
|
|
|
4754
4777
|
* @param {string} _data
|
|
4755
4778
|
* @param {object} _obj
|
|
4756
4779
|
*/
|
|
4757
|
-
const makeDifInfoLabel = (_lbl, _data, { x = 130, y = 25, w = 125, h = 35, siz =
|
|
4780
|
+
const makeDifInfoLabel = (_lbl, _data, { x = 130, y = 25, w = 125, h = 35, siz = g_limitObj.difSelectorSiz, ...rest } = {}) =>
|
|
4758
4781
|
createDivCss2Label(_lbl, _data, { x, y, w, h, siz, align: C_ALIGN_LEFT, ...rest });
|
|
4759
4782
|
|
|
4760
4783
|
let printData = ``;
|
|
@@ -4818,7 +4841,7 @@ const createOptionWindow = _sprite => {
|
|
|
4818
4841
|
dataDouji.textContent = g_detailObj.toolDif[_scoreId].douji;
|
|
4819
4842
|
dataTate.textContent = g_detailObj.toolDif[_scoreId].tate;
|
|
4820
4843
|
lblArrowInfo2.innerHTML = g_lblNameObj.s_linecnts.split(`{0}`).join(g_detailObj.toolDif[_scoreId].push3cnt);
|
|
4821
|
-
dataArrowInfo.innerHTML = `${arrowCnts + frzCnts} <span style="font-size:${
|
|
4844
|
+
dataArrowInfo.innerHTML = `${arrowCnts + frzCnts} <span style="font-size:${g_limitObj.difSelectorSiz}px;">(${arrowCnts} + ${frzCnts})</span>`;
|
|
4822
4845
|
dataArrowInfo2.innerHTML = `<br>(${g_detailObj.arrowCnt[_scoreId]})<br><br>
|
|
4823
4846
|
(${g_detailObj.frzCnt[_scoreId]})<br><br>
|
|
4824
4847
|
${push3CntStr}`.split(`,`).join(`/`);
|
|
@@ -5207,10 +5230,10 @@ const createOptionWindow = _sprite => {
|
|
|
5207
5230
|
|
|
5208
5231
|
const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
|
|
5209
5232
|
if (g_headerObj.keyRetryDef === C_KEY_RETRY) {
|
|
5210
|
-
g_headerObj.keyRetry = setIntVal(g_keyObj[`keyRetry${keyCtrlPtn}`], g_headerObj.keyRetryDef);
|
|
5233
|
+
g_headerObj.keyRetry = setIntVal(getKeyCtrlVal(g_keyObj[`keyRetry${keyCtrlPtn}`]), g_headerObj.keyRetryDef);
|
|
5211
5234
|
}
|
|
5212
5235
|
if (g_headerObj.keyTitleBackDef === C_KEY_TITLEBACK) {
|
|
5213
|
-
g_headerObj.keyTitleBack = setIntVal(g_keyObj[`keyTitleBack${keyCtrlPtn}`], g_headerObj.keyTitleBackDef);
|
|
5236
|
+
g_headerObj.keyTitleBack = setIntVal(getKeyCtrlVal(g_keyObj[`keyTitleBack${keyCtrlPtn}`]), g_headerObj.keyTitleBackDef);
|
|
5214
5237
|
}
|
|
5215
5238
|
}
|
|
5216
5239
|
|
|
@@ -5240,7 +5263,7 @@ const createOptionWindow = _sprite => {
|
|
|
5240
5263
|
// 譜面名設定 (Difficulty)
|
|
5241
5264
|
const difWidth = parseFloat(lnkDifficulty.style.width);
|
|
5242
5265
|
const difNames = [`${getKeyName(g_keyObj.currentKey)} ${getStgDetailName('key')} / ${g_headerObj.difLabels[g_stateObj.scoreId]}`];
|
|
5243
|
-
lnkDifficulty.style.fontSize = `${getFontSize(difNames[0], difWidth, getBasicFont(),
|
|
5266
|
+
lnkDifficulty.style.fontSize = `${getFontSize(difNames[0], difWidth, getBasicFont(), g_limitObj.setLblSiz)}px`;
|
|
5244
5267
|
|
|
5245
5268
|
if (g_headerObj.makerView) {
|
|
5246
5269
|
difNames.push(`(${g_headerObj.creatorNames[g_stateObj.scoreId]})`);
|
|
@@ -5354,8 +5377,8 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
|
5354
5377
|
// 右回し・左回しボタン(最内側)
|
|
5355
5378
|
if (skipTerms[2] > 1) {
|
|
5356
5379
|
multiAppend(_obj,
|
|
5357
|
-
makeMiniCssButton(linkId, `RRR`, 0, _ => setSetting(skipTerms[2], _settingName, unitName, roundNum), { dw: -
|
|
5358
|
-
makeMiniCssButton(linkId, `LLL`, 0, _ => setSetting(skipTerms[2] * (-1), _settingName, unitName, roundNum), { dw: -
|
|
5380
|
+
makeMiniCssButton(linkId, `RRR`, 0, _ => setSetting(skipTerms[2], _settingName, unitName, roundNum), { dw: -g_limitObj.setMiniWidth / 2 }),
|
|
5381
|
+
makeMiniCssButton(linkId, `LLL`, 0, _ => setSetting(skipTerms[2] * (-1), _settingName, unitName, roundNum), { dw: -g_limitObj.setMiniWidth / 2 }),
|
|
5359
5382
|
);
|
|
5360
5383
|
}
|
|
5361
5384
|
|
|
@@ -5439,7 +5462,7 @@ const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0) =>
|
|
|
5439
5462
|
*/
|
|
5440
5463
|
const makeDisabledLabel = (_id, _heightPos, _defaultStr) => {
|
|
5441
5464
|
return createDivCss2Label(_id, _defaultStr, {
|
|
5442
|
-
x:
|
|
5465
|
+
x: g_limitObj.setLblLeft, y: g_limitObj.setLblHeight * _heightPos,
|
|
5443
5466
|
}, g_cssObj.settings_Disabled);
|
|
5444
5467
|
};
|
|
5445
5468
|
|
|
@@ -5473,7 +5496,7 @@ const setReverseDefault = _ => {
|
|
|
5473
5496
|
const getKeyCtrl = (_localStorage, _extraKeyName = ``) => {
|
|
5474
5497
|
const baseKeyCtrlPtn = _localStorage[`keyCtrlPtn${_extraKeyName}`];
|
|
5475
5498
|
const basePtn = `${g_keyObj.currentKey}_${baseKeyCtrlPtn}`;
|
|
5476
|
-
const baseKeyNum = g_keyObj[
|
|
5499
|
+
const baseKeyNum = g_keyObj[`${g_keyObj.defaultProp}${basePtn}`].length;
|
|
5477
5500
|
|
|
5478
5501
|
if (_localStorage[`keyCtrl${_extraKeyName}`] !== undefined && _localStorage[`keyCtrl${_extraKeyName}`][0].length > 0) {
|
|
5479
5502
|
const prevPtn = g_keyObj.currentPtn;
|
|
@@ -5522,11 +5545,11 @@ const getKeyCtrl = (_localStorage, _extraKeyName = ``) => {
|
|
|
5522
5545
|
*/
|
|
5523
5546
|
const makeSettingLblCssButton = (_id, _name, _heightPos, _func, { x, y, w, h, siz, cxtFunc = _ => true, ...rest } = {}, ..._classes) => {
|
|
5524
5547
|
const tmpObj = {
|
|
5525
|
-
x: x !== undefined ? x :
|
|
5526
|
-
y: y !== undefined ? y :
|
|
5527
|
-
w: w !== undefined ? w :
|
|
5528
|
-
h: h !== undefined ? h :
|
|
5529
|
-
siz: siz !== undefined ? siz :
|
|
5548
|
+
x: x !== undefined ? x : g_limitObj.setLblLeft,
|
|
5549
|
+
y: y !== undefined ? y : g_limitObj.setLblHeight * _heightPos,
|
|
5550
|
+
w: w !== undefined ? w : g_limitObj.setLblWidth,
|
|
5551
|
+
h: h !== undefined ? h : g_limitObj.setLblHeight,
|
|
5552
|
+
siz: siz !== undefined ? siz : g_limitObj.setLblSiz,
|
|
5530
5553
|
cxtFunc: cxtFunc !== undefined ? cxtFunc : _ => true,
|
|
5531
5554
|
};
|
|
5532
5555
|
return createCss2Button(_id, _name, _func, { ...tmpObj, ...rest }, g_cssObj.button_Default, ..._classes);
|
|
@@ -5539,11 +5562,11 @@ const makeSettingLblCssButton = (_id, _name, _heightPos, _func, { x, y, w, h, si
|
|
|
5539
5562
|
* @param {number} _heightPos 上からの配置順
|
|
5540
5563
|
* @param {function} _func
|
|
5541
5564
|
*/
|
|
5542
|
-
const makeDifLblCssButton = (_id, _name, _heightPos, _func, { x = 0, w =
|
|
5565
|
+
const makeDifLblCssButton = (_id, _name, _heightPos, _func, { x = 0, w = g_limitObj.difSelectorWidth, btnStyle = `Default` } = {}) => {
|
|
5543
5566
|
return createCss2Button(_id, _name, _func, {
|
|
5544
|
-
x: x, y:
|
|
5545
|
-
w: w, h:
|
|
5546
|
-
siz:
|
|
5567
|
+
x: x, y: g_limitObj.setLblHeight * _heightPos,
|
|
5568
|
+
w: w, h: g_limitObj.setLblHeight,
|
|
5569
|
+
siz: g_limitObj.difSelectorSiz,
|
|
5547
5570
|
borderStyle: `solid`,
|
|
5548
5571
|
}, g_cssObj[`button_${btnStyle}`], g_cssObj.button_ON);
|
|
5549
5572
|
};
|
|
@@ -5558,8 +5581,8 @@ const makeDifLblCssButton = (_id, _name, _heightPos, _func, { x = 0, w = C_LEN_D
|
|
|
5558
5581
|
const makeMiniCssButton = (_id, _directionFlg, _heightPos, _func, { dx = 0, dy = 0, dw = 0, dh = 0, dsiz = 0, visibility = `visible` } = {}) => {
|
|
5559
5582
|
return createCss2Button(`${_id}${_directionFlg}`, g_settingBtnObj.chara[_directionFlg], _func, {
|
|
5560
5583
|
x: g_settingBtnObj.pos[_directionFlg] + dx,
|
|
5561
|
-
y:
|
|
5562
|
-
w:
|
|
5584
|
+
y: g_limitObj.setLblHeight * _heightPos + dy,
|
|
5585
|
+
w: g_limitObj.setMiniWidth + dw, h: g_limitObj.setLblHeight + dh, siz: g_limitObj.setLblSiz + dsiz,
|
|
5563
5586
|
visibility: visibility
|
|
5564
5587
|
}, g_cssObj.button_Mini);
|
|
5565
5588
|
};
|
|
@@ -5646,8 +5669,8 @@ const createSettingsDisplayWindow = _sprite => {
|
|
|
5646
5669
|
*/
|
|
5647
5670
|
const makeDisabledDisplayLabel = (_id, _heightPos, _widthPos, _defaultStr, _flg) => {
|
|
5648
5671
|
return createDivCss2Label(_id, _defaultStr, {
|
|
5649
|
-
x: 30 + 180 * _widthPos, y: 3 +
|
|
5650
|
-
w: 170, siz:
|
|
5672
|
+
x: 30 + 180 * _widthPos, y: 3 + g_limitObj.setLblHeight * _heightPos,
|
|
5673
|
+
w: 170, siz: g_limitObj.difSelectorSiz,
|
|
5651
5674
|
}, g_cssObj[`button_Disabled${flg}`]);
|
|
5652
5675
|
};
|
|
5653
5676
|
|
|
@@ -5679,16 +5702,9 @@ const createSettingsDisplayWindow = _sprite => {
|
|
|
5679
5702
|
// 各ボタン用のスプライトを作成
|
|
5680
5703
|
createOptionSprite(_sprite);
|
|
5681
5704
|
|
|
5682
|
-
// 設定名、縦位置、縦位置差分、幅差分、高さ差分
|
|
5683
|
-
const settingList = [
|
|
5684
|
-
[`appearance`, 7.4, 10, 0, 0],
|
|
5685
|
-
[`opacity`, 9, 10, 0, 0],
|
|
5686
|
-
[`hitPosition`, 10, 10, 0, 0],
|
|
5687
|
-
];
|
|
5688
|
-
|
|
5689
5705
|
// 設定毎に個別のスプライトを作成し、その中にラベル・ボタン類を配置
|
|
5690
5706
|
const displaySprite = createEmptySprite(optionsprite, `displaySprite`, g_windowObj.displaySprite);
|
|
5691
|
-
const spriteList = setSpriteList(
|
|
5707
|
+
const spriteList = setSpriteList(g_settingPos.settingsDisplay);
|
|
5692
5708
|
|
|
5693
5709
|
_sprite.appendChild(createDivCss2Label(`sdDesc`, g_lblNameObj.sdDesc, g_lblPosObj.sdDesc));
|
|
5694
5710
|
g_displays.forEach((name, j) => makeDisplayButton(name, j % 7, Math.floor(j / 7)));
|
|
@@ -5970,7 +5986,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
5970
5986
|
setKeyConfigCursor();
|
|
5971
5987
|
}, {
|
|
5972
5988
|
x: keyconX, y: 50 + C_KYC_REPHEIGHT * k + keyconY,
|
|
5973
|
-
w: C_ARW_WIDTH, h: C_KYC_REPHEIGHT, siz:
|
|
5989
|
+
w: C_ARW_WIDTH, h: C_KYC_REPHEIGHT, siz: g_limitObj.jdgCntsSiz,
|
|
5974
5990
|
}, g_cssObj.button_Default_NoColor, g_cssObj.title_base)
|
|
5975
5991
|
);
|
|
5976
5992
|
|
|
@@ -6064,7 +6080,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6064
6080
|
* @returns ボタン
|
|
6065
6081
|
*/
|
|
6066
6082
|
const makeKCButton = (_id, _text, _func, { x = g_sWidth * 5 / 6 - 20, y = 15, w = g_sWidth / 6, h = 18,
|
|
6067
|
-
siz =
|
|
6083
|
+
siz = g_limitObj.jdgCntsSiz, borderStyle = `solid`, cxtFunc, ...rest } = {}, _mainClass = g_cssObj.button_RevOFF, ..._classes) => {
|
|
6068
6084
|
return makeSettingLblCssButton(_id, getStgDetailName(_text), 0, _func, { x, y, w, h, siz, cxtFunc, borderStyle, ...rest }, _mainClass, ..._classes);
|
|
6069
6085
|
};
|
|
6070
6086
|
|
|
@@ -6076,7 +6092,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6076
6092
|
* @param {*} object (x, y, w, h, siz)
|
|
6077
6093
|
* @returns
|
|
6078
6094
|
*/
|
|
6079
|
-
const makeMiniKCButton = (_id, _directionFlg, _func, { x = g_sWidth * 5 / 6 - 30, y = 15, w = 15, h = 20, siz =
|
|
6095
|
+
const makeMiniKCButton = (_id, _directionFlg, _func, { x = g_sWidth * 5 / 6 - 30, y = 15, w = 15, h = 20, siz = g_limitObj.mainSiz } = {}) => {
|
|
6080
6096
|
return createCss2Button(`${_id}${_directionFlg}`, g_settingBtnObj.chara[_directionFlg], _func,
|
|
6081
6097
|
{ x, y, w, h, siz }, g_cssObj.button_Mini);
|
|
6082
6098
|
};
|
|
@@ -6553,7 +6569,7 @@ const getShadowColor = (_colorPos, _arrowColor) => g_headerObj.setShadowColor[_c
|
|
|
6553
6569
|
*/
|
|
6554
6570
|
const getKeyInfo = _ => {
|
|
6555
6571
|
const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
|
|
6556
|
-
const keyNum = g_keyObj[
|
|
6572
|
+
const keyNum = g_keyObj[`${g_keyObj.defaultProp}${keyCtrlPtn}`].length;
|
|
6557
6573
|
const posMax = (g_keyObj[`divMax${keyCtrlPtn}`] !== undefined ?
|
|
6558
6574
|
g_keyObj[`divMax${keyCtrlPtn}`] : Math.max(...g_keyObj[`pos${keyCtrlPtn}`]) + 1);
|
|
6559
6575
|
const divideCnt = g_keyObj[`div${keyCtrlPtn}`] - 1;
|
|
@@ -7104,7 +7120,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
7104
7120
|
const obj = {};
|
|
7105
7121
|
|
|
7106
7122
|
const scoreIdHeader = setScoreIdHeader(_scoreId, g_stateObj.scoreLockFlg);
|
|
7107
|
-
const keyNum = g_keyObj[
|
|
7123
|
+
const keyNum = g_keyObj[`${g_keyObj.defaultProp}${_keyCtrlPtn}`].length;
|
|
7108
7124
|
obj.arrowData = [];
|
|
7109
7125
|
obj.frzData = [];
|
|
7110
7126
|
obj.dummyArrowData = [];
|
|
@@ -7584,7 +7600,7 @@ const calcLifeVal = (_val, _allArrows) => Math.round(_val * g_headerObj.maxLifeV
|
|
|
7584
7600
|
const getLastFrame = (_dataObj, _keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`) => {
|
|
7585
7601
|
|
|
7586
7602
|
let tmpLastNum = 0;
|
|
7587
|
-
const keyNum = g_keyObj[
|
|
7603
|
+
const keyNum = g_keyObj[`${g_keyObj.defaultProp}${_keyCtrlPtn}`].length;
|
|
7588
7604
|
|
|
7589
7605
|
for (let j = 0; j < keyNum; j++) {
|
|
7590
7606
|
const data = [
|
|
@@ -7611,7 +7627,7 @@ const getLastFrame = (_dataObj, _keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj
|
|
|
7611
7627
|
const getFirstArrowFrame = (_dataObj, _keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`) => {
|
|
7612
7628
|
|
|
7613
7629
|
let tmpFirstNum = Infinity;
|
|
7614
|
-
const keyNum = g_keyObj[
|
|
7630
|
+
const keyNum = g_keyObj[`${g_keyObj.defaultProp}${_keyCtrlPtn}`].length;
|
|
7615
7631
|
|
|
7616
7632
|
for (let j = 0; j < keyNum; j++) {
|
|
7617
7633
|
const data = [
|
|
@@ -8729,7 +8745,7 @@ const mainInit = _ => {
|
|
|
8729
8745
|
const makerView = g_headerObj.makerView ? ` (${g_headerObj.creatorNames[g_stateObj.scoreId]})` : ``;
|
|
8730
8746
|
let difName = `[${getKeyName(g_headerObj.keyLabels[g_stateObj.scoreId])} / ${g_headerObj.difLabels[g_stateObj.scoreId]}${assistFlg}${shuffleName}${makerView}]`;
|
|
8731
8747
|
let creditName = `${musicTitle} / ${artistName}`;
|
|
8732
|
-
if (checkMusicSiz(creditName,
|
|
8748
|
+
if (checkMusicSiz(creditName, g_limitObj.musicTitleSiz) < 12) {
|
|
8733
8749
|
creditName = `${musicTitle}`;
|
|
8734
8750
|
difName = `/ ${artistName} ` + difName;
|
|
8735
8751
|
}
|
|
@@ -8738,7 +8754,7 @@ const mainInit = _ => {
|
|
|
8738
8754
|
|
|
8739
8755
|
// ライフ(数字)
|
|
8740
8756
|
createDivCss2Label(`lblLife`, intLifeVal, {
|
|
8741
|
-
x: 0, y: 30, w: 70, h: 20, siz:
|
|
8757
|
+
x: 0, y: 30, w: 70, h: 20, siz: g_limitObj.jdgCntsSiz, display: g_workObj.lifegaugeDisp,
|
|
8742
8758
|
}, lblInitColor),
|
|
8743
8759
|
|
|
8744
8760
|
// ライフ背景
|
|
@@ -8762,7 +8778,7 @@ const mainInit = _ => {
|
|
|
8762
8778
|
}, g_cssObj.life_Border, g_cssObj.life_BorderColor),
|
|
8763
8779
|
|
|
8764
8780
|
// 曲名・アーティスト名表示
|
|
8765
|
-
createDivCss2Label(`lblCredit`, creditName, Object.assign(g_lblPosObj.lblCredit, { siz: checkMusicSiz(creditName,
|
|
8781
|
+
createDivCss2Label(`lblCredit`, creditName, Object.assign(g_lblPosObj.lblCredit, { siz: checkMusicSiz(creditName, g_limitObj.musicTitleSiz) })),
|
|
8766
8782
|
|
|
8767
8783
|
// 譜面名表示
|
|
8768
8784
|
createDivCss2Label(`lblDifName`, difName, Object.assign(g_lblPosObj.lblDifName, { siz: checkMusicSiz(difName, 12) })),
|
|
@@ -8801,7 +8817,7 @@ const mainInit = _ => {
|
|
|
8801
8817
|
// キャラクタ表示
|
|
8802
8818
|
const charaJ = createDivCss2Label(`chara${jdg}`, ``, {
|
|
8803
8819
|
x: jdgX[j], y: jdgY[j],
|
|
8804
|
-
w:
|
|
8820
|
+
w: g_limitObj.jdgCharaWidth, h: g_limitObj.jdgCharaHeight, siz: g_limitObj.jdgCharaSiz,
|
|
8805
8821
|
opacity: g_stateObj.opacity / 100, display: g_workObj.judgmentDisp,
|
|
8806
8822
|
}, g_cssObj.common_ii);
|
|
8807
8823
|
charaJ.setAttribute(`cnt`, 0);
|
|
@@ -8814,14 +8830,14 @@ const mainInit = _ => {
|
|
|
8814
8830
|
// コンボ表示
|
|
8815
8831
|
createDivCss2Label(`combo${jdg}`, ``, {
|
|
8816
8832
|
x: jdgX[j] + 170, y: jdgY[j],
|
|
8817
|
-
w:
|
|
8833
|
+
w: g_limitObj.jdgCharaWidth, h: g_limitObj.jdgCharaHeight, siz: g_limitObj.jdgCharaSiz,
|
|
8818
8834
|
opacity: g_stateObj.opacity / 100, display: g_workObj.judgmentDisp,
|
|
8819
8835
|
}, g_cssObj[`common_${jdgCombos[j]}`]),
|
|
8820
8836
|
|
|
8821
8837
|
// Fast/Slow表示
|
|
8822
8838
|
createDivCss2Label(`diff${jdg}`, ``, {
|
|
8823
8839
|
x: jdgX[j] + 170, y: jdgY[j] + 25,
|
|
8824
|
-
w:
|
|
8840
|
+
w: g_limitObj.jdgCharaWidth, h: g_limitObj.jdgCharaHeight, siz: g_limitObj.mainSiz,
|
|
8825
8841
|
opacity: g_stateObj.opacity / 100, display: g_workObj.fastslowDisp,
|
|
8826
8842
|
}, g_cssObj.common_combo),
|
|
8827
8843
|
|
|
@@ -9652,7 +9668,7 @@ const mainInit = _ => {
|
|
|
9652
9668
|
} else if (/\[fontSize=\d+\]/.test(g_wordObj.wordDat)) {
|
|
9653
9669
|
|
|
9654
9670
|
// フォントサイズ変更
|
|
9655
|
-
const fontSize = setIntVal(g_wordObj.wordDat.match(/\d+/)[0],
|
|
9671
|
+
const fontSize = setIntVal(g_wordObj.wordDat.match(/\d+/)[0], g_limitObj.mainSiz);
|
|
9656
9672
|
g_wordSprite.style.fontSize = `${fontSize}px`;
|
|
9657
9673
|
|
|
9658
9674
|
} else {
|
|
@@ -9782,8 +9798,8 @@ const changeAppearanceFilter = (_appearance, _num = 10) => {
|
|
|
9782
9798
|
*/
|
|
9783
9799
|
const makeCounterSymbol = (_id, _x, _class, _heightPos, _text, _display = C_DIS_INHERIT) => {
|
|
9784
9800
|
return createDivCss2Label(_id, _text, {
|
|
9785
|
-
x: _x, y:
|
|
9786
|
-
w:
|
|
9801
|
+
x: _x, y: g_limitObj.jdgCntsHeight * _heightPos,
|
|
9802
|
+
w: g_limitObj.jdgCntsWidth, h: g_limitObj.jdgCntsHeight, siz: g_limitObj.jdgCntsSiz, align: C_ALIGN_RIGHT,
|
|
9787
9803
|
display: _display,
|
|
9788
9804
|
}, _class);
|
|
9789
9805
|
};
|
|
@@ -10749,9 +10765,9 @@ const resultInit = _ => {
|
|
|
10749
10765
|
* @param {string} _text
|
|
10750
10766
|
* @param {string} _align
|
|
10751
10767
|
*/
|
|
10752
|
-
const makeCssResultPlayData = (_id, _x, _class, _heightPos, _text, _align = C_ALIGN_CENTER, { w = 400, siz =
|
|
10768
|
+
const makeCssResultPlayData = (_id, _x, _class, _heightPos, _text, _align = C_ALIGN_CENTER, { w = 400, siz = g_limitObj.mainSiz } = {}) =>
|
|
10753
10769
|
createDivCss2Label(_id, _text, {
|
|
10754
|
-
x: _x, y:
|
|
10770
|
+
x: _x, y: g_limitObj.setMiniSiz * _heightPos, w, h: g_limitObj.setMiniSiz, siz, align: _align,
|
|
10755
10771
|
}, _class);
|
|
10756
10772
|
|
|
10757
10773
|
/**
|
|
@@ -10764,7 +10780,7 @@ const makeCssResultPlayData = (_id, _x, _class, _heightPos, _text, _align = C_AL
|
|
|
10764
10780
|
* @param {string} _align
|
|
10765
10781
|
*/
|
|
10766
10782
|
const makeCssResultSymbol = (_id, _x, _class, _heightPos, _text, _align = C_ALIGN_LEFT) =>
|
|
10767
|
-
makeCssResultPlayData(_id, _x, _class, _heightPos, _text, _align, { w: 150, siz:
|
|
10783
|
+
makeCssResultPlayData(_id, _x, _class, _heightPos, _text, _align, { w: 150, siz: g_limitObj.jdgCntsSiz });
|
|
10768
10784
|
|
|
10769
10785
|
// ライセンス原文、以下は削除しないでください
|
|
10770
10786
|
/*-----------------------------------------------------------*/
|