danoniplus 37.1.0 → 37.2.0
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 +52 -36
- package/js/lib/danoni_constants.js +6 -1
- 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 : 2024/06/
|
|
7
|
+
* Revised : 2024/06/29
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 37.
|
|
12
|
-
const g_revisedDate = `2024/06/
|
|
11
|
+
const g_version = `Ver 37.2.0`;
|
|
12
|
+
const g_revisedDate = `2024/06/29`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -43,6 +43,7 @@ const g_remoteFlg = g_rootPath.match(`^https://cwtickle.github.io/danoniplus/`)
|
|
|
43
43
|
const g_randTime = Date.now();
|
|
44
44
|
const g_isFile = location.href.match(/^file/);
|
|
45
45
|
const g_isLocal = location.href.match(/^file/) || location.href.indexOf(`localhost`) !== -1;
|
|
46
|
+
const isLocalMusicFile = _scoreId => g_isFile && !listMatching(getMusicUrl(g_stateObj.scoreId), [`.js`, `.txt`], { suffix: `$` });
|
|
46
47
|
|
|
47
48
|
window.onload = async () => {
|
|
48
49
|
g_loadObj.main = true;
|
|
@@ -5526,7 +5527,6 @@ const createOptionWindow = _sprite => {
|
|
|
5526
5527
|
// 縦位置: 5.5
|
|
5527
5528
|
createGeneralSetting(spriteList.shuffle, `shuffle`, g_settings.scoreDetails.length > 0 ? {
|
|
5528
5529
|
addRFunc: _ => makeHighScore(g_stateObj.scoreId),
|
|
5529
|
-
addLFunc: _ => makeHighScore(g_stateObj.scoreId),
|
|
5530
5530
|
} : {});
|
|
5531
5531
|
|
|
5532
5532
|
// ---------------------------------------------------
|
|
@@ -5534,7 +5534,6 @@ const createOptionWindow = _sprite => {
|
|
|
5534
5534
|
// 縦位置: 6.5
|
|
5535
5535
|
createGeneralSetting(spriteList.autoPlay, `autoPlay`, g_settings.scoreDetails.length > 0 ? {
|
|
5536
5536
|
addRFunc: _ => makeHighScore(g_stateObj.scoreId),
|
|
5537
|
-
addLFunc: _ => makeHighScore(g_stateObj.scoreId),
|
|
5538
5537
|
} : {});
|
|
5539
5538
|
|
|
5540
5539
|
// ---------------------------------------------------
|
|
@@ -5578,9 +5577,22 @@ const createOptionWindow = _sprite => {
|
|
|
5578
5577
|
// 縦位置: 10.5 短縮ショートカットあり
|
|
5579
5578
|
createGeneralSetting(spriteList.adjustment, `adjustment`, {
|
|
5580
5579
|
skipTerms: g_settings.adjustmentTerms, hiddenBtn: true, scLabel: g_lblNameObj.sc_adjustment, roundNum: 5,
|
|
5581
|
-
unitName: g_lblNameObj.frame,
|
|
5580
|
+
unitName: g_lblNameObj.frame, addRFunc: _ => viewAdjustment(),
|
|
5582
5581
|
});
|
|
5583
5582
|
|
|
5583
|
+
const viewAdjustment = _ => {
|
|
5584
|
+
if (g_headerObj.playbackRate !== 1) {
|
|
5585
|
+
const adjustmentVal = isLocalMusicFile(g_stateObj.scoreId) ?
|
|
5586
|
+
Math.round(g_stateObj.adjustment / g_headerObj.playbackRate) :
|
|
5587
|
+
(g_stateObj.adjustment / g_headerObj.playbackRate).toFixed(1);
|
|
5588
|
+
document.getElementById(`lnkAdjustment`).innerHTML = `${adjustmentVal}${g_lblNameObj.frame}`
|
|
5589
|
+
+ `<span style="font-size:${g_limitObj.adjustmentViewOrgSiz}px"> (${g_stateObj.adjustment.toFixed(1)}${g_localStorage.adjustment === g_stateObj.adjustment ? '*' : ''})</span>`;
|
|
5590
|
+
document.getElementById(`lnkAdjustment`).style.fontSize = `${g_limitObj.adjustmentViewSiz}px`;
|
|
5591
|
+
document.getElementById(`lnkAdjustment`).style.lineHeight = `${g_limitObj.adjustmentLineHeight}px`;
|
|
5592
|
+
}
|
|
5593
|
+
};
|
|
5594
|
+
viewAdjustment();
|
|
5595
|
+
|
|
5584
5596
|
// ---------------------------------------------------
|
|
5585
5597
|
// フェードイン (Fadein)
|
|
5586
5598
|
// 縦位置: 11.5 スライダーあり
|
|
@@ -5635,7 +5647,7 @@ const createOptionWindow = _sprite => {
|
|
|
5635
5647
|
* @param {object} _options
|
|
5636
5648
|
*/
|
|
5637
5649
|
const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
5638
|
-
skipTerms = fillArray(3, 1), hiddenBtn = false, addRFunc = _ => { }, addLFunc =
|
|
5650
|
+
skipTerms = fillArray(3, 1), hiddenBtn = false, addRFunc = _ => { }, addLFunc = addRFunc,
|
|
5639
5651
|
settingLabel = _settingName, displayName = g_currentPage, scLabel = ``, roundNum = 0, adjY = 0 } = {}) => {
|
|
5640
5652
|
|
|
5641
5653
|
const settingUpper = toCapitalize(_settingName);
|
|
@@ -5648,47 +5660,47 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
|
5648
5660
|
multiAppend(_obj,
|
|
5649
5661
|
makeSettingLblCssButton(linkId, `${initName}${g_localStorage[_settingName] === g_stateObj[_settingName] ? ' *' : ''}`, 0,
|
|
5650
5662
|
_ => {
|
|
5651
|
-
setSetting(skipTerms[1], _settingName, unitName, roundNum);
|
|
5652
|
-
addRFunc();
|
|
5663
|
+
setSetting(skipTerms[1], _settingName, unitName, roundNum, { func: _ => addRFunc() });
|
|
5653
5664
|
}, {
|
|
5654
5665
|
cxtFunc: _ => {
|
|
5655
|
-
setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum);
|
|
5656
|
-
addLFunc();
|
|
5666
|
+
setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() });
|
|
5657
5667
|
}
|
|
5658
5668
|
}),
|
|
5659
5669
|
|
|
5660
5670
|
// 右回し・左回しボタン(外側)
|
|
5661
|
-
makeMiniCssButton(linkId, `R`, 0, _ =>
|
|
5662
|
-
setSetting(skipTerms[0], _settingName, unitName, roundNum)
|
|
5663
|
-
|
|
5664
|
-
|
|
5665
|
-
makeMiniCssButton(linkId, `L`, 0, _ => {
|
|
5666
|
-
setSetting(skipTerms[0] * (-1), _settingName, unitName, roundNum);
|
|
5667
|
-
addLFunc();
|
|
5668
|
-
}),
|
|
5671
|
+
makeMiniCssButton(linkId, `R`, 0, _ =>
|
|
5672
|
+
setSetting(skipTerms[0], _settingName, unitName, roundNum, { func: _ => addRFunc() })),
|
|
5673
|
+
makeMiniCssButton(linkId, `L`, 0, _ =>
|
|
5674
|
+
setSetting(skipTerms[0] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() })),
|
|
5669
5675
|
);
|
|
5670
5676
|
|
|
5671
5677
|
// 右回し・左回しボタン(内側)
|
|
5672
5678
|
if (skipTerms[1] > 1) {
|
|
5673
5679
|
multiAppend(_obj,
|
|
5674
|
-
makeMiniCssButton(linkId, `RR`, 0, _ =>
|
|
5675
|
-
|
|
5680
|
+
makeMiniCssButton(linkId, `RR`, 0, _ =>
|
|
5681
|
+
setSetting(skipTerms[1], _settingName, unitName, roundNum, { func: _ => addRFunc() })),
|
|
5682
|
+
makeMiniCssButton(linkId, `LL`, 0, _ =>
|
|
5683
|
+
setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() })),
|
|
5676
5684
|
);
|
|
5677
5685
|
}
|
|
5678
5686
|
|
|
5679
5687
|
// 右回し・左回しボタン(最内側)
|
|
5680
5688
|
if (skipTerms[2] > 1) {
|
|
5681
5689
|
multiAppend(_obj,
|
|
5682
|
-
makeMiniCssButton(linkId, `RRR`, 0, _ =>
|
|
5683
|
-
|
|
5690
|
+
makeMiniCssButton(linkId, `RRR`, 0, _ =>
|
|
5691
|
+
setSetting(skipTerms[2], _settingName, unitName, roundNum, { func: _ => addRFunc() })
|
|
5692
|
+
, { dw: -g_limitObj.setMiniWidth / 2 }),
|
|
5693
|
+
makeMiniCssButton(linkId, `LLL`, 0, _ =>
|
|
5694
|
+
setSetting(skipTerms[2] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() })
|
|
5695
|
+
, { dw: -g_limitObj.setMiniWidth / 2 }),
|
|
5684
5696
|
);
|
|
5685
5697
|
}
|
|
5686
5698
|
|
|
5687
5699
|
// 右回し・左回しボタン(不可視)
|
|
5688
5700
|
if (hiddenBtn) {
|
|
5689
5701
|
multiAppend(_obj,
|
|
5690
|
-
makeMiniCssButton(linkId, `HR`, 0, _ => setSetting(1, _settingName, unitName, roundNum), { visibility: `hidden` }),
|
|
5691
|
-
makeMiniCssButton(linkId, `HL`, 0, _ => setSetting(-1, _settingName, unitName, roundNum), { visibility: `hidden` }),
|
|
5702
|
+
makeMiniCssButton(linkId, `HR`, 0, _ => setSetting(1, _settingName, unitName, roundNum, { func: _ => addRFunc() }), { visibility: `hidden` }),
|
|
5703
|
+
makeMiniCssButton(linkId, `HL`, 0, _ => setSetting(-1, _settingName, unitName, roundNum, { func: _ => addLFunc() }), { visibility: `hidden` }),
|
|
5692
5704
|
);
|
|
5693
5705
|
}
|
|
5694
5706
|
|
|
@@ -5731,7 +5743,7 @@ const getStgDetailName = _name => {
|
|
|
5731
5743
|
* @param {string} _unitName
|
|
5732
5744
|
* @param {number} _roundNum
|
|
5733
5745
|
*/
|
|
5734
|
-
const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0) => {
|
|
5746
|
+
const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0, { func = _ => true } = {}) => {
|
|
5735
5747
|
let settingNum = g_settings[`${_settingName}Num`];
|
|
5736
5748
|
const settingList = g_settings[`${_settingName}s`];
|
|
5737
5749
|
const settingMax = settingList.length - 1;
|
|
@@ -5752,6 +5764,7 @@ const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0) =>
|
|
|
5752
5764
|
g_settings[`${_settingName}Num`] = settingNum;
|
|
5753
5765
|
document.getElementById(`lnk${toCapitalize(_settingName)}`).textContent =
|
|
5754
5766
|
`${getStgDetailName(g_stateObj[_settingName])}${_unitName}${g_localStorage[_settingName] === g_stateObj[_settingName] ? ' *' : ''}`;
|
|
5767
|
+
func();
|
|
5755
5768
|
};
|
|
5756
5769
|
|
|
5757
5770
|
/**
|
|
@@ -6251,7 +6264,6 @@ const createSettingsDisplayWindow = _sprite => {
|
|
|
6251
6264
|
// 縦位置: 7.4
|
|
6252
6265
|
createGeneralSetting(spriteList.appearance, `appearance`, {
|
|
6253
6266
|
addRFunc: _ => dispAppearanceSlider(),
|
|
6254
|
-
addLFunc: _ => dispAppearanceSlider(),
|
|
6255
6267
|
});
|
|
6256
6268
|
|
|
6257
6269
|
// Hidden+/Sudden+初期値用スライダー、ロックボタン
|
|
@@ -7751,10 +7763,11 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
7751
7763
|
obj.dummyArrowData = [];
|
|
7752
7764
|
obj.dummyFrzData = [];
|
|
7753
7765
|
|
|
7754
|
-
// realAdjustment: 全体, intAdjustment: 整数値のみ(
|
|
7766
|
+
// realAdjustment: 全体, intAdjustment: 整数値のみ(切り捨て、ファイル時のみ四捨五入), decimalAdjustment: 小数値のみ
|
|
7755
7767
|
const headerAdjustment = parseFloat(g_headerObj.adjustment[g_stateObj.scoreId] || g_headerObj.adjustment[0]);
|
|
7756
|
-
g_stateObj.realAdjustment = parseFloat(g_stateObj.adjustment) + headerAdjustment + _preblankFrame;
|
|
7757
|
-
g_stateObj.intAdjustment =
|
|
7768
|
+
g_stateObj.realAdjustment = (parseFloat(g_stateObj.adjustment) + headerAdjustment) / g_headerObj.playbackRate + _preblankFrame;
|
|
7769
|
+
g_stateObj.intAdjustment = isLocalMusicFile(g_stateObj.scoreId) ?
|
|
7770
|
+
Math.round(g_stateObj.realAdjustment) : Math.floor(g_stateObj.realAdjustment);
|
|
7758
7771
|
g_stateObj.decimalAdjustment = g_stateObj.realAdjustment - g_stateObj.intAdjustment;
|
|
7759
7772
|
|
|
7760
7773
|
const blankFrame = g_headerObj.blankFrame;
|
|
@@ -9404,7 +9417,8 @@ const mainInit = _ => {
|
|
|
9404
9417
|
}
|
|
9405
9418
|
|
|
9406
9419
|
// 曲名・アーティスト名、譜面名表示
|
|
9407
|
-
const
|
|
9420
|
+
const playbackView = (g_headerObj.playbackRate === 1 ? `` : ` [Rate:${g_headerObj.playbackRate}]`);
|
|
9421
|
+
const musicTitle = (g_headerObj.musicTitles[g_headerObj.musicNos[g_stateObj.scoreId]] || g_headerObj.musicTitle) + playbackView;
|
|
9408
9422
|
const artistName = g_headerObj.artistNames[g_headerObj.musicNos[g_stateObj.scoreId]] || g_headerObj.artistName;
|
|
9409
9423
|
const assistFlg = (g_autoPlaysBase.includes(g_stateObj.autoPlay) ? `` : `-${getStgDetailName(g_stateObj.autoPlay)}${getStgDetailName('less')}`);
|
|
9410
9424
|
const shuffleName = (g_stateObj.shuffle !== C_FLG_OFF ? `: ${getStgDetailName(g_stateObj.shuffle)}` : ``);
|
|
@@ -11069,7 +11083,7 @@ const resultInit = _ => {
|
|
|
11069
11083
|
return result;
|
|
11070
11084
|
};
|
|
11071
11085
|
const bayesExVal = 6 * bayesFunc(0, diffLength) / (diffLength * (diffLength + 1) * (diffLength + 2));
|
|
11072
|
-
const estimatedAdj = (diffLength <= 20 ? `` : Math.round((g_stateObj.adjustment - bayesExVal) * 10) / 10);
|
|
11086
|
+
const estimatedAdj = (diffLength <= 20 ? `` : Math.round((g_stateObj.adjustment / g_headerObj.playbackRate - bayesExVal) * 10) / 10);
|
|
11073
11087
|
|
|
11074
11088
|
// 背景スプライトを作成
|
|
11075
11089
|
createMultipleSprite(`backResultSprite`, g_headerObj.backResultMaxDepth);
|
|
@@ -11114,12 +11128,13 @@ const resultInit = _ => {
|
|
|
11114
11128
|
}
|
|
11115
11129
|
|
|
11116
11130
|
// 曲名・オプション描画
|
|
11117
|
-
const
|
|
11131
|
+
const playbackView = (g_headerObj.playbackRate === 1 ? `` : ` [Rate:${g_headerObj.playbackRate}]`);
|
|
11132
|
+
const musicTitle = (g_headerObj.musicTitles[g_headerObj.musicNos[g_stateObj.scoreId]] || g_headerObj.musicTitle) + playbackView;
|
|
11118
11133
|
|
|
11119
|
-
const mTitleForView = [g_headerObj.musicTitleForView[0], g_headerObj.musicTitleForView[1] || ``];
|
|
11134
|
+
const mTitleForView = [g_headerObj.musicTitleForView[0], (g_headerObj.musicTitleForView[1] || ``) + playbackView];
|
|
11120
11135
|
if (g_headerObj.musicTitlesForView[g_headerObj.musicNos[g_stateObj.scoreId]] !== undefined) {
|
|
11121
11136
|
mTitleForView.forEach((mTitle, j) =>
|
|
11122
|
-
mTitleForView[j] = g_headerObj.musicTitlesForView[g_headerObj.musicNos[g_stateObj.scoreId]][j]);
|
|
11137
|
+
mTitleForView[j] = g_headerObj.musicTitlesForView[g_headerObj.musicNos[g_stateObj.scoreId]][j] + (j === 1 ? playbackView : ``));
|
|
11123
11138
|
}
|
|
11124
11139
|
|
|
11125
11140
|
const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
|
|
@@ -11285,7 +11300,8 @@ const resultInit = _ => {
|
|
|
11285
11300
|
maxCombo: 0, fmaxCombo: 0, score: 0,
|
|
11286
11301
|
};
|
|
11287
11302
|
|
|
11288
|
-
const highscoreCondition = (g_stateObj.autoAll === C_FLG_OFF &&
|
|
11303
|
+
const highscoreCondition = (g_stateObj.autoAll === C_FLG_OFF && g_headerObj.playbackRate === 1 &&
|
|
11304
|
+
(g_stateObj.shuffle === C_FLG_OFF || (mirrorName !== `` && orgShuffleFlg)));
|
|
11289
11305
|
if (highscoreCondition) {
|
|
11290
11306
|
|
|
11291
11307
|
// ハイスコア差分描画
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2024/06/
|
|
8
|
+
* Revised : 2024/06/29 (v37.2.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -30,6 +30,11 @@ const g_limitObj = {
|
|
|
30
30
|
adjustment: 30,
|
|
31
31
|
hitPosition: 50,
|
|
32
32
|
|
|
33
|
+
// playbackRate有効時のAdjustmentの設定値の文字サイズ、行幅
|
|
34
|
+
adjustmentViewSiz: 14,
|
|
35
|
+
adjustmentViewOrgSiz: 11,
|
|
36
|
+
adjustmentLineHeight: 12,
|
|
37
|
+
|
|
33
38
|
// 譜面密度グラフの分割数、上位色付け数
|
|
34
39
|
densityDivision: 16,
|
|
35
40
|
densityMaxVals: 3,
|