danoniplus 47.4.0 → 47.4.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 +30 -23
- package/js/lib/danoni_constants.js +11 -9
- 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/04/
|
|
7
|
+
* Revised : 2026/04/29
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 47.4.
|
|
12
|
-
const g_revisedDate = `2026/04/
|
|
11
|
+
const g_version = `Ver 47.4.1`;
|
|
12
|
+
const g_revisedDate = `2026/04/29`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -3385,17 +3385,15 @@ const storeBaseData = (_scoreId, _scoreObj, _keyCtrlPtn) => {
|
|
|
3385
3385
|
mmWidthBase: (g_sWidth - 500) / 2 + 290,
|
|
3386
3386
|
mmMarginY: 2,
|
|
3387
3387
|
get laneWidth() {
|
|
3388
|
-
return Math.min(
|
|
3388
|
+
return Math.min((this.mmWidthBase - this.timeMargin) / keyNum, 40);
|
|
3389
3389
|
},
|
|
3390
3390
|
get logicalWidth() {
|
|
3391
|
-
|
|
3391
|
+
const logicalWidth = this.timeMargin + (this.laneWidth * keyNum);
|
|
3392
|
+
return Math.ceil(logicalWidth * this.dpr) / this.dpr;
|
|
3392
3393
|
}
|
|
3393
3394
|
},
|
|
3394
3395
|
};
|
|
3395
3396
|
|
|
3396
|
-
// ヘッダー生成
|
|
3397
|
-
g_detailObj.scoreMinimapHeader[_scoreId] = createMinimapHeader(g_detailObj.miniMapParams[_scoreId].config, _keyCtrlPtn, keyNum);
|
|
3398
|
-
|
|
3399
3397
|
// Canvas保存用配列を空で初期化
|
|
3400
3398
|
g_detailObj.scoreMinimap[_scoreId] = null;
|
|
3401
3399
|
g_detailObj.scoreMinimapReverse[_scoreId] = null;
|
|
@@ -3510,7 +3508,7 @@ const createMinimapHeader = (_config, _keyCtrlPtn, _keyNum) => {
|
|
|
3510
3508
|
for (let j = 0; j < _keyNum; j++) {
|
|
3511
3509
|
// config.laneWidth を使って中央座標を計算
|
|
3512
3510
|
const x = timeMargin + j * laneWidth + laneWidth / 2;
|
|
3513
|
-
const keyText = g_kCd[g_keyObj[`keyCtrl${_keyCtrlPtn}`][j][0]];
|
|
3511
|
+
const keyText = g_kCd[g_keyObj[`keyCtrl${_keyCtrlPtn}`][j][0]].split(` `).join(``);
|
|
3514
3512
|
|
|
3515
3513
|
ctx.fillText(keyText, x, headerHeight / 2 + 2); // 視覚的な中央調整で +2px
|
|
3516
3514
|
}
|
|
@@ -7290,7 +7288,6 @@ const drawSpeedGraph = _scoreId => {
|
|
|
7290
7288
|
speed: { frame: [0], speed: [1], cnt: 0, strokeColor: g_graphColorObj.speed },
|
|
7291
7289
|
boost: { frame: [0], speed: [1], cnt: 0, strokeColor: g_graphColorObj.boost }
|
|
7292
7290
|
};
|
|
7293
|
-
const dpr = window.devicePixelRatio || 1;
|
|
7294
7291
|
|
|
7295
7292
|
const tmpSpeedPoint = [0];
|
|
7296
7293
|
Object.keys(speedObj).forEach(speedType => {
|
|
@@ -7509,7 +7506,7 @@ const updateScoreDetailLabel = (_name, _label, _value, _pos = 0, _labelname = _l
|
|
|
7509
7506
|
const baseLabel = (_bLabel, _bLabelname, _bAlign) =>
|
|
7510
7507
|
document.getElementById(`detail${_name}`).appendChild(
|
|
7511
7508
|
createDivCss2Label(_bLabel, _bLabelname, {
|
|
7512
|
-
x: 10, y:
|
|
7509
|
+
x: 10, y: 130 + _pos * 16, w: 100, h: 16, siz: g_limitObj.difSelectorSiz, align: _bAlign,
|
|
7513
7510
|
})
|
|
7514
7511
|
);
|
|
7515
7512
|
if (document.getElementById(`data${_label}`) === null) {
|
|
@@ -7880,9 +7877,14 @@ const drawMinimap = (_scoreId, { _initFlg = false, _fadeinFlg = false } = {}) =>
|
|
|
7880
7877
|
? g_detailObj.scoreMinimapReverse[_scoreId]
|
|
7881
7878
|
: g_detailObj.scoreMinimap[_scoreId];
|
|
7882
7879
|
|
|
7880
|
+
const params = g_detailObj.miniMapParams[_scoreId];
|
|
7881
|
+
const kPtn = params._keyCtrlPtn;
|
|
7882
|
+
if (!g_detailObj.scoreMinimapHeader[kPtn]) {
|
|
7883
|
+
// ヘッダーはキー種ごとに共通なので、未作成の場合のみ生成してキャッシュ
|
|
7884
|
+
g_detailObj.scoreMinimapHeader[kPtn] = createMinimapHeader(params.config, kPtn, params._keyNum);
|
|
7885
|
+
}
|
|
7883
7886
|
if (!savedCanvases) {
|
|
7884
7887
|
// 未作成の場合のみミニマップを生成(Lazy Generation)
|
|
7885
|
-
const params = g_detailObj.miniMapParams[_scoreId];
|
|
7886
7888
|
savedCanvases = generateMinimapData(params, isRev);
|
|
7887
7889
|
|
|
7888
7890
|
// 生成したものをキャッシュに保存
|
|
@@ -7896,7 +7898,7 @@ const drawMinimap = (_scoreId, { _initFlg = false, _fadeinFlg = false } = {}) =>
|
|
|
7896
7898
|
// --- ヘッダー部分 ---
|
|
7897
7899
|
const detailMiniMapHeader = createEmptySprite(detailMiniMap, `detailMiniMapHeader`, g_windowObj.detailMiniMapHeader);
|
|
7898
7900
|
$id(`detailMiniMapHeader`).top = (g_stateObj.miniMapRevFlg ? 230 + g_sHeight - 500 : 0) + `px`;
|
|
7899
|
-
detailMiniMapHeader.appendChild(g_detailObj.scoreMinimapHeader[
|
|
7901
|
+
detailMiniMapHeader.appendChild(g_detailObj.scoreMinimapHeader[kPtn]);
|
|
7900
7902
|
|
|
7901
7903
|
// --- メイン(譜面)部分 ---
|
|
7902
7904
|
const detailMiniMapSub = createEmptySprite(detailMiniMap, `detailMiniMapSub`, g_windowObj.detailMiniMapSub);
|
|
@@ -8243,7 +8245,6 @@ const createOptionWindow = _sprite => {
|
|
|
8243
8245
|
graphObj.style.top = wUnit(0);
|
|
8244
8246
|
graphObj.style.position = `absolute`;
|
|
8245
8247
|
graphObj.style.background = j === 0 ? bkColor : `#ffffff00`;
|
|
8246
|
-
graphObj.style.border = `dotted ${wUnit(2)}`;
|
|
8247
8248
|
const ctx = graphObj.getContext(`2d`);
|
|
8248
8249
|
ctx.scale(dpr, dpr);
|
|
8249
8250
|
|
|
@@ -12956,7 +12957,6 @@ const mainInit = () => {
|
|
|
12956
12957
|
const dummyArrowCnts = fillArray(keyNum);
|
|
12957
12958
|
const dummyFrzCnts = fillArray(keyNum);
|
|
12958
12959
|
let speedCnts = 0;
|
|
12959
|
-
let boostCnts = 0;
|
|
12960
12960
|
let keychCnts = 0;
|
|
12961
12961
|
|
|
12962
12962
|
g_workObj.flatMode = g_stateObj.d_stepzone === `FlatBar` ||
|
|
@@ -13557,6 +13557,10 @@ const mainInit = () => {
|
|
|
13557
13557
|
}
|
|
13558
13558
|
},
|
|
13559
13559
|
|
|
13560
|
+
get dummyArrowON() {
|
|
13561
|
+
return this.dummyArrowOFF;
|
|
13562
|
+
},
|
|
13563
|
+
|
|
13560
13564
|
// フリーズアロー(成功時)
|
|
13561
13565
|
frzOK: (_j, _k, _frzName, _cnt) => {
|
|
13562
13566
|
judgeKita(_cnt);
|
|
@@ -13600,10 +13604,11 @@ const mainInit = () => {
|
|
|
13600
13604
|
|
|
13601
13605
|
// ダミーフリーズアロー(キーを離したときの処理)
|
|
13602
13606
|
// ※処理上通ることはないが、統一のために定義
|
|
13603
|
-
dummyFrzKeyUp
|
|
13607
|
+
get dummyFrzKeyUp() {
|
|
13608
|
+
return this.dummyFrzNG;
|
|
13609
|
+
}
|
|
13604
13610
|
|
|
13605
13611
|
};
|
|
13606
|
-
judgeMotionFunc.dummyArrowON = (_j, _arrowName, _cnt) => judgeMotionFunc.dummyArrowOFF(_j, _arrowName, _cnt);
|
|
13607
13612
|
|
|
13608
13613
|
/**
|
|
13609
13614
|
* 次矢印・フリーズアローへ判定を移すかチェック
|
|
@@ -13641,8 +13646,12 @@ const mainInit = () => {
|
|
|
13641
13646
|
},
|
|
13642
13647
|
|
|
13643
13648
|
arrowON: (_j, _k, _cnt) => true,
|
|
13644
|
-
dummyArrowOFF
|
|
13645
|
-
|
|
13649
|
+
get dummyArrowOFF() {
|
|
13650
|
+
return this.arrowON;
|
|
13651
|
+
},
|
|
13652
|
+
get dummyArrowON() {
|
|
13653
|
+
return this.arrowON;
|
|
13654
|
+
},
|
|
13646
13655
|
|
|
13647
13656
|
frzOFF: (_j, _k, _cnt) => {
|
|
13648
13657
|
|
|
@@ -13682,10 +13691,8 @@ const mainInit = () => {
|
|
|
13682
13691
|
changeHitFrz(_j, _k, `dummyFrz`);
|
|
13683
13692
|
}
|
|
13684
13693
|
},
|
|
13685
|
-
dummyFrzON
|
|
13686
|
-
|
|
13687
|
-
changeHitFrz(_j, _k, `dummyFrz`);
|
|
13688
|
-
}
|
|
13694
|
+
get dummyFrzON() {
|
|
13695
|
+
return this.dummyFrzOFF;
|
|
13689
13696
|
},
|
|
13690
13697
|
};
|
|
13691
13698
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2026/04/
|
|
8
|
+
* Revised : 2026/04/29 (v47.4.1)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -489,31 +489,31 @@ const updateWindowSiz = () => {
|
|
|
489
489
|
x: 290, y: 145, w: 120, h: 20, siz: 50, align: C_ALIGN_CENTER,
|
|
490
490
|
},
|
|
491
491
|
lblSpdHeader: {
|
|
492
|
-
x: 5, y:
|
|
492
|
+
x: 5, y: 190, w: 100, h: 20, siz: g_limitObj.difSelectorSiz, align: C_ALIGN_LEFT,
|
|
493
493
|
},
|
|
494
494
|
lblSpdBase: {
|
|
495
|
-
x: 0, y:
|
|
495
|
+
x: 0, y: 210, w: 40, h: 20, siz: 11.5, fontWeight: `bold`,
|
|
496
496
|
},
|
|
497
497
|
lblSpdOverall: {
|
|
498
|
-
x: 40, y:
|
|
498
|
+
x: 40, y: 210, w: 40, h: 20, siz: 11.5,
|
|
499
499
|
color: g_graphColorObj.speedChara, fontWeight: `bold`,
|
|
500
500
|
},
|
|
501
501
|
lblSpdBoost: {
|
|
502
|
-
x: 80, y:
|
|
502
|
+
x: 80, y: 210, w: 40, h: 20, siz: 11.5,
|
|
503
503
|
color: g_graphColorObj.boostChara, fontWeight: `bold`,
|
|
504
504
|
},
|
|
505
505
|
lblSpdTotal: {
|
|
506
|
-
x: 5, y:
|
|
506
|
+
x: 5, y: 225, w: 100, h: 20, siz: g_limitObj.difSelectorSiz,
|
|
507
507
|
align: C_ALIGN_LEFT, fontWeight: `bold`,
|
|
508
508
|
},
|
|
509
509
|
lblSpdFrame: {
|
|
510
|
-
x: 70, y:
|
|
510
|
+
x: 70, y: 228, w: 50, h: 20, siz: 12, fontWeight: `bold`,
|
|
511
511
|
},
|
|
512
512
|
btnSpdCursorL: {
|
|
513
|
-
x: 85, y:
|
|
513
|
+
x: 85, y: 190, w: 15, h: 20, siz: 12,
|
|
514
514
|
},
|
|
515
515
|
btnSpdCursorR: {
|
|
516
|
-
x: 100, y:
|
|
516
|
+
x: 100, y: 190, w: 15, h: 20, siz: 12,
|
|
517
517
|
},
|
|
518
518
|
lnkMiniMapRev: {
|
|
519
519
|
w: g_limitObj.difCoverWidth, h: 20, borderStyle: `solid`,
|
|
@@ -4844,6 +4844,7 @@ const g_lang_msgObj = {
|
|
|
4844
4844
|
lnkDensityG: `譜面の密度状況を表示`,
|
|
4845
4845
|
lnkToolDifG: `譜面の難易度、矢印・フリーズアローの分布状況を表示`,
|
|
4846
4846
|
lnkHighScoreG: `譜面のハイスコアを表示`,
|
|
4847
|
+
lnkMiniMapG: `譜面内容をミニマップで表示`,
|
|
4847
4848
|
lnkDifInfo: `譜面の難易度、矢印・フリーズアローの分布状況をクリップボードへコピー`,
|
|
4848
4849
|
lnkResetHighScore: `譜面のハイスコア情報を消去`,
|
|
4849
4850
|
lnkHighScore: `譜面のハイスコアをクリップボードへコピー`,
|
|
@@ -4944,6 +4945,7 @@ const g_lang_msgObj = {
|
|
|
4944
4945
|
lnkDensityG: `Displays the density status of the chart.`,
|
|
4945
4946
|
lnkToolDifG: `Displays the difficulty level of the chart and the distribution of arrows and freeze arrows.`,
|
|
4946
4947
|
lnkHighScoreG: `Displays the high score of the chart.`,
|
|
4948
|
+
lnkMiniMapG: `Display chart on the minimap.`,
|
|
4947
4949
|
lnkDifInfo: `Copy the difficulty of the chart and the distribution of arrows and freeze arrows to the clipboard.`,
|
|
4948
4950
|
lnkResetHighScore: `Erase the high score information in the chart.`,
|
|
4949
4951
|
lnkHighScore: `Copies the high score of the chart to the clipboard.`,
|