danoniplus 37.1.0 → 37.2.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/css/danoni_main.css +2 -1
- package/js/danoni_main.js +56 -36
- package/js/lib/danoni_constants.js +6 -1
- package/package.json +1 -1
package/css/danoni_main.css
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
本体cssファイル
|
|
5
5
|
|
|
6
6
|
Created : 2018/10/08
|
|
7
|
-
Revised : 2024/
|
|
7
|
+
Revised : 2024/06/30 (v37.2.1)
|
|
8
8
|
|
|
9
9
|
https://github.com/cwtickle/danoniplus
|
|
10
10
|
------------------------------------------ */
|
|
@@ -869,5 +869,6 @@ input[type="color"] {
|
|
|
869
869
|
.result_Cleared,
|
|
870
870
|
.result_Failed {
|
|
871
871
|
background-clip: text;
|
|
872
|
+
-webkit-background-clip: text;
|
|
872
873
|
color: rgba(255, 255, 255, 0.0);
|
|
873
874
|
}
|
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/30
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 37.1
|
|
12
|
-
const g_revisedDate = `2024/06/
|
|
11
|
+
const g_version = `Ver 37.2.1`;
|
|
12
|
+
const g_revisedDate = `2024/06/30`;
|
|
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;
|
|
@@ -1146,6 +1147,8 @@ const createColorObject2 = (_id,
|
|
|
1146
1147
|
|
|
1147
1148
|
style.maskImage = `url("${g_imgObj[charaStyle]}")`;
|
|
1148
1149
|
style.maskSize = `contain`;
|
|
1150
|
+
style.webkitMaskImage = `url("${g_imgObj[charaStyle]}")`;
|
|
1151
|
+
style.webkitMaskSize = `contain`;
|
|
1149
1152
|
Object.keys(rest).forEach(property => style[property] = rest[property]);
|
|
1150
1153
|
setAttrs(div, { color: rest.background ?? ``, type: charaStyle, cnt: 0, });
|
|
1151
1154
|
|
|
@@ -4162,6 +4165,7 @@ const titleInit = _ => {
|
|
|
4162
4165
|
font-family:${g_headerObj.titlefonts[0]};
|
|
4163
4166
|
background: ${titlegrds[0]};
|
|
4164
4167
|
background-clip: text;
|
|
4168
|
+
-webkit-background-clip: text;
|
|
4165
4169
|
color: rgba(255,255,255,0.0);
|
|
4166
4170
|
${txtAnimations[0]}
|
|
4167
4171
|
" class="${g_headerObj.titleAnimationClass[0]}">
|
|
@@ -4174,6 +4178,7 @@ const titleInit = _ => {
|
|
|
4174
4178
|
font-family:${g_headerObj.titlefonts[1]};
|
|
4175
4179
|
background: ${titlegrds[1]};
|
|
4176
4180
|
background-clip: text;
|
|
4181
|
+
-webkit-background-clip: text;
|
|
4177
4182
|
color: rgba(255,255,255,0.0);
|
|
4178
4183
|
${txtAnimations[1]}
|
|
4179
4184
|
" class="${g_headerObj.titleAnimationClass[1]}">
|
|
@@ -5526,7 +5531,6 @@ const createOptionWindow = _sprite => {
|
|
|
5526
5531
|
// 縦位置: 5.5
|
|
5527
5532
|
createGeneralSetting(spriteList.shuffle, `shuffle`, g_settings.scoreDetails.length > 0 ? {
|
|
5528
5533
|
addRFunc: _ => makeHighScore(g_stateObj.scoreId),
|
|
5529
|
-
addLFunc: _ => makeHighScore(g_stateObj.scoreId),
|
|
5530
5534
|
} : {});
|
|
5531
5535
|
|
|
5532
5536
|
// ---------------------------------------------------
|
|
@@ -5534,7 +5538,6 @@ const createOptionWindow = _sprite => {
|
|
|
5534
5538
|
// 縦位置: 6.5
|
|
5535
5539
|
createGeneralSetting(spriteList.autoPlay, `autoPlay`, g_settings.scoreDetails.length > 0 ? {
|
|
5536
5540
|
addRFunc: _ => makeHighScore(g_stateObj.scoreId),
|
|
5537
|
-
addLFunc: _ => makeHighScore(g_stateObj.scoreId),
|
|
5538
5541
|
} : {});
|
|
5539
5542
|
|
|
5540
5543
|
// ---------------------------------------------------
|
|
@@ -5578,9 +5581,22 @@ const createOptionWindow = _sprite => {
|
|
|
5578
5581
|
// 縦位置: 10.5 短縮ショートカットあり
|
|
5579
5582
|
createGeneralSetting(spriteList.adjustment, `adjustment`, {
|
|
5580
5583
|
skipTerms: g_settings.adjustmentTerms, hiddenBtn: true, scLabel: g_lblNameObj.sc_adjustment, roundNum: 5,
|
|
5581
|
-
unitName: g_lblNameObj.frame,
|
|
5584
|
+
unitName: g_lblNameObj.frame, addRFunc: _ => viewAdjustment(),
|
|
5582
5585
|
});
|
|
5583
5586
|
|
|
5587
|
+
const viewAdjustment = _ => {
|
|
5588
|
+
if (g_headerObj.playbackRate !== 1) {
|
|
5589
|
+
const adjustmentVal = isLocalMusicFile(g_stateObj.scoreId) ?
|
|
5590
|
+
Math.round(g_stateObj.adjustment / g_headerObj.playbackRate) :
|
|
5591
|
+
(g_stateObj.adjustment / g_headerObj.playbackRate).toFixed(1);
|
|
5592
|
+
document.getElementById(`lnkAdjustment`).innerHTML = `${adjustmentVal}${g_lblNameObj.frame}`
|
|
5593
|
+
+ `<span style="font-size:${g_limitObj.adjustmentViewOrgSiz}px"> (${g_stateObj.adjustment.toFixed(1)}${g_localStorage.adjustment === g_stateObj.adjustment ? '*' : ''})</span>`;
|
|
5594
|
+
document.getElementById(`lnkAdjustment`).style.fontSize = `${g_limitObj.adjustmentViewSiz}px`;
|
|
5595
|
+
document.getElementById(`lnkAdjustment`).style.lineHeight = `${g_limitObj.adjustmentLineHeight}px`;
|
|
5596
|
+
}
|
|
5597
|
+
};
|
|
5598
|
+
viewAdjustment();
|
|
5599
|
+
|
|
5584
5600
|
// ---------------------------------------------------
|
|
5585
5601
|
// フェードイン (Fadein)
|
|
5586
5602
|
// 縦位置: 11.5 スライダーあり
|
|
@@ -5635,7 +5651,7 @@ const createOptionWindow = _sprite => {
|
|
|
5635
5651
|
* @param {object} _options
|
|
5636
5652
|
*/
|
|
5637
5653
|
const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
5638
|
-
skipTerms = fillArray(3, 1), hiddenBtn = false, addRFunc = _ => { }, addLFunc =
|
|
5654
|
+
skipTerms = fillArray(3, 1), hiddenBtn = false, addRFunc = _ => { }, addLFunc = addRFunc,
|
|
5639
5655
|
settingLabel = _settingName, displayName = g_currentPage, scLabel = ``, roundNum = 0, adjY = 0 } = {}) => {
|
|
5640
5656
|
|
|
5641
5657
|
const settingUpper = toCapitalize(_settingName);
|
|
@@ -5648,47 +5664,47 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
|
5648
5664
|
multiAppend(_obj,
|
|
5649
5665
|
makeSettingLblCssButton(linkId, `${initName}${g_localStorage[_settingName] === g_stateObj[_settingName] ? ' *' : ''}`, 0,
|
|
5650
5666
|
_ => {
|
|
5651
|
-
setSetting(skipTerms[1], _settingName, unitName, roundNum);
|
|
5652
|
-
addRFunc();
|
|
5667
|
+
setSetting(skipTerms[1], _settingName, unitName, roundNum, { func: _ => addRFunc() });
|
|
5653
5668
|
}, {
|
|
5654
5669
|
cxtFunc: _ => {
|
|
5655
|
-
setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum);
|
|
5656
|
-
addLFunc();
|
|
5670
|
+
setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() });
|
|
5657
5671
|
}
|
|
5658
5672
|
}),
|
|
5659
5673
|
|
|
5660
5674
|
// 右回し・左回しボタン(外側)
|
|
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
|
-
}),
|
|
5675
|
+
makeMiniCssButton(linkId, `R`, 0, _ =>
|
|
5676
|
+
setSetting(skipTerms[0], _settingName, unitName, roundNum, { func: _ => addRFunc() })),
|
|
5677
|
+
makeMiniCssButton(linkId, `L`, 0, _ =>
|
|
5678
|
+
setSetting(skipTerms[0] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() })),
|
|
5669
5679
|
);
|
|
5670
5680
|
|
|
5671
5681
|
// 右回し・左回しボタン(内側)
|
|
5672
5682
|
if (skipTerms[1] > 1) {
|
|
5673
5683
|
multiAppend(_obj,
|
|
5674
|
-
makeMiniCssButton(linkId, `RR`, 0, _ =>
|
|
5675
|
-
|
|
5684
|
+
makeMiniCssButton(linkId, `RR`, 0, _ =>
|
|
5685
|
+
setSetting(skipTerms[1], _settingName, unitName, roundNum, { func: _ => addRFunc() })),
|
|
5686
|
+
makeMiniCssButton(linkId, `LL`, 0, _ =>
|
|
5687
|
+
setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() })),
|
|
5676
5688
|
);
|
|
5677
5689
|
}
|
|
5678
5690
|
|
|
5679
5691
|
// 右回し・左回しボタン(最内側)
|
|
5680
5692
|
if (skipTerms[2] > 1) {
|
|
5681
5693
|
multiAppend(_obj,
|
|
5682
|
-
makeMiniCssButton(linkId, `RRR`, 0, _ =>
|
|
5683
|
-
|
|
5694
|
+
makeMiniCssButton(linkId, `RRR`, 0, _ =>
|
|
5695
|
+
setSetting(skipTerms[2], _settingName, unitName, roundNum, { func: _ => addRFunc() })
|
|
5696
|
+
, { dw: -g_limitObj.setMiniWidth / 2 }),
|
|
5697
|
+
makeMiniCssButton(linkId, `LLL`, 0, _ =>
|
|
5698
|
+
setSetting(skipTerms[2] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() })
|
|
5699
|
+
, { dw: -g_limitObj.setMiniWidth / 2 }),
|
|
5684
5700
|
);
|
|
5685
5701
|
}
|
|
5686
5702
|
|
|
5687
5703
|
// 右回し・左回しボタン(不可視)
|
|
5688
5704
|
if (hiddenBtn) {
|
|
5689
5705
|
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` }),
|
|
5706
|
+
makeMiniCssButton(linkId, `HR`, 0, _ => setSetting(1, _settingName, unitName, roundNum, { func: _ => addRFunc() }), { visibility: `hidden` }),
|
|
5707
|
+
makeMiniCssButton(linkId, `HL`, 0, _ => setSetting(-1, _settingName, unitName, roundNum, { func: _ => addLFunc() }), { visibility: `hidden` }),
|
|
5692
5708
|
);
|
|
5693
5709
|
}
|
|
5694
5710
|
|
|
@@ -5731,7 +5747,7 @@ const getStgDetailName = _name => {
|
|
|
5731
5747
|
* @param {string} _unitName
|
|
5732
5748
|
* @param {number} _roundNum
|
|
5733
5749
|
*/
|
|
5734
|
-
const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0) => {
|
|
5750
|
+
const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0, { func = _ => true } = {}) => {
|
|
5735
5751
|
let settingNum = g_settings[`${_settingName}Num`];
|
|
5736
5752
|
const settingList = g_settings[`${_settingName}s`];
|
|
5737
5753
|
const settingMax = settingList.length - 1;
|
|
@@ -5752,6 +5768,7 @@ const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0) =>
|
|
|
5752
5768
|
g_settings[`${_settingName}Num`] = settingNum;
|
|
5753
5769
|
document.getElementById(`lnk${toCapitalize(_settingName)}`).textContent =
|
|
5754
5770
|
`${getStgDetailName(g_stateObj[_settingName])}${_unitName}${g_localStorage[_settingName] === g_stateObj[_settingName] ? ' *' : ''}`;
|
|
5771
|
+
func();
|
|
5755
5772
|
};
|
|
5756
5773
|
|
|
5757
5774
|
/**
|
|
@@ -6251,7 +6268,6 @@ const createSettingsDisplayWindow = _sprite => {
|
|
|
6251
6268
|
// 縦位置: 7.4
|
|
6252
6269
|
createGeneralSetting(spriteList.appearance, `appearance`, {
|
|
6253
6270
|
addRFunc: _ => dispAppearanceSlider(),
|
|
6254
|
-
addLFunc: _ => dispAppearanceSlider(),
|
|
6255
6271
|
});
|
|
6256
6272
|
|
|
6257
6273
|
// Hidden+/Sudden+初期値用スライダー、ロックボタン
|
|
@@ -7751,10 +7767,11 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
7751
7767
|
obj.dummyArrowData = [];
|
|
7752
7768
|
obj.dummyFrzData = [];
|
|
7753
7769
|
|
|
7754
|
-
// realAdjustment: 全体, intAdjustment: 整数値のみ(
|
|
7770
|
+
// realAdjustment: 全体, intAdjustment: 整数値のみ(切り捨て、ファイル時のみ四捨五入), decimalAdjustment: 小数値のみ
|
|
7755
7771
|
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 =
|
|
7772
|
+
g_stateObj.realAdjustment = (parseFloat(g_stateObj.adjustment) + headerAdjustment) / g_headerObj.playbackRate + _preblankFrame;
|
|
7773
|
+
g_stateObj.intAdjustment = isLocalMusicFile(g_stateObj.scoreId) ?
|
|
7774
|
+
Math.round(g_stateObj.realAdjustment) : Math.floor(g_stateObj.realAdjustment);
|
|
7758
7775
|
g_stateObj.decimalAdjustment = g_stateObj.realAdjustment - g_stateObj.intAdjustment;
|
|
7759
7776
|
|
|
7760
7777
|
const blankFrame = g_headerObj.blankFrame;
|
|
@@ -9404,7 +9421,8 @@ const mainInit = _ => {
|
|
|
9404
9421
|
}
|
|
9405
9422
|
|
|
9406
9423
|
// 曲名・アーティスト名、譜面名表示
|
|
9407
|
-
const
|
|
9424
|
+
const playbackView = (g_headerObj.playbackRate === 1 ? `` : ` [Rate:${g_headerObj.playbackRate}]`);
|
|
9425
|
+
const musicTitle = (g_headerObj.musicTitles[g_headerObj.musicNos[g_stateObj.scoreId]] || g_headerObj.musicTitle) + playbackView;
|
|
9408
9426
|
const artistName = g_headerObj.artistNames[g_headerObj.musicNos[g_stateObj.scoreId]] || g_headerObj.artistName;
|
|
9409
9427
|
const assistFlg = (g_autoPlaysBase.includes(g_stateObj.autoPlay) ? `` : `-${getStgDetailName(g_stateObj.autoPlay)}${getStgDetailName('less')}`);
|
|
9410
9428
|
const shuffleName = (g_stateObj.shuffle !== C_FLG_OFF ? `: ${getStgDetailName(g_stateObj.shuffle)}` : ``);
|
|
@@ -11069,7 +11087,7 @@ const resultInit = _ => {
|
|
|
11069
11087
|
return result;
|
|
11070
11088
|
};
|
|
11071
11089
|
const bayesExVal = 6 * bayesFunc(0, diffLength) / (diffLength * (diffLength + 1) * (diffLength + 2));
|
|
11072
|
-
const estimatedAdj = (diffLength <= 20 ? `` : Math.round((g_stateObj.adjustment - bayesExVal) * 10) / 10);
|
|
11090
|
+
const estimatedAdj = (diffLength <= 20 ? `` : Math.round((g_stateObj.adjustment / g_headerObj.playbackRate - bayesExVal) * 10) / 10);
|
|
11073
11091
|
|
|
11074
11092
|
// 背景スプライトを作成
|
|
11075
11093
|
createMultipleSprite(`backResultSprite`, g_headerObj.backResultMaxDepth);
|
|
@@ -11114,12 +11132,13 @@ const resultInit = _ => {
|
|
|
11114
11132
|
}
|
|
11115
11133
|
|
|
11116
11134
|
// 曲名・オプション描画
|
|
11117
|
-
const
|
|
11135
|
+
const playbackView = (g_headerObj.playbackRate === 1 ? `` : ` [Rate:${g_headerObj.playbackRate}]`);
|
|
11136
|
+
const musicTitle = (g_headerObj.musicTitles[g_headerObj.musicNos[g_stateObj.scoreId]] || g_headerObj.musicTitle) + playbackView;
|
|
11118
11137
|
|
|
11119
|
-
const mTitleForView = [g_headerObj.musicTitleForView[0], g_headerObj.musicTitleForView[1] || ``];
|
|
11138
|
+
const mTitleForView = [g_headerObj.musicTitleForView[0], (g_headerObj.musicTitleForView[1] || ``) + playbackView];
|
|
11120
11139
|
if (g_headerObj.musicTitlesForView[g_headerObj.musicNos[g_stateObj.scoreId]] !== undefined) {
|
|
11121
11140
|
mTitleForView.forEach((mTitle, j) =>
|
|
11122
|
-
mTitleForView[j] = g_headerObj.musicTitlesForView[g_headerObj.musicNos[g_stateObj.scoreId]][j]);
|
|
11141
|
+
mTitleForView[j] = g_headerObj.musicTitlesForView[g_headerObj.musicNos[g_stateObj.scoreId]][j] + (j === 1 ? playbackView : ``));
|
|
11123
11142
|
}
|
|
11124
11143
|
|
|
11125
11144
|
const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
|
|
@@ -11285,7 +11304,8 @@ const resultInit = _ => {
|
|
|
11285
11304
|
maxCombo: 0, fmaxCombo: 0, score: 0,
|
|
11286
11305
|
};
|
|
11287
11306
|
|
|
11288
|
-
const highscoreCondition = (g_stateObj.autoAll === C_FLG_OFF &&
|
|
11307
|
+
const highscoreCondition = (g_stateObj.autoAll === C_FLG_OFF && g_headerObj.playbackRate === 1 &&
|
|
11308
|
+
(g_stateObj.shuffle === C_FLG_OFF || (mirrorName !== `` && orgShuffleFlg)));
|
|
11289
11309
|
if (highscoreCondition) {
|
|
11290
11310
|
|
|
11291
11311
|
// ハイスコア差分描画
|
|
@@ -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,
|