danoniplus 44.5.26 → 44.5.28
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 +37 -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 44.5.
|
|
12
|
-
const g_revisedDate = `2026/
|
|
11
|
+
const g_version = `Ver 44.5.28`;
|
|
12
|
+
const g_revisedDate = `2026/10/07`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -619,7 +619,7 @@ const formatObject = (_obj, _indent = 0, { colorFmt = true, rootKey = `` } = {})
|
|
|
619
619
|
if (_list.findIndex(val => val === rootKey) >= 0) {
|
|
620
620
|
let result = `[`;
|
|
621
621
|
for (let j = 0; j < _obj.length; j += _numOfSet) {
|
|
622
|
-
result += `<br>${nestedIndent}${_obj[j]}: ${_obj[j + 1]}`;
|
|
622
|
+
result += `<br>${nestedIndent}${escapeHtml(_obj[j])}: ${escapeHtml(_obj[j + 1])}`;
|
|
623
623
|
for (let k = 0; k < _numOfSet - 2; k++) {
|
|
624
624
|
const idx = j + k + 2;
|
|
625
625
|
if (idx < _obj.length) {
|
|
@@ -682,7 +682,8 @@ const formatObject = (_obj, _indent = 0, { colorFmt = true, rootKey = `` } = {})
|
|
|
682
682
|
})
|
|
683
683
|
: Object.entries(_obj).map(([key, value]) => {
|
|
684
684
|
const formattedValue = getNextObject(value, rootKey === `` ? key : rootKey);
|
|
685
|
-
|
|
685
|
+
const formattedKey = colorFmt ? escapeHtml(key) : key;
|
|
686
|
+
return `<br>${nestedIndent}"${formattedKey}": ${formattedValue}`;
|
|
686
687
|
})).filter(val => !hasVal(val) || val !== `----`);
|
|
687
688
|
|
|
688
689
|
// 配列なら[]で囲む、オブジェクトなら{}で囲む
|
|
@@ -5237,6 +5238,9 @@ const titleInit = (_initFlg = false) => {
|
|
|
5237
5238
|
// 設定画面位置初期化
|
|
5238
5239
|
g_settings.settingWindowNum = 0;
|
|
5239
5240
|
|
|
5241
|
+
// リトライフラグ初期化
|
|
5242
|
+
g_stateObj.retryFlg = false;
|
|
5243
|
+
|
|
5240
5244
|
// タイトルアニメーション用フレーム初期化、ループカウンター設定
|
|
5241
5245
|
g_animationData.forEach(sprite => {
|
|
5242
5246
|
g_scoreObj[`${sprite}TitleFrameNum`] = 0;
|
|
@@ -6021,7 +6025,7 @@ const changeMSelect = (_num, _initFlg = false) => {
|
|
|
6021
6025
|
if (j === 0) {
|
|
6022
6026
|
} else {
|
|
6023
6027
|
document.getElementById(`btnMusicSelect${j}`).style.fontSize =
|
|
6024
|
-
getFontSize2(g_headerObj.musicTitles[idx].slice(0, limitedMLength), g_btnWidth(1 / 2));
|
|
6028
|
+
wUnit(getFontSize2(g_headerObj.musicTitles[idx].slice(0, limitedMLength), g_btnWidth(1 / 2)));
|
|
6025
6029
|
document.getElementById(`btnMusicSelect${j}`).innerHTML =
|
|
6026
6030
|
`${g_headerObj.musicTitles[idx].slice(0, limitedMLength)}${g_headerObj.musicTitles[idx].length > limitedMLength ? '...' : ''}<br>` +
|
|
6027
6031
|
`<span style="font-size:0.7em;line-height:9px"> / ${g_headerObj.artistNames[idx]}</span>`;
|
|
@@ -10120,7 +10124,7 @@ const loadingScoreInit = async () => {
|
|
|
10120
10124
|
pushArrows(g_scoreObj, speedOnFrame, arrivalFrame);
|
|
10121
10125
|
|
|
10122
10126
|
// メインに入る前の最終初期化処理
|
|
10123
|
-
getArrowSettings();
|
|
10127
|
+
getArrowSettings(g_stateObj.retryFlg);
|
|
10124
10128
|
|
|
10125
10129
|
// ユーザカスタムイベント
|
|
10126
10130
|
g_customJsObj.loading.forEach(func => func());
|
|
@@ -11762,16 +11766,28 @@ const invertSpecificTransforms = (cssString, exceptList = []) => {
|
|
|
11762
11766
|
});
|
|
11763
11767
|
}
|
|
11764
11768
|
|
|
11769
|
+
// リトライ時にプレイ用キー割り当てを復元するための退避 (初回保存でメモリが既定値へ戻るため)
|
|
11770
|
+
let g_keyCtrlBackup = {};
|
|
11771
|
+
|
|
11765
11772
|
/**
|
|
11766
11773
|
* メイン画面前の初期化処理
|
|
11767
11774
|
*/
|
|
11768
|
-
const getArrowSettings = () => {
|
|
11775
|
+
const getArrowSettings = (_retryFlg = false) => {
|
|
11769
11776
|
|
|
11770
11777
|
g_attrObj = {};
|
|
11771
11778
|
const tkObj = getKeyInfo();
|
|
11772
11779
|
const [keyCtrlPtn, keyNum, posMax, divideCnt] =
|
|
11773
11780
|
[tkObj.keyCtrlPtn, tkObj.keyNum, tkObj.posMax, tkObj.divideCnt];
|
|
11774
11781
|
|
|
11782
|
+
// 新しいプレイ開始時は前回プレイの退避を破棄 (リトライ時は保持して復元に使う)
|
|
11783
|
+
if (!_retryFlg) {
|
|
11784
|
+
g_keyCtrlBackup = {};
|
|
11785
|
+
}
|
|
11786
|
+
// リトライ時: 退避済みのキー割り当てをメモリへ戻してから以降の処理を行う
|
|
11787
|
+
const restoredFlg = _retryFlg && g_keyCtrlBackup[keyCtrlPtn] !== undefined;
|
|
11788
|
+
if (restoredFlg) {
|
|
11789
|
+
g_keyObj[`keyCtrl${keyCtrlPtn}`] = structuredClone(g_keyCtrlBackup[keyCtrlPtn]);
|
|
11790
|
+
}
|
|
11775
11791
|
g_keyCopyLists.simpleDef.forEach(header => updateKeyInfo(header, keyCtrlPtn));
|
|
11776
11792
|
g_headerObj.tuning = g_headerObj.creatorNames[g_stateObj.scoreId];
|
|
11777
11793
|
|
|
@@ -12122,7 +12138,13 @@ const getArrowSettings = () => {
|
|
|
12122
12138
|
}
|
|
12123
12139
|
|
|
12124
12140
|
// リバース、キーコンフィグなどをローカルストレージへ保存(Data Save: ON かつ別キーモードで無い場合)
|
|
12125
|
-
if (
|
|
12141
|
+
if (_retryFlg) {
|
|
12142
|
+
// リトライ時は初回に保存済みのため再保存しない (prevKey等も触らない)
|
|
12143
|
+
// 復元したキー割り当ては、初回保存時と同様にメモリ上を既定値へ戻す
|
|
12144
|
+
if (restoredFlg) {
|
|
12145
|
+
g_keyObj[`keyCtrl${keyCtrlPtn}`] = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}d`]);
|
|
12146
|
+
}
|
|
12147
|
+
} else if (g_stateObj.dataSaveFlg && !hasVal(g_keyObj[`transKey${keyCtrlPtn}`])) {
|
|
12126
12148
|
|
|
12127
12149
|
// 次回キーコンフィグ画面へ戻ったとき、保存済みキーコンフィグ設定が表示されるようにする
|
|
12128
12150
|
g_keyObj.prevKey = `Dummy`;
|
|
@@ -12144,6 +12166,7 @@ const getArrowSettings = () => {
|
|
|
12144
12166
|
storageObj[`keyCtrl${addKey}`] = setKeyCtrl(g_localKeyStorage, keyNum, keyCtrlPtn);
|
|
12145
12167
|
if (g_keyObj.currentPtn !== -1) {
|
|
12146
12168
|
storageObj[`keyCtrlPtn${addKey}`] = g_keyObj.currentPtn;
|
|
12169
|
+
g_keyCtrlBackup[keyCtrlPtn] = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}`]);
|
|
12147
12170
|
g_keyObj[`keyCtrl${keyCtrlPtn}`] = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}d`]);
|
|
12148
12171
|
}
|
|
12149
12172
|
|
|
@@ -12675,6 +12698,7 @@ const mainInit = () => {
|
|
|
12675
12698
|
} else {
|
|
12676
12699
|
// その他の環境では単にRetryに対応するキーのみで適用
|
|
12677
12700
|
clearWindow();
|
|
12701
|
+
g_stateObj.retryFlg = true;
|
|
12678
12702
|
musicAfterLoaded();
|
|
12679
12703
|
}
|
|
12680
12704
|
|
|
@@ -15184,7 +15208,10 @@ const resultInit = () => {
|
|
|
15184
15208
|
makeLinkButton();
|
|
15185
15209
|
multiAppend(divRoot,
|
|
15186
15210
|
// リトライ
|
|
15187
|
-
resetCommonBtn(`btnRetry`, g_lblNameObj.b_retry, g_lblPosObj.btnRsRetry,
|
|
15211
|
+
resetCommonBtn(`btnRetry`, g_lblNameObj.b_retry, g_lblPosObj.btnRsRetry, () => {
|
|
15212
|
+
g_stateObj.retryFlg = true;
|
|
15213
|
+
loadMusic();
|
|
15214
|
+
}, g_cssObj.button_Reset),
|
|
15188
15215
|
|
|
15189
15216
|
createCss2Button(`btnCopyImage`, g_emojiObj.camera, () => true,
|
|
15190
15217
|
Object.assign(g_lblPosObj.btnRsCopyImage, {
|