danoniplus 48.5.6 → 48.5.7

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 +20 -7
  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/08/01
7
+ * Revised : 2026/08/12
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 48.5.6`;
12
- const g_revisedDate = `2026/08/01`;
11
+ const g_version = `Ver 48.5.7`;
12
+ const g_revisedDate = `2026/08/12`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -12597,7 +12597,10 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
12597
12597
  let layerTrans = tmpScrollchData[4] ?? ``;
12598
12598
  maxLayerGroup = Math.max(maxLayerGroup, layerGroup);
12599
12599
  if (g_stateObj.reverse === C_FLG_ON) {
12600
- layerTrans = invertSpecificTransforms(layerTrans);
12600
+ layerTrans = invertSpecificTransforms(layerTrans, [`translateX`]);
12601
+ }
12602
+ if (g_stateObj.swapping === `Mirror+`) {
12603
+ layerTrans = invertSpecificTransforms(layerTrans, [`translateY`]);
12601
12604
  }
12602
12605
 
12603
12606
  scrollchData.push([frame, arrowNum, frame, scrollDir, layerGroup, layerTrans]);
@@ -13758,15 +13761,20 @@ const pushScrollchs = (_header, _frameArrow, _val, _frameStep, _scrollDir, _laye
13758
13761
  /**
13759
13762
  * ホワイトリストに登録されたCSS関数内の数値符号のみを反転する関数
13760
13763
  * @param {string} cssString
13764
+ * @param {string[]} exceptList 反転対象から除外するCSS関数名のリスト
13761
13765
  * @returns {string}
13762
13766
  */
13763
- const invertSpecificTransforms = (cssString) => {
13767
+ const invertSpecificTransforms = (cssString, exceptList = []) => {
13764
13768
  // 反転対象にしたいCSS関数名を指定(ホワイトリスト)
13765
- const targetFunctions = [
13769
+ const baseTargetFunctions = [
13766
13770
  `rotate`, `rotateX`, `rotateY`, `rotateZ`, `rotate3d`,
13767
13771
  `translate`, `translateX`, `translateY`, `translateZ`, `translate3d`,
13768
13772
  `skew`, `skewX`, `skewY`
13769
13773
  ];
13774
+ const targetFunctions = baseTargetFunctions.filter(pattern => !exceptList.includes(pattern));
13775
+ if (targetFunctions.length === 0) {
13776
+ return cssString; // 反転対象がない場合は元の文字列を返す
13777
+ }
13770
13778
 
13771
13779
  // RegExパターンを作成: /(rotate|translate...)\(([^)]+)\)/g
13772
13780
  const pattern = new RegExp(`\\b(${targetFunctions.join(`|`)})\\(([^)]+)\\)`, `g`);
@@ -13858,7 +13866,12 @@ const getArrowSettings = () => {
13858
13866
  if (g_keyObj[`layerTrans${keyCtrlPtn}`]?.[0]) {
13859
13867
  g_workObj.layerTrans = structuredClone(g_keyObj[`layerTrans${keyCtrlPtn}`][0]);
13860
13868
  if (g_stateObj.reverse === C_FLG_ON) {
13861
- g_workObj.layerTrans = g_workObj.layerTrans.map(val => invertSpecificTransforms(val));
13869
+ // Reverse時はX軸反転のため、X軸の座標変換では符号を変換しない
13870
+ g_workObj.layerTrans = g_workObj.layerTrans.map(val => invertSpecificTransforms(val, [`translateX`]));
13871
+ }
13872
+ if (g_stateObj.swapping === `Mirror+`) {
13873
+ // Swapping: Mirror+ はY軸反転のため、Y軸の座標変換では符号を変換しない
13874
+ g_workObj.layerTrans = g_workObj.layerTrans.map(val => invertSpecificTransforms(val, [`translateY`]));
13862
13875
  }
13863
13876
  }
13864
13877
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "48.5.6",
3
+ "version": "48.5.7",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "./js/danoni_main.js",
6
6
  "jsdelivr": "./js/danoni_main.js",