danoniplus 42.5.3 → 43.0.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 : 2025/08/31
7
+ * Revised : 2025/09/16
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 42.5.3`;
12
- const g_revisedDate = `2025/08/31`;
11
+ const g_version = `Ver 43.0.1`;
12
+ const g_revisedDate = `2025/09/16`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -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
 
@@ -7123,6 +7146,21 @@ const setDifficulty = (_initFlg) => {
7123
7146
  g_stateObj.autoPlay = g_settings.autoPlays[g_settings.autoPlayNum];
7124
7147
  lnkAutoPlay.textContent = getStgDetailName(g_stateObj.autoPlay);
7125
7148
 
7149
+ // 譜面毎のExcessive再設定(意図的に変更した場合のみ元に戻さない)
7150
+ if (g_canLoadDifInfoFlg && (g_stateObj.excessiveScoreId !== g_stateObj.scoreId)) {
7151
+ g_headerObj.excessiveJdgUse = g_headerObj.excessiveJdgUses[g_stateObj.scoreId];
7152
+ g_stateObj.excessive = boolToSwitch(g_headerObj.excessiveJdgUse);
7153
+ }
7154
+ g_headerObj.excessiveUse = g_headerObj.excessiveUses[g_stateObj.scoreId];
7155
+ if (g_headerObj.excessiveUse) {
7156
+ setExcessive(document.getElementById(`lnkExcessive`), g_stateObj.excessive === C_FLG_ON);
7157
+ lnkExcessive.style.display = C_DIS_INHERIT;
7158
+ } else {
7159
+ g_stateObj.excessiveChgFlg = false;
7160
+ lblExcessive.style.display = (g_stateObj.excessive === C_FLG_ON ? C_DIS_INHERIT : C_DIS_NONE);
7161
+ lnkExcessive.style.display = C_DIS_NONE;
7162
+ }
7163
+
7126
7164
  // 譜面明細画面の再描画
7127
7165
  if (g_settings.scoreDetails.length > 0) {
7128
7166
  drawSpeedGraph(g_stateObj.scoreId);
@@ -7366,20 +7404,17 @@ const createOptionWindow = _sprite => {
7366
7404
  }
7367
7405
 
7368
7406
  // 空押し判定設定 (Excessive)
7369
- if (g_headerObj.excessiveUse) {
7370
- spriteList.gauge.appendChild(
7371
- createCss2Button(`lnkExcessive`, g_lblNameObj.Excessive, evt => setExcessive(evt.target),
7372
- Object.assign(g_lblPosObj.btnExcessive, {
7373
- title: g_msgObj.excessive, cxtFunc: evt => setExcessive(evt.target),
7374
- }), g_cssObj.button_Default, g_cssObj[`button_Rev${g_stateObj.excessive}`])
7375
- );
7376
- } else if (g_headerObj.excessiveJdgUse) {
7377
- spriteList.gauge.appendChild(
7378
- createDivCss2Label(`lnkExcessive`, `${g_lblNameObj.Excessive}:${C_FLG_ON}`,
7379
- Object.assign(g_lblPosObj.btnExcessive, { x: 0, w: 100, border: C_DIS_NONE }), g_cssObj[`button_Disabled${C_FLG_ON}`]
7380
- )
7381
- );
7382
- }
7407
+ spriteList.gauge.appendChild(
7408
+ createDivCss2Label(`lblExcessive`, `${g_lblNameObj.Excessive}:${C_FLG_ON}`,
7409
+ g_lblPosObj.lblExcessive, g_cssObj[`button_Disabled${C_FLG_ON}`]
7410
+ )
7411
+ );
7412
+ spriteList.gauge.appendChild(
7413
+ createCss2Button(`lnkExcessive`, g_lblNameObj.Excessive, evt => setExcessive(evt.target),
7414
+ Object.assign(g_lblPosObj.btnExcessive, {
7415
+ title: g_msgObj.excessive, cxtFunc: evt => setExcessive(evt.target),
7416
+ }), g_cssObj.button_Default, g_cssObj[`button_Rev${g_stateObj.excessive}`])
7417
+ );
7383
7418
 
7384
7419
  // ---------------------------------------------------
7385
7420
  // タイミング調整 (Adjustment)
@@ -7854,10 +7889,15 @@ const getAccuracy = (_border, _rcv, _dmg, _init, _allCnt) => {
7854
7889
  * 空押し判定の設定
7855
7890
  * @param {HTMLDivElement} _btn
7856
7891
  */
7857
- const setExcessive = _btn => {
7858
- g_settings.excessiveNum = (g_settings.excessiveNum + 1) % 2;
7892
+ const setExcessive = (_btn, _val) => {
7893
+ const curExcessive = Number(g_settings.excessiveNum);
7894
+ g_settings.excessiveNum = _val !== undefined ? Number(_val) : (curExcessive + 1) % 2;
7895
+ g_stateObj.excessiveChgFlg = _val === undefined;
7896
+ if (g_stateObj.excessiveChgFlg) {
7897
+ g_stateObj.excessiveScoreId = g_stateObj.scoreId;
7898
+ }
7859
7899
  g_stateObj.excessive = g_settings.excessives[g_settings.excessiveNum];
7860
- _btn.classList.replace(g_cssObj[`button_Rev${g_settings.excessives[(g_settings.excessiveNum + 1) % 2]}`],
7900
+ _btn.classList.replace(g_cssObj[`button_Rev${g_settings.excessives[curExcessive]}`],
7861
7901
  g_cssObj[`button_Rev${g_settings.excessives[g_settings.excessiveNum]}`]);
7862
7902
  };
7863
7903
 
@@ -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/16 (v43.0.1)
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
  },
@@ -1046,6 +1049,9 @@ const g_stateObj = {
1046
1049
  autoPlay: C_FLG_OFF,
1047
1050
  autoAll: C_FLG_OFF,
1048
1051
  gauge: `Normal`,
1052
+ excessive: C_FLG_OFF,
1053
+ excessiveChgFlg: false,
1054
+ excessiveScoreId: 0,
1049
1055
  adjustment: 0,
1050
1056
  hitPosition: 0,
1051
1057
  fadein: 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "42.5.3",
3
+ "version": "43.0.1",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "./js/danoni_main.js",
6
6
  "scripts": {