danoniplus 35.1.0 → 35.3.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 +42 -6
- package/js/lib/danoni_constants.js +32 -1
- package/package.json +1 -1
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 : 2024/02/
|
|
7
|
+
* Revised : 2024/02/16
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 35.
|
|
12
|
-
const g_revisedDate = `2024/02/
|
|
11
|
+
const g_version = `Ver 35.3.0`;
|
|
12
|
+
const g_revisedDate = `2024/02/16`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -3699,6 +3699,41 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3699
3699
|
makeBaseArray(_str.split(`/`).map(n => getKeyCtrlVal(n)), g_keyObj.minKeyCtrlNum, 0);
|
|
3700
3700
|
const toSplitArrayStr = _str => _str.split(`/`).map(n => n);
|
|
3701
3701
|
|
|
3702
|
+
// 略記記法を元の文字列に復元後、配列に変換 (1...3,5...7 -> 1,2,3,5,6,7)
|
|
3703
|
+
const toOriginalArray = (_val, _func) => _val?.split(`,`).map(n => _func(n)).join(`,`).split(`,`);
|
|
3704
|
+
|
|
3705
|
+
/**
|
|
3706
|
+
* 略記記法を元の文字列に変換 (1...5 -> 1,2,3,4,5 / 3...+4 -> 3,4,5,6,7)
|
|
3707
|
+
* @param {string} _str
|
|
3708
|
+
*/
|
|
3709
|
+
const toFloatStr = _str => {
|
|
3710
|
+
const nums = _str?.split(`...`);
|
|
3711
|
+
const bottomMark = nums[0].startsWith(`b`) ? `b` : ``;
|
|
3712
|
+
const [startN, endN] = [parseFloat(bottomMark === `b` ? nums[0].slice(1) : nums[0]), parseFloat(nums[1])];
|
|
3713
|
+
|
|
3714
|
+
if (nums.length === 2 && !isNaN(startN) && !isNaN(endN)) {
|
|
3715
|
+
const endN2 = nums[1].startsWith(`+`) ? startN + endN : endN;
|
|
3716
|
+
const arr = [];
|
|
3717
|
+
for (let k = startN; k <= endN2; k++) {
|
|
3718
|
+
arr.push(`${bottomMark}${k}`);
|
|
3719
|
+
}
|
|
3720
|
+
return arr.join(`,`);
|
|
3721
|
+
} else {
|
|
3722
|
+
return _str;
|
|
3723
|
+
}
|
|
3724
|
+
};
|
|
3725
|
+
|
|
3726
|
+
/**
|
|
3727
|
+
* 略記記法を元の文字列に変換 (1@:5 -> 1,1,1,1,1 / onigiri!giko!c@:2 -> onigiri,giko,c,onigiri,giko,c)
|
|
3728
|
+
* @param {string} _str
|
|
3729
|
+
*/
|
|
3730
|
+
const toSameValStr = _str => {
|
|
3731
|
+
const nums = _str?.split(`@:`);
|
|
3732
|
+
const groupStr = toFloatStr(nums[0]).split(`!`).join(`,`);
|
|
3733
|
+
return nums.length === 2 && !isNaN(parseInt(nums[1])) ?
|
|
3734
|
+
[...Array(Math.floor(parseInt(nums[1])))].fill(groupStr).join(`,`) : groupStr;
|
|
3735
|
+
};
|
|
3736
|
+
|
|
3702
3737
|
/**
|
|
3703
3738
|
* キーパターン(相対パターン)をキーパターン(実際のパターン番号)に変換
|
|
3704
3739
|
* 例) 12_(0) -> 12_4
|
|
@@ -3751,8 +3786,9 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3751
3786
|
continue;
|
|
3752
3787
|
}
|
|
3753
3788
|
// |keyCtrl9j=Tab,7_0,Enter| -> |keyCtrl9j=Tab,S,D,F,Space,J,K,L,Enter| のように補完
|
|
3789
|
+
// |pos9j=0..4,6..9| -> |pos9j=0,1,2,3,4,6,7,8,9|
|
|
3754
3790
|
g_keyObj[`${keyheader}_${k + dfPtn}`] =
|
|
3755
|
-
tmpArray[k]
|
|
3791
|
+
toOriginalArray(tmpArray[k], toSameValStr).map(n =>
|
|
3756
3792
|
structuredClone(g_keyObj[`${_name}${getKeyPtnName(n)}`]) ?? [_convFunc(n)]
|
|
3757
3793
|
).flat();
|
|
3758
3794
|
if (baseCopyFlg) {
|
|
@@ -3803,7 +3839,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3803
3839
|
// 通常の指定方法 (例: |shuffle8i=1,1,1,2,0,0,0,0/1,1,1,1,0,0,0,0| )の場合の取り込み
|
|
3804
3840
|
// 部分的にキーパターン指定があった場合は既存パターンを展開 (例: |shuffle9j=2,7_0_0,2|)
|
|
3805
3841
|
g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] =
|
|
3806
|
-
makeBaseArray(list
|
|
3842
|
+
makeBaseArray(toOriginalArray(list, toSameValStr).map(n =>
|
|
3807
3843
|
structuredClone(g_keyObj[`${_name}${getKeyPtnName(n)}`]) ??
|
|
3808
3844
|
[isNaN(parseInt(n)) ? n : parseInt(n, 10)]
|
|
3809
3845
|
).flat(), g_keyObj[`${g_keyObj.defaultProp}${_key}_${k + dfPtn}`].length, 0);
|
|
@@ -3879,7 +3915,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3879
3915
|
// 部分的にキーパターン指定があった場合は既存パターンを展開 (例: |scroll9j=Cross::1,7_0,1|)
|
|
3880
3916
|
const tmpParamPair = pairs.split(`::`);
|
|
3881
3917
|
g_keyObj[pairName][tmpParamPair[0]] =
|
|
3882
|
-
makeBaseArray(tmpParamPair[1]?.
|
|
3918
|
+
makeBaseArray(toOriginalArray(tmpParamPair[1], toSameValStr)?.map(n =>
|
|
3883
3919
|
structuredClone(g_keyObj[`${_pairName}${getKeyPtnName(n)}`]?.[tmpParamPair[0]]) ??
|
|
3884
3920
|
[n === `-` ? -1 : parseInt(n, 10)]
|
|
3885
3921
|
).flat(), g_keyObj[`${g_keyObj.defaultProp}${_key}_${k + dfPtn}`].length, _defaultVal);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2024/
|
|
8
|
+
* Revised : 2024/02/08 (v35.2.1)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -1793,6 +1793,13 @@ const g_keyObj = {
|
|
|
1793
1793
|
chara5_2: [`left`, `down`, `space`, `up`, `right`],
|
|
1794
1794
|
chara8_2: [`sleft`, `left`, `leftdia`, `down`, `space`, `up`, `rightdia`, `right`],
|
|
1795
1795
|
|
|
1796
|
+
// 頻度の高い譜面データ名パターン
|
|
1797
|
+
// 後で chara4A, chara4A_a, chara4A_b, ... に変換する
|
|
1798
|
+
ptchara4A: [`left`, `down`, `up`, `right`],
|
|
1799
|
+
ptchara3S: [`left`, `leftdia`, `down`],
|
|
1800
|
+
ptchara3J: [`up`, `rightdia`, `right`],
|
|
1801
|
+
ptchara7: [`left`, `leftdia`, `down`, `space`, `up`, `rightdia`, `right`],
|
|
1802
|
+
|
|
1796
1803
|
// ColorGroup - 1
|
|
1797
1804
|
// - 同じ数字が同じグループになる
|
|
1798
1805
|
color5_0_0: [0, 0, 0, 0, 2],
|
|
@@ -1930,6 +1937,12 @@ const g_keyObj = {
|
|
|
1930
1937
|
// ShapeGroup - 3 (矢印回転、AAキャラクタ)
|
|
1931
1938
|
stepRtn17_0_2: [45, 45, 0, 0, -45, -45, -90, -90, `onigiri`, 90, 90, 135, 135, 180, 180, 225, 225],
|
|
1932
1939
|
|
|
1940
|
+
// 頻度の高い部分ShapeGroupの定義
|
|
1941
|
+
stepRtn4A: [0, -90, 90, 180],
|
|
1942
|
+
stepRtn3S: [0, -45, -90],
|
|
1943
|
+
stepRtn3J: [90, 135, 180],
|
|
1944
|
+
stepRtn3Z: [`giko`, `onigiri`, `iyo`],
|
|
1945
|
+
|
|
1933
1946
|
// 各キーの区切り位置
|
|
1934
1947
|
// - 未指定の場合は下段への折り返し無し
|
|
1935
1948
|
div9i_0: 6,
|
|
@@ -2008,6 +2021,17 @@ const g_keyObj = {
|
|
|
2008
2021
|
|
|
2009
2022
|
keyCtrl8_5: [[`Shift`], [`Z`], [`S`], [`X`, `C`], [`D`, `F`], [`V`], [`G`], [`B`]],
|
|
2010
2023
|
|
|
2024
|
+
// 頻度の高い部分キーコンフィグの定義
|
|
2025
|
+
keyCtrl4A: [[`Left`], [`Down`], [`Up`], [`Right`]],
|
|
2026
|
+
keyCtrl4S: [[`S`], [`D`], [`E`, `R`], [`F`]],
|
|
2027
|
+
keyCtrl4J: [[`J`], [`K`], [`I`, `O`], [`L`]],
|
|
2028
|
+
keyCtrl4W: [[`W`], [`E`], [`D3`, `D4`], [`R`]],
|
|
2029
|
+
keyCtrl4U: [[`U`], [`I`], [`D8`, `D9`], [`O`]],
|
|
2030
|
+
keyCtrl3S: [[`S`], [`D`], [`F`]],
|
|
2031
|
+
keyCtrl3J: [[`J`], [`K`], [`L`]],
|
|
2032
|
+
keyCtrl3W: [[`W`], [`E`], [`R`]],
|
|
2033
|
+
keyCtrl3Z: [[`Z`], [`X`], [`C`]],
|
|
2034
|
+
|
|
2011
2035
|
// 隣接するステップゾーン間の距離
|
|
2012
2036
|
blank: 55,
|
|
2013
2037
|
blank_def: 55,
|
|
@@ -2368,6 +2392,13 @@ Object.keys(g_copyKeyPtn).forEach(keyPtnTo => {
|
|
|
2368
2392
|
}
|
|
2369
2393
|
});
|
|
2370
2394
|
|
|
2395
|
+
// 頻度の高い譜面データ名の自動生成 (left -> aleft, bleft, ..., zleft を生成)
|
|
2396
|
+
Object.keys(g_keyObj).filter(val => val.startsWith(`ptchara`)).forEach(charaPtn => {
|
|
2397
|
+
g_keyObj[`${charaPtn.slice(2)}`] = g_keyObj[charaPtn].concat();
|
|
2398
|
+
[...Array(26)].map((a, b) => (10 + b).toString(36)).forEach(alphabet =>
|
|
2399
|
+
g_keyObj[`${charaPtn.slice(2)}_${alphabet}`] = g_keyObj[charaPtn].map(str => `${alphabet}${str}`));
|
|
2400
|
+
});
|
|
2401
|
+
|
|
2371
2402
|
// デフォルト配列のコピー (g_keyObj.aaa_X から g_keyObj.aaa_Xd を作成)
|
|
2372
2403
|
// keyCtrlX_Yについて1キーにつき2キー割り当てできるように配列を補完
|
|
2373
2404
|
const keyCtrlName = Object.keys(g_keyObj).filter(val => val.startsWith(`keyCtrl`));
|