danoniplus 37.0.1 → 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 +93 -66
- package/js/lib/danoni_constants.js +13 -6
- 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.0
|
|
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;
|
|
@@ -4605,7 +4606,7 @@ const makeDifList = (_difList, _targetKey = ``) => {
|
|
|
4605
4606
|
});
|
|
4606
4607
|
if (document.getElementById(`lblDifCnt`) === null) {
|
|
4607
4608
|
difCover.appendChild(createDivCss2Label(`lblDifCnt`, ``, {
|
|
4608
|
-
x: 0, y:
|
|
4609
|
+
x: 0, y: 27, w: g_limitObj.difCoverWidth, h: 16, siz: 12, fontWeight: `bold`,
|
|
4609
4610
|
}));
|
|
4610
4611
|
}
|
|
4611
4612
|
lblDifCnt.innerHTML = `${_targetKey === '' ? 'ALL' : _targetKey + 'k'}: ${curk === -1 ? '-' : curk + 1} / ${k}`;
|
|
@@ -4654,7 +4655,7 @@ const createDifWindow = (_key = ``) => {
|
|
|
4654
4655
|
|
|
4655
4656
|
// 全リスト
|
|
4656
4657
|
difCover.appendChild(
|
|
4657
|
-
makeDifLblCssButton(`keyFilter`, `ALL`, 1.
|
|
4658
|
+
makeDifLblCssButton(`keyFilter`, `ALL`, 1.9, _ => {
|
|
4658
4659
|
resetDifWindow();
|
|
4659
4660
|
g_stateObj.filterKeys = ``;
|
|
4660
4661
|
createDifWindow();
|
|
@@ -4739,48 +4740,56 @@ const drawSpeedGraph = _scoreId => {
|
|
|
4739
4740
|
|
|
4740
4741
|
const canvas = document.getElementById(`graphSpeed`);
|
|
4741
4742
|
const context = canvas.getContext(`2d`);
|
|
4742
|
-
|
|
4743
|
+
const [_a, _b] = [-75, 100];
|
|
4744
|
+
const [_min, _max] = [-0.2, 2.2];
|
|
4745
|
+
drawBaseLine(context, { _fixed: 1, _mark: `x`, _a, _b, _min, _max });
|
|
4743
4746
|
|
|
4744
4747
|
const avgX = [0, 0];
|
|
4745
|
-
const avgSubX = [
|
|
4746
|
-
const lineX = [
|
|
4748
|
+
const avgSubX = [0, 0];
|
|
4749
|
+
const lineX = [0, 150], lineY = 208;
|
|
4747
4750
|
Object.keys(speedObj).forEach((speedType, j) => {
|
|
4751
|
+
const frame = speedObj[speedType].frame;
|
|
4752
|
+
const speed = speedObj[speedType].speed;
|
|
4753
|
+
|
|
4748
4754
|
context.beginPath();
|
|
4749
4755
|
let preY;
|
|
4750
|
-
let avgSubFrame =
|
|
4756
|
+
let avgSubFrame = 0;
|
|
4751
4757
|
|
|
4752
|
-
for (let i = 0; i <
|
|
4753
|
-
const x =
|
|
4754
|
-
const y = (
|
|
4758
|
+
for (let i = 0; i < frame.length; i++) {
|
|
4759
|
+
const x = frame[i] * (g_limitObj.graphWidth - 30) / playingFrame + 30;
|
|
4760
|
+
const y = (Math.min(Math.max(speed[i], _min - 0.05), _max + 0.05) - 1) * _a + _b;
|
|
4755
4761
|
|
|
4756
4762
|
context.lineTo(x, preY);
|
|
4757
4763
|
context.lineTo(x, y);
|
|
4758
4764
|
preY = y;
|
|
4759
4765
|
|
|
4760
|
-
const deltaFrame =
|
|
4761
|
-
avgX[j] += deltaFrame * (
|
|
4762
|
-
if ((
|
|
4763
|
-
avgSubFrame
|
|
4764
|
-
|
|
4765
|
-
avgSubX[j] += deltaFrame * (speedObj[speedType].speed[i - 1]);
|
|
4766
|
+
const deltaFrame = frame[i] - (frame[i - 1] ?? startFrame);
|
|
4767
|
+
avgX[j] += deltaFrame * (speed[i - 1] ?? 1);
|
|
4768
|
+
if ((speed[i - 1] ?? 1) !== 1) {
|
|
4769
|
+
avgSubFrame += deltaFrame;
|
|
4770
|
+
avgSubX[j] += deltaFrame * (speed[i - 1]);
|
|
4766
4771
|
}
|
|
4767
4772
|
}
|
|
4768
4773
|
avgX[j] /= playingFrame;
|
|
4769
4774
|
avgSubX[j] /= Math.max(avgSubFrame, 1);
|
|
4770
4775
|
|
|
4771
|
-
context.lineWidth =
|
|
4776
|
+
context.lineWidth = 2;
|
|
4772
4777
|
context.strokeStyle = speedObj[speedType].strokeColor;
|
|
4773
4778
|
context.stroke();
|
|
4774
4779
|
|
|
4775
4780
|
context.beginPath();
|
|
4776
|
-
context.moveTo(lineX[j],
|
|
4777
|
-
context.lineTo(lineX[j] + 25,
|
|
4781
|
+
context.moveTo(lineX[j], lineY);
|
|
4782
|
+
context.lineTo(lineX[j] + 25, lineY);
|
|
4778
4783
|
context.stroke();
|
|
4779
|
-
context.font = `${wUnit(g_limitObj.
|
|
4780
|
-
context.fillText(g_lblNameObj[`s_${speedType}`], lineX[j] + 30,
|
|
4781
|
-
|
|
4784
|
+
context.font = `${wUnit(g_limitObj.mainSiz)} ${getBasicFont()}`;
|
|
4785
|
+
context.fillText(g_lblNameObj[`s_${speedType}`], lineX[j] + 30, lineY + 3);
|
|
4786
|
+
|
|
4787
|
+
const maxSpeed = Math.max(...speed);
|
|
4788
|
+
const minSpeed = Math.min(...speed);
|
|
4789
|
+
context.font = `${wUnit(g_limitObj.graphMiniSiz)} ${getBasicFont()}`;
|
|
4790
|
+
context.fillText(`(${minSpeed.toFixed(2)}x` + (minSpeed === maxSpeed ? `` : ` -- ${Math.max(...speed).toFixed(2)}x`) + `)`, lineX[j] + 30, lineY + 16);
|
|
4791
|
+
context.fillText(`Avg. ` + (avgX[j] === 1 ? `----` : `${(avgSubX[j]).toFixed(2)}x`), lineX[j] + 30, lineY + 29);
|
|
4782
4792
|
updateScoreDetailLabel(`Speed`, `${speedType}S`, speedObj[speedType].cnt, j, g_lblNameObj[`s_${speedType}`]);
|
|
4783
|
-
updateScoreDetailLabel(`Speed`, `avgD${speedType}`, avgSubX[j] === 1 ? `----` : `${(avgSubX[j]).toFixed(2)}x`, j + 4, g_lblNameObj[`s_avgD${speedType}`]);
|
|
4784
4793
|
});
|
|
4785
4794
|
updateScoreDetailLabel(`Speed`, `avgS`, `${(avgX[0] * avgX[1]).toFixed(2)}x`, 2, g_lblNameObj.s_avg);
|
|
4786
4795
|
};
|
|
@@ -4855,13 +4864,16 @@ const updateScoreDetailLabel = (_name, _label, _value, _pos = 0, _labelname = _l
|
|
|
4855
4864
|
* @param {object} _context
|
|
4856
4865
|
* @param {number} _resolution
|
|
4857
4866
|
*/
|
|
4858
|
-
const drawBaseLine = (_context, _resolution = 10) => {
|
|
4867
|
+
const drawBaseLine = (_context, { _fixed = 2, _mark = ``, _resolution = 10, _a = -90, _b = 105, _min = 0, _max = 2 } = {}) => {
|
|
4859
4868
|
_context.clearRect(0, 0, g_limitObj.graphWidth, g_limitObj.graphHeight);
|
|
4860
4869
|
|
|
4861
|
-
for (let j =
|
|
4862
|
-
|
|
4863
|
-
|
|
4864
|
-
|
|
4870
|
+
for (let j = _min * _resolution; j <= _max * _resolution; j += 5) {
|
|
4871
|
+
for (let k = 0; k < 5; k++) {
|
|
4872
|
+
if ((j + k) % 5 === 0) {
|
|
4873
|
+
drawLine(_context, (j + k) / _resolution, `main`, { _fixed, _mark, _a, _b });
|
|
4874
|
+
} else {
|
|
4875
|
+
drawLine(_context, (j + k) / _resolution, `sub`, { _fixed, _mark, _a, _b });
|
|
4876
|
+
}
|
|
4865
4877
|
}
|
|
4866
4878
|
}
|
|
4867
4879
|
};
|
|
@@ -4873,8 +4885,8 @@ const drawBaseLine = (_context, _resolution = 10) => {
|
|
|
4873
4885
|
* @param {string} _lineType
|
|
4874
4886
|
* @param {number} _fixed
|
|
4875
4887
|
*/
|
|
4876
|
-
const drawLine = (_context, _y, _lineType, _fixed =
|
|
4877
|
-
const lineY = (_y - 1) *
|
|
4888
|
+
const drawLine = (_context, _y, _lineType, { _fixed, _mark, _a, _b } = {}) => {
|
|
4889
|
+
const lineY = (_y - 1) * _a + _b;
|
|
4878
4890
|
_context.beginPath();
|
|
4879
4891
|
_context.moveTo(30, lineY);
|
|
4880
4892
|
_context.lineTo(g_limitObj.graphWidth, lineY);
|
|
@@ -4886,7 +4898,7 @@ const drawLine = (_context, _y, _lineType, _fixed = 0) => {
|
|
|
4886
4898
|
_context.strokeStyle = textColor;
|
|
4887
4899
|
_context.font = `${wUnit(12)} ${getBasicFont()}`;
|
|
4888
4900
|
_context.fillStyle = textColor;
|
|
4889
|
-
_context.fillText(_y.toFixed(_fixed),
|
|
4901
|
+
_context.fillText(_y.toFixed(_fixed) + _mark, 2, lineY + 4);
|
|
4890
4902
|
} else {
|
|
4891
4903
|
_context.strokeStyle = `#646464`;
|
|
4892
4904
|
}
|
|
@@ -5515,7 +5527,6 @@ const createOptionWindow = _sprite => {
|
|
|
5515
5527
|
// 縦位置: 5.5
|
|
5516
5528
|
createGeneralSetting(spriteList.shuffle, `shuffle`, g_settings.scoreDetails.length > 0 ? {
|
|
5517
5529
|
addRFunc: _ => makeHighScore(g_stateObj.scoreId),
|
|
5518
|
-
addLFunc: _ => makeHighScore(g_stateObj.scoreId),
|
|
5519
5530
|
} : {});
|
|
5520
5531
|
|
|
5521
5532
|
// ---------------------------------------------------
|
|
@@ -5523,7 +5534,6 @@ const createOptionWindow = _sprite => {
|
|
|
5523
5534
|
// 縦位置: 6.5
|
|
5524
5535
|
createGeneralSetting(spriteList.autoPlay, `autoPlay`, g_settings.scoreDetails.length > 0 ? {
|
|
5525
5536
|
addRFunc: _ => makeHighScore(g_stateObj.scoreId),
|
|
5526
|
-
addLFunc: _ => makeHighScore(g_stateObj.scoreId),
|
|
5527
5537
|
} : {});
|
|
5528
5538
|
|
|
5529
5539
|
// ---------------------------------------------------
|
|
@@ -5567,9 +5577,22 @@ const createOptionWindow = _sprite => {
|
|
|
5567
5577
|
// 縦位置: 10.5 短縮ショートカットあり
|
|
5568
5578
|
createGeneralSetting(spriteList.adjustment, `adjustment`, {
|
|
5569
5579
|
skipTerms: g_settings.adjustmentTerms, hiddenBtn: true, scLabel: g_lblNameObj.sc_adjustment, roundNum: 5,
|
|
5570
|
-
unitName: g_lblNameObj.frame,
|
|
5580
|
+
unitName: g_lblNameObj.frame, addRFunc: _ => viewAdjustment(),
|
|
5571
5581
|
});
|
|
5572
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
|
+
|
|
5573
5596
|
// ---------------------------------------------------
|
|
5574
5597
|
// フェードイン (Fadein)
|
|
5575
5598
|
// 縦位置: 11.5 スライダーあり
|
|
@@ -5624,7 +5647,7 @@ const createOptionWindow = _sprite => {
|
|
|
5624
5647
|
* @param {object} _options
|
|
5625
5648
|
*/
|
|
5626
5649
|
const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
5627
|
-
skipTerms = fillArray(3, 1), hiddenBtn = false, addRFunc = _ => { }, addLFunc =
|
|
5650
|
+
skipTerms = fillArray(3, 1), hiddenBtn = false, addRFunc = _ => { }, addLFunc = addRFunc,
|
|
5628
5651
|
settingLabel = _settingName, displayName = g_currentPage, scLabel = ``, roundNum = 0, adjY = 0 } = {}) => {
|
|
5629
5652
|
|
|
5630
5653
|
const settingUpper = toCapitalize(_settingName);
|
|
@@ -5637,47 +5660,47 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
|
5637
5660
|
multiAppend(_obj,
|
|
5638
5661
|
makeSettingLblCssButton(linkId, `${initName}${g_localStorage[_settingName] === g_stateObj[_settingName] ? ' *' : ''}`, 0,
|
|
5639
5662
|
_ => {
|
|
5640
|
-
setSetting(skipTerms[1], _settingName, unitName, roundNum);
|
|
5641
|
-
addRFunc();
|
|
5663
|
+
setSetting(skipTerms[1], _settingName, unitName, roundNum, { func: _ => addRFunc() });
|
|
5642
5664
|
}, {
|
|
5643
5665
|
cxtFunc: _ => {
|
|
5644
|
-
setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum);
|
|
5645
|
-
addLFunc();
|
|
5666
|
+
setSetting(skipTerms[1] * (-1), _settingName, unitName, roundNum, { func: _ => addLFunc() });
|
|
5646
5667
|
}
|
|
5647
5668
|
}),
|
|
5648
5669
|
|
|
5649
5670
|
// 右回し・左回しボタン(外側)
|
|
5650
|
-
makeMiniCssButton(linkId, `R`, 0, _ =>
|
|
5651
|
-
setSetting(skipTerms[0], _settingName, unitName, roundNum)
|
|
5652
|
-
|
|
5653
|
-
|
|
5654
|
-
makeMiniCssButton(linkId, `L`, 0, _ => {
|
|
5655
|
-
setSetting(skipTerms[0] * (-1), _settingName, unitName, roundNum);
|
|
5656
|
-
addLFunc();
|
|
5657
|
-
}),
|
|
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() })),
|
|
5658
5675
|
);
|
|
5659
5676
|
|
|
5660
5677
|
// 右回し・左回しボタン(内側)
|
|
5661
5678
|
if (skipTerms[1] > 1) {
|
|
5662
5679
|
multiAppend(_obj,
|
|
5663
|
-
makeMiniCssButton(linkId, `RR`, 0, _ =>
|
|
5664
|
-
|
|
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() })),
|
|
5665
5684
|
);
|
|
5666
5685
|
}
|
|
5667
5686
|
|
|
5668
5687
|
// 右回し・左回しボタン(最内側)
|
|
5669
5688
|
if (skipTerms[2] > 1) {
|
|
5670
5689
|
multiAppend(_obj,
|
|
5671
|
-
makeMiniCssButton(linkId, `RRR`, 0, _ =>
|
|
5672
|
-
|
|
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 }),
|
|
5673
5696
|
);
|
|
5674
5697
|
}
|
|
5675
5698
|
|
|
5676
5699
|
// 右回し・左回しボタン(不可視)
|
|
5677
5700
|
if (hiddenBtn) {
|
|
5678
5701
|
multiAppend(_obj,
|
|
5679
|
-
makeMiniCssButton(linkId, `HR`, 0, _ => setSetting(1, _settingName, unitName, roundNum), { visibility: `hidden` }),
|
|
5680
|
-
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` }),
|
|
5681
5704
|
);
|
|
5682
5705
|
}
|
|
5683
5706
|
|
|
@@ -5720,7 +5743,7 @@ const getStgDetailName = _name => {
|
|
|
5720
5743
|
* @param {string} _unitName
|
|
5721
5744
|
* @param {number} _roundNum
|
|
5722
5745
|
*/
|
|
5723
|
-
const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0) => {
|
|
5746
|
+
const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0, { func = _ => true } = {}) => {
|
|
5724
5747
|
let settingNum = g_settings[`${_settingName}Num`];
|
|
5725
5748
|
const settingList = g_settings[`${_settingName}s`];
|
|
5726
5749
|
const settingMax = settingList.length - 1;
|
|
@@ -5741,6 +5764,7 @@ const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0) =>
|
|
|
5741
5764
|
g_settings[`${_settingName}Num`] = settingNum;
|
|
5742
5765
|
document.getElementById(`lnk${toCapitalize(_settingName)}`).textContent =
|
|
5743
5766
|
`${getStgDetailName(g_stateObj[_settingName])}${_unitName}${g_localStorage[_settingName] === g_stateObj[_settingName] ? ' *' : ''}`;
|
|
5767
|
+
func();
|
|
5744
5768
|
};
|
|
5745
5769
|
|
|
5746
5770
|
/**
|
|
@@ -6240,7 +6264,6 @@ const createSettingsDisplayWindow = _sprite => {
|
|
|
6240
6264
|
// 縦位置: 7.4
|
|
6241
6265
|
createGeneralSetting(spriteList.appearance, `appearance`, {
|
|
6242
6266
|
addRFunc: _ => dispAppearanceSlider(),
|
|
6243
|
-
addLFunc: _ => dispAppearanceSlider(),
|
|
6244
6267
|
});
|
|
6245
6268
|
|
|
6246
6269
|
// Hidden+/Sudden+初期値用スライダー、ロックボタン
|
|
@@ -7740,10 +7763,11 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
7740
7763
|
obj.dummyArrowData = [];
|
|
7741
7764
|
obj.dummyFrzData = [];
|
|
7742
7765
|
|
|
7743
|
-
// realAdjustment: 全体, intAdjustment: 整数値のみ(
|
|
7766
|
+
// realAdjustment: 全体, intAdjustment: 整数値のみ(切り捨て、ファイル時のみ四捨五入), decimalAdjustment: 小数値のみ
|
|
7744
7767
|
const headerAdjustment = parseFloat(g_headerObj.adjustment[g_stateObj.scoreId] || g_headerObj.adjustment[0]);
|
|
7745
|
-
g_stateObj.realAdjustment = parseFloat(g_stateObj.adjustment) + headerAdjustment + _preblankFrame;
|
|
7746
|
-
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);
|
|
7747
7771
|
g_stateObj.decimalAdjustment = g_stateObj.realAdjustment - g_stateObj.intAdjustment;
|
|
7748
7772
|
|
|
7749
7773
|
const blankFrame = g_headerObj.blankFrame;
|
|
@@ -9393,7 +9417,8 @@ const mainInit = _ => {
|
|
|
9393
9417
|
}
|
|
9394
9418
|
|
|
9395
9419
|
// 曲名・アーティスト名、譜面名表示
|
|
9396
|
-
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;
|
|
9397
9422
|
const artistName = g_headerObj.artistNames[g_headerObj.musicNos[g_stateObj.scoreId]] || g_headerObj.artistName;
|
|
9398
9423
|
const assistFlg = (g_autoPlaysBase.includes(g_stateObj.autoPlay) ? `` : `-${getStgDetailName(g_stateObj.autoPlay)}${getStgDetailName('less')}`);
|
|
9399
9424
|
const shuffleName = (g_stateObj.shuffle !== C_FLG_OFF ? `: ${getStgDetailName(g_stateObj.shuffle)}` : ``);
|
|
@@ -11058,7 +11083,7 @@ const resultInit = _ => {
|
|
|
11058
11083
|
return result;
|
|
11059
11084
|
};
|
|
11060
11085
|
const bayesExVal = 6 * bayesFunc(0, diffLength) / (diffLength * (diffLength + 1) * (diffLength + 2));
|
|
11061
|
-
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);
|
|
11062
11087
|
|
|
11063
11088
|
// 背景スプライトを作成
|
|
11064
11089
|
createMultipleSprite(`backResultSprite`, g_headerObj.backResultMaxDepth);
|
|
@@ -11103,12 +11128,13 @@ const resultInit = _ => {
|
|
|
11103
11128
|
}
|
|
11104
11129
|
|
|
11105
11130
|
// 曲名・オプション描画
|
|
11106
|
-
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;
|
|
11107
11133
|
|
|
11108
|
-
const mTitleForView = [g_headerObj.musicTitleForView[0], g_headerObj.musicTitleForView[1] || ``];
|
|
11134
|
+
const mTitleForView = [g_headerObj.musicTitleForView[0], (g_headerObj.musicTitleForView[1] || ``) + playbackView];
|
|
11109
11135
|
if (g_headerObj.musicTitlesForView[g_headerObj.musicNos[g_stateObj.scoreId]] !== undefined) {
|
|
11110
11136
|
mTitleForView.forEach((mTitle, j) =>
|
|
11111
|
-
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 : ``));
|
|
11112
11138
|
}
|
|
11113
11139
|
|
|
11114
11140
|
const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
|
|
@@ -11274,7 +11300,8 @@ const resultInit = _ => {
|
|
|
11274
11300
|
maxCombo: 0, fmaxCombo: 0, score: 0,
|
|
11275
11301
|
};
|
|
11276
11302
|
|
|
11277
|
-
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)));
|
|
11278
11305
|
if (highscoreCondition) {
|
|
11279
11306
|
|
|
11280
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,
|
|
@@ -67,7 +72,8 @@ const g_limitObj = {
|
|
|
67
72
|
|
|
68
73
|
// グラフ表示部分の幅、高さ
|
|
69
74
|
graphWidth: 286,
|
|
70
|
-
graphHeight:
|
|
75
|
+
graphHeight: 240,
|
|
76
|
+
graphMiniSiz: 12,
|
|
71
77
|
|
|
72
78
|
// その他のフォントサイズ
|
|
73
79
|
titleSiz: 32,
|
|
@@ -158,11 +164,11 @@ const g_lblPosObj = {};
|
|
|
158
164
|
const updateWindowSiz = _ => {
|
|
159
165
|
Object.assign(g_windowObj, {
|
|
160
166
|
optionSprite: { x: (g_sWidth - 450) / 2, y: 65, w: 450, h: 325 },
|
|
161
|
-
difList: { x: 165, y: 60, w: 280, h:
|
|
162
|
-
difCover: { x: 20, y: 60, w: 145, h:
|
|
163
|
-
difFilter: { x: 0, y:
|
|
167
|
+
difList: { x: 165, y: 60, w: 280, h: 270 + g_sHeight - 500, overflow: `auto` },
|
|
168
|
+
difCover: { x: 20, y: 60, w: 145, h: 270 + g_sHeight - 500, opacity: 0.95 },
|
|
169
|
+
difFilter: { x: 0, y: 66, w: 140, h: 204 + g_sHeight - 500, overflow: `auto` },
|
|
164
170
|
displaySprite: { x: 25, y: 30, w: (g_sWidth - 450) / 2, h: g_limitObj.setLblHeight * 5 },
|
|
165
|
-
scoreDetail: { x: 20, y: 85, w: (g_sWidth - 500) / 2 + 420, h:
|
|
171
|
+
scoreDetail: { x: 20, y: 85, w: (g_sWidth - 500) / 2 + 420, h: 245, visibility: `hidden` },
|
|
166
172
|
detailObj: { w: (g_sWidth - 500) / 2 + 420, h: 230, visibility: `hidden` },
|
|
167
173
|
keyconSprite: { y: 105, h: g_sHeight - 105, overflow: `auto` },
|
|
168
174
|
loader: { y: g_sHeight - 10, h: 10, backgroundColor: `#333333` },
|
|
@@ -1589,6 +1595,7 @@ const g_shortcutObj = {
|
|
|
1589
1595
|
ShiftLeft_KeyA: { id: `lnkAppearanceL` },
|
|
1590
1596
|
ShiftRight_KeyA: { id: `lnkAppearanceL` },
|
|
1591
1597
|
KeyA: { id: `lnkAppearanceR` },
|
|
1598
|
+
KeyL: { id: `lnkLockBtn` },
|
|
1592
1599
|
ShiftLeft_KeyO: { id: `lnkOpacityL` },
|
|
1593
1600
|
ShiftRight_KeyO: { id: `lnkOpacityL` },
|
|
1594
1601
|
KeyO: { id: `lnkOpacityR` },
|