danoniplus 46.1.0 → 46.2.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.
Files changed (2) hide show
  1. package/js/danoni_main.js +40 -10
  2. 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 : 2026/03/15
7
+ * Revised : 2026/03/19
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 46.1.0`;
12
- const g_revisedDate = `2026/03/15`;
11
+ const g_version = `Ver 46.2.0`;
12
+ const g_revisedDate = `2026/03/19`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -8783,11 +8783,14 @@ const exSettingInit = () => {
8783
8783
  * 拡張設定込みの標準設定
8784
8784
  * @param {any[]} _spriteList
8785
8785
  * @param {string} _name
8786
- * @param {{ defaultList?: string[], displayName?: string }} [options={}]
8786
+ * @param {{ defaultList?: string[], displayName?: string, func?: function, funcEx?: function }} [options={}]
8787
8787
  * @param {string[]} [options.defaultList=[C_FLG_OFF]] 拡張設定未使用の設定リスト
8788
8788
  * @param {string} [options.displayName='exSetting']
8789
+ * @param {function} [options.func=()=>true] 通常ボタン用追加関数
8790
+ * @param {function} [options.funcEx=()=>true] 拡張ボタン用追加関数
8789
8791
  */
8790
- const createGeneralSettingEx = (_spriteList, _name, { defaultList = [C_FLG_OFF], displayName = `exSetting` } = {}) => {
8792
+ const createGeneralSettingEx = (_spriteList, _name, { defaultList = [C_FLG_OFF], displayName = `exSetting`,
8793
+ func = () => true, funcEx = () => true } = {}) => {
8791
8794
  if (_spriteList?.[_name] === undefined) return;
8792
8795
 
8793
8796
  /**
@@ -8815,11 +8818,13 @@ const createGeneralSettingEx = (_spriteList, _name, { defaultList = [C_FLG_OFF],
8815
8818
  createCss2Button(`lnk${toCapitalize(_name)}Type`, getStgDetailName(g_stateObj[`${_name}Type`]),
8816
8819
  () => {
8817
8820
  setSetting(1, `${_name}Type`, { maxSiz: g_limitObj.difSelectorSiz });
8821
+ funcEx();
8818
8822
  createExpandedScView(_name);
8819
8823
  },
8820
8824
  Object.assign({
8821
8825
  cxtFunc: () => {
8822
8826
  setSetting(-1, `${_name}Type`, { maxSiz: g_limitObj.difSelectorSiz });
8827
+ funcEx();
8823
8828
  createExpandedScView(_name);
8824
8829
  },
8825
8830
  title: g_msgObj[`${_name}Type`] ?? ``,
@@ -8846,6 +8851,7 @@ const createGeneralSettingEx = (_spriteList, _name, { defaultList = [C_FLG_OFF],
8846
8851
  if (typeEnabled) {
8847
8852
  setExpandedBtnSiz();
8848
8853
  }
8854
+ func();
8849
8855
  },
8850
8856
  });
8851
8857
  if (typeEnabled) {
@@ -10262,7 +10268,11 @@ const applyMirror = (_keyNum, _shuffleGroup, _swapFlg = false) => {
10262
10268
  const mirStyle = structuredClone(style);
10263
10269
 
10264
10270
  if (_swapFlg) {
10265
- style.forEach((group, i) => g_settings.swapPattern.forEach(val => swapGroupNums(style, group, i, val)));
10271
+ style.forEach((group, i) => {
10272
+ g_settings.swapPattern.forEach(val => {
10273
+ swapGroupNums(style, group, i, val);
10274
+ });
10275
+ });
10266
10276
  let swapUseFlg = false;
10267
10277
  style.forEach((_group, j) => {
10268
10278
  _group.forEach((val, k) => {
@@ -12027,19 +12037,39 @@ const getArrowSettings = () => {
12027
12037
  }
12028
12038
  if (g_stateObj.swapping.endsWith(`Mirror`)) {
12029
12039
 
12040
+ // Swappingにおけるグループ単位での入れ替えでは、上下でステップゾーンが分かれている場合は分離してシャッフルする
12030
12041
  let _style = structuredClone(Object.values(g_workObj.shuffleGroupMap));
12042
+ const _styleTrans = _style.flatMap(arr => {
12043
+ const small = arr.filter(n => g_keyObj[`pos${keyCtrlPtn}`][n] < g_keyObj[`div${keyCtrlPtn}`]);
12044
+ const large = arr.filter(n => g_keyObj[`pos${keyCtrlPtn}`][n] >= g_keyObj[`div${keyCtrlPtn}`]);
12045
+ return [
12046
+ ...(small.length ? [small] : []),
12047
+ ...(large.length ? [large] : [])
12048
+ ];
12049
+ });
12050
+ const _styleTransDf = structuredClone(Object.values(_styleTrans));
12051
+
12031
12052
  if (g_stateObj.swapping === `Mirror`) {
12032
- _style.map(_group => _group.reverse());
12053
+ _styleTrans.map(_group => _group.reverse());
12033
12054
 
12034
12055
  } else if (g_stateObj.swapping === `X-Mirror`) {
12035
12056
  // X-Mirrorの場合、グループの内側だけ入れ替える
12036
- _style.forEach((group, i) => g_settings.swapPattern.forEach(val => swapGroupNums(_style, group, i, val)));
12057
+ _styleTrans.forEach((group, i) => {
12058
+ g_settings.swapPattern.forEach(val => {
12059
+ swapGroupNums(_styleTrans, group, i, val);
12060
+ });
12061
+ });
12062
+ }
12063
+ // オリジナルと同一の場合、設定をOFFに戻す
12064
+ if (JSON.stringify(_styleTransDf) === JSON.stringify(_styleTrans)) {
12065
+ g_stateObj.swapping = C_FLG_OFF;
12066
+ g_settings.swappingNum = 0;
12037
12067
  }
12038
12068
 
12039
12069
  // 入れ替えた結果に合わせてX座標位置を入れ替える
12040
- _style.forEach((_group, _i) => {
12070
+ _styleTrans.forEach((_group, _i) => {
12041
12071
  _group.forEach((_val, _j) => {
12042
- g_workObj.stepX[_group[_j]] = g_workObj.stepX_df[g_workObj.shuffleGroupMap[_i][_j]];
12072
+ g_workObj.stepX[_group[_j]] = g_workObj.stepX_df[_styleTransDf[_i][_j]];
12043
12073
  });
12044
12074
  });
12045
12075
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "46.1.0",
3
+ "version": "46.2.0",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "./js/danoni_main.js",
6
6
  "scripts": {