danoniplus 41.2.1 → 41.3.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/js/danoni_main.js +54 -44
- 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 : 2025/05/
|
|
7
|
+
* Revised : 2025/05/15
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 41.
|
|
12
|
-
const g_revisedDate = `2025/05/
|
|
11
|
+
const g_version = `Ver 41.3.1`;
|
|
12
|
+
const g_revisedDate = `2025/05/15`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -2824,6 +2824,11 @@ const loadLocalStorage = (_musicId = ``) => {
|
|
|
2824
2824
|
if (g_langStorage.safeMode === undefined) {
|
|
2825
2825
|
g_langStorage.safeMode = C_FLG_OFF;
|
|
2826
2826
|
}
|
|
2827
|
+
if (g_langStorage.bgmVolume === undefined) {
|
|
2828
|
+
g_langStorage.bgmVolume = 50;
|
|
2829
|
+
}
|
|
2830
|
+
g_stateObj.bgmVolume = g_langStorage.bgmVolume;
|
|
2831
|
+
g_settings.bgmVolumeNum = g_settings.volumes.findIndex(val => val === g_stateObj.bgmVolume);
|
|
2827
2832
|
Object.assign(g_msgInfoObj, g_lang_msgInfoObj[g_localeObj.val]);
|
|
2828
2833
|
Object.assign(g_kCd, g_lang_kCd[g_localeObj.val]);
|
|
2829
2834
|
|
|
@@ -3443,55 +3448,60 @@ const headerConvert = _dosObj => {
|
|
|
3443
3448
|
}
|
|
3444
3449
|
|
|
3445
3450
|
// 曲名
|
|
3446
|
-
obj.musicTitles = [];
|
|
3447
|
-
obj.musicTitlesForView = [];
|
|
3448
|
-
obj.artistNames = [];
|
|
3449
|
-
obj.artistUrls = [];
|
|
3450
|
-
obj.
|
|
3451
|
-
obj.
|
|
3451
|
+
obj.musicTitles = [`musicName`];
|
|
3452
|
+
obj.musicTitlesForView = [[`musicName`]];
|
|
3453
|
+
obj.artistNames = [``];
|
|
3454
|
+
obj.artistUrls = [``];
|
|
3455
|
+
obj.bpms = [`----`];
|
|
3456
|
+
obj.musicNos = hasVal(_dosObj.musicNo)
|
|
3457
|
+
? splitLF2(_dosObj.musicNo).map(Number).map(val => isNaN(val) ? 0 : val)
|
|
3458
|
+
: fillArray(_dosObj.difData?.split(`$`).length ?? 1);
|
|
3452
3459
|
|
|
3453
3460
|
const dosMusicTitle = getHeader(_dosObj, `musicTitle`);
|
|
3461
|
+
let alternativeTitle;
|
|
3454
3462
|
if (hasVal(dosMusicTitle)) {
|
|
3455
3463
|
const musicData = splitLF2(dosMusicTitle);
|
|
3456
3464
|
|
|
3457
|
-
|
|
3458
|
-
|
|
3459
|
-
}
|
|
3460
|
-
|
|
3461
|
-
for (let j = 0; j < musicData.length; j++) {
|
|
3465
|
+
const lastIdx = Math.max(...obj.musicNos, musicData.length - 1);
|
|
3466
|
+
for (let j = 0; j <= lastIdx; j++) {
|
|
3462
3467
|
const musics = splitComma(musicData[j]);
|
|
3463
3468
|
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
obj.
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3469
|
+
obj.musicTitles[j] = hasVal(musics[0])
|
|
3470
|
+
? escapeHtml(getMusicNameSimple(musics[0]))
|
|
3471
|
+
: obj.musicTitles[0];
|
|
3472
|
+
obj.musicTitlesForView[j] = hasVal(musics[0])
|
|
3473
|
+
? escapeHtmlForArray(getMusicNameMultiLine(musics[0]))
|
|
3474
|
+
: obj.musicTitlesForView[0];
|
|
3475
|
+
obj.artistNames[j] = hasVal(musics[1])
|
|
3476
|
+
? escapeHtml(musics[1])
|
|
3477
|
+
: obj.artistNames[0];
|
|
3478
|
+
obj.artistUrls[j] = musics[2] || obj.artistUrls[0];
|
|
3479
|
+
obj.bpms[j] = musics[4] || obj.bpms[0];
|
|
3480
|
+
|
|
3481
|
+
// 代替タイトル名
|
|
3473
3482
|
if (j === 0) {
|
|
3474
|
-
|
|
3475
|
-
obj.musicTitleForView = obj.musicTitlesForView[0];
|
|
3476
|
-
obj.artistName = obj.artistNames[0];
|
|
3477
|
-
if (obj.artistName === ``) {
|
|
3478
|
-
makeWarningWindow(g_msgInfoObj.E_0011);
|
|
3479
|
-
obj.artistName = `artistName`;
|
|
3480
|
-
}
|
|
3481
|
-
obj.artistUrl = obj.artistUrls[0];
|
|
3482
|
-
if (hasVal(musics[3])) {
|
|
3483
|
-
obj.musicTitles[0] = escapeHtml(getMusicNameSimple(musics[3]));
|
|
3484
|
-
obj.musicTitlesForView[0] = escapeHtmlForArray(getMusicNameMultiLine(musics[3]));
|
|
3485
|
-
}
|
|
3483
|
+
alternativeTitle = musics[3];
|
|
3486
3484
|
}
|
|
3487
3485
|
}
|
|
3488
3486
|
|
|
3489
3487
|
} else {
|
|
3490
3488
|
makeWarningWindow(g_msgInfoObj.E_0012);
|
|
3491
|
-
|
|
3492
|
-
|
|
3489
|
+
}
|
|
3490
|
+
|
|
3491
|
+
// 単一作品用の項目としての管理変数
|
|
3492
|
+
obj.musicTitle = obj.musicTitles[0];
|
|
3493
|
+
obj.musicTitleForView = obj.musicTitlesForView[0];
|
|
3494
|
+
obj.artistName = obj.artistNames[0];
|
|
3495
|
+
if (obj.artistName === ``) {
|
|
3496
|
+
makeWarningWindow(g_msgInfoObj.E_0011);
|
|
3493
3497
|
obj.artistName = `artistName`;
|
|
3494
|
-
|
|
3498
|
+
}
|
|
3499
|
+
obj.artistUrl = obj.artistUrls[0];
|
|
3500
|
+
|
|
3501
|
+
// 代替タイトル名は曲名定義の後に設定する(複数曲を束ねる名前であり、曲名ではないため)
|
|
3502
|
+
if (hasVal(alternativeTitle)) {
|
|
3503
|
+
obj.musicTitles[0] = escapeHtml(getMusicNameSimple(alternativeTitle));
|
|
3504
|
+
obj.musicTitlesForView[0] = escapeHtmlForArray(getMusicNameMultiLine(alternativeTitle));
|
|
3495
3505
|
}
|
|
3496
3506
|
|
|
3497
3507
|
// 選曲機能の利用有無
|
|
@@ -3614,9 +3624,6 @@ const headerConvert = _dosObj => {
|
|
|
3614
3624
|
obj.viewLists = [...Array(obj.keyLabels.length).keys()];
|
|
3615
3625
|
obj.keyLists = keyLists.sort((a, b) => parseInt(a) - parseInt(b));
|
|
3616
3626
|
obj.undefinedKeyLists = obj.keyLists.filter(key => g_keyObj[`${g_keyObj.defaultProp}${key}_0`] === undefined);
|
|
3617
|
-
if (obj.musicNos.length === 0) {
|
|
3618
|
-
obj.musicNos = fillArray(obj.keyLabels.length);
|
|
3619
|
-
}
|
|
3620
3627
|
|
|
3621
3628
|
// 楽曲別のグループ化設定(選曲モードのみ)
|
|
3622
3629
|
if (hasVal(_dosObj.musicGroup)) {
|
|
@@ -4997,6 +5004,8 @@ const titleInit = (_initFlg = false) => {
|
|
|
4997
5004
|
pauseBGM();
|
|
4998
5005
|
g_handler.removeListener(wheelHandler);
|
|
4999
5006
|
g_keyObj.prevKey = `Dummy${g_settings.musicIdxNum}`;
|
|
5007
|
+
g_langStorage.bgmVolume = g_stateObj.bgmVolume;
|
|
5008
|
+
localStorage.setItem(`danoni-locale`, JSON.stringify(g_langStorage));
|
|
5000
5009
|
}, Object.assign({
|
|
5001
5010
|
resetFunc: () => optionInit(),
|
|
5002
5011
|
}, g_lblPosObj.btnStart_music), g_cssObj.button_Tweet),
|
|
@@ -5478,19 +5487,20 @@ const playBGM = async (_num, _currentLoopNum = g_settings.musicLoopNum) => {
|
|
|
5478
5487
|
}
|
|
5479
5488
|
};
|
|
5480
5489
|
|
|
5490
|
+
const musicPlayCheck = () => _currentLoopNum !== g_settings.musicLoopNum || g_currentPage !== `title`;
|
|
5481
5491
|
if (encodeFlg) {
|
|
5482
5492
|
try {
|
|
5483
5493
|
// base64エンコードは読込に時間が掛かるため、曲変更時のみ読込
|
|
5484
5494
|
if (!hasVal(g_musicdata) || Math.abs(_num) % g_headerObj.musicIdxList.length !== 0) {
|
|
5485
5495
|
await loadScript2(url);
|
|
5486
5496
|
musicInit();
|
|
5487
|
-
if (
|
|
5497
|
+
if (musicPlayCheck()) {
|
|
5488
5498
|
return;
|
|
5489
5499
|
}
|
|
5490
5500
|
const tmpAudio = new AudioPlayer();
|
|
5491
5501
|
const array = Uint8Array.from(atob(g_musicdata), v => v.charCodeAt(0));
|
|
5492
5502
|
await tmpAudio.init(array.buffer);
|
|
5493
|
-
if (
|
|
5503
|
+
if (musicPlayCheck()) {
|
|
5494
5504
|
tmpAudio.close();
|
|
5495
5505
|
return;
|
|
5496
5506
|
}
|
|
@@ -5513,7 +5523,7 @@ const playBGM = async (_num, _currentLoopNum = g_settings.musicLoopNum) => {
|
|
|
5513
5523
|
g_audio.volume = g_stateObj.bgmVolume / 100;
|
|
5514
5524
|
const loadedMeta = g_handler.addListener(g_audio, `loadedmetadata`, () => {
|
|
5515
5525
|
g_handler.removeListener(loadedMeta);
|
|
5516
|
-
if (
|
|
5526
|
+
if (musicPlayCheck()) {
|
|
5517
5527
|
return;
|
|
5518
5528
|
}
|
|
5519
5529
|
g_audio.currentTime = musicStart;
|