danoniplus 51.2.0 → 51.2.2
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 +6 -5
- package/js/lib/dataLoader.js +24 -5
- package/js/lib/mainWindow.js +2 -2
- 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/10/
|
|
7
|
+
* Revised : 2026/10/07
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 51.2.
|
|
12
|
-
const g_revisedDate = `2026/10/
|
|
11
|
+
const g_version = `Ver 51.2.2`;
|
|
12
|
+
const g_revisedDate = `2026/10/07`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -645,7 +645,7 @@ const formatObject = (_obj, _indent = 0, { colorFmt = true, rootKey = `` } = {})
|
|
|
645
645
|
if (_list.findIndex(val => val === rootKey) >= 0) {
|
|
646
646
|
let result = `[`;
|
|
647
647
|
for (let j = 0; j < _obj.length; j += _numOfSet) {
|
|
648
|
-
result += `<br>${nestedIndent}${_obj[j]}: ${_obj[j + 1]}`;
|
|
648
|
+
result += `<br>${nestedIndent}${escapeHtml(_obj[j])}: ${escapeHtml(_obj[j + 1])}`;
|
|
649
649
|
for (let k = 0; k < _numOfSet - 2; k++) {
|
|
650
650
|
const idx = j + k + 2;
|
|
651
651
|
if (idx < _obj.length) {
|
|
@@ -708,7 +708,8 @@ const formatObject = (_obj, _indent = 0, { colorFmt = true, rootKey = `` } = {})
|
|
|
708
708
|
})
|
|
709
709
|
: Object.entries(_obj).map(([key, value]) => {
|
|
710
710
|
const formattedValue = getNextObject(value, rootKey === `` ? key : rootKey);
|
|
711
|
-
|
|
711
|
+
const formattedKey = colorFmt ? escapeHtml(key) : key;
|
|
712
|
+
return `<br>${nestedIndent}"${formattedKey}": ${formattedValue}`;
|
|
712
713
|
})).filter(val => !hasVal(val) || val !== `----`);
|
|
713
714
|
|
|
714
715
|
// 配列なら[]で囲む、オブジェクトなら{}で囲む
|
package/js/lib/dataLoader.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2026/09/13
|
|
8
|
-
* Revised : 2026/
|
|
8
|
+
* Revised : 2026/10/07 (v51.2.2)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -307,12 +307,15 @@ const musicAfterLoaded = () => new Promise((resolve, reject) => {
|
|
|
307
307
|
}
|
|
308
308
|
});
|
|
309
309
|
|
|
310
|
+
// リトライ時にプレイ用キー割り当てを復元するための退避 (初回保存でメモリが既定値へ戻るため)
|
|
311
|
+
let g_keyCtrlBackup = {};
|
|
312
|
+
|
|
310
313
|
/**
|
|
311
314
|
* 譜面データの変換処理
|
|
312
315
|
* - 音源データの状態に依存しない部分のみを担う(g_audio非参照)
|
|
313
316
|
* - loadMusic経由(並行フロー)、executeRetry経由(曲中リトライ)の両方から呼ばれる
|
|
314
317
|
*/
|
|
315
|
-
const prepareScoreData = () => {
|
|
318
|
+
const prepareScoreData = (_retryFlg = false) => {
|
|
316
319
|
|
|
317
320
|
const tkObj = getKeyInfo();
|
|
318
321
|
const [keyCtrlPtn, keyNum] = [tkObj.keyCtrlPtn, tkObj.keyNum];
|
|
@@ -458,7 +461,7 @@ const prepareScoreData = () => {
|
|
|
458
461
|
pushArrows(g_scoreObj, speedOnFrame, arrivalFrame);
|
|
459
462
|
|
|
460
463
|
// メインに入る前の最終初期化処理
|
|
461
|
-
getArrowSettings();
|
|
464
|
+
getArrowSettings(_retryFlg);
|
|
462
465
|
|
|
463
466
|
// ユーザカスタムイベント
|
|
464
467
|
safeExecuteCustomHooks(`g_customJsObj.loading`, g_customJsObj.loading);
|
|
@@ -2141,13 +2144,22 @@ const invertSpecificTransforms = (cssString, exceptList = []) => {
|
|
|
2141
2144
|
/**
|
|
2142
2145
|
* メイン画面前の初期化処理
|
|
2143
2146
|
*/
|
|
2144
|
-
const getArrowSettings = () => {
|
|
2147
|
+
const getArrowSettings = (_retryFlg = false) => {
|
|
2145
2148
|
|
|
2146
2149
|
g_attrObj = {};
|
|
2147
2150
|
const tkObj = getKeyInfo();
|
|
2148
2151
|
const [keyCtrlPtn, keyNum, posMax, divideCnt] =
|
|
2149
2152
|
[tkObj.keyCtrlPtn, tkObj.keyNum, tkObj.posMax, tkObj.divideCnt];
|
|
2150
2153
|
|
|
2154
|
+
// 新しいプレイ開始時は前回プレイの退避を破棄 (リトライ時は保持して復元に使う)
|
|
2155
|
+
if (!_retryFlg) {
|
|
2156
|
+
g_keyCtrlBackup = {};
|
|
2157
|
+
}
|
|
2158
|
+
// リトライ時: 退避済みのキー割り当てをメモリへ戻してから以降の処理を行う
|
|
2159
|
+
const restoredFlg = _retryFlg && g_keyCtrlBackup[keyCtrlPtn] !== undefined;
|
|
2160
|
+
if (restoredFlg) {
|
|
2161
|
+
g_keyObj[`keyCtrl${keyCtrlPtn}`] = structuredClone(g_keyCtrlBackup[keyCtrlPtn]);
|
|
2162
|
+
}
|
|
2151
2163
|
g_keyCopyLists.simpleDef.forEach(header => updateKeyInfo(header, keyCtrlPtn));
|
|
2152
2164
|
g_headerObj.tuning = g_headerObj.creatorNames[g_stateObj.scoreId];
|
|
2153
2165
|
|
|
@@ -2540,7 +2552,13 @@ const getArrowSettings = () => {
|
|
|
2540
2552
|
}
|
|
2541
2553
|
|
|
2542
2554
|
// リバース、キーコンフィグなどをローカルストレージへ保存(Data Save: ON かつ別キーモードで無い場合)
|
|
2543
|
-
if (
|
|
2555
|
+
if (_retryFlg) {
|
|
2556
|
+
// リトライ時は初回に保存済みのため再保存しない (prevKey等も触らない)
|
|
2557
|
+
// 復元したキー割り当ては、初回保存時と同様にメモリ上を既定値へ戻す
|
|
2558
|
+
if (restoredFlg) {
|
|
2559
|
+
g_keyObj[`keyCtrl${keyCtrlPtn}`] = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}d`]);
|
|
2560
|
+
}
|
|
2561
|
+
} else if (g_stateObj.dataSaveFlg && !hasVal(g_keyObj[`transKey${keyCtrlPtn}`])) {
|
|
2544
2562
|
|
|
2545
2563
|
// 次回キーコンフィグ画面へ戻ったとき、保存済みキーコンフィグ設定が表示されるようにする
|
|
2546
2564
|
g_keyObj.prevKey = `Dummy`;
|
|
@@ -2562,6 +2580,7 @@ const getArrowSettings = () => {
|
|
|
2562
2580
|
storageObj[`keyCtrl${addKey}`] = setKeyCtrl(g_localKeyStorage, keyNum, keyCtrlPtn);
|
|
2563
2581
|
if (g_keyObj.currentPtn !== -1) {
|
|
2564
2582
|
storageObj[`keyCtrlPtn${addKey}`] = g_keyObj.currentPtn;
|
|
2583
|
+
g_keyCtrlBackup[keyCtrlPtn] = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}`]);
|
|
2565
2584
|
g_keyObj[`keyCtrl${keyCtrlPtn}`] = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}d`]);
|
|
2566
2585
|
}
|
|
2567
2586
|
|
package/js/lib/mainWindow.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2026/09/13
|
|
8
|
-
* Revised : 2026/10/
|
|
8
|
+
* Revised : 2026/10/07 (v51.2.2)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -2219,7 +2219,7 @@ const executeRetry = async (_logLabel = `Retry`) => {
|
|
|
2219
2219
|
clearWindow(`Main`);
|
|
2220
2220
|
await musicAfterLoaded();
|
|
2221
2221
|
await loadChartFile();
|
|
2222
|
-
prepareScoreData();
|
|
2222
|
+
prepareScoreData(true);
|
|
2223
2223
|
mainInit();
|
|
2224
2224
|
} catch (e) {
|
|
2225
2225
|
console.warn(`${_logLabel} audio load error: ${e}`);
|