danoniplus 34.4.2 → 34.5.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/css/danoni_main.css +10 -1
- package/js/danoni_main.js +63 -72
- package/js/lib/danoni_constants.js +4 -5
- package/package.json +1 -1
package/css/danoni_main.css
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
本体cssファイル
|
|
5
5
|
|
|
6
6
|
Created : 2018/10/08
|
|
7
|
-
Revised : 2023/
|
|
7
|
+
Revised : 2023/11/05 (v34.5.0)
|
|
8
8
|
|
|
9
9
|
https://github.com/cwtickle/danoniplus
|
|
10
10
|
------------------------------------------ */
|
|
@@ -475,6 +475,15 @@ input[type="color"] {
|
|
|
475
475
|
color: var(--settings-lifeVal-x, #ff9966);
|
|
476
476
|
}
|
|
477
477
|
|
|
478
|
+
/* 設定画面:レーンごとの矢印数 */
|
|
479
|
+
.settings_maxArrowCnts {
|
|
480
|
+
color: var(--settings-maxArrowCnts-x, var(--common-uwan));
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
.settings_minArrowCnts {
|
|
484
|
+
color: var(--settings-maxArrowCnts-x, var(--common-ii));
|
|
485
|
+
}
|
|
486
|
+
|
|
478
487
|
/* キーコンフィグ */
|
|
479
488
|
.keyconfig_warning {
|
|
480
489
|
color: var(--keyconfig-warning-x, #ffff99);
|
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/11/
|
|
7
|
+
* Revised : 2023/11/05
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 34.
|
|
12
|
-
const g_revisedDate = `2023/11/
|
|
11
|
+
const g_version = `Ver 34.5.1`;
|
|
12
|
+
const g_revisedDate = `2023/11/05`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -431,13 +431,12 @@ const padArray = (_array, _baseArray) => {
|
|
|
431
431
|
* @param {number} _num
|
|
432
432
|
*/
|
|
433
433
|
const getMaxValIdxs = (_array, _num = 1) => {
|
|
434
|
-
const getMaxVal = (_a, _b) => Math.max(_a, _b);
|
|
435
434
|
let baseArray = _array.concat();
|
|
436
435
|
const maxIdxs = [];
|
|
437
436
|
|
|
438
437
|
for (let j = 0; j < _num; j++) {
|
|
439
438
|
maxIdxs[j] = [];
|
|
440
|
-
const maxVal = baseArray.reduce((a, b) =>
|
|
439
|
+
const maxVal = baseArray.reduce((a, b) => Math.max(a, b));
|
|
441
440
|
_array.map((val, idx) => {
|
|
442
441
|
if (val === maxVal) {
|
|
443
442
|
maxIdxs[j].push(idx);
|
|
@@ -516,13 +515,14 @@ const nextPos = (_basePos, _num, _length) => (_basePos + _num + _length) % _leng
|
|
|
516
515
|
|
|
517
516
|
/**
|
|
518
517
|
* 特定キーコードを置換する処理
|
|
519
|
-
* @param {
|
|
518
|
+
* @param {object} _evt
|
|
520
519
|
*/
|
|
521
|
-
const transCode =
|
|
522
|
-
|
|
523
|
-
|
|
520
|
+
const transCode = _evt => {
|
|
521
|
+
const evtCode = _evt.code;
|
|
522
|
+
if (evtCode === `` && _evt.key === `Shift`) {
|
|
523
|
+
return `ShiftRight`;
|
|
524
524
|
}
|
|
525
|
-
return
|
|
525
|
+
return evtCode;
|
|
526
526
|
};
|
|
527
527
|
|
|
528
528
|
/**
|
|
@@ -536,21 +536,6 @@ const blockCode = _setCode => !C_BLOCK_KEYS.includes(_setCode);
|
|
|
536
536
|
/* ショートカット制御 */
|
|
537
537
|
/*-----------------------------------------------------------*/
|
|
538
538
|
|
|
539
|
-
/**
|
|
540
|
-
* キーを押した状態を格納
|
|
541
|
-
* (KeyboardEvent.codeが空のときは、別キーとして扱う)
|
|
542
|
-
* @param {object} _evt
|
|
543
|
-
* @param {boolean} _keyHitFlg
|
|
544
|
-
*/
|
|
545
|
-
const switchKeyHit = (_evt, _keyHitFlg = false) => {
|
|
546
|
-
if (_evt.code === ``) {
|
|
547
|
-
g_inputKeyBuffer[''] = false;
|
|
548
|
-
g_inputKeyBuffer[_evt.key === `Shift` ? g_kCdNameObj.shiftRKey : g_kCdNameObj.unknownKey] = _keyHitFlg;
|
|
549
|
-
} else {
|
|
550
|
-
g_inputKeyBuffer[_evt.code] = _keyHitFlg;
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
|
|
554
539
|
/**
|
|
555
540
|
* キーを押したときの動作(汎用)
|
|
556
541
|
* @param {object} _evt
|
|
@@ -562,11 +547,11 @@ const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
|
|
|
562
547
|
if (!_dfEvtFlg) {
|
|
563
548
|
_evt.preventDefault();
|
|
564
549
|
}
|
|
565
|
-
const setCode = _evt
|
|
550
|
+
const setCode = transCode(_evt);
|
|
566
551
|
if (_evt.repeat && (g_unrepeatObj.page.includes(_displayName) || g_unrepeatObj.key.includes(setCode))) {
|
|
567
552
|
return blockCode(setCode);
|
|
568
553
|
}
|
|
569
|
-
|
|
554
|
+
g_inputKeyBuffer[setCode] = true;
|
|
570
555
|
|
|
571
556
|
// 対象ボタンを検索
|
|
572
557
|
const scLists = Object.keys(g_shortcutObj[_displayName])
|
|
@@ -574,7 +559,7 @@ const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
|
|
|
574
559
|
if (scLists.length > 0) {
|
|
575
560
|
// リンク先にジャンプする場合はonkeyUpイベントが動かないため、事前にキー状態をリセット
|
|
576
561
|
if (g_shortcutObj[_displayName][scLists[0]].reset) {
|
|
577
|
-
|
|
562
|
+
g_inputKeyBuffer[setCode] = false;
|
|
578
563
|
}
|
|
579
564
|
// 対象ボタン処理を実行
|
|
580
565
|
const targetId = document.getElementById(g_shortcutObj[_displayName][scLists[0]].id);
|
|
@@ -583,7 +568,7 @@ const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
|
|
|
583
568
|
}
|
|
584
569
|
return blockCode(setCode);
|
|
585
570
|
}
|
|
586
|
-
_func(setCode
|
|
571
|
+
_func(setCode);
|
|
587
572
|
return blockCode(setCode);
|
|
588
573
|
};
|
|
589
574
|
|
|
@@ -594,7 +579,7 @@ const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
|
|
|
594
579
|
const commonKeyUp = _evt => {
|
|
595
580
|
g_inputKeyBuffer[g_kCdNameObj.metaLKey] = false;
|
|
596
581
|
g_inputKeyBuffer[g_kCdNameObj.metaRKey] = false;
|
|
597
|
-
|
|
582
|
+
g_inputKeyBuffer[transCode(_evt)] = false;
|
|
598
583
|
};
|
|
599
584
|
|
|
600
585
|
/**
|
|
@@ -1387,7 +1372,7 @@ const resetKeyControl = _ => {
|
|
|
1387
1372
|
document.onkeyup = _ => { };
|
|
1388
1373
|
document.onkeydown = evt => {
|
|
1389
1374
|
evt.preventDefault();
|
|
1390
|
-
return blockCode(evt
|
|
1375
|
+
return blockCode(transCode(evt));
|
|
1391
1376
|
};
|
|
1392
1377
|
g_inputKeyBuffer = {};
|
|
1393
1378
|
};
|
|
@@ -2588,7 +2573,7 @@ const calcLevel = _scoreObj => {
|
|
|
2588
2573
|
// 3つ押し数
|
|
2589
2574
|
push3cnt: push3Cnt,
|
|
2590
2575
|
// 3つ押しリスト
|
|
2591
|
-
push3: push3List,
|
|
2576
|
+
push3: makeDedupliArray(push3List),
|
|
2592
2577
|
};
|
|
2593
2578
|
};
|
|
2594
2579
|
|
|
@@ -3050,8 +3035,11 @@ const headerConvert = _dosObj => {
|
|
|
3050
3035
|
|
|
3051
3036
|
// 初期表示する部分キーの設定
|
|
3052
3037
|
obj.keyGroupOrder = [];
|
|
3053
|
-
_dosObj.keyGroupOrder?.split(`$`).
|
|
3054
|
-
|
|
3038
|
+
_dosObj.keyGroupOrder?.split(`$`).forEach((val, j) => {
|
|
3039
|
+
if (val !== ``) {
|
|
3040
|
+
obj.keyGroupOrder[j] = val.split(`,`);
|
|
3041
|
+
}
|
|
3042
|
+
});
|
|
3055
3043
|
|
|
3056
3044
|
// 最終演出表示有無(noneで無効化)
|
|
3057
3045
|
obj.finishView = _dosObj.finishView ?? ``;
|
|
@@ -3890,18 +3878,6 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3890
3878
|
// キーコンフィグ (keyCtrlX_Y)
|
|
3891
3879
|
g_keyObj.minPatterns = newKeyMultiParam(newKey, `keyCtrl`, toKeyCtrlArray, {
|
|
3892
3880
|
errCd: `E_0104`, baseCopyFlg: true,
|
|
3893
|
-
loopFunc: (k, keyheader) => {
|
|
3894
|
-
const addShiftRKey = (_pattern = ``) => {
|
|
3895
|
-
const keyCtrls = g_keyObj[`${keyheader}_${k + dfPtnNum}${_pattern}`];
|
|
3896
|
-
for (let j = 0; j < keyCtrls.length; j++) {
|
|
3897
|
-
if (keyCtrls[j].includes(g_kCdObj.shiftRkey) && !keyCtrls[j].includes(g_kCdObj.shiftRAltKey)) {
|
|
3898
|
-
keyCtrls[j].push(g_kCdObj.shiftRAltKey);
|
|
3899
|
-
}
|
|
3900
|
-
}
|
|
3901
|
-
};
|
|
3902
|
-
addShiftRKey();
|
|
3903
|
-
addShiftRKey(`d`);
|
|
3904
|
-
},
|
|
3905
3881
|
});
|
|
3906
3882
|
|
|
3907
3883
|
// 読込変数の接頭辞 (charaX_Y)
|
|
@@ -4886,7 +4862,7 @@ const makeDifInfo = _scoreId => {
|
|
|
4886
4862
|
|
|
4887
4863
|
const arrowCnts = sumData(g_detailObj.arrowCnt[_scoreId]);
|
|
4888
4864
|
const frzCnts = sumData(g_detailObj.frzCnt[_scoreId]);
|
|
4889
|
-
const push3CntStr = (g_detailObj.toolDif[_scoreId].push3.length === 0 ? `None` : `(${g_detailObj.toolDif[_scoreId].push3})`);
|
|
4865
|
+
const push3CntStr = (g_detailObj.toolDif[_scoreId].push3.length === 0 ? `None` : `(${g_detailObj.toolDif[_scoreId].push3.join(', ')})`);
|
|
4890
4866
|
|
|
4891
4867
|
if (document.getElementById(`lblTooldif`) === null) {
|
|
4892
4868
|
makeDifInfoLabels(_scoreId);
|
|
@@ -4894,12 +4870,40 @@ const makeDifInfo = _scoreId => {
|
|
|
4894
4870
|
dataTooldif.textContent = g_detailObj.toolDif[_scoreId].tool;
|
|
4895
4871
|
dataDouji.textContent = g_detailObj.toolDif[_scoreId].douji;
|
|
4896
4872
|
dataTate.textContent = g_detailObj.toolDif[_scoreId].tate;
|
|
4897
|
-
lblArrowInfo2.innerHTML = g_lblNameObj.s_linecnts.split(`{0}`)
|
|
4873
|
+
lblArrowInfo2.innerHTML = g_lblNameObj.s_linecnts.split(`{0}`)
|
|
4874
|
+
.join(`${makeDedupliArray(g_detailObj.toolDif[_scoreId].push3).length} /cnt:${g_detailObj.toolDif[_scoreId].push3cnt}`);
|
|
4898
4875
|
dataArrowInfo.innerHTML = `${arrowCnts + frzCnts * (g_headerObj.frzStartjdgUse ? 2 : 1)}
|
|
4899
4876
|
<span style="font-size:${wUnit(g_limitObj.difSelectorSiz)};">(${arrowCnts} + ${frzCnts}${g_headerObj.frzStartjdgUse ? ' <span class="common_bold">x 2</span>' : ''})</span>`;
|
|
4900
|
-
|
|
4901
|
-
|
|
4902
|
-
|
|
4877
|
+
|
|
4878
|
+
const makeArrowCntsView = (_cntlist) => {
|
|
4879
|
+
const targetKey = g_headerObj.keyLabels[_scoreId];
|
|
4880
|
+
const cntlist = [
|
|
4881
|
+
_cntlist.filter((val, j) =>
|
|
4882
|
+
g_keyObj[`pos${targetKey}_0`][j] < g_keyObj[`div${targetKey}_0`]),
|
|
4883
|
+
_cntlist.filter((val, j) =>
|
|
4884
|
+
g_keyObj[`pos${targetKey}_0`][j] >= g_keyObj[`div${targetKey}_0`])
|
|
4885
|
+
];
|
|
4886
|
+
|
|
4887
|
+
let cntlistStr = ``;
|
|
4888
|
+
cntlist.filter(array => array.length > 0).forEach(array => {
|
|
4889
|
+
const maxVal = array.reduce((a, b) => Math.max(a, b));
|
|
4890
|
+
const minVal = array.reduce((a, b) => Math.min(a, b));
|
|
4891
|
+
|
|
4892
|
+
cntlistStr += `[ `;
|
|
4893
|
+
array.forEach((val, j) => {
|
|
4894
|
+
if (maxVal !== minVal) {
|
|
4895
|
+
array[j] = (val === minVal ? `<span class="settings_minArrowCnts">${val}</span>` :
|
|
4896
|
+
(val === maxVal ? `<span class="settings_maxArrowCnts common_bold">${val}</span>` : val));
|
|
4897
|
+
}
|
|
4898
|
+
});
|
|
4899
|
+
cntlistStr += array.join(`, `) + ` ]`;
|
|
4900
|
+
});
|
|
4901
|
+
|
|
4902
|
+
return cntlistStr;
|
|
4903
|
+
}
|
|
4904
|
+
|
|
4905
|
+
dataArrowInfo2.innerHTML = `<br>${makeArrowCntsView(g_detailObj.arrowCnt[_scoreId])}<br><br>
|
|
4906
|
+
${makeArrowCntsView(g_detailObj.frzCnt[_scoreId])}<br><br>${push3CntStr}`;
|
|
4903
4907
|
};
|
|
4904
4908
|
|
|
4905
4909
|
/**
|
|
@@ -6722,15 +6726,10 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6722
6726
|
);
|
|
6723
6727
|
|
|
6724
6728
|
// キーボード押下時処理
|
|
6725
|
-
setShortcutEvent(g_currentPage, (kbCode
|
|
6729
|
+
setShortcutEvent(g_currentPage, (kbCode) => {
|
|
6726
6730
|
const keyCdObj = document.getElementById(`keycon${g_currentj}_${g_currentk}`);
|
|
6727
6731
|
let setKey = g_kCdN.findIndex(kCd => kCd === kbCode);
|
|
6728
6732
|
|
|
6729
|
-
// 右シフトキー対応
|
|
6730
|
-
if (setKey === g_kCdObj.unknown && kbKey === `Shift`) {
|
|
6731
|
-
setKey = g_kCdObj.shiftRAltKey;
|
|
6732
|
-
}
|
|
6733
|
-
|
|
6734
6733
|
// 全角切替、BackSpace、Deleteキー、Escキーは割り当て禁止
|
|
6735
6734
|
// また、直前と同じキーを押した場合(BackSpaceを除く)はキー操作を無効にする
|
|
6736
6735
|
const disabledKeys = [240, 242, 243, 244, 91, 29, 28, 27, 259, g_prevKey];
|
|
@@ -8472,13 +8471,6 @@ const getArrowSettings = _ => {
|
|
|
8472
8471
|
for (let j = 0; j < g_workObj.keyCtrl.length; j++) {
|
|
8473
8472
|
for (let k = 0; k < g_workObj.keyCtrl[j].length; k++) {
|
|
8474
8473
|
g_workObj.keyCtrlN[j][k] = g_kCdN[g_workObj.keyCtrl[j][k]];
|
|
8475
|
-
|
|
8476
|
-
// 内部のキーコードにより、KeyboardEvent.codeの値を切り替え
|
|
8477
|
-
if (g_workObj.keyCtrl[j][k] === g_kCdObj.unknown) {
|
|
8478
|
-
g_workObj.keyCtrlN[j][k] = g_kCdNameObj.unknownKey;
|
|
8479
|
-
} else if (g_workObj.keyCtrl[j][k] === g_kCdObj.shiftRAltKey) {
|
|
8480
|
-
g_workObj.keyCtrlN[j][k] = g_kCdNameObj.shiftRKey;
|
|
8481
|
-
}
|
|
8482
8474
|
g_workObj.keyHitFlg[j][k] = false;
|
|
8483
8475
|
}
|
|
8484
8476
|
}
|
|
@@ -9064,12 +9056,11 @@ const mainInit = _ => {
|
|
|
9064
9056
|
*/
|
|
9065
9057
|
const mainKeyDownActFunc = {
|
|
9066
9058
|
|
|
9067
|
-
OFF: (_code
|
|
9068
|
-
const convCode = _code || (_key === `Shift` ? g_kCdNameObj.shiftRKey : g_kCdNameObj.unknownKey);
|
|
9059
|
+
OFF: (_code) => {
|
|
9069
9060
|
const matchKeys = g_workObj.keyCtrlN;
|
|
9070
9061
|
|
|
9071
9062
|
for (let j = 0; j < keyNum; j++) {
|
|
9072
|
-
matchKeys[j].filter((key, k) =>
|
|
9063
|
+
matchKeys[j].filter((key, k) => _code === key && !g_workObj.keyHitFlg[j][k] && !g_judgObj.lockFlgs[j])
|
|
9073
9064
|
.forEach(() => {
|
|
9074
9065
|
g_judgObj.lockFlgs[j] = true;
|
|
9075
9066
|
judgeArrow(j);
|
|
@@ -9078,19 +9069,19 @@ const mainInit = _ => {
|
|
|
9078
9069
|
}
|
|
9079
9070
|
},
|
|
9080
9071
|
|
|
9081
|
-
ON: (
|
|
9072
|
+
ON: (_code) => { },
|
|
9082
9073
|
};
|
|
9083
9074
|
|
|
9084
9075
|
// キー操作イベント
|
|
9085
9076
|
document.onkeydown = evt => {
|
|
9086
9077
|
evt.preventDefault();
|
|
9087
|
-
const setCode = evt
|
|
9078
|
+
const setCode = transCode(evt);
|
|
9088
9079
|
|
|
9089
9080
|
if (evt.repeat && !g_mainRepeatObj.key.includes(setCode)) {
|
|
9090
9081
|
return blockCode(setCode);
|
|
9091
9082
|
}
|
|
9092
|
-
|
|
9093
|
-
mainKeyDownActFunc[g_stateObj.autoAll](setCode
|
|
9083
|
+
g_inputKeyBuffer[setCode] = true;
|
|
9084
|
+
mainKeyDownActFunc[g_stateObj.autoAll](setCode);
|
|
9094
9085
|
|
|
9095
9086
|
// 曲中リトライ、タイトルバック
|
|
9096
9087
|
if (setCode === g_kCdN[g_headerObj.keyRetry]) {
|
|
@@ -9151,7 +9142,7 @@ const mainInit = _ => {
|
|
|
9151
9142
|
};
|
|
9152
9143
|
|
|
9153
9144
|
document.onkeyup = evt => {
|
|
9154
|
-
|
|
9145
|
+
g_inputKeyBuffer[transCode(evt)] = false;
|
|
9155
9146
|
mainKeyUpActFunc[g_stateObj.autoAll]();
|
|
9156
9147
|
};
|
|
9157
9148
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2023/
|
|
8
|
+
* Revised : 2023/11/05 (v34.5.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -176,9 +176,6 @@ const g_windowObj = {
|
|
|
176
176
|
divRoot: { margin: `auto`, letterSpacing: `normal` },
|
|
177
177
|
divBack: { background: `linear-gradient(#000000, #222222)` },
|
|
178
178
|
|
|
179
|
-
scoreDetail: { x: 20, y: 85, w: 420, h: 236, visibility: `hidden` },
|
|
180
|
-
detailObj: { w: 420, h: 230, visibility: `hidden` },
|
|
181
|
-
|
|
182
179
|
colorPickSprite: { x: 0, y: 90, w: 50, h: 280 },
|
|
183
180
|
};
|
|
184
181
|
|
|
@@ -191,6 +188,8 @@ const updateWindowSiz = _ => {
|
|
|
191
188
|
difList: { x: 165, y: 60, w: 280, h: 261 + g_sHeight - 500, overflow: `auto` },
|
|
192
189
|
difCover: { x: 25, y: 60, w: 140, h: 261 + g_sHeight - 500, overflow: `auto`, opacity: 0.95 },
|
|
193
190
|
displaySprite: { x: 25, y: 30, w: (g_sWidth - 450) / 2, h: g_limitObj.setLblHeight * 5 },
|
|
191
|
+
scoreDetail: { x: 20, y: 85, w: (g_sWidth - 500) / 2 + 420, h: 236, visibility: `hidden` },
|
|
192
|
+
detailObj: { w: (g_sWidth - 500) / 2 + 420, h: 230, visibility: `hidden` },
|
|
194
193
|
keyconSprite: { y: 88, h: g_sHeight, overflow: `auto` },
|
|
195
194
|
loader: { y: g_sHeight - 10, h: 10, backgroundColor: `#333333` },
|
|
196
195
|
playDataWindow: { x: g_sWidth / 2 - 225, y: 70, w: 450, h: 110 },
|
|
@@ -293,7 +292,7 @@ const updateWindowSiz = _ => {
|
|
|
293
292
|
x: 130, y: 70, w: 200, h: 90,
|
|
294
293
|
},
|
|
295
294
|
dataArrowInfo2: {
|
|
296
|
-
x: 140, y: 70, w: 275, h: 150, overflow: `auto`,
|
|
295
|
+
x: 140, y: 70, w: (g_sWidth - 500) / 2 + 275, h: 150, overflow: `auto`,
|
|
297
296
|
},
|
|
298
297
|
lnkDifInfo: {
|
|
299
298
|
w: g_limitObj.difCoverWidth, borderStyle: `solid`,
|