danoniplus 51.4.0 → 51.4.2
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 +3 -3
- package/js/lib/danoni_constants.js +6 -5
- package/js/lib/dataLoader.js +2 -1
- package/js/lib/mainWindow.js +34 -41
- 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/10/
|
|
7
|
+
* Revised : 2026/10/24
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 51.4.
|
|
12
|
-
const g_revisedDate = `2026/10/
|
|
11
|
+
const g_version = `Ver 51.4.2`;
|
|
12
|
+
const g_revisedDate = `2026/10/24`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2026/10/
|
|
8
|
+
* Revised : 2026/10/24 (v51.4.2)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -207,7 +207,7 @@ const updateWindowSiz = () => {
|
|
|
207
207
|
keyTitleSprite: { x: g_btnX(1 / 4), y: g_sHeight / 2 - 5, w: g_btnWidth(1 / 2), h: 16 },
|
|
208
208
|
mSelectTitleSprite: { x: g_btnX(), y: 0, w: g_btnWidth(), h: g_sHeight, clipPath: `inset(12% 0 8% 0)` },
|
|
209
209
|
settingSumSprite: { x: g_btnX() + 25, y: g_sHeight - 200, w: g_btnWidth() - 50, h: 100, pointerEvents: C_DIS_AUTO, overflow: C_DIS_AUTO },
|
|
210
|
-
optionSprite: { x: (g_sWidth - 450) / 2, y: 65, w:
|
|
210
|
+
optionSprite: { x: (g_sWidth - 450) / 2, y: 65, w: g_sWidth / 2 + 225, h: 325 },
|
|
211
211
|
dataSprite: { x: g_btnX() + (g_sWidth - Math.max(g_sWidth - 100, 450)) / 2, y: 65, w: Math.max(g_sWidth - 100, 450), h: 325 },
|
|
212
212
|
keyListSprite: { x: 0, y: g_limitObj.setLblHeight * 7.5 + 40, w: 150, h: g_sHeight - 380, overflow: C_DIS_AUTO },
|
|
213
213
|
difList: { x: 165, y: 60, w: 280, h: 270 + g_sHeight - 500, overflow: C_DIS_AUTO, pointerEvents: C_DIS_AUTO },
|
|
@@ -1595,17 +1595,18 @@ const g_transPriority = {
|
|
|
1595
1595
|
*/
|
|
1596
1596
|
const joinTransforms = _transformMap => {
|
|
1597
1597
|
if (_transformMap.size === 1) {
|
|
1598
|
-
return _transformMap.values().next().value.transform
|
|
1598
|
+
return _transformMap.values().next().value.transform ?? ``;
|
|
1599
1599
|
}
|
|
1600
1600
|
if (_transformMap.size === 2) {
|
|
1601
1601
|
const it = _transformMap.values();
|
|
1602
1602
|
const a = it.next().value;
|
|
1603
1603
|
const b = it.next().value;
|
|
1604
|
-
|
|
1604
|
+
const [ta, tb] = [a.transform ?? ``, b.transform ?? ``];
|
|
1605
|
+
return b.priority > a.priority ? `${tb} ${ta}` : `${ta} ${tb}`;
|
|
1605
1606
|
}
|
|
1606
1607
|
return Array.from(_transformMap.values())
|
|
1607
1608
|
.sort((a, b) => b.priority - a.priority)
|
|
1608
|
-
.map(v => v.transform)
|
|
1609
|
+
.map(v => v.transform ?? ``)
|
|
1609
1610
|
.join(` `);
|
|
1610
1611
|
};
|
|
1611
1612
|
|
package/js/lib/dataLoader.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2026/09/13
|
|
8
|
-
* Revised : 2026/10/
|
|
8
|
+
* Revised : 2026/10/20 (v51.4.1)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -2466,6 +2466,7 @@ const getArrowSettings = (_retryFlg = false) => {
|
|
|
2466
2466
|
|
|
2467
2467
|
// FrzReturnの初期化
|
|
2468
2468
|
g_workObj.frzReturnFlg = false;
|
|
2469
|
+
g_workObj.frzReturnPausedFlg = false;
|
|
2469
2470
|
g_workObj.frzReturnSeq = g_frzReturnSeqFunc.get(g_stateObj.frzReturnType)();
|
|
2470
2471
|
if (g_workObj.frzReturnTimerId) {
|
|
2471
2472
|
g_timerHandler.clearTimeout(g_workObj.frzReturnTimerId);
|
package/js/lib/mainWindow.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2026/09/13
|
|
8
|
-
* Revised : 2026/10/
|
|
8
|
+
* Revised : 2026/10/24 (v51.4.2)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -106,8 +106,10 @@ const mainInit = () => {
|
|
|
106
106
|
// レイヤーごとのTransition設定
|
|
107
107
|
// StepAreaオプションにより、レイヤーが倍化される場合があるため基準レイヤー数ごとに設定
|
|
108
108
|
const transj = j % g_stateObj.layerNumDf;
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
const layerTrans = g_workObj.layerTrans[Math.floor(transj / 2) * 2 + (transj + Number(g_stateObj.reverse === C_FLG_ON)) % 2];
|
|
110
|
+
if (layerTrans !== undefined) {
|
|
111
|
+
addTransform(`mainSprite${j}`, `mainSprite${j}`, layerTrans, g_transPriority.layer);
|
|
112
|
+
}
|
|
111
113
|
|
|
112
114
|
stepSprite.push(createEmptySprite(mainSpriteJ, `stepSprite${j}`, mainCommonPos));
|
|
113
115
|
arrowSprite.push(createEmptySprite(mainSpriteJ, `arrowSprite${j}`, { ...mainCommonPos, y: g_workObj.hitPosition * (j % 2 === 0 ? 1 : -1) }));
|
|
@@ -405,10 +407,12 @@ const mainInit = () => {
|
|
|
405
407
|
};
|
|
406
408
|
Object.keys(jdgMainScoreObj).forEach(jdgScore =>
|
|
407
409
|
infoSprite.appendChild(
|
|
408
|
-
|
|
409
|
-
g_headerObj.playingWidth - 110 + (g_workObj.nonDefaultSc ? g_headerObj.scAreaWidth : 0),
|
|
410
|
-
|
|
411
|
-
|
|
410
|
+
createDivCss2Label(`lbl${jdgScore}`, 0, {
|
|
411
|
+
x: g_headerObj.playingWidth - 110 + (g_workObj.nonDefaultSc ? g_headerObj.scAreaWidth : 0),
|
|
412
|
+
y: g_limitObj.jdgCntsHeight * (jdgMainScoreObj[jdgScore][1] + 1),
|
|
413
|
+
w: g_limitObj.jdgCntsWidth, h: g_limitObj.jdgCntsHeight, siz: g_limitObj.jdgCntsSiz, align: C_ALIGN_RIGHT,
|
|
414
|
+
display: g_workObj.scoreDisp,
|
|
415
|
+
}, g_cssObj[`common_${jdgMainScoreObj[jdgScore][0]}`])
|
|
412
416
|
)
|
|
413
417
|
);
|
|
414
418
|
|
|
@@ -1116,8 +1120,9 @@ const mainInit = () => {
|
|
|
1116
1120
|
|
|
1117
1121
|
// 移動
|
|
1118
1122
|
updateArrowPos(arrowName, currentArrow);
|
|
1123
|
+
currentArrow.cnt--;
|
|
1119
1124
|
|
|
1120
|
-
funcs.judgeMotion(_j, arrowName,
|
|
1125
|
+
funcs.judgeMotion(_j, arrowName, currentArrow.cnt);
|
|
1121
1126
|
funcs.judgeNext(_j, _k, currentArrow.cnt);
|
|
1122
1127
|
};
|
|
1123
1128
|
|
|
@@ -1273,7 +1278,7 @@ const mainInit = () => {
|
|
|
1273
1278
|
* @param {string} _frzName
|
|
1274
1279
|
* @param {object} _frz g_attrObj[_frzName]
|
|
1275
1280
|
*/
|
|
1276
|
-
const
|
|
1281
|
+
const movFrz = (_j, _k, _name, _frzName, _frz) => {
|
|
1277
1282
|
|
|
1278
1283
|
// 全体色変化 (通常時)
|
|
1279
1284
|
changeColorOnFrame(_j, _k, _name, `Normal`);
|
|
@@ -1295,7 +1300,7 @@ const mainInit = () => {
|
|
|
1295
1300
|
* @param {object} _frz g_attrObj[_frzName]
|
|
1296
1301
|
* @param {number} _movY 1フレームあたりの移動量
|
|
1297
1302
|
*/
|
|
1298
|
-
const
|
|
1303
|
+
const holdFrz = (_j, _k, _name, _frzName, _frz, _movY) => {
|
|
1299
1304
|
const funcs = objFuncs[_name];
|
|
1300
1305
|
|
|
1301
1306
|
// 全体色変化 (ヒット時)
|
|
@@ -1332,7 +1337,7 @@ const mainInit = () => {
|
|
|
1332
1337
|
* @param {object} _frz g_attrObj[_frzName]
|
|
1333
1338
|
* @param {number} _movY 1フレームあたりの移動量
|
|
1334
1339
|
*/
|
|
1335
|
-
const
|
|
1340
|
+
const endFrz = (_j, _name, _frzName, _frz, _movY) => {
|
|
1336
1341
|
_frz.frzBarLength -= _movY * _frz.dir;
|
|
1337
1342
|
if (_frz.frzBarLength > 0) {
|
|
1338
1343
|
_frz.y -= _movY;
|
|
@@ -1354,14 +1359,14 @@ const mainInit = () => {
|
|
|
1354
1359
|
const movY = g_workObj.currentSpeed * currentFrz.boostSpd * currentFrz.dir;
|
|
1355
1360
|
|
|
1356
1361
|
if (currentFrz.judgEndFlg) {
|
|
1357
|
-
|
|
1362
|
+
endFrz(_j, _name, frzName, currentFrz, movY);
|
|
1358
1363
|
return;
|
|
1359
1364
|
}
|
|
1360
1365
|
|
|
1361
1366
|
if (currentFrz.isMoving) {
|
|
1362
|
-
|
|
1367
|
+
movFrz(_j, _k, _name, frzName, currentFrz);
|
|
1363
1368
|
} else {
|
|
1364
|
-
|
|
1369
|
+
holdFrz(_j, _k, _name, frzName, currentFrz, movY);
|
|
1365
1370
|
}
|
|
1366
1371
|
|
|
1367
1372
|
// フリーズアローが枠外に出たときの処理
|
|
@@ -1426,8 +1431,7 @@ const mainInit = () => {
|
|
|
1426
1431
|
} else if (/\[fontSize=\d+\]/.test(wordDat)) {
|
|
1427
1432
|
|
|
1428
1433
|
// フォントサイズ変更
|
|
1429
|
-
|
|
1430
|
-
styWord.fontSize = wUnit(fontSize);
|
|
1434
|
+
styWord.fontSize = wUnit(setIntVal(wordDat.match(/\d+/)[0], g_limitObj.mainSiz));
|
|
1431
1435
|
|
|
1432
1436
|
} else {
|
|
1433
1437
|
|
|
@@ -1435,9 +1439,10 @@ const mainInit = () => {
|
|
|
1435
1439
|
const fadeFinished = _currentFrame - g_workObj.lastFadeFrame[wordDepth] >= g_workObj.wordFadeFrame[wordDepth];
|
|
1436
1440
|
if (fadeFinished) {
|
|
1437
1441
|
[`Out`, `In`].forEach(type => {
|
|
1438
|
-
|
|
1442
|
+
const key = `fade${type}Flg${wordDepth}`;
|
|
1443
|
+
if (g_wordObj[key]) {
|
|
1439
1444
|
styWord.animationName = `none`;
|
|
1440
|
-
g_wordObj[
|
|
1445
|
+
g_wordObj[key] = false;
|
|
1441
1446
|
}
|
|
1442
1447
|
});
|
|
1443
1448
|
}
|
|
@@ -1729,6 +1734,7 @@ const mainInit = () => {
|
|
|
1729
1734
|
// FrzReturn演出はflowTimelineと独立したタイマーで動いているため、
|
|
1730
1735
|
// 一時停止時点で早期終了させる(位置復元はせず、通常終了時と同じ後片付けを行う)
|
|
1731
1736
|
resetFrzReturn();
|
|
1737
|
+
g_workObj.frzReturnPausedFlg = true;
|
|
1732
1738
|
}
|
|
1733
1739
|
g_timerHandler.clearTimeout(g_timeoutEvtId);
|
|
1734
1740
|
g_audio.pause();
|
|
@@ -1805,6 +1811,11 @@ const mainInit = () => {
|
|
|
1805
1811
|
pausedElapsedTime = null;
|
|
1806
1812
|
pausedStartAdjustment = null;
|
|
1807
1813
|
g_timeoutEvtId = g_timerHandler.setTimeout(flowTimeline, 1000 / g_fps);
|
|
1814
|
+
|
|
1815
|
+
if (g_workObj.frzReturnPausedFlg) {
|
|
1816
|
+
startFrzReturn();
|
|
1817
|
+
g_workObj.frzReturnPausedFlg = false;
|
|
1818
|
+
}
|
|
1808
1819
|
};
|
|
1809
1820
|
|
|
1810
1821
|
const tick = _remaining => {
|
|
@@ -2059,24 +2070,6 @@ const changeAppearanceFilter = (_num = 10) => {
|
|
|
2059
2070
|
return doubleFilterFlg;
|
|
2060
2071
|
};
|
|
2061
2072
|
|
|
2062
|
-
/**
|
|
2063
|
-
* 判定カウンタ表示作成
|
|
2064
|
-
* @param {string} _id
|
|
2065
|
-
* @param {number} _x
|
|
2066
|
-
* @param {string} _class
|
|
2067
|
-
* @param {number} _heightPos
|
|
2068
|
-
* @param {string|number} _text
|
|
2069
|
-
* @param {string} [_display='inherit'] 表示有無 (inherit: 表示 / none: 非表示)
|
|
2070
|
-
* @returns {HTMLDivElement}
|
|
2071
|
-
*/
|
|
2072
|
-
const makeCounterSymbol = (_id, _x, _class, _heightPos, _text, _display = C_DIS_INHERIT) => {
|
|
2073
|
-
return createDivCss2Label(_id, _text, {
|
|
2074
|
-
x: _x, y: g_limitObj.jdgCntsHeight * _heightPos,
|
|
2075
|
-
w: g_limitObj.jdgCntsWidth, h: g_limitObj.jdgCntsHeight, siz: g_limitObj.jdgCntsSiz, align: C_ALIGN_RIGHT,
|
|
2076
|
-
display: _display,
|
|
2077
|
-
}, _class);
|
|
2078
|
-
};
|
|
2079
|
-
|
|
2080
2073
|
/**
|
|
2081
2074
|
* ステップゾーンの表示・非表示切替
|
|
2082
2075
|
* @param {number} _j
|
|
@@ -2156,6 +2149,7 @@ const executeFrzReturn = (_seq, _idx, _axis) => {
|
|
|
2156
2149
|
// 画面がプレイ画面から移動した場合
|
|
2157
2150
|
g_workObj.frzReturnFlg = false;
|
|
2158
2151
|
g_workObj.frzReturnTimerId = null;
|
|
2152
|
+
g_workObj.frzReturnPausedFlg = false;
|
|
2159
2153
|
return;
|
|
2160
2154
|
}
|
|
2161
2155
|
|
|
@@ -2600,11 +2594,10 @@ const changeLifeColor = (_state = ``) => {
|
|
|
2600
2594
|
|
|
2601
2595
|
if (_state !== `` && _state !== g_workObj.currentLifeState) {
|
|
2602
2596
|
const lifeCss = g_cssObj[`life_${_state}`];
|
|
2603
|
-
lblLife
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2597
|
+
[lblLife, lifeBar].forEach(elm => {
|
|
2598
|
+
elm.classList.remove(g_cssObj.life_Max, g_cssObj.life_Cleared, g_cssObj.life_Failed);
|
|
2599
|
+
elm.classList.add(lifeCss);
|
|
2600
|
+
});
|
|
2608
2601
|
g_workObj.currentLifeState = _state;
|
|
2609
2602
|
}
|
|
2610
2603
|
|