danoniplus 42.5.2 → 43.0.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 CHANGED
@@ -4,12 +4,12 @@
4
4
  *
5
5
  * Source by tickle
6
6
  * Created : 2018/10/08
7
- * Revised : 2025/08/27
7
+ * Revised : 2025/09/15
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 42.5.2`;
12
- const g_revisedDate = `2025/08/27`;
11
+ const g_version = `Ver 43.0.0`;
12
+ const g_revisedDate = `2025/09/15`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -3574,7 +3574,7 @@ const headerConvert = _dosObj => {
3574
3574
  obj.bpms[j] = musics[4] || obj.bpms[0];
3575
3575
 
3576
3576
  // 代替タイトル名
3577
- if (j === 0) {
3577
+ if (j === 0 && hasVal(_dosObj.musicNo)) {
3578
3578
  alternativeTitle = musics[3];
3579
3579
  }
3580
3580
  }
@@ -4008,8 +4008,31 @@ const headerConvert = _dosObj => {
4008
4008
  // フリーズアローの始点で通常矢印の判定を行うか(dotさんソース方式)
4009
4009
  obj.frzStartjdgUse = setBoolVal(_dosObj.frzStartjdgUse ?? g_presetObj.frzStartjdgUse);
4010
4010
 
4011
- // 空押し判定を行うか
4012
- obj.excessiveJdgUse = setBoolVal(_dosObj.excessiveJdgUse ?? g_presetObj.excessiveJdgUse);
4011
+ // 空押し判定の設定
4012
+ // excessiveUses : 譜面毎の空押し有効化設定
4013
+ // excessiveJdgUses: 譜面毎の空押し初期設定
4014
+ obj.excessiveUses = [];
4015
+ obj.excessiveJdgUses = [];
4016
+ splitLF2(_dosObj.excessiveUse)?.forEach(val => {
4017
+ const tmpVal = val.split(`,`);
4018
+ obj.excessiveUses.push(setBoolVal(tmpVal[0]));
4019
+ obj.excessiveJdgUses.push(setVal(tmpVal[1], C_FLG_OFF, C_TYP_SWITCH) === C_FLG_ON);
4020
+ });
4021
+ if ((obj.excessiveUses?.length || 0) < obj.difLabels.length) {
4022
+ obj.excessiveUses = makeBaseArray(obj.excessiveUses, obj.difLabels.length,
4023
+ setBoolVal(obj.excessiveUses?.[0] ?? _dosObj.excessiveUse ?? g_presetObj.excessiveUse, true));
4024
+ obj.excessiveJdgUses = makeBaseArray(obj.excessiveJdgUses, obj.difLabels.length,
4025
+ setBoolVal(obj.excessiveJdgUses?.[0] ?? g_presetObj.excessiveJdgUse ?? false));
4026
+ }
4027
+
4028
+ // excessiveJdgUseが有効な場合は全譜面に対して強制的に上書き
4029
+ if (_dosObj.excessiveJdgUse !== undefined) {
4030
+ const excessiveJdg = setBoolVal(_dosObj.excessiveJdgUse);
4031
+ if (excessiveJdg) {
4032
+ obj.excessiveJdgUses = obj.excessiveJdgUses.map(val => true);
4033
+ }
4034
+ }
4035
+ obj.excessiveJdgUse = obj.excessiveJdgUses[0];
4013
4036
  g_stateObj.excessive = boolToSwitch(obj.excessiveJdgUse);
4014
4037
  g_settings.excessiveNum = Number(obj.excessiveJdgUse);
4015
4038
 
@@ -5209,8 +5232,11 @@ const titleInit = (_initFlg = false) => {
5209
5232
  }
5210
5233
  } else if (!g_headerObj.customTitleUse) {
5211
5234
  // 曲名文字描画(曲名は譜面データから取得)
5212
- divRoot.appendChild(drawTitle(g_headerObj.musicTitlesForView[g_settings.musicIdxNum],
5213
- g_headerObj.musicSelectUse ? g_headerObj.viewLists[0] + 1 : ``))
5235
+ divRoot.appendChild(
5236
+ g_headerObj.musicSelectUse
5237
+ ? drawTitle(g_headerObj.musicTitlesForView[g_settings.musicIdxNum], g_headerObj.viewLists[0] + 1)
5238
+ : drawTitle()
5239
+ );
5214
5240
  }
5215
5241
 
5216
5242
  // クレジット表示
@@ -7120,6 +7146,18 @@ const setDifficulty = (_initFlg) => {
7120
7146
  g_stateObj.autoPlay = g_settings.autoPlays[g_settings.autoPlayNum];
7121
7147
  lnkAutoPlay.textContent = getStgDetailName(g_stateObj.autoPlay);
7122
7148
 
7149
+ // 譜面毎のExcessive再設定
7150
+ g_stateObj.excessive = boolToSwitch(g_headerObj.excessiveJdgUses[g_stateObj.scoreId]);
7151
+ g_headerObj.excessiveUse = g_headerObj.excessiveUses[g_stateObj.scoreId];
7152
+ g_headerObj.excessiveJdgUse = g_headerObj.excessiveJdgUses[g_stateObj.scoreId];
7153
+ if (g_headerObj.excessiveUse) {
7154
+ setExcessive(document.getElementById(`lnkExcessive`), g_stateObj.excessive === C_FLG_ON);
7155
+ lnkExcessive.style.display = C_DIS_INHERIT;
7156
+ } else {
7157
+ lblExcessive.style.display = (g_stateObj.excessive === C_FLG_ON ? C_DIS_INHERIT : C_DIS_NONE);
7158
+ lnkExcessive.style.display = C_DIS_NONE;
7159
+ }
7160
+
7123
7161
  // 譜面明細画面の再描画
7124
7162
  if (g_settings.scoreDetails.length > 0) {
7125
7163
  drawSpeedGraph(g_stateObj.scoreId);
@@ -7363,20 +7401,17 @@ const createOptionWindow = _sprite => {
7363
7401
  }
7364
7402
 
7365
7403
  // 空押し判定設定 (Excessive)
7366
- if (g_headerObj.excessiveUse) {
7367
- spriteList.gauge.appendChild(
7368
- createCss2Button(`lnkExcessive`, g_lblNameObj.Excessive, evt => setExcessive(evt.target),
7369
- Object.assign(g_lblPosObj.btnExcessive, {
7370
- title: g_msgObj.excessive, cxtFunc: evt => setExcessive(evt.target),
7371
- }), g_cssObj.button_Default, g_cssObj[`button_Rev${g_stateObj.excessive}`])
7372
- );
7373
- } else if (g_headerObj.excessiveJdgUse) {
7374
- spriteList.gauge.appendChild(
7375
- createDivCss2Label(`lnkExcessive`, `${g_lblNameObj.Excessive}:${C_FLG_ON}`,
7376
- Object.assign(g_lblPosObj.btnExcessive, { x: 0, w: 100, border: C_DIS_NONE }), g_cssObj[`button_Disabled${C_FLG_ON}`]
7377
- )
7378
- );
7379
- }
7404
+ spriteList.gauge.appendChild(
7405
+ createDivCss2Label(`lblExcessive`, `${g_lblNameObj.Excessive}:${C_FLG_ON}`,
7406
+ g_lblPosObj.lblExcessive, g_cssObj[`button_Disabled${C_FLG_ON}`]
7407
+ )
7408
+ );
7409
+ spriteList.gauge.appendChild(
7410
+ createCss2Button(`lnkExcessive`, g_lblNameObj.Excessive, evt => setExcessive(evt.target),
7411
+ Object.assign(g_lblPosObj.btnExcessive, {
7412
+ title: g_msgObj.excessive, cxtFunc: evt => setExcessive(evt.target),
7413
+ }), g_cssObj.button_Default, g_cssObj[`button_Rev${g_stateObj.excessive}`])
7414
+ );
7380
7415
 
7381
7416
  // ---------------------------------------------------
7382
7417
  // タイミング調整 (Adjustment)
@@ -7851,11 +7886,15 @@ const getAccuracy = (_border, _rcv, _dmg, _init, _allCnt) => {
7851
7886
  * 空押し判定の設定
7852
7887
  * @param {HTMLDivElement} _btn
7853
7888
  */
7854
- const setExcessive = _btn => {
7855
- g_settings.excessiveNum = (g_settings.excessiveNum + 1) % 2;
7889
+ const setExcessive = (_btn, _val) => {
7890
+ const curExcessive = Number(g_settings.excessiveNum);
7891
+ g_settings.excessiveNum = _val ?? (curExcessive + 1) % 2;
7892
+
7856
7893
  g_stateObj.excessive = g_settings.excessives[g_settings.excessiveNum];
7857
- _btn.classList.replace(g_cssObj[`button_Rev${g_settings.excessives[(g_settings.excessiveNum + 1) % 2]}`],
7858
- g_cssObj[`button_Rev${g_settings.excessives[g_settings.excessiveNum]}`]);
7894
+ if ((curExcessive + g_settings.excessiveNum) % 2 !== 0) {
7895
+ _btn.classList.replace(g_cssObj[`button_Rev${g_settings.excessives[curExcessive]}`],
7896
+ g_cssObj[`button_Rev${g_settings.excessives[Number(g_settings.excessiveNum)]}`]);
7897
+ }
7859
7898
  };
7860
7899
 
7861
7900
  /**
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2019/11/19
8
- * Revised : 2025/08/22 (v42.5.0)
8
+ * Revised : 2025/09/15 (v43.0.0)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -376,6 +376,9 @@ const updateWindowSiz = () => {
376
376
  btnReverse: {
377
377
  x: 160, y: 0, w: 90, h: 21, siz: g_limitObj.difSelectorSiz, borderStyle: `solid`,
378
378
  },
379
+ lblExcessive: {
380
+ x: 5, y: 27, w: 90, h: 18, siz: 12,
381
+ },
379
382
  btnExcessive: {
380
383
  x: 5, y: 25, w: 90, h: 21, siz: g_limitObj.difSelectorSiz, borderStyle: `solid`,
381
384
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "42.5.2",
3
+ "version": "43.0.0",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "./js/danoni_main.js",
6
6
  "scripts": {