danoniplus 30.3.1 → 30.5.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/README.md +3 -3
- package/js/danoni_main.js +126 -69
- package/js/lib/danoni_constants.js +61 -42
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://codeclimate.com/github/cwtickle/danoniplus/maintainability)
|
|
4
4
|
[](https://github.com/cwtickle/danoniplus/actions?query=workflow%3ACodeQL)
|
|
5
|
-
[](https://gitlab.com/cwtickle/danonicw/-/issues)
|
|
6
6
|
[](https://github.com/cwtickle/danoniplus/security/policy)
|
|
7
7
|
[](https://github.com/cwtickle/danoniplus/releases)
|
|
8
8
|
[](https://github.com/cwtickle/danoniplus/blob/develop/LICENSE)
|
|
@@ -89,12 +89,12 @@ If you would like to cooperate with the development, please see below. Even if y
|
|
|
89
89
|
|
|
90
90
|
開発にご協力いただける方は、下記をご覧ください。GitHubアカウントの無い方でも協力できます!
|
|
91
91
|
- [How to Contribute / 貢献の仕方](https://github.com/cwtickle/danoniplus/blob/develop/.github/CONTRIBUTING.md)
|
|
92
|
-
- [
|
|
92
|
+
- [GitLab community for requests and bug reports / 要望・不具合報告(GitLab Issues)](https://gitlab.com/cwtickle/danonicw/-/issues)
|
|
93
93
|
- [Contributors / コントリビューター](https://github.com/cwtickle/danoniplus/blob/develop/CONTRIBUTORS.md)
|
|
94
94
|
|
|
95
95
|
## Community / コミュニティ
|
|
96
96
|
- [Dancing☆Onigiri Discord server](https://discord.gg/TegbHFY7zg)
|
|
97
|
-
- [Gitter for score reporting / 得点報告(Gitter)](https://gitter.im
|
|
97
|
+
- [Gitter for score reporting / 得点報告(Gitter)](https://app.gitter.im/#/room/#danonicw_freeboard:gitter.im)
|
|
98
98
|
- [Twitter #danoni](https://twitter.com/search?q=%23danoni&src=typed_query&f=live)
|
|
99
99
|
|
|
100
100
|
## Related Tools Repository / 関連リポジトリ・ツール
|
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 : 2023/03/
|
|
7
|
+
* Revised : 2023/03/12
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 30.
|
|
12
|
-
const g_revisedDate = `2023/03/
|
|
11
|
+
const g_version = `Ver 30.5.0`;
|
|
12
|
+
const g_revisedDate = `2023/03/12`;
|
|
13
13
|
const g_alphaVersion = ``;
|
|
14
14
|
|
|
15
15
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
@@ -387,6 +387,19 @@ const copyArray2d = _array2d => structuredClone(_array2d);
|
|
|
387
387
|
*/
|
|
388
388
|
const sumData = _array => _array.reduce((p, x) => p + x);
|
|
389
389
|
|
|
390
|
+
/**
|
|
391
|
+
* 最小配列長の配列を作成
|
|
392
|
+
* @param {array} _array
|
|
393
|
+
* @param {number} _minLength
|
|
394
|
+
* @param {number} _defaultVal
|
|
395
|
+
* @returns
|
|
396
|
+
*/
|
|
397
|
+
const makeBaseArray = (_array, _minLength, _defaultVal) => {
|
|
398
|
+
const baseArray = [...Array(_minLength)].fill(_defaultVal);
|
|
399
|
+
_array.forEach((val, j) => baseArray[j] = val);
|
|
400
|
+
return baseArray;
|
|
401
|
+
};
|
|
402
|
+
|
|
390
403
|
/**
|
|
391
404
|
* 部分一致検索(リストのいずれかに合致、大小文字問わず)
|
|
392
405
|
* @param {string} _str 検索文字
|
|
@@ -3442,9 +3455,25 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3442
3455
|
const toNumber = _num => parseInt(_num, 10);
|
|
3443
3456
|
const toFloat = _num => parseFloat(_num);
|
|
3444
3457
|
const toStringOrNumber = _str => isNaN(Number(_str)) ? _str : toNumber(_str);
|
|
3445
|
-
const
|
|
3458
|
+
const toKeyCtrlArray = _str => makeBaseArray(_str.split(`/`).map(n => toNumber(n)), g_keyObj.minKeyCtrlNum, 0);
|
|
3446
3459
|
const toSplitArrayStr = _str => _str.split(`/`).map(n => n);
|
|
3447
3460
|
|
|
3461
|
+
/**
|
|
3462
|
+
* キーパターン(相対パターン)をキーパターン(実際のパターン番号)に変換
|
|
3463
|
+
* 例) 12_(0) -> 12_4
|
|
3464
|
+
* それ以外の文字列が来た場合は、そのままの値を戻す
|
|
3465
|
+
* @param {string} _str
|
|
3466
|
+
* @returns
|
|
3467
|
+
*/
|
|
3468
|
+
const getKeyPtnName = _str => {
|
|
3469
|
+
const regex = /\((\d+)\)/;
|
|
3470
|
+
const checkStr = _str.match(regex);
|
|
3471
|
+
if (checkStr !== null) {
|
|
3472
|
+
return _str.replace(regex, (match, p) => `${parseInt(p, 10) + setIntVal(g_keyObj.dfPtnNum)}`);
|
|
3473
|
+
}
|
|
3474
|
+
return _str;
|
|
3475
|
+
};
|
|
3476
|
+
|
|
3448
3477
|
/**
|
|
3449
3478
|
* 新キー用複合パラメータ
|
|
3450
3479
|
* @param {string} _key キー数
|
|
@@ -3465,8 +3494,9 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3465
3494
|
if (existParam(tmpArray[k], `${keyheader}_${k + dfPtn}`)) {
|
|
3466
3495
|
continue;
|
|
3467
3496
|
}
|
|
3468
|
-
|
|
3469
|
-
|
|
3497
|
+
const keyPtn = getKeyPtnName(tmpArray[k]);
|
|
3498
|
+
g_keyObj[`${keyheader}_${k + dfPtn}`] = g_keyObj[`${_name}${keyPtn}`] !== undefined ?
|
|
3499
|
+
copyArray2d(g_keyObj[`${_name}${keyPtn}`]) : tmpArray[k].split(`,`).map(n => _convFunc(n));
|
|
3470
3500
|
if (baseCopyFlg) {
|
|
3471
3501
|
g_keyObj[`${keyheader}_${k + dfPtn}d`] = copyArray2d(g_keyObj[`${keyheader}_${k + dfPtn}`]);
|
|
3472
3502
|
}
|
|
@@ -3483,43 +3513,51 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3483
3513
|
* 新キー用複合パラメータ(特殊)
|
|
3484
3514
|
* @param {string} _key キー数
|
|
3485
3515
|
* @param {string} _name 名前
|
|
3486
|
-
* @param {object} _obj errCd エラーコード
|
|
3487
|
-
* @returns 最小パターン数
|
|
3488
3516
|
*/
|
|
3489
|
-
const newKeyTripleParam = (_key, _name
|
|
3490
|
-
let tmpMinPatterns = 1;
|
|
3517
|
+
const newKeyTripleParam = (_key, _name) => {
|
|
3491
3518
|
const keyheader = _name + _key;
|
|
3492
3519
|
const dfPtn = setIntVal(g_keyObj.dfPtnNum);
|
|
3493
3520
|
|
|
3494
3521
|
if (hasVal(_dosObj[keyheader])) {
|
|
3495
3522
|
const tmpArray = splitLF2(_dosObj[keyheader]);
|
|
3496
|
-
|
|
3497
|
-
for (let k = 0; k < tmpMinPatterns; k++) {
|
|
3523
|
+
for (let k = 0; k < tmpArray.length; k++) {
|
|
3498
3524
|
if (existParam(tmpArray[k], `${keyheader}_${k + dfPtn}`)) {
|
|
3499
3525
|
continue;
|
|
3500
3526
|
}
|
|
3501
|
-
if (g_keyObj[`${_name}${tmpArray[k]}_0`] !== undefined) {
|
|
3502
3527
|
|
|
3503
|
-
|
|
3504
|
-
|
|
3505
|
-
|
|
3506
|
-
|
|
3507
|
-
|
|
3528
|
+
let ptnCnt = 0;
|
|
3529
|
+
tmpArray[k].split(`/`).forEach(list => {
|
|
3530
|
+
|
|
3531
|
+
const keyPtn = getKeyPtnName(list);
|
|
3532
|
+
if (list === ``) {
|
|
3533
|
+
// 空指定の場合は一律同じグループへ割り当て
|
|
3534
|
+
g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] = [...Array(g_keyObj[`chara${_key}_${k + dfPtn}`].length)].fill(0);
|
|
3535
|
+
|
|
3536
|
+
} else if (g_keyObj[`${_name}${keyPtn}_0`] !== undefined) {
|
|
3537
|
+
// 他のキーパターン (例: |shuffle8i=8_0| ) を指定した場合、該当があれば既存パターンからコピー
|
|
3538
|
+
let m = 0;
|
|
3539
|
+
while (g_keyObj[`${_name}${keyPtn}_${m}`] !== undefined) {
|
|
3540
|
+
g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] = structuredClone(g_keyObj[`${_name}${keyPtn}_${m}`]);
|
|
3541
|
+
m++;
|
|
3542
|
+
ptnCnt++;
|
|
3543
|
+
}
|
|
3544
|
+
} else {
|
|
3545
|
+
// 通常の指定方法 (例: |shuffle8i=1,1,1,2,0,0,0,0/1,1,1,1,0,0,0,0| )の場合の取り込み
|
|
3546
|
+
g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] = list.split(`,`).map(n => parseInt(n, 10));
|
|
3547
|
+
ptnCnt++;
|
|
3508
3548
|
}
|
|
3509
|
-
}
|
|
3510
|
-
|
|
3511
|
-
// 通常の指定方法 (例: |shuffle8i=1,1,1,2,0,0,0,0/1,1,1,1,0,0,0,0| )の場合の取り込み
|
|
3512
|
-
tmpArray[k].split(`/`).forEach((list, m) =>
|
|
3513
|
-
g_keyObj[`${keyheader}_${k + dfPtn}_${m}`] = (list === `` ?
|
|
3514
|
-
[...Array(g_keyObj[`chara${_key}_${k + dfPtn}`].length)].fill(0) : list.split(`,`).map(n => parseInt(n, 10))));
|
|
3515
|
-
}
|
|
3549
|
+
});
|
|
3516
3550
|
g_keyObj[`${keyheader}_${k + dfPtn}`] = structuredClone(g_keyObj[`${keyheader}_${k + dfPtn}_0`]);
|
|
3517
3551
|
}
|
|
3518
3552
|
|
|
3519
|
-
} else if (
|
|
3520
|
-
|
|
3553
|
+
} else if (g_keyObj[`${keyheader}_${dfPtn}_0`] === undefined) {
|
|
3554
|
+
// 特に指定が無い場合はcharaX_Yの配列長で決定
|
|
3555
|
+
for (let k = 0; k < g_keyObj.minPatterns; k++) {
|
|
3556
|
+
const ptnName = `${_key}_${k + dfPtn}`;
|
|
3557
|
+
g_keyObj[`${_name}${ptnName}_0`] = [...Array(g_keyObj[`chara${ptnName}`].length)].fill(0);
|
|
3558
|
+
g_keyObj[`${_name}${ptnName}`] = structuredClone(g_keyObj[`${_name}${ptnName}_0`]);
|
|
3559
|
+
}
|
|
3521
3560
|
}
|
|
3522
|
-
return tmpMinPatterns;
|
|
3523
3561
|
};
|
|
3524
3562
|
|
|
3525
3563
|
/**
|
|
@@ -3559,24 +3597,30 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3559
3597
|
continue;
|
|
3560
3598
|
}
|
|
3561
3599
|
g_keyObj[pairName] = {}
|
|
3562
|
-
|
|
3563
|
-
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
|
|
3567
|
-
|
|
3568
|
-
|
|
3600
|
+
|
|
3601
|
+
// デフォルト項目がある場合は先に定義
|
|
3602
|
+
if (_defaultName !== ``) {
|
|
3603
|
+
g_keyObj[pairName][_defaultName] = [...Array(g_keyObj[`chara${_key}_${k + dfPtn}`].length)].fill(_defaultVal);
|
|
3604
|
+
}
|
|
3605
|
+
tmpParams[k].split(`/`).forEach(pairs => {
|
|
3606
|
+
const keyPtn = getKeyPtnName(pairs);
|
|
3607
|
+
if (pairs === ``) {
|
|
3608
|
+
} else if (g_keyObj[`${_pairName}${keyPtn}`] !== undefined) {
|
|
3609
|
+
// 他のキーパターン指定時、該当があればプロパティを全コピー
|
|
3610
|
+
Object.assign(g_keyObj[pairName], g_keyObj[`${_pairName}${keyPtn}`]);
|
|
3611
|
+
} else {
|
|
3612
|
+
// 通常の指定方法(例:|scroll8i=Cross::1,1,1,-1,-1,-1,1,1/Split::1,1,1,1,-1,-1,-1,-1|)から取り込み
|
|
3569
3613
|
const tmpParamPair = pairs.split(`::`);
|
|
3570
3614
|
g_keyObj[pairName][tmpParamPair[0]] = tmpParamPair[1].split(`,`).map(n => parseInt(n, 10));
|
|
3571
|
-
}
|
|
3572
|
-
}
|
|
3615
|
+
}
|
|
3616
|
+
});
|
|
3573
3617
|
}
|
|
3574
3618
|
}
|
|
3575
3619
|
};
|
|
3576
3620
|
|
|
3577
3621
|
// 対象キー毎に処理
|
|
3578
3622
|
keyExtraList.forEach(newKey => {
|
|
3579
|
-
|
|
3623
|
+
g_keyObj.minPatterns = 1;
|
|
3580
3624
|
g_keyObj.dfPtnNum = 0;
|
|
3581
3625
|
|
|
3582
3626
|
// キーパターンの追記 (appendX)
|
|
@@ -3596,17 +3640,17 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3596
3640
|
// キーの最小横幅 (minWidthX)
|
|
3597
3641
|
g_keyObj[`minWidth${newKey}`] = _dosObj[`minWidth${newKey}`] ?? g_keyObj[`minWidth${newKey}`] ?? g_keyObj.minWidthDefault;
|
|
3598
3642
|
|
|
3599
|
-
// 矢印色パターン (colorX_Y)
|
|
3600
|
-
tmpMinPatterns = newKeyTripleParam(newKey, `color`, { errCd: `E_0101` });
|
|
3601
|
-
|
|
3602
3643
|
// 読込変数の接頭辞 (charaX_Y)
|
|
3603
|
-
|
|
3644
|
+
g_keyObj.minPatterns = newKeyMultiParam(newKey, `chara`, toString, { errCd: `E_0102` });
|
|
3645
|
+
|
|
3646
|
+
// 矢印色パターン (colorX_Y)
|
|
3647
|
+
newKeyTripleParam(newKey, `color`);
|
|
3604
3648
|
|
|
3605
3649
|
// 矢印の回転量指定、キャラクタパターン (stepRtnX_Y)
|
|
3606
|
-
|
|
3650
|
+
newKeyMultiParam(newKey, `stepRtn`, toStringOrNumber, { errCd: `E_0103` });
|
|
3607
3651
|
|
|
3608
3652
|
// キーコンフィグ (keyCtrlX_Y)
|
|
3609
|
-
|
|
3653
|
+
newKeyMultiParam(newKey, `keyCtrl`, toKeyCtrlArray, { errCd: `E_0104`, baseCopyFlg: true });
|
|
3610
3654
|
|
|
3611
3655
|
// ステップゾーン位置 (posX_Y)
|
|
3612
3656
|
newKeyMultiParam(newKey, `pos`, toFloat);
|
|
@@ -3633,7 +3677,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3633
3677
|
}
|
|
3634
3678
|
}
|
|
3635
3679
|
// posX_Y, divX_Y, divMaxX_Yが未指定の場合はcharaX_Yを元に適用
|
|
3636
|
-
for (let k = 0; k <
|
|
3680
|
+
for (let k = 0; k < g_keyObj.minPatterns; k++) {
|
|
3637
3681
|
setKeyDfVal(`${newKey}_${k + dfPtnNum}`);
|
|
3638
3682
|
}
|
|
3639
3683
|
|
|
@@ -3654,14 +3698,6 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3654
3698
|
|
|
3655
3699
|
// シャッフルグループ (shuffleX_Y)
|
|
3656
3700
|
newKeyTripleParam(newKey, `shuffle`);
|
|
3657
|
-
if (g_keyObj[`shuffle${newKey}_${dfPtnNum}_0`] === undefined) {
|
|
3658
|
-
// 特に指定が無い場合はcolorX_Yの配列長で決定
|
|
3659
|
-
for (let k = 0; k < tmpMinPatterns; k++) {
|
|
3660
|
-
const ptnName = `${newKey}_${k + dfPtnNum}`;
|
|
3661
|
-
g_keyObj[`shuffle${ptnName}_0`] = [...Array(g_keyObj[`chara${ptnName}`].length)].fill(0);
|
|
3662
|
-
g_keyObj[`shuffle${ptnName}`] = structuredClone(g_keyObj[`shuffle${ptnName}_0`]);
|
|
3663
|
-
}
|
|
3664
|
-
}
|
|
3665
3701
|
|
|
3666
3702
|
// キーグループ (keyGroupX_Y)
|
|
3667
3703
|
newKeyMultiParam(newKey, `keyGroup`, toSplitArrayStr);
|
|
@@ -6248,28 +6284,38 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6248
6284
|
* @param {boolean} _transKeyUse
|
|
6249
6285
|
* @returns
|
|
6250
6286
|
*/
|
|
6251
|
-
const searchPattern = (_tempPtn, _sign, _transKeyUse = false) => {
|
|
6287
|
+
const searchPattern = (_tempPtn, _sign, _transKeyUse = false, _skipFlg = false) => {
|
|
6252
6288
|
let nextPtn = _tempPtn + _sign;
|
|
6289
|
+
const initialPtn = hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_-1`]) ? -1 : 0;
|
|
6253
6290
|
|
|
6254
6291
|
const searchStart = _ => {
|
|
6255
|
-
nextPtn
|
|
6256
|
-
|
|
6257
|
-
nextPtn
|
|
6292
|
+
if (!hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_${nextPtn}`])) {
|
|
6293
|
+
nextPtn = 0;
|
|
6294
|
+
while (hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_${nextPtn}`])) {
|
|
6295
|
+
nextPtn -= _sign;
|
|
6296
|
+
}
|
|
6297
|
+
nextPtn += _sign;
|
|
6258
6298
|
}
|
|
6259
|
-
nextPtn += _sign;
|
|
6260
6299
|
};
|
|
6261
6300
|
|
|
6262
|
-
|
|
6263
|
-
|
|
6301
|
+
const searchNextGroup = _ => {
|
|
6302
|
+
while (nextPtn !== initialPtn &&
|
|
6303
|
+
g_keyObj[`transKey${g_keyObj.currentKey}_${_tempPtn}`] === g_keyObj[`transKey${g_keyObj.currentKey}_${nextPtn}`] &&
|
|
6304
|
+
hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_${nextPtn}`])) {
|
|
6305
|
+
nextPtn += _sign;
|
|
6306
|
+
}
|
|
6307
|
+
};
|
|
6308
|
+
|
|
6309
|
+
searchStart();
|
|
6310
|
+
if (_skipFlg) {
|
|
6311
|
+
searchNextGroup();
|
|
6264
6312
|
searchStart();
|
|
6265
6313
|
}
|
|
6266
6314
|
if (!_transKeyUse) {
|
|
6267
6315
|
while (hasVal(g_keyObj[`transKey${g_keyObj.currentKey}_${nextPtn}`])) {
|
|
6268
6316
|
nextPtn += _sign;
|
|
6269
6317
|
}
|
|
6270
|
-
|
|
6271
|
-
searchStart();
|
|
6272
|
-
}
|
|
6318
|
+
searchStart();
|
|
6273
6319
|
}
|
|
6274
6320
|
return nextPtn;
|
|
6275
6321
|
};
|
|
@@ -6277,11 +6323,12 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6277
6323
|
/**
|
|
6278
6324
|
* キーパターン変更時処理
|
|
6279
6325
|
* @param {number} _sign
|
|
6326
|
+
* @param {boolean} _skipFlg
|
|
6280
6327
|
*/
|
|
6281
|
-
const changePattern = (_sign = 1) => {
|
|
6328
|
+
const changePattern = (_sign = 1, _skipFlg = false) => {
|
|
6282
6329
|
|
|
6283
6330
|
// キーパターンの変更
|
|
6284
|
-
g_keyObj.currentPtn = searchPattern(g_keyObj.currentPtn, _sign, g_headerObj.transKeyUse);
|
|
6331
|
+
g_keyObj.currentPtn = searchPattern(g_keyObj.currentPtn, _sign, g_headerObj.transKeyUse, _skipFlg);
|
|
6285
6332
|
|
|
6286
6333
|
// カラーグループ、シャッフルグループの再設定
|
|
6287
6334
|
g_keycons.groups.forEach(type => resetGroupList(type, `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`));
|
|
@@ -6331,13 +6378,23 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6331
6378
|
'Self' : g_keyObj.currentPtn + 1}${lblTransKey}`, g_lblPosObj.lblPattern),
|
|
6332
6379
|
|
|
6333
6380
|
// パターン変更ボタン描画(右回り)
|
|
6334
|
-
createCss2Button(`btnPtnChangeR`,
|
|
6381
|
+
createCss2Button(`btnPtnChangeR`, `>`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeR, {
|
|
6335
6382
|
resetFunc: _ => changePattern(),
|
|
6336
|
-
}), g_cssObj.
|
|
6383
|
+
}), g_cssObj.button_Mini),
|
|
6337
6384
|
|
|
6338
6385
|
// パターン変更ボタン描画(左回り)
|
|
6339
|
-
createCss2Button(`btnPtnChangeL`,
|
|
6386
|
+
createCss2Button(`btnPtnChangeL`, `<`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeL, {
|
|
6340
6387
|
resetFunc: _ => changePattern(-1),
|
|
6388
|
+
}), g_cssObj.button_Mini),
|
|
6389
|
+
|
|
6390
|
+
// パターン変更ボタン描画(右回り/別キーモード間スキップ)
|
|
6391
|
+
createCss2Button(`btnPtnChangeRR`, `|>`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeRR, {
|
|
6392
|
+
resetFunc: _ => changePattern(1, true),
|
|
6393
|
+
}), g_cssObj.button_Setting),
|
|
6394
|
+
|
|
6395
|
+
// パターン変更ボタン描画(左回り/別キーモード間スキップ)
|
|
6396
|
+
createCss2Button(`btnPtnChangeLL`, `<|`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeLL, {
|
|
6397
|
+
resetFunc: _ => changePattern(-1, true),
|
|
6341
6398
|
}), g_cssObj.button_Setting),
|
|
6342
6399
|
|
|
6343
6400
|
// キーコンフィグリセットボタン描画
|
|
@@ -10518,7 +10575,7 @@ const resultInit = _ => {
|
|
|
10518
10575
|
|
|
10519
10576
|
// Gitterへのリンク
|
|
10520
10577
|
createCss2Button(`btnGitter`, g_lblNameObj.b_gitter, _ => true, Object.assign(g_lblPosObj.btnRsGitter, {
|
|
10521
|
-
resetFunc: _ => openLink(`https://gitter.im
|
|
10578
|
+
resetFunc: _ => openLink(`https://app.gitter.im/#/room/#danonicw_freeboard:gitter.im`),
|
|
10522
10579
|
}), g_cssObj.button_Default),
|
|
10523
10580
|
|
|
10524
10581
|
// リトライ
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2023/03/
|
|
8
|
+
* Revised : 2023/03/12 (v30.5.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -251,11 +251,19 @@ const updateWindowSiz = _ => {
|
|
|
251
251
|
},
|
|
252
252
|
btnPtnChangeR: {
|
|
253
253
|
x: g_sWidth / 2, y: g_sHeight - 100,
|
|
254
|
-
w: g_sWidth /
|
|
254
|
+
w: g_sWidth / 9, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
|
|
255
255
|
},
|
|
256
256
|
btnPtnChangeL: {
|
|
257
|
+
x: g_sWidth / 18, y: g_sHeight - 100,
|
|
258
|
+
w: g_sWidth / 9, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
|
|
259
|
+
},
|
|
260
|
+
btnPtnChangeRR: {
|
|
261
|
+
x: g_sWidth * 11 / 18, y: g_sHeight - 100,
|
|
262
|
+
w: g_sWidth / 18, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
|
|
263
|
+
},
|
|
264
|
+
btnPtnChangeLL: {
|
|
257
265
|
x: 0, y: g_sHeight - 100,
|
|
258
|
-
w: g_sWidth /
|
|
266
|
+
w: g_sWidth / 18, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
|
|
259
267
|
},
|
|
260
268
|
btnKcReset: {
|
|
261
269
|
x: 0, y: g_sHeight - 75,
|
|
@@ -1455,6 +1463,8 @@ const g_keyObj = {
|
|
|
1455
1463
|
prevKey: `Dummy`,
|
|
1456
1464
|
dfPtnNum: 0,
|
|
1457
1465
|
|
|
1466
|
+
minKeyCtrlNum: 2,
|
|
1467
|
+
|
|
1458
1468
|
// キー別ヘッダー
|
|
1459
1469
|
// - 譜面データ中に出てくる矢印(ノーツ)の種類と順番(ステップゾーン表示順)を管理する。
|
|
1460
1470
|
// - ここで出てくる順番は、この後のstepRtn, keyCtrlとも対応している。
|
|
@@ -1650,51 +1660,51 @@ const g_keyObj = {
|
|
|
1650
1660
|
// 基本パターン (キーコンフィグ)
|
|
1651
1661
|
// - 順番はchara, stepRtnと対応している。
|
|
1652
1662
|
// - 多次元配列内はステップに対応するキーコードを示す。カンマ区切りで複数指定できる。
|
|
1653
|
-
keyCtrl5_0: [[37
|
|
1654
|
-
keyCtrl7_0: [[83
|
|
1655
|
-
keyCtrl7i_0: [[90
|
|
1656
|
-
keyCtrl8_0: [[83
|
|
1657
|
-
keyCtrl9A_0: [[83
|
|
1658
|
-
keyCtrl9B_0: [[65
|
|
1659
|
-
keyCtrl9i_0: [[37
|
|
1660
|
-
keyCtrl11_0: [[37
|
|
1661
|
-
keyCtrl11L_0: [[87
|
|
1662
|
-
keyCtrl11W_0: [[49, 50], [84
|
|
1663
|
-
keyCtrl11i_0: [[83
|
|
1664
|
-
keyCtrl12_0: [[85
|
|
1665
|
-
keyCtrl13_0: [[37
|
|
1666
|
-
keyCtrl14_0: [[84, 89], [85
|
|
1667
|
-
keyCtrl14i_0: [[90, 87], [88, 69], [67, 82], [37
|
|
1668
|
-
keyCtrl15A_0: [[87
|
|
1669
|
-
keyCtrl15B_0: [[87
|
|
1670
|
-
keyCtrl16i_0: [[90, 87], [88, 69], [67, 82], [37
|
|
1671
|
-
keyCtrl17_0: [[65
|
|
1672
|
-
keyCtrl23_0: [[87
|
|
1673
|
-
[90
|
|
1663
|
+
keyCtrl5_0: [[37], [40], [38], [39], [32]],
|
|
1664
|
+
keyCtrl7_0: [[83], [68], [70], [32], [74], [75], [76]],
|
|
1665
|
+
keyCtrl7i_0: [[90], [88], [67], [37], [40], [38], [39]],
|
|
1666
|
+
keyCtrl8_0: [[83], [68], [70], [32], [74], [75], [76], [13]],
|
|
1667
|
+
keyCtrl9A_0: [[83], [68], [69, 82], [70], [32], [74], [75], [73], [76]],
|
|
1668
|
+
keyCtrl9B_0: [[65], [83], [68], [70], [32], [74], [75], [76], [187]],
|
|
1669
|
+
keyCtrl9i_0: [[37], [40], [38], [39], [65], [83], [68], [70], [32]],
|
|
1670
|
+
keyCtrl11_0: [[37], [40], [38], [39], [83], [68], [70], [32], [74], [75], [76]],
|
|
1671
|
+
keyCtrl11L_0: [[87], [69], [51, 52], [82], [83], [68], [70], [32], [74], [75], [76]],
|
|
1672
|
+
keyCtrl11W_0: [[49, 50], [84], [89], [48, 189], [83], [68], [70], [32], [74], [75], [76]],
|
|
1673
|
+
keyCtrl11i_0: [[83], [88, 67], [68], [69, 82], [70], [32], [74], [77, 188], [75], [73, 79], [76]],
|
|
1674
|
+
keyCtrl12_0: [[85], [73], [56, 57], [79], [32], [78], [74], [77], [75], [188], [76], [190]],
|
|
1675
|
+
keyCtrl13_0: [[37], [40], [38], [39], [83], [68], [69, 82], [70], [32], [74], [75], [73], [76]],
|
|
1676
|
+
keyCtrl14_0: [[84, 89], [85], [73], [56, 55, 57, 48], [79], [192, 80], [32], [78], [74], [77], [75], [188], [76], [190]],
|
|
1677
|
+
keyCtrl14i_0: [[90, 87], [88, 69], [67, 82], [37], [40], [38], [39], [83], [68], [70], [32], [74], [75], [76]],
|
|
1678
|
+
keyCtrl15A_0: [[87], [69], [51, 52], [82], [37], [40], [38], [39], [83], [68], [70], [32], [74], [75], [76]],
|
|
1679
|
+
keyCtrl15B_0: [[87], [69], [51, 52], [82], [85], [73], [56, 57], [79], [83], [68], [70], [32], [74], [75], [76]],
|
|
1680
|
+
keyCtrl16i_0: [[90, 87], [88, 69], [67, 82], [37], [40], [38], [39], [65], [83], [68], [70], [32], [74], [75], [76], [187]],
|
|
1681
|
+
keyCtrl17_0: [[65], [90], [83], [88], [68], [67], [70], [86], [32], [78], [74], [77], [75], [188], [76], [190], [187]],
|
|
1682
|
+
keyCtrl23_0: [[87], [69], [51, 52], [82], [85], [73], [56, 57], [79],
|
|
1683
|
+
[90], [83], [88], [68], [67], [70], [86], [32], [78], [74], [77], [75], [188], [76], [190]],
|
|
1674
1684
|
|
|
1675
1685
|
// 変則パターン (キーコンフィグ)
|
|
1676
1686
|
// - _0 の数字部分をカウントアップすることで実現できる。
|
|
1677
|
-
keyCtrl5_1: [[32
|
|
1678
|
-
keyCtrl7_1: [[83
|
|
1679
|
-
keyCtrl8_1: [[13
|
|
1680
|
-
keyCtrl9A_1: [[83
|
|
1681
|
-
keyCtrl9i_1: [[65
|
|
1682
|
-
keyCtrl12_1: [[89
|
|
1683
|
-
keyCtrl14_1: [[82, 84], [89
|
|
1684
|
-
keyCtrl17_1: [[65
|
|
1687
|
+
keyCtrl5_1: [[32], [37], [40], [38], [39]],
|
|
1688
|
+
keyCtrl7_1: [[83], [69], [70], [32, 71, 72], [74], [73], [76]],
|
|
1689
|
+
keyCtrl8_1: [[13], [83], [68], [70], [32], [74], [75], [76]],
|
|
1690
|
+
keyCtrl9A_1: [[83], [68], [69, 82], [70], [32], [37], [40], [38], [39]],
|
|
1691
|
+
keyCtrl9i_1: [[65], [83], [68], [70], [32], [37], [40], [38], [39]],
|
|
1692
|
+
keyCtrl12_1: [[89], [85, 73], [56, 55, 57], [79], [32], [66], [72], [78, 77], [74, 75], [188], [76], [190]],
|
|
1693
|
+
keyCtrl14_1: [[82, 84], [89], [85, 73], [56, 54, 55, 57, 48], [79], [192, 80], [32], [66], [72], [78, 77], [74, 75], [188], [76], [190]],
|
|
1694
|
+
keyCtrl17_1: [[65], [83], [68], [70], [32], [74], [75], [76], [187], [90], [88], [67], [86], [78], [77], [188], [190]],
|
|
1685
1695
|
|
|
1686
|
-
keyCtrl5_2: [[68
|
|
1687
|
-
keyCtrl8_2: [[32
|
|
1688
|
-
keyCtrl12_2: [[87
|
|
1689
|
-
keyCtrl14_2: [[9, 81], [87
|
|
1696
|
+
keyCtrl5_2: [[68], [70], [32], [74], [75]],
|
|
1697
|
+
keyCtrl8_2: [[32], [78], [74], [77], [75], [188], [76], [190]],
|
|
1698
|
+
keyCtrl12_2: [[87], [69], [51, 52], [82], [16], [90], [83], [88], [68], [67], [70], [86]],
|
|
1699
|
+
keyCtrl14_2: [[9, 81], [87], [69], [51, 50, 52, 53], [82], [89, 84], [16], [90], [83], [88], [68], [67], [70], [86]],
|
|
1690
1700
|
|
|
1691
|
-
keyCtrl8_3: [[32
|
|
1692
|
-
keyCtrl12_3: [[87
|
|
1693
|
-
keyCtrl14_3: [[9, 81], [87
|
|
1701
|
+
keyCtrl8_3: [[32], [66], [72], [78, 77], [74, 75], [188], [76], [190]],
|
|
1702
|
+
keyCtrl12_3: [[87], [69, 82], [51, 52, 53], [84], [16], [90], [83], [88, 67], [68, 70], [86], [71], [66]],
|
|
1703
|
+
keyCtrl14_3: [[9, 81], [87], [69, 82], [51, 50, 52, 53, 54], [84], [85, 89], [16], [90], [83], [88, 67], [68, 70], [86], [71], [66]],
|
|
1694
1704
|
|
|
1695
|
-
keyCtrl8_4: [[16
|
|
1705
|
+
keyCtrl8_4: [[16], [90], [83], [88], [68], [67], [70], [86]],
|
|
1696
1706
|
|
|
1697
|
-
keyCtrl8_5: [[16
|
|
1707
|
+
keyCtrl8_5: [[16], [90], [83], [88, 67], [68, 70], [86], [71], [66]],
|
|
1698
1708
|
|
|
1699
1709
|
// 矢印間隔補正
|
|
1700
1710
|
blank: 55,
|
|
@@ -1853,6 +1863,7 @@ const g_keyObj = {
|
|
|
1853
1863
|
scrollDir12_0: {
|
|
1854
1864
|
'---': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
1855
1865
|
'Flat': [1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1],
|
|
1866
|
+
'Twist': [1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, -1],
|
|
1856
1867
|
},
|
|
1857
1868
|
scrollDir13_0: {
|
|
1858
1869
|
'---': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
@@ -1885,6 +1896,9 @@ const g_keyObj = {
|
|
|
1885
1896
|
scrollDir23_0: {
|
|
1886
1897
|
'---': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
1887
1898
|
'Flat': [1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
|
1899
|
+
'Cross': [-1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
1900
|
+
'Twist': [1, 1, 1, 1, 1, 1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, -1, 1, 1, 1, 1, 1, -1],
|
|
1901
|
+
'Asymmetry': [-1, -1, -1, -1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1, -1],
|
|
1888
1902
|
},
|
|
1889
1903
|
|
|
1890
1904
|
// プレイアシスト設定
|
|
@@ -2036,9 +2050,14 @@ Object.keys(g_copyKeyPtn).forEach(keyPtnTo => {
|
|
|
2036
2050
|
});
|
|
2037
2051
|
|
|
2038
2052
|
// デフォルト配列のコピー (g_keyObj.aaa_X から g_keyObj.aaa_Xd を作成)
|
|
2053
|
+
// keyCtrlX_Yについて1キーにつき2キー割り当てできるように配列を補完
|
|
2039
2054
|
const keyCtrlName = Object.keys(g_keyObj).filter(val => val.startsWith(`keyCtrl`));
|
|
2040
|
-
keyCtrlName.forEach(property =>
|
|
2055
|
+
keyCtrlName.forEach(property => {
|
|
2056
|
+
g_keyObj[property].forEach((list, j) => g_keyObj[property][j] = makeBaseArray(g_keyObj[property][j], g_keyObj.minKeyCtrlNum, 0));
|
|
2057
|
+
g_keyObj[`${property}d`] = copyArray2d(g_keyObj[property]);
|
|
2058
|
+
});
|
|
2041
2059
|
|
|
2060
|
+
// shuffleX_Y, colorX_Yについてデフォルト配列を作成
|
|
2042
2061
|
g_keycons.groups.forEach(type => {
|
|
2043
2062
|
const tmpName = Object.keys(g_keyObj).filter(val => val.startsWith(type) && val.endsWith(`_0`));
|
|
2044
2063
|
tmpName.forEach(property => g_keyObj[`${property.slice(0, -2)}`] = g_keyObj[property].concat());
|