danoniplus 49.6.5 → 49.6.6
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 +30 -10
- 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 : 2026/
|
|
7
|
+
* Revised : 2026/10/07
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 49.6.
|
|
12
|
-
const g_revisedDate = `2026/
|
|
11
|
+
const g_version = `Ver 49.6.6`;
|
|
12
|
+
const g_revisedDate = `2026/10/07`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -629,7 +629,7 @@ const formatObject = (_obj, _indent = 0, { colorFmt = true, rootKey = `` } = {})
|
|
|
629
629
|
if (_list.findIndex(val => val === rootKey) >= 0) {
|
|
630
630
|
let result = `[`;
|
|
631
631
|
for (let j = 0; j < _obj.length; j += _numOfSet) {
|
|
632
|
-
result += `<br>${nestedIndent}${_obj[j]}: ${_obj[j + 1]}`;
|
|
632
|
+
result += `<br>${nestedIndent}${escapeHtml(_obj[j])}: ${escapeHtml(_obj[j + 1])}`;
|
|
633
633
|
for (let k = 0; k < _numOfSet - 2; k++) {
|
|
634
634
|
const idx = j + k + 2;
|
|
635
635
|
if (idx < _obj.length) {
|
|
@@ -692,7 +692,8 @@ const formatObject = (_obj, _indent = 0, { colorFmt = true, rootKey = `` } = {})
|
|
|
692
692
|
})
|
|
693
693
|
: Object.entries(_obj).map(([key, value]) => {
|
|
694
694
|
const formattedValue = getNextObject(value, rootKey === `` ? key : rootKey);
|
|
695
|
-
|
|
695
|
+
const formattedKey = colorFmt ? escapeHtml(key) : key;
|
|
696
|
+
return `<br>${nestedIndent}"${formattedKey}": ${formattedValue}`;
|
|
696
697
|
})).filter(val => !hasVal(val) || val !== `----`);
|
|
697
698
|
|
|
698
699
|
// 配列なら[]で囲む、オブジェクトなら{}で囲む
|
|
@@ -12544,12 +12545,15 @@ const musicAfterLoaded = () => new Promise((resolve, reject) => {
|
|
|
12544
12545
|
}
|
|
12545
12546
|
});
|
|
12546
12547
|
|
|
12548
|
+
// リトライ時にプレイ用キー割り当てを復元するための退避 (初回保存でメモリが既定値へ戻るため)
|
|
12549
|
+
let g_keyCtrlBackup = {};
|
|
12550
|
+
|
|
12547
12551
|
/**
|
|
12548
12552
|
* 譜面データの変換処理
|
|
12549
12553
|
* - 音源データの状態に依存しない部分のみを担う(g_audio非参照)
|
|
12550
12554
|
* - loadMusic経由(並行フロー)、executeRetry経由(曲中リトライ)の両方から呼ばれる
|
|
12551
12555
|
*/
|
|
12552
|
-
const prepareScoreData = () => {
|
|
12556
|
+
const prepareScoreData = (_retryFlg = false) => {
|
|
12553
12557
|
|
|
12554
12558
|
const tkObj = getKeyInfo();
|
|
12555
12559
|
const [keyCtrlPtn, keyNum] = [tkObj.keyCtrlPtn, tkObj.keyNum];
|
|
@@ -12694,7 +12698,7 @@ const prepareScoreData = () => {
|
|
|
12694
12698
|
pushArrows(g_scoreObj, speedOnFrame, arrivalFrame);
|
|
12695
12699
|
|
|
12696
12700
|
// メインに入る前の最終初期化処理
|
|
12697
|
-
getArrowSettings();
|
|
12701
|
+
getArrowSettings(_retryFlg);
|
|
12698
12702
|
|
|
12699
12703
|
// ユーザカスタムイベント
|
|
12700
12704
|
safeExecuteCustomHooks(`g_customJsObj.loading`, g_customJsObj.loading);
|
|
@@ -14391,13 +14395,22 @@ const invertSpecificTransforms = (cssString, exceptList = []) => {
|
|
|
14391
14395
|
/**
|
|
14392
14396
|
* メイン画面前の初期化処理
|
|
14393
14397
|
*/
|
|
14394
|
-
const getArrowSettings = () => {
|
|
14398
|
+
const getArrowSettings = (_retryFlg = false) => {
|
|
14395
14399
|
|
|
14396
14400
|
g_attrObj = {};
|
|
14397
14401
|
const tkObj = getKeyInfo();
|
|
14398
14402
|
const [keyCtrlPtn, keyNum, posMax, divideCnt] =
|
|
14399
14403
|
[tkObj.keyCtrlPtn, tkObj.keyNum, tkObj.posMax, tkObj.divideCnt];
|
|
14400
14404
|
|
|
14405
|
+
// 新しいプレイ開始時は前回プレイの退避を破棄 (リトライ時は保持して復元に使う)
|
|
14406
|
+
if (!_retryFlg) {
|
|
14407
|
+
g_keyCtrlBackup = {};
|
|
14408
|
+
}
|
|
14409
|
+
// リトライ時: 退避済みのキー割り当てをメモリへ戻してから以降の処理を行う
|
|
14410
|
+
const restoredFlg = _retryFlg && g_keyCtrlBackup[keyCtrlPtn] !== undefined;
|
|
14411
|
+
if (restoredFlg) {
|
|
14412
|
+
g_keyObj[`keyCtrl${keyCtrlPtn}`] = structuredClone(g_keyCtrlBackup[keyCtrlPtn]);
|
|
14413
|
+
}
|
|
14401
14414
|
g_keyCopyLists.simpleDef.forEach(header => updateKeyInfo(header, keyCtrlPtn));
|
|
14402
14415
|
g_headerObj.tuning = g_headerObj.creatorNames[g_stateObj.scoreId];
|
|
14403
14416
|
|
|
@@ -14787,7 +14800,13 @@ const getArrowSettings = () => {
|
|
|
14787
14800
|
}
|
|
14788
14801
|
|
|
14789
14802
|
// リバース、キーコンフィグなどをローカルストレージへ保存(Data Save: ON かつ別キーモードで無い場合)
|
|
14790
|
-
if (
|
|
14803
|
+
if (_retryFlg) {
|
|
14804
|
+
// リトライ時は初回に保存済みのため再保存しない (prevKey等も触らない)
|
|
14805
|
+
// 復元したキー割り当ては、初回保存時と同様にメモリ上を既定値へ戻す
|
|
14806
|
+
if (restoredFlg) {
|
|
14807
|
+
g_keyObj[`keyCtrl${keyCtrlPtn}`] = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}d`]);
|
|
14808
|
+
}
|
|
14809
|
+
} else if (g_stateObj.dataSaveFlg && !hasVal(g_keyObj[`transKey${keyCtrlPtn}`])) {
|
|
14791
14810
|
|
|
14792
14811
|
// 次回キーコンフィグ画面へ戻ったとき、保存済みキーコンフィグ設定が表示されるようにする
|
|
14793
14812
|
g_keyObj.prevKey = `Dummy`;
|
|
@@ -14809,6 +14828,7 @@ const getArrowSettings = () => {
|
|
|
14809
14828
|
storageObj[`keyCtrl${addKey}`] = setKeyCtrl(g_localKeyStorage, keyNum, keyCtrlPtn);
|
|
14810
14829
|
if (g_keyObj.currentPtn !== -1) {
|
|
14811
14830
|
storageObj[`keyCtrlPtn${addKey}`] = g_keyObj.currentPtn;
|
|
14831
|
+
g_keyCtrlBackup[keyCtrlPtn] = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}`]);
|
|
14812
14832
|
g_keyObj[`keyCtrl${keyCtrlPtn}`] = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}d`]);
|
|
14813
14833
|
}
|
|
14814
14834
|
|
|
@@ -16680,7 +16700,7 @@ const executeRetry = async (_logLabel = `Retry`) => {
|
|
|
16680
16700
|
clearWindow(`Main`);
|
|
16681
16701
|
await musicAfterLoaded();
|
|
16682
16702
|
await loadChartFile();
|
|
16683
|
-
prepareScoreData();
|
|
16703
|
+
prepareScoreData(true);
|
|
16684
16704
|
mainInit();
|
|
16685
16705
|
} catch (e) {
|
|
16686
16706
|
console.warn(`${_logLabel} audio load error: ${e}`);
|