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 +1 -0
- package/js/danoni_main.js +71 -48
- package/js/lib/danoni_constants.js +6 -4
- package/package.json +1 -1
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/
|
|
7
|
+
* Revised : 2026/03/31
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 46.5.
|
|
12
|
-
const g_revisedDate = `2026/03/
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
1823
|
-
* @param {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
4901
|
+
* @param {Function} _convFunc マッピング関数
|
|
4900
4902
|
* @param {string} object.errCd エラーコード
|
|
4901
4903
|
* @param {boolean} object.baseCopyFlg コピー配列の準備可否
|
|
4902
|
-
* @param {
|
|
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 {
|
|
5744
|
-
* @param {
|
|
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 {
|
|
5791
|
-
* @param {
|
|
5792
|
-
* @param {
|
|
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 {
|
|
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 {
|
|
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(
|
|
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 {
|
|
7968
|
-
* @param {
|
|
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 {
|
|
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(
|
|
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(
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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?:
|
|
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 {
|
|
8822
|
-
* @param {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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,
|
|
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(
|
|
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 =
|
|
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:
|
|
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 ===
|
|
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 {
|
|
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 ===
|
|
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 {
|
|
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-' :
|
|
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 ===
|
|
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/
|
|
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,
|
|
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 ===
|
|
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`,
|