danoniplus 51.4.0 → 51.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 CHANGED
@@ -4,12 +4,12 @@
4
4
  *
5
5
  * Source by tickle
6
6
  * Created : 2018/10/08
7
- * Revised : 2026/10/12
7
+ * Revised : 2026/10/20
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 51.4.0`;
12
- const g_revisedDate = `2026/10/12`;
11
+ const g_version = `Ver 51.4.1`;
12
+ const g_revisedDate = `2026/10/20`;
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/12 (v51.4.0)
8
+ * Revised : 2026/10/20 (v51.4.1)
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: 450, h: 325 },
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 },
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2026/09/13
8
- * Revised : 2026/10/10 (v51.3.0)
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);
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2026/09/13
8
- * Revised : 2026/10/07 (v51.2.2)
8
+ * Revised : 2026/10/20 (v51.4.1)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -405,10 +405,12 @@ const mainInit = () => {
405
405
  };
406
406
  Object.keys(jdgMainScoreObj).forEach(jdgScore =>
407
407
  infoSprite.appendChild(
408
- makeCounterSymbol(`lbl${jdgScore}`,
409
- g_headerObj.playingWidth - 110 + (g_workObj.nonDefaultSc ? g_headerObj.scAreaWidth : 0),
410
- g_cssObj[`common_${jdgMainScoreObj[jdgScore][0]}`], jdgMainScoreObj[jdgScore][1] + 1, 0, g_workObj.scoreDisp
411
- )
408
+ createDivCss2Label(`lbl${jdgScore}`, 0, {
409
+ x: g_headerObj.playingWidth - 110 + (g_workObj.nonDefaultSc ? g_headerObj.scAreaWidth : 0),
410
+ y: g_limitObj.jdgCntsHeight * (jdgMainScoreObj[jdgScore][1] + 1),
411
+ w: g_limitObj.jdgCntsWidth, h: g_limitObj.jdgCntsHeight, siz: g_limitObj.jdgCntsSiz, align: C_ALIGN_RIGHT,
412
+ display: g_workObj.scoreDisp,
413
+ }, g_cssObj[`common_${jdgMainScoreObj[jdgScore][0]}`])
412
414
  )
413
415
  );
414
416
 
@@ -1116,8 +1118,9 @@ const mainInit = () => {
1116
1118
 
1117
1119
  // 移動
1118
1120
  updateArrowPos(arrowName, currentArrow);
1121
+ currentArrow.cnt--;
1119
1122
 
1120
- funcs.judgeMotion(_j, arrowName, --currentArrow.cnt);
1123
+ funcs.judgeMotion(_j, arrowName, currentArrow.cnt);
1121
1124
  funcs.judgeNext(_j, _k, currentArrow.cnt);
1122
1125
  };
1123
1126
 
@@ -1273,7 +1276,7 @@ const mainInit = () => {
1273
1276
  * @param {string} _frzName
1274
1277
  * @param {object} _frz g_attrObj[_frzName]
1275
1278
  */
1276
- const movFrzMoving = (_j, _k, _name, _frzName, _frz) => {
1279
+ const movFrz = (_j, _k, _name, _frzName, _frz) => {
1277
1280
 
1278
1281
  // 全体色変化 (通常時)
1279
1282
  changeColorOnFrame(_j, _k, _name, `Normal`);
@@ -1295,7 +1298,7 @@ const mainInit = () => {
1295
1298
  * @param {object} _frz g_attrObj[_frzName]
1296
1299
  * @param {number} _movY 1フレームあたりの移動量
1297
1300
  */
1298
- const movFrzHolding = (_j, _k, _name, _frzName, _frz, _movY) => {
1301
+ const holdFrz = (_j, _k, _name, _frzName, _frz, _movY) => {
1299
1302
  const funcs = objFuncs[_name];
1300
1303
 
1301
1304
  // 全体色変化 (ヒット時)
@@ -1332,7 +1335,7 @@ const mainInit = () => {
1332
1335
  * @param {object} _frz g_attrObj[_frzName]
1333
1336
  * @param {number} _movY 1フレームあたりの移動量
1334
1337
  */
1335
- const movFrzEnded = (_j, _name, _frzName, _frz, _movY) => {
1338
+ const endFrz = (_j, _name, _frzName, _frz, _movY) => {
1336
1339
  _frz.frzBarLength -= _movY * _frz.dir;
1337
1340
  if (_frz.frzBarLength > 0) {
1338
1341
  _frz.y -= _movY;
@@ -1354,14 +1357,14 @@ const mainInit = () => {
1354
1357
  const movY = g_workObj.currentSpeed * currentFrz.boostSpd * currentFrz.dir;
1355
1358
 
1356
1359
  if (currentFrz.judgEndFlg) {
1357
- movFrzEnded(_j, _name, frzName, currentFrz, movY);
1360
+ endFrz(_j, _name, frzName, currentFrz, movY);
1358
1361
  return;
1359
1362
  }
1360
1363
 
1361
1364
  if (currentFrz.isMoving) {
1362
- movFrzMoving(_j, _k, _name, frzName, currentFrz);
1365
+ movFrz(_j, _k, _name, frzName, currentFrz);
1363
1366
  } else {
1364
- movFrzHolding(_j, _k, _name, frzName, currentFrz, movY);
1367
+ holdFrz(_j, _k, _name, frzName, currentFrz, movY);
1365
1368
  }
1366
1369
 
1367
1370
  // フリーズアローが枠外に出たときの処理
@@ -1426,8 +1429,7 @@ const mainInit = () => {
1426
1429
  } else if (/\[fontSize=\d+\]/.test(wordDat)) {
1427
1430
 
1428
1431
  // フォントサイズ変更
1429
- const fontSize = setIntVal(wordDat.match(/\d+/)[0], g_limitObj.mainSiz);
1430
- styWord.fontSize = wUnit(fontSize);
1432
+ styWord.fontSize = wUnit(setIntVal(wordDat.match(/\d+/)[0], g_limitObj.mainSiz));
1431
1433
 
1432
1434
  } else {
1433
1435
 
@@ -1435,9 +1437,10 @@ const mainInit = () => {
1435
1437
  const fadeFinished = _currentFrame - g_workObj.lastFadeFrame[wordDepth] >= g_workObj.wordFadeFrame[wordDepth];
1436
1438
  if (fadeFinished) {
1437
1439
  [`Out`, `In`].forEach(type => {
1438
- if (g_wordObj[`fade${type}Flg${wordDepth}`]) {
1440
+ const key = `fade${type}Flg${wordDepth}`;
1441
+ if (g_wordObj[key]) {
1439
1442
  styWord.animationName = `none`;
1440
- g_wordObj[`fade${type}Flg${wordDepth}`] = false;
1443
+ g_wordObj[key] = false;
1441
1444
  }
1442
1445
  });
1443
1446
  }
@@ -1729,6 +1732,7 @@ const mainInit = () => {
1729
1732
  // FrzReturn演出はflowTimelineと独立したタイマーで動いているため、
1730
1733
  // 一時停止時点で早期終了させる(位置復元はせず、通常終了時と同じ後片付けを行う)
1731
1734
  resetFrzReturn();
1735
+ g_workObj.frzReturnPausedFlg = true;
1732
1736
  }
1733
1737
  g_timerHandler.clearTimeout(g_timeoutEvtId);
1734
1738
  g_audio.pause();
@@ -1805,6 +1809,11 @@ const mainInit = () => {
1805
1809
  pausedElapsedTime = null;
1806
1810
  pausedStartAdjustment = null;
1807
1811
  g_timeoutEvtId = g_timerHandler.setTimeout(flowTimeline, 1000 / g_fps);
1812
+
1813
+ if (g_workObj.frzReturnPausedFlg) {
1814
+ startFrzReturn();
1815
+ g_workObj.frzReturnPausedFlg = false;
1816
+ }
1808
1817
  };
1809
1818
 
1810
1819
  const tick = _remaining => {
@@ -2059,24 +2068,6 @@ const changeAppearanceFilter = (_num = 10) => {
2059
2068
  return doubleFilterFlg;
2060
2069
  };
2061
2070
 
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
2071
  /**
2081
2072
  * ステップゾーンの表示・非表示切替
2082
2073
  * @param {number} _j
@@ -2156,6 +2147,7 @@ const executeFrzReturn = (_seq, _idx, _axis) => {
2156
2147
  // 画面がプレイ画面から移動した場合
2157
2148
  g_workObj.frzReturnFlg = false;
2158
2149
  g_workObj.frzReturnTimerId = null;
2150
+ g_workObj.frzReturnPausedFlg = false;
2159
2151
  return;
2160
2152
  }
2161
2153
 
@@ -2600,11 +2592,10 @@ const changeLifeColor = (_state = ``) => {
2600
2592
 
2601
2593
  if (_state !== `` && _state !== g_workObj.currentLifeState) {
2602
2594
  const lifeCss = g_cssObj[`life_${_state}`];
2603
- lblLife.classList.remove(g_cssObj.life_Max, g_cssObj.life_Cleared, g_cssObj.life_Failed);
2604
- lifeBar.classList.remove(g_cssObj.life_Max, g_cssObj.life_Cleared, g_cssObj.life_Failed);
2605
- lblLife.classList.add(lifeCss);
2606
- lifeBar.classList.add(lifeCss);
2607
-
2595
+ [lblLife, lifeBar].forEach(elm => {
2596
+ elm.classList.remove(g_cssObj.life_Max, g_cssObj.life_Cleared, g_cssObj.life_Failed);
2597
+ elm.classList.add(lifeCss);
2598
+ });
2608
2599
  g_workObj.currentLifeState = _state;
2609
2600
  }
2610
2601
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "51.4.0",
3
+ "version": "51.4.1",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "./js/danoni_main.js",
6
6
  "jsdelivr": "./js/danoni_main.js",