danoniplus 49.4.1 → 49.4.2

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/07
7
+ * Revised : 2026/08/12
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 49.4.1`;
12
- const g_revisedDate = `2026/08/07`;
11
+ const g_version = `Ver 49.4.2`;
12
+ const g_revisedDate = `2026/08/12`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -13007,7 +13007,10 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
13007
13007
  let layerTrans = tmpScrollchData[4] ?? ``;
13008
13008
  maxLayerGroup = Math.max(maxLayerGroup, layerGroup);
13009
13009
  if (g_stateObj.reverse === C_FLG_ON) {
13010
- layerTrans = invertSpecificTransforms(layerTrans);
13010
+ layerTrans = invertSpecificTransforms(layerTrans, [`translateX`]);
13011
+ }
13012
+ if (g_stateObj.swapping === `Mirror+`) {
13013
+ layerTrans = invertSpecificTransforms(layerTrans, [`translateY`]);
13011
13014
  }
13012
13015
 
13013
13016
  scrollchData.push([frame, arrowNum, frame, scrollDir, layerGroup, layerTrans]);
@@ -14168,15 +14171,20 @@ const pushScrollchs = (_header, _frameArrow, _val, _frameStep, _scrollDir, _laye
14168
14171
  /**
14169
14172
  * ホワイトリストに登録されたCSS関数内の数値符号のみを反転する関数
14170
14173
  * @param {string} cssString
14174
+ * @param {string[]} exceptList 反転対象から除外するCSS関数名のリスト
14171
14175
  * @returns {string}
14172
14176
  */
14173
- const invertSpecificTransforms = (cssString) => {
14177
+ const invertSpecificTransforms = (cssString, exceptList = []) => {
14174
14178
  // 反転対象にしたいCSS関数名を指定(ホワイトリスト)
14175
- const targetFunctions = [
14179
+ const baseTargetFunctions = [
14176
14180
  `rotate`, `rotateX`, `rotateY`, `rotateZ`, `rotate3d`,
14177
14181
  `translate`, `translateX`, `translateY`, `translateZ`, `translate3d`,
14178
14182
  `skew`, `skewX`, `skewY`
14179
14183
  ];
14184
+ const targetFunctions = baseTargetFunctions.filter(pattern => !exceptList.includes(pattern));
14185
+ if (targetFunctions.length === 0) {
14186
+ return cssString; // 反転対象がない場合は元の文字列を返す
14187
+ }
14180
14188
 
14181
14189
  // RegExパターンを作成: /(rotate|translate...)\(([^)]+)\)/g
14182
14190
  const pattern = new RegExp(`\\b(${targetFunctions.join(`|`)})\\(([^)]+)\\)`, `g`);
@@ -14268,7 +14276,12 @@ const getArrowSettings = () => {
14268
14276
  if (g_keyObj[`layerTrans${keyCtrlPtn}`]?.[0]) {
14269
14277
  g_workObj.layerTrans = structuredClone(g_keyObj[`layerTrans${keyCtrlPtn}`][0]);
14270
14278
  if (g_stateObj.reverse === C_FLG_ON) {
14271
- g_workObj.layerTrans = g_workObj.layerTrans.map(val => invertSpecificTransforms(val));
14279
+ // Reverse時はX軸反転のため、X軸の座標変換では符号を変換しない
14280
+ g_workObj.layerTrans = g_workObj.layerTrans.map(val => invertSpecificTransforms(val, [`translateX`]));
14281
+ }
14282
+ if (g_stateObj.swapping === `Mirror+`) {
14283
+ // Swapping: Mirror+ はY軸反転のため、Y軸の座標変換では符号を変換しない
14284
+ g_workObj.layerTrans = g_workObj.layerTrans.map(val => invertSpecificTransforms(val, [`translateY`]));
14272
14285
  }
14273
14286
  }
14274
14287
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "49.4.1",
3
+ "version": "49.4.2",
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",