danoniplus 46.5.0 → 46.5.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/README.md CHANGED
@@ -68,6 +68,7 @@ If the life of the life gauge remains by the end of the game or it is over the q
68
68
  ## How to Make / 作り方
69
69
 
70
70
  - [How to make chart overview](https://github.com/cwtickle/danoniplus-docs/wiki/HowtoMake) / [譜面の作成概要](https://github.com/cwtickle/danoniplus/wiki/HowtoMake)
71
+ - [Creating chart Using the Preview Site](https://github.com/cwtickle/danoniplus-docs/wiki/HowToUsePreview-Example) / [プレビューサイトを使った譜面の作成](https://github.com/cwtickle/danoniplus/wiki/HowToUsePreview-Example)
71
72
  - [ParaFla!ソース利用者向け移行方法 (Japanese Only)](https://github.com/cwtickle/danoniplus/wiki/forParaFlaUser)
72
73
 
73
74
  ### How to Install / 導入方法
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/03/29
7
+ * Revised : 2026/03/31
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 46.5.0`;
12
- const g_revisedDate = `2026/03/29`;
11
+ const g_version = `Ver 46.5.2`;
12
+ const g_revisedDate = `2026/03/31`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -155,6 +155,8 @@ const C_FLG_ON = `ON`;
155
155
  const C_FLG_OFF = `OFF`;
156
156
  const C_FLG_HYPHEN = `---`;
157
157
  const C_FLG_ALL = `ALL`;
158
+ const C_FLG_REVERSE = `Reverse`;
159
+ const C_FLG_REVERSE2 = `Rev`;
158
160
  const C_DIS_NONE = `none`;
159
161
  const C_DIS_AUTO = `auto`;
160
162
  const C_DIS_INHERIT = `inherit`;
@@ -919,7 +921,7 @@ const blockCode = _setCode => !C_BLOCK_KEYS.includes(_setCode);
919
921
  * キーを押したときの動作(汎用)
920
922
  * @param {KeyboardEvent} _evt
921
923
  * @param {string} _displayName
922
- * @param {function} _func
924
+ * @param {Function} _func
923
925
  * @param {boolean} _dfEvtFlg
924
926
  * @returns {boolean}
925
927
  */
@@ -1006,7 +1008,7 @@ const createScTextCommon = _displayName => {
1006
1008
  /**
1007
1009
  * ショートカットキー有効化
1008
1010
  * @param {string} _displayName
1009
- * @param {function} _func
1011
+ * @param {Function} _func
1010
1012
  * @param {boolean} [object.displayFlg=true]
1011
1013
  * @param {boolean} [object.dfEvtFlg=false]
1012
1014
  */
@@ -1626,7 +1628,7 @@ const createImg = (_id, _imgPath, _x, _y, _width, _height) => {
1626
1628
  * ColorPickerの作成
1627
1629
  * @param {string} _parentObj
1628
1630
  * @param {string} _id
1629
- * @param {function} _func
1631
+ * @param {Function} _func
1630
1632
  * @param {number} [object.x=0]
1631
1633
  * @param {number} [object.y=0]
1632
1634
  * @returns {HTMLInputElement}
@@ -1809,7 +1811,7 @@ const deleteDiv = (_parentId, _idName) => {
1809
1811
  * ボタンの作成 (CSS版・拡張属性対応)
1810
1812
  * @param {string} _id
1811
1813
  * @param {string} _text
1812
- * @param {function} _func
1814
+ * @param {Function} _func
1813
1815
  * @param {number} [object.x]
1814
1816
  * @param {number} [object.y]
1815
1817
  * @param {number} [object.w=g_btnWidth() / 3]
@@ -1819,8 +1821,8 @@ const deleteDiv = (_parentId, _idName) => {
1819
1821
  * @param {string} [object.title] ボタンオンマウス時のコメント
1820
1822
  * @param {string} [object.groupName] 画面名 (g_btnWaitFrameで定義しているプロパティ名を指定)
1821
1823
  * @param {boolean} [object.initDisabledFlg=true] ボタン有効化までの時間を設けるかどうか
1822
- * @param {function} [object.resetFunc] カスタム処理後に実行する処理
1823
- * @param {function} [object.cxtFunc] 右クリック時に実行する処理
1824
+ * @param {Function} [object.resetFunc] カスタム処理後に実行する処理
1825
+ * @param {Function} [object.cxtFunc] 右クリック時に実行する処理
1824
1826
  * @param {...any} [object.rest]
1825
1827
  * @param {...any} _classes
1826
1828
  */
@@ -2180,7 +2182,7 @@ const checkDuplicatedObjects = _obj => {
2180
2182
  /**
2181
2183
  * 多層スプライトデータの作成処理
2182
2184
  * @param {string} _data
2183
- * @param {function} _calcFrame
2185
+ * @param {Function} _calcFrame
2184
2186
  * @returns [多層スプライトデータ, 最大深度]
2185
2187
  */
2186
2188
  const makeSpriteData = (_data, _calcFrame = _frame => _frame) => {
@@ -2270,7 +2272,7 @@ const makeSpriteData = (_data, _calcFrame = _frame => _frame) => {
2270
2272
  /**
2271
2273
  * スタイル変更データの作成処理
2272
2274
  * @param {string} _data
2273
- * @param {function} _calcFrame
2275
+ * @param {Function} _calcFrame
2274
2276
  * @returns [多層スプライトデータ, 1(固定)]
2275
2277
  */
2276
2278
  const makeStyleData = (_data, _calcFrame = _frame => _frame) => {
@@ -4877,7 +4879,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
4877
4879
  * - charaX の場合に限り、a>5_0 の形式を aleft, adown, aup, aright, aspace に変換する
4878
4880
  * @param {string} _str
4879
4881
  * @param {string} _name
4880
- * @param {function} _convFunc
4882
+ * @param {Function} _convFunc
4881
4883
  * @returns {string[]|number[]}
4882
4884
  */
4883
4885
  const expandKeyPtn = (_str, _name, _convFunc) => {
@@ -4896,10 +4898,10 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
4896
4898
  * 新キー用複合パラメータ
4897
4899
  * @param {string} _key キー数
4898
4900
  * @param {string} _name 名前
4899
- * @param {function} _convFunc マッピング関数
4901
+ * @param {Function} _convFunc マッピング関数
4900
4902
  * @param {string} object.errCd エラーコード
4901
4903
  * @param {boolean} object.baseCopyFlg コピー配列の準備可否
4902
- * @param {function} object.loopFunc パターン別に処理する個別関数
4904
+ * @param {Function} object.loopFunc パターン別に処理する個別関数
4903
4905
  * @returns {number} 最小パターン数
4904
4906
  */
4905
4907
  const newKeyMultiParam = (_key, _name, _convFunc, { errCd = ``, baseCopyFlg = false, loopFunc = () => true } = {}) => {
@@ -5740,8 +5742,8 @@ const playBGM = async (_num, _currentLoopNum = g_settings.musicLoopNum) => {
5740
5742
  * @param {number} startVolume - 開始音量 (0〜1)
5741
5743
  * @param {number} endVolume - 終了音量 (0〜1)
5742
5744
  * @param {number} step - 1ステップの増減量
5743
- * @param {function} onEnd - フェード完了時の処理
5744
- * @param {function} isValid - フェード継続条件(true: 継続, false: 中断)
5745
+ * @param {Function} onEnd - フェード完了時の処理
5746
+ * @param {Function} isValid - フェード継続条件(true: 継続, false: 中断)
5745
5747
  * @returns {number} timeoutId
5746
5748
  */
5747
5749
  const fadeVolume = (startVolume, endVolume, step, onEnd, isValid) => {
@@ -5787,9 +5789,9 @@ const playBGM = async (_num, _currentLoopNum = g_settings.musicLoopNum) => {
5787
5789
 
5788
5790
  /**
5789
5791
  * 汎用ポーリング(監視)処理
5790
- * @param {function} check - 条件チェック関数(true なら終了)
5791
- * @param {function} onEnd - 終了時の処理
5792
- * @param {function} isValid - 継続条件(true: 継続, false: 中断)
5792
+ * @param {Function} check - 条件チェック関数(true なら終了)
5793
+ * @param {Function} onEnd - 終了時の処理
5794
+ * @param {Function} isValid - 継続条件(true: 継続, false: 中断)
5793
5795
  * @returns {number} timeoutId
5794
5796
  */
5795
5797
  const poll = (check, onEnd, isValid) => {
@@ -6216,7 +6218,7 @@ const dataMgtInit = () => {
6216
6218
  * @param {number} _heightPos
6217
6219
  * @param {number} _widthPos
6218
6220
  * @param {number} [w=125]
6219
- * @param {function} func
6221
+ * @param {Function} func
6220
6222
  * @returns {HTMLDivElement}
6221
6223
  */
6222
6224
  const createMgtButton = (_name, _heightPos, _widthPos, { w = 125, func = () => true, ...rest } = {}) => {
@@ -6622,7 +6624,7 @@ const updateSettingSummary = () => {
6622
6624
 
6623
6625
  /**
6624
6626
  * PLAYボタンの作成
6625
- * @param {function} _func
6627
+ * @param {Function} _func
6626
6628
  * @returns {HTMLDivElement}
6627
6629
  */
6628
6630
  const makePlayButton = _func => createCss2Button(`btnPlay`, g_lblNameObj.b_play, () => true, {
@@ -7593,7 +7595,7 @@ const setDifficulty = (_initFlg) => {
7593
7595
  document.getElementById(`${hiddenScr}Sprite`).style.display = C_DIS_NONE;
7594
7596
  setSetting(0, visibleScr);
7595
7597
 
7596
- g_shortcutObj.option.KeyR.id = g_settings.scrolls.includes(`Reverse`) ?
7598
+ g_shortcutObj.option.KeyR.id = g_settings.scrolls.includes(C_FLG_REVERSE) ?
7597
7599
  g_shortcutObj.option.KeyR.exId : g_shortcutObj.option.KeyR.dfId;
7598
7600
 
7599
7601
  if (g_settings.scrolls.length > 1) {
@@ -7964,8 +7966,8 @@ const createOptionWindow = _sprite => {
7964
7966
  * @param {string} [object.unitName=''] 設定名の単位
7965
7967
  * @param {number[]} [object.skipTerms] ボタンの設定スキップ間隔(デフォルト:[1(外側), 1(内側), 1(最内側)])
7966
7968
  * @param {boolean} [object.hiddenBtn=false] 隠しボタン(ショートカットキーのみ)の利用有無
7967
- * @param {function} [object.addRFunc] 右側のボタンを押したときの追加処理
7968
- * @param {function} [object.addLFunc] 左側のボタンを押したときの追加処理
7969
+ * @param {Function} [object.addRFunc] 右側のボタンを押したときの追加処理
7970
+ * @param {Function} [object.addLFunc] 左側のボタンを押したときの追加処理
7969
7971
  * @param {string} [object.settingLabel=_settingName] 設定名
7970
7972
  * @param {string} [object.displayName] 画面名
7971
7973
  * @param {string} [object.scLabel=''] ショートカットキーの表示名
@@ -8071,7 +8073,7 @@ const getStgDetailName = _name => {
8071
8073
  * 設定メイン・汎用
8072
8074
  * @param {number} _scrollNum
8073
8075
  * @param {string} _settingName
8074
- * @param {function} [func=()=>true] 設定ボタンを押した後の追加処理
8076
+ * @param {Function} [func=()=>true] 設定ボタンを押した後の追加処理
8075
8077
  * @param {string} [unitName=''] 設定の単位名
8076
8078
  * @param {number} [roundNum=0] 設定スキップ間隔の丸め基準数
8077
8079
  */
@@ -8142,7 +8144,7 @@ const setReverseDefault = () => {
8142
8144
  };
8143
8145
 
8144
8146
  const setReverse = _btn => {
8145
- if (!g_settings.scrolls.includes(`Reverse`) && g_headerObj.reverseUse) {
8147
+ if (!g_settings.scrolls.includes(C_FLG_REVERSE) && g_headerObj.reverseUse) {
8146
8148
  g_settings.reverseNum = (g_settings.reverseNum + 1) % 2;
8147
8149
  g_stateObj.reverse = g_settings.reverses[g_settings.reverseNum];
8148
8150
  setReverseView(_btn);
@@ -8153,7 +8155,7 @@ const setReverse = _btn => {
8153
8155
  const setReverseView = _btn => {
8154
8156
  _btn.classList.replace(g_cssObj[`button_Rev${g_settings.reverses[(g_settings.reverseNum + 1) % 2]}`],
8155
8157
  g_cssObj[`button_Rev${g_settings.reverses[g_settings.reverseNum]}`]);
8156
- if (!g_settings.scrolls.includes(`Reverse`) && g_headerObj.reverseUse) {
8158
+ if (!g_settings.scrolls.includes(C_FLG_REVERSE) && g_headerObj.reverseUse) {
8157
8159
  _btn.textContent = `${g_lblNameObj.Reverse}:${getStgDetailName(g_stateObj.reverse)}`;
8158
8160
  } else {
8159
8161
  _btn.textContent = `X`;
@@ -8435,13 +8437,13 @@ const getKeyCtrl = (_localStorage, _extraKeyName = ``) => {
8435
8437
  * @param {string} _id
8436
8438
  * @param {string} _name 初期設定文字
8437
8439
  * @param {number} _heightPos 上からの配置順
8438
- * @param {function} _func 通常ボタン処理
8440
+ * @param {Function} _func 通常ボタン処理
8439
8441
  * @param {number} [object.x]
8440
8442
  * @param {number} [object.y]
8441
8443
  * @param {number} [object.w]
8442
8444
  * @param {number} [object.h]
8443
8445
  * @param {number} [object.siz]
8444
- * @param {function} [object.cxtFunc] 右クリック時の処理
8446
+ * @param {Function} [object.cxtFunc] 右クリック時の処理
8445
8447
  * @param {...any} [object.rest]
8446
8448
  * @param {...any} _classes 追加するクラス
8447
8449
  * @returns {HTMLDivElement}
@@ -8457,7 +8459,7 @@ const makeSettingLblCssButton = (_id, _name, _heightPos, _func, {
8457
8459
  * @param {string} _id
8458
8460
  * @param {string} _name 初期設定文字
8459
8461
  * @param {number} _heightPos 上からの配置順
8460
- * @param {function} _func
8462
+ * @param {Function} _func
8461
8463
  * @param {number} [object.x]
8462
8464
  * @param {number} [object.h]
8463
8465
  * @param {number} [object.y=h*_heightPos]
@@ -8478,7 +8480,7 @@ const makeDifLblCssButton = (_id, _name, _heightPos, _func, {
8478
8480
  * @param {string} _id
8479
8481
  * @param {string} _directionFlg 表示用ボタンのどちら側に置くかを設定。(R, RR:右、L, LL:左)
8480
8482
  * @param {number} _heightPos 上からの配置順
8481
- * @param {function} _func
8483
+ * @param {Function} _func
8482
8484
  * @param {number} [object.dx=0]
8483
8485
  * @param {number} [object.dy=0]
8484
8486
  * @param {number} [object.dw=0]
@@ -8815,11 +8817,11 @@ const exSettingInit = () => {
8815
8817
  * 拡張設定込みの標準設定
8816
8818
  * @param {any[]} _spriteList
8817
8819
  * @param {string} _name
8818
- * @param {{ defaultList?: string[], displayName?: string, func?: function, funcEx?: function }} [options={}]
8820
+ * @param {{ defaultList?: string[], displayName?: string, func?: Function, funcEx?: Function }} [options={}]
8819
8821
  * @param {string[]} [options.defaultList=[C_FLG_OFF]] 拡張設定未使用の設定リスト
8820
8822
  * @param {string} [options.displayName='exSetting']
8821
- * @param {function} [options.func=()=>true] 通常ボタン用追加関数
8822
- * @param {function} [options.funcEx=()=>true] 拡張ボタン用追加関数
8823
+ * @param {Function} [options.func=()=>true] 通常ボタン用追加関数
8824
+ * @param {Function} [options.funcEx=()=>true] 拡張ボタン用追加関数
8823
8825
  */
8824
8826
  const createGeneralSettingEx = (_spriteList, _name, { defaultList = [C_FLG_OFF], displayName = `exSetting`,
8825
8827
  func = () => true, funcEx = () => true } = {}) => {
@@ -9178,14 +9180,14 @@ const keyConfigInit = (_kcType = g_kcType) => {
9178
9180
  * キーコンフィグ用設定ボタン
9179
9181
  * @param {string} _id
9180
9182
  * @param {string} _text
9181
- * @param {function} _func
9183
+ * @param {Function} _func
9182
9184
  * @param {number} [object.x=g_btnX(5 / 6) - 20]
9183
9185
  * @param {number} [object.y=15]
9184
9186
  * @param {number} [object.w=g_btnWidth(1 / 6)]
9185
9187
  * @param {number} [object.h=18]
9186
9188
  * @param {number} [object.siz=g_limitObj.jdgCntsSiz]
9187
9189
  * @param {string} [object.borderStyle='solid']
9188
- * @param {function} [object.cxtFunc]
9190
+ * @param {Function} [object.cxtFunc]
9189
9191
  * @param {...any} [object.rest]
9190
9192
  * @param {string} [_mainClass=g_cssObj.button_RevOFF]
9191
9193
  * @param {...any} _classes
@@ -9199,7 +9201,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
9199
9201
  * キーコンフィグ用ミニボタン
9200
9202
  * @param {string} _id
9201
9203
  * @param {string} _directionFlg
9202
- * @param {function} _func
9204
+ * @param {Function} _func
9203
9205
  * @param {number} [object.x=g_btnX(5 / 6) - 30]
9204
9206
  * @param {number} [object.y=15]
9205
9207
  * @param {number} [object.w=15]
@@ -9529,7 +9531,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
9529
9531
  * ColorPicker部分の作成
9530
9532
  * @param {number} _j
9531
9533
  * @param {string} _type
9532
- * @param {function} _func
9534
+ * @param {Function} _func
9533
9535
  * @param {number} [object.x=0]
9534
9536
  * @param {number} [object.y=15]
9535
9537
  */
@@ -9708,12 +9710,15 @@ const keyConfigInit = (_kcType = g_kcType) => {
9708
9710
  const keyCdObj = document.getElementById(`keycon${g_currentj}_${g_currentk}`);
9709
9711
  let setKey = g_kCdN.findIndex(kCd => kCd === kbCode);
9710
9712
 
9713
+ const C_KEY_ESCAPE = 27;
9714
+ const C_KEY_IME = 229;
9715
+
9711
9716
  // 全角切替、BackSpace、Deleteキー、Escキーは割り当て禁止
9712
9717
  // また、直前と同じキーを押した場合(BackSpaceを除く)はキー操作を無効にする
9713
- const disabledKeys = [240, 242, 243, 244, 91, 29, 28, 27, 259, g_prevKey];
9718
+ const disabledKeys = [240, 242, 243, 244, 91, 29, 28, 259, g_prevKey];
9714
9719
 
9715
9720
  if (g_localeObj.val === `Ja`) {
9716
- disabledKeys.unshift(229);
9721
+ disabledKeys.unshift(C_KEY_IME);
9717
9722
  }
9718
9723
  if (disabledKeys.includes(setKey) || g_kCdN[setKey] === undefined) {
9719
9724
  makeInfoWindow(g_msgInfoObj.I_0002, `fadeOut0`);
@@ -9722,14 +9727,20 @@ const keyConfigInit = (_kcType = g_kcType) => {
9722
9727
  return;
9723
9728
  }
9724
9729
  if (selectedKc === `TitleBack` || selectedKc === `Retry`) {
9730
+ // タイトルバックキー、リトライキーはプレイ中の操作キーと重複しないようにする(簡易的)
9731
+ if (g_keyObj[`keyCtrl${keyCtrlPtn}`].flat().includes(setKey)) {
9732
+ makeInfoWindow(g_msgInfoObj.I_0002, `fadeOut0`);
9733
+ return;
9734
+ }
9725
9735
  // プレイ中ショートカットキー変更
9726
9736
  g_headerObj[`key${selectedKc}`] = setKey;
9727
9737
  g_headerObj[`key${selectedKc}Def`] = setKey;
9728
9738
  document.getElementById(`sc${selectedKc}`).textContent = getScMsg[selectedKc]();
9729
- document.getElementById(`sc${selectedKc}`).style.fontSize = `${getFontSize2(getScMsg[selectedKc](), g_btnWidth(5 / 12) - 40, { maxSiz: 13 })}px`;
9739
+ document.getElementById(`sc${selectedKc}`).style.fontSize =
9740
+ `${getFontSize2(getScMsg[selectedKc](), g_btnWidth(5 / 12) - 40, { maxSiz: g_limitObj.mainSiz })}px`;
9730
9741
  if (g_isMac) {
9731
9742
  scTitleBack.textContent = getScMsg.TitleBack();
9732
- scTitleBack.style.fontSize = `${getFontSize2(getScMsg.TitleBack(), g_btnWidth(5 / 12) - 40, { maxSiz: 13 })}px`;
9743
+ scTitleBack.style.fontSize = `${getFontSize2(getScMsg.TitleBack(), g_btnWidth(5 / 12) - 40, { maxSiz: g_limitObj.mainSiz })}px`;
9733
9744
  }
9734
9745
  changeConfigColor(document.getElementById(`sc${selectedKc}`),
9735
9746
  g_headerObj[`key${selectedKc}`] === g_headerObj[`key${selectedKc}Def2`] ?
@@ -9737,7 +9748,12 @@ const keyConfigInit = (_kcType = g_kcType) => {
9737
9748
  return;
9738
9749
  }
9739
9750
 
9740
- if (setKey === C_KEY_TITLEBACK && g_currentk === 0) {
9751
+ if (setKey === C_KEY_ESCAPE) {
9752
+ // リトライキー、タイトルバックキーにEscキーを割り当て可能にするため、
9753
+ // 例外的にEscキーで戻る対応をここで処理
9754
+ btnBack.click();
9755
+ return;
9756
+ } else if (setKey === C_KEY_TITLEBACK && g_currentk === 0) {
9741
9757
  return;
9742
9758
  }
9743
9759
 
@@ -9769,6 +9785,13 @@ const keyConfigInit = (_kcType = g_kcType) => {
9769
9785
  }
9770
9786
  });
9771
9787
 
9788
+ // 戻るボタンのショートカットキー表示
9789
+ multiAppend(btnBack,
9790
+ createDivCss2Label(`scKeyConfigBack`, `${g_lblNameObj.sc_keyConfigBack})`, {
9791
+ x: 0, siz: 12, fontWeight: `bold`, opacity: 0.75, align: C_ALIGN_LEFT,
9792
+ })
9793
+ );
9794
+
9772
9795
  safeExecuteCustomHooks(`g_skinJsObj.keyconfig`, g_skinJsObj.keyconfig);
9773
9796
  document.onkeyup = evt => commonKeyUp(evt);
9774
9797
  document.oncontextmenu = () => false;
@@ -11397,7 +11420,7 @@ const pushArrows = (_dataObj, _speedOnFrame, _firstArrivalFrame) => {
11397
11420
  * - この関数を使用する場合、配列グループの先頭2つが「フレーム数、矢印番号」となっていないと動作しない
11398
11421
  * @param {string} _type
11399
11422
  * @param {string} _header
11400
- * @param {function} _setFunc 後続実行関数
11423
+ * @param {Function} _setFunc 後続実行関数
11401
11424
  * @param {number} object._term 1セット当たりのデータ数(デフォルトは後続実行関数の引数の数-1, デフォルト引数・オブジェクト引数除く)
11402
11425
  * @param {boolean} object._colorFlg 個別色変化フラグ
11403
11426
  * @param {boolean} object._calcFrameFlg 逆算を無条件で行うかどうかの可否
@@ -11873,7 +11896,7 @@ const getArrowSettings = () => {
11873
11896
 
11874
11897
  if (g_stateObj.playWindow === `SideScroll`) {
11875
11898
  if (g_stateObj.rotateEnabled) {
11876
- const sign = g_stateObj.playWindowType === `Reverse` ? -1 : 1;
11899
+ const sign = g_stateObj.playWindowType === C_FLG_REVERSE2 ? -1 : 1;
11877
11900
  changeStepRtn(`stepRtn`, 90 * sign);
11878
11901
  changeStepRtn(`stepHitRtn`, 90 * sign);
11879
11902
  changeStepRtn(`arrowRtn`, 90 * sign);
@@ -15300,7 +15323,7 @@ const resultInit = () => {
15300
15323
  * @param {string} _id
15301
15324
  * @param {string} _name
15302
15325
  * @param {object} _posObj
15303
- * @param {function} _func
15326
+ * @param {Function} _func
15304
15327
  * @param {...any} _cssClass
15305
15328
  * @returns {HTMLDivElement}
15306
15329
  */
@@ -15446,12 +15469,12 @@ const getSelectedSettingList = (_orgShuffleFlg) => {
15446
15469
  `${g_stateObj.speed}${g_lblNameObj.multi}`,
15447
15470
  withOptions(g_stateObj.motion, C_FLG_OFF),
15448
15471
  `${withOptions(g_stateObj.reverse, C_FLG_OFF,
15449
- getStgDetailName(g_stateObj.scroll !== C_FLG_HYPHEN ? 'R-' : 'Reverse'))}${withOptions(g_stateObj.scroll, C_FLG_HYPHEN)}`,
15472
+ getStgDetailName(g_stateObj.scroll !== C_FLG_HYPHEN ? 'R-' : C_FLG_REVERSE))}${withOptions(g_stateObj.scroll, C_FLG_HYPHEN)}`,
15450
15473
  withOptions(g_stateObj.appearance, `Visible`) +
15451
15474
  ((g_appearanceRanges.includes(g_stateObj.appearance) && g_stateObj.filterLock === C_FLG_ON) ? `(${g_hidSudObj.filterPos}%)` : ``),
15452
15475
  withOptions(g_stateObj.gauge, g_settings.gauges[0]),
15453
15476
  withOptions(g_stateObj.playWindow, `Default`,
15454
- `${getStgDetailName(g_stateObj.playWindowType === `Reverse` ? `R-` : ``)}${getStgDetailName(g_stateObj.playWindow)}`),
15477
+ `${getStgDetailName(g_stateObj.playWindowType === C_FLG_REVERSE2 ? `R-` : ``)}${getStgDetailName(g_stateObj.playWindow)}`),
15455
15478
  withOptions(g_stateObj.stepArea, `Default`),
15456
15479
  withOptions(g_stateObj.frzReturn, C_FLG_OFF,
15457
15480
  `FR:${getStgDetailName(g_stateObj.frzReturn)}(${getStgDetailName(g_stateObj.frzReturnType)})`),
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2019/11/19
8
- * Revised : 2026/03/29 (v46.5.0)
8
+ * Revised : 2026/03/31 (v46.5.2)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -1350,7 +1350,7 @@ const g_settings = {
1350
1350
  playWindows: [`Default`, `Stairs`, `Slope`, `Distorted`, `SideScroll`],
1351
1351
  playWindowNum: 0,
1352
1352
 
1353
- playWindowTypes: [C_FLG_HYPHEN, `Reverse`],
1353
+ playWindowTypes: [C_FLG_HYPHEN, C_FLG_REVERSE2],
1354
1354
  playWindowTypeNum: 0,
1355
1355
 
1356
1356
  stepAreas: [`Default`, `Halfway`, `2Step`, `Mismatched`, `R-Mismatched`, `X-Flower`, `Alt-Crossing`],
@@ -1737,7 +1737,7 @@ const motionAlphaToggle = (_obj, _property) => {
1737
1737
  * PlayWindow適用関数
1738
1738
  * - 対応するキー名: g_settings.playWindows
1739
1739
  */
1740
- const g_playWindowDir = () => g_stateObj.playWindowType === `Reverse` ? 1 : -1;
1740
+ const g_playWindowDir = () => g_stateObj.playWindowType === C_FLG_REVERSE2 ? 1 : -1;
1741
1741
  const g_changeStairs = (_rad) => `rotate(${_rad * g_playWindowDir()}deg)`;
1742
1742
  const g_changeSkew = (_rad) => `Skew(${_rad * g_playWindowDir()}deg, ${_rad * g_playWindowDir()}deg) scaleY(0.9)`;
1743
1743
 
@@ -2903,7 +2903,7 @@ const g_shortcutObj = {
2903
2903
  KeyU: { id: `btnSettingSummary` },
2904
2904
  },
2905
2905
  keyConfig: {
2906
- Escape: { id: `btnBack` },
2906
+ //Escape: { id: `btnBack` }, // Escapeを別用途でも使用するため、ここではコメントアウト
2907
2907
  Backspace_Enter: { id: `btnPlay` },
2908
2908
  Backspace_NumpadEnter: { id: `btnPlay` },
2909
2909
  },
@@ -4399,6 +4399,7 @@ const g_lblNameObj = {
4399
4399
  sc_scroll: `R/<br>↑↓`,
4400
4400
  sc_adjustment: `- +`,
4401
4401
  sc_hitPosition: `T B`,
4402
+ sc_keyConfigBack: `Esc`,
4402
4403
  sc_keyConfigPlay: g_isMac ? `Del+Enter` : `BS+Enter`,
4403
4404
 
4404
4405
  g_start: `Start`,
@@ -4464,6 +4465,7 @@ const g_lblNameObj = {
4464
4465
  'u_R-': `R-`,
4465
4466
  'u_---': `---`,
4466
4467
  'u_Reverse': `Reverse`,
4468
+ 'u_Rev': `Reverse`,
4467
4469
 
4468
4470
  'u_Mirror': `Mirror`,
4469
4471
  'u_X-Mirror': `X-Mirror`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "46.5.0",
3
+ "version": "46.5.2",
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",