danoniplus 50.5.4 → 50.5.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 CHANGED
@@ -4,12 +4,12 @@
4
4
  *
5
5
  * Source by tickle
6
6
  * Created : 2018/10/08
7
- * Revised : 2026/09/25
7
+ * Revised : 2026/10/07
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 50.5.4`;
12
- const g_revisedDate = `2026/09/25`;
11
+ const g_version = `Ver 50.5.6`;
12
+ const g_revisedDate = `2026/10/07`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -648,7 +648,7 @@ const formatObject = (_obj, _indent = 0, { colorFmt = true, rootKey = `` } = {})
648
648
  if (_list.findIndex(val => val === rootKey) >= 0) {
649
649
  let result = `[`;
650
650
  for (let j = 0; j < _obj.length; j += _numOfSet) {
651
- result += `<br>${nestedIndent}${_obj[j]}: ${_obj[j + 1]}`;
651
+ result += `<br>${nestedIndent}${escapeHtml(_obj[j])}: ${escapeHtml(_obj[j + 1])}`;
652
652
  for (let k = 0; k < _numOfSet - 2; k++) {
653
653
  const idx = j + k + 2;
654
654
  if (idx < _obj.length) {
@@ -711,7 +711,8 @@ const formatObject = (_obj, _indent = 0, { colorFmt = true, rootKey = `` } = {})
711
711
  })
712
712
  : Object.entries(_obj).map(([key, value]) => {
713
713
  const formattedValue = getNextObject(value, rootKey === `` ? key : rootKey);
714
- return `<br>${nestedIndent}"${key}": ${formattedValue}`;
714
+ const formattedKey = colorFmt ? escapeHtml(key) : key;
715
+ return `<br>${nestedIndent}"${formattedKey}": ${formattedValue}`;
715
716
  })).filter(val => !hasVal(val) || val !== `----`);
716
717
 
717
718
  // 配列なら[]で囲む、オブジェクトなら{}で囲む
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2026/09/13
8
- * Revised : 2026/09/23 (v50.5.3)
8
+ * Revised : 2026/10/07 (v50.5.6)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -306,12 +306,15 @@ const musicAfterLoaded = () => new Promise((resolve, reject) => {
306
306
  }
307
307
  });
308
308
 
309
+ // リトライ時にプレイ用キー割り当てを復元するための退避 (初回保存でメモリが既定値へ戻るため)
310
+ let g_keyCtrlBackup = {};
311
+
309
312
  /**
310
313
  * 譜面データの変換処理
311
314
  * - 音源データの状態に依存しない部分のみを担う(g_audio非参照)
312
315
  * - loadMusic経由(並行フロー)、executeRetry経由(曲中リトライ)の両方から呼ばれる
313
316
  */
314
- const prepareScoreData = () => {
317
+ const prepareScoreData = (_retryFlg = false) => {
315
318
 
316
319
  const tkObj = getKeyInfo();
317
320
  const [keyCtrlPtn, keyNum] = [tkObj.keyCtrlPtn, tkObj.keyNum];
@@ -457,7 +460,7 @@ const prepareScoreData = () => {
457
460
  pushArrows(g_scoreObj, speedOnFrame, arrivalFrame);
458
461
 
459
462
  // メインに入る前の最終初期化処理
460
- getArrowSettings();
463
+ getArrowSettings(_retryFlg);
461
464
 
462
465
  // ユーザカスタムイベント
463
466
  safeExecuteCustomHooks(`g_customJsObj.loading`, g_customJsObj.loading);
@@ -2137,13 +2140,22 @@ const invertSpecificTransforms = (cssString, exceptList = []) => {
2137
2140
  /**
2138
2141
  * メイン画面前の初期化処理
2139
2142
  */
2140
- const getArrowSettings = () => {
2143
+ const getArrowSettings = (_retryFlg = false) => {
2141
2144
 
2142
2145
  g_attrObj = {};
2143
2146
  const tkObj = getKeyInfo();
2144
2147
  const [keyCtrlPtn, keyNum, posMax, divideCnt] =
2145
2148
  [tkObj.keyCtrlPtn, tkObj.keyNum, tkObj.posMax, tkObj.divideCnt];
2146
2149
 
2150
+ // 新しいプレイ開始時は前回プレイの退避を破棄 (リトライ時は保持して復元に使う)
2151
+ if (!_retryFlg) {
2152
+ g_keyCtrlBackup = {};
2153
+ }
2154
+ // リトライ時: 退避済みのキー割り当てをメモリへ戻してから以降の処理を行う
2155
+ const restoredFlg = _retryFlg && g_keyCtrlBackup[keyCtrlPtn] !== undefined;
2156
+ if (restoredFlg) {
2157
+ g_keyObj[`keyCtrl${keyCtrlPtn}`] = structuredClone(g_keyCtrlBackup[keyCtrlPtn]);
2158
+ }
2147
2159
  g_keyCopyLists.simpleDef.forEach(header => updateKeyInfo(header, keyCtrlPtn));
2148
2160
  g_headerObj.tuning = g_headerObj.creatorNames[g_stateObj.scoreId];
2149
2161
 
@@ -2532,7 +2544,13 @@ const getArrowSettings = () => {
2532
2544
  }
2533
2545
 
2534
2546
  // リバース、キーコンフィグなどをローカルストレージへ保存(Data Save: ON かつ別キーモードで無い場合)
2535
- if (g_stateObj.dataSaveFlg && !hasVal(g_keyObj[`transKey${keyCtrlPtn}`])) {
2547
+ if (_retryFlg) {
2548
+ // リトライ時は初回に保存済みのため再保存しない (prevKey等も触らない)
2549
+ // 復元したキー割り当ては、初回保存時と同様にメモリ上を既定値へ戻す
2550
+ if (restoredFlg) {
2551
+ g_keyObj[`keyCtrl${keyCtrlPtn}`] = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}d`]);
2552
+ }
2553
+ } else if (g_stateObj.dataSaveFlg && !hasVal(g_keyObj[`transKey${keyCtrlPtn}`])) {
2536
2554
 
2537
2555
  // 次回キーコンフィグ画面へ戻ったとき、保存済みキーコンフィグ設定が表示されるようにする
2538
2556
  g_keyObj.prevKey = `Dummy`;
@@ -2554,6 +2572,7 @@ const getArrowSettings = () => {
2554
2572
  storageObj[`keyCtrl${addKey}`] = setKeyCtrl(g_localKeyStorage, keyNum, keyCtrlPtn);
2555
2573
  if (g_keyObj.currentPtn !== -1) {
2556
2574
  storageObj[`keyCtrlPtn${addKey}`] = g_keyObj.currentPtn;
2575
+ g_keyCtrlBackup[keyCtrlPtn] = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}`]);
2557
2576
  g_keyObj[`keyCtrl${keyCtrlPtn}`] = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}d`]);
