danoniplus 30.3.1 → 30.4.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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Maintainability](https://api.codeclimate.com/v1/badges/9558f21e17a47a4dc987/maintainability)](https://codeclimate.com/github/cwtickle/danoniplus/maintainability)
4
4
  [![CodeQL](https://github.com/cwtickle/danoniplus/workflows/CodeQL/badge.svg)](https://github.com/cwtickle/danoniplus/actions?query=workflow%3ACodeQL)
5
- [![Join the chat at https://gitter.im/danonicw/community](https://badges.gitter.im/danonicw/community.svg)](https://gitter.im/danonicw/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
5
+ [![GitLab Community](https://img.shields.io/gitlab/issues/open/cwtickle/danonicw?gitlab_url=https%3A%2F%2Fgitlab.com%2F&label=Community&logo=gitlab)](https://gitlab.com/cwtickle/danonicw/-/issues)
6
6
  [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/cwtickle/danoniplus?sort=semver)](https://github.com/cwtickle/danoniplus/security/policy)
7
7
  [![GitHub All Releases](https://img.shields.io/github/downloads/cwtickle/danoniplus/total?color=%23ff3399&label=downloads%20%28recently%29)](https://github.com/cwtickle/danoniplus/releases)
8
8
  [![GitHub](https://img.shields.io/github/license/cwtickle/danoniplus)](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
- - [Gitter for requests and bug reports / 要望・不具合報告(Gitter)](https://gitter.im/danonicw/community)
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/danonicw/freeboard)
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/04
7
+ * Revised : 2023/03/10
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 30.3.1`;
12
- const g_revisedDate = `2023/03/04`;
11
+ const g_version = `Ver 30.4.0`;
12
+ const g_revisedDate = `2023/03/10`;
13
13
  const g_alphaVersion = ``;
14
14
 
15
15
  // カスタム用バージョン (danoni_custom.js 等で指定可)
@@ -3483,43 +3483,50 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
3483
3483
  * 新キー用複合パラメータ(特殊)
3484
3484
  * @param {string} _key キー数
3485
3485
  * @param {string} _name 名前
3486
- * @param {object} _obj errCd エラーコード
3487
- * @returns 最小パターン数
3488
3486
  */
3489
- const newKeyTripleParam = (_key, _name, { errCd = `` } = {}) => {
3490
- let tmpMinPatterns = 1;
3487
+ const newKeyTripleParam = (_key, _name) => {
3491
3488
  const keyheader = _name + _key;
3492
3489
  const dfPtn = setIntVal(g_keyObj.dfPtnNum);
3493
3490
 
3494
3491
  if (hasVal(_dosObj[keyheader])) {
3495
3492
  const tmpArray = splitLF2(_dosObj[keyheader]);
3496
- tmpMinPatterns = tmpArray.length;
3497
- for (let k = 0; k < tmpMinPatterns; k++) {
3493
+ for (let k = 0; k < tmpArray.length; k++) {
3498
3494
  if (existParam(tmpArray[k], `${keyheader}_${k + dfPtn}`)) {
3499
3495
  continue;
3500
3496
  }
3501
- if (g_keyObj[`${_name}${tmpArray[k]}_0`] !== undefined) {
3502
3497
 
3503
- // 他のキーパターン (例: |shuffle8i=8_0| ) を指定した場合、該当があれば既存パターンからコピー
3504
- let m = 0;
3505
- while (g_keyObj[`${_name}${tmpArray[k]}_${m}`] !== undefined) {
3506
- g_keyObj[`${keyheader}_${k + dfPtn}_${m}`] = structuredClone(g_keyObj[`${_name}${tmpArray[k]}_${m}`]);
3507
- m++;
3508
- }
3509
- } else {
3498
+ let ptnCnt = 0;
3499
+ tmpArray[k].split(`/`).forEach(list => {
3510
3500
 
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
- }
3501
+ if (list === ``) {
3502
+ // 空指定の場合は一律同じグループへ割り当て
3503
+ g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] = [...Array(g_keyObj[`chara${_key}_${k + dfPtn}`].length)].fill(0);
3504
+
3505
+ } else if (g_keyObj[`${_name}${list}_0`] !== undefined) {
3506
+ // 他のキーパターン (例: |shuffle8i=8_0| ) を指定した場合、該当があれば既存パターンからコピー
3507
+ let m = 0;
3508
+ while (g_keyObj[`${_name}${list}_${m}`] !== undefined) {
3509
+ g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] = structuredClone(g_keyObj[`${_name}${list}_${m}`]);
3510
+ m++;
3511
+ ptnCnt++;
3512
+ }
3513
+ } else {
3514
+ // 通常の指定方法 (例: |shuffle8i=1,1,1,2,0,0,0,0/1,1,1,1,0,0,0,0| )の場合の取り込み
3515
+ g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] = list.split(`,`).map(n => parseInt(n, 10));
3516
+ ptnCnt++;
3517
+ }
3518
+ });
3516
3519
  g_keyObj[`${keyheader}_${k + dfPtn}`] = structuredClone(g_keyObj[`${keyheader}_${k + dfPtn}_0`]);
3517
3520
  }
3518
3521
 
3519
- } else if (errCd !== `` && g_keyObj[`${keyheader}_0`] === undefined) {
3520
- makeWarningWindow(g_msgInfoObj[errCd].split(`{0}`).join(_key));
3522
+ } else if (g_keyObj[`${keyheader}_${dfPtn}_0`] === undefined) {
3523
+ // 特に指定が無い場合はcharaX_Yの配列長で決定
3524
+ for (let k = 0; k < g_keyObj.minPatterns; k++) {
3525
+ const ptnName = `${_key}_${k + dfPtn}`;
3526
+ g_keyObj[`${_name}${ptnName}_0`] = [...Array(g_keyObj[`chara${ptnName}`].length)].fill(0);
3527
+ g_keyObj[`${_name}${ptnName}`] = structuredClone(g_keyObj[`${_name}${ptnName}_0`]);
3528
+ }
3521
3529
  }
3522
- return tmpMinPatterns;
3523
3530
  };
3524
3531
 
3525
3532
  /**
@@ -3576,7 +3583,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
3576
3583
 
3577
3584
  // 対象キー毎に処理
3578
3585
  keyExtraList.forEach(newKey => {
3579
- let tmpMinPatterns = 1;
3586
+ g_keyObj.minPatterns = 1;
3580
3587
  g_keyObj.dfPtnNum = 0;
3581
3588
 
3582
3589
  // キーパターンの追記 (appendX)
@@ -3596,17 +3603,17 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
3596
3603
  // キーの最小横幅 (minWidthX)
3597
3604
  g_keyObj[`minWidth${newKey}`] = _dosObj[`minWidth${newKey}`] ?? g_keyObj[`minWidth${newKey}`] ?? g_keyObj.minWidthDefault;
3598
3605
 
3599
- // 矢印色パターン (colorX_Y)
3600
- tmpMinPatterns = newKeyTripleParam(newKey, `color`, { errCd: `E_0101` });
3601
-
3602
3606
  // 読込変数の接頭辞 (charaX_Y)
3603
- tmpMinPatterns = newKeyMultiParam(newKey, `chara`, toString, { errCd: `E_0102` });
3607
+ g_keyObj.minPatterns = newKeyMultiParam(newKey, `chara`, toString, { errCd: `E_0102` });
3608
+
3609
+ // 矢印色パターン (colorX_Y)
3610
+ newKeyTripleParam(newKey, `color`);
3604
3611
 
3605
3612
  // 矢印の回転量指定、キャラクタパターン (stepRtnX_Y)
3606
- tmpMinPatterns = newKeyMultiParam(newKey, `stepRtn`, toStringOrNumber, { errCd: `E_0103` });
3613
+ newKeyMultiParam(newKey, `stepRtn`, toStringOrNumber, { errCd: `E_0103` });
3607
3614
 
3608
3615
  // キーコンフィグ (keyCtrlX_Y)
3609
- tmpMinPatterns = newKeyMultiParam(newKey, `keyCtrl`, toSplitArray, { errCd: `E_0104`, baseCopyFlg: true });
3616
+ newKeyMultiParam(newKey, `keyCtrl`, toSplitArray, { errCd: `E_0104`, baseCopyFlg: true });
3610
3617
 
3611
3618
  // ステップゾーン位置 (posX_Y)
3612
3619
  newKeyMultiParam(newKey, `pos`, toFloat);
@@ -3633,7 +3640,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
3633
3640
  }
3634
3641
  }
3635
3642
  // posX_Y, divX_Y, divMaxX_Yが未指定の場合はcharaX_Yを元に適用
3636
- for (let k = 0; k < tmpMinPatterns; k++) {
3643
+ for (let k = 0; k < g_keyObj.minPatterns; k++) {
3637
3644
  setKeyDfVal(`${newKey}_${k + dfPtnNum}`);
3638
3645
  }
3639
3646
 
@@ -3654,14 +3661,6 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
3654
3661
 
3655
3662
  // シャッフルグループ (shuffleX_Y)
3656
3663
  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
3664
 
3666
3665
  // キーグループ (keyGroupX_Y)
3667
3666
  newKeyMultiParam(newKey, `keyGroup`, toSplitArrayStr);
@@ -10518,7 +10517,7 @@ const resultInit = _ => {
10518
10517
 
10519
10518
  // Gitterへのリンク
10520
10519
  createCss2Button(`btnGitter`, g_lblNameObj.b_gitter, _ => true, Object.assign(g_lblPosObj.btnRsGitter, {
10521
- resetFunc: _ => openLink(`https://gitter.im/danonicw/freeboard`),
10520
+ resetFunc: _ => openLink(`https://app.gitter.im/#/room/#danonicw_freeboard:gitter.im`),
10522
10521
  }), g_cssObj.button_Default),
10523
10522
 
10524
10523
  // リトライ
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2019/11/19
8
- * Revised : 2023/03/04 (v30.3.1)
8
+ * Revised : 2023/03/10 (v30.4.0)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -1853,6 +1853,7 @@ const g_keyObj = {
1853
1853
  scrollDir12_0: {
1854
1854
  '---': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
1855
1855
  'Flat': [1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1],
1856
+ 'Twist': [1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, -1],
1856
1857
  },
1857
1858
  scrollDir13_0: {
1858
1859
  '---': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
@@ -1885,6 +1886,9 @@ const g_keyObj = {
1885
1886
  scrollDir23_0: {
1886
1887
  '---': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
1887
1888
  'Flat': [1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
1889
+ 'Cross': [-1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1],
1890
+ 'Twist': [1, 1, 1, 1, 1, 1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, -1, 1, 1, 1, 1, 1, -1],
1891
+ '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
1892
  },
1889
1893
 
1890
1894
  // プレイアシスト設定
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "30.3.1",
3
+ "version": "30.4.0",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "index.js",
6
6
  "scripts": {