2558
2577
  }
2559
2578
 
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2026/09/13
8
- * Revised :
8
+ * Revised : 2026/10/07 (v50.5.6)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -2012,7 +2012,7 @@ const executeRetry = async (_logLabel = `Retry`) => {
2012
2012
  clearWindow(`Main`);
2013
2013
  await musicAfterLoaded();
2014
2014
  await loadChartFile();
2015
- prepareScoreData();
2015
+ prepareScoreData(true);
2016
2016
  mainInit();
2017
2017
  } catch (e) {
2018
2018
  console.warn(`${_logLabel} audio load error: ${e}`);
package/js/lib/title.js CHANGED
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2026/09/13
8
- * Revised :
8
+ * Revised : 2026/09/29 (v50.5.5)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -825,7 +825,7 @@ const changeMSelect = (_num, _initFlg = false) => {
825
825
  if (j === 0) {
826
826
  } else {
827
827
  document.getElementById(`btnMusicSelect${j}`).style.fontSize =
828
- getFontSize2(g_headerObj.musicTitles[idx].slice(0, limitedMLength), g_btnWidth(1 / 2));
828
+ wUnit(getFontSize2(g_headerObj.musicTitles[idx].slice(0, limitedMLength), g_btnWidth(1 / 2)));
829
829
  document.getElementById(`btnMusicSelect${j}`).innerHTML =
830
830
  `${g_headerObj.musicTitles[idx].slice(0, limitedMLength)}${g_headerObj.musicTitles[idx].length > limitedMLength ? '...' : ''}<br>` +
831
831
  `<span style="font-size:0.7em;line-height:9px"> / ${g_headerObj.artistNames[idx]}</span>`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "50.5.4",
3
+ "version": "50.5.6",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "./js/danoni_main.js",
6
6
  "jsdelivr": "./js/danoni_main.js",