danoniplus 39.8.18 → 39.8.20

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 +46 -25
  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/06
7
+ * Revised : 2026/03/20
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 39.8.18`;
12
- const g_revisedDate = `2026/03/06`;
11
+ const g_version = `Ver 39.8.20`;
12
+ const g_revisedDate = `2026/03/20`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -5779,13 +5779,14 @@ const makeHighScore = _scoreId => {
5779
5779
  tweetDifData += `:${getStgDetailName(g_stateObj.shuffle)}`;
5780
5780
  }
5781
5781
 
5782
+ const storedExcessive = g_localStorage.highscores[scoreName]?.excessive;
5782
5783
  const resultParams = {
5783
5784
  hashTag: (hasVal(g_headerObj.hashTag) ? ` ${g_headerObj.hashTag}` : ``),
5784
5785
  tuning: g_headerObj.creatorNames[_scoreId],
5785
5786
  rankMark: g_localStorage.highscores?.[scoreName]?.rankMark || `--`,
5786
5787
  playStyleData: g_localStorage.highscores[scoreName]?.playStyle || `--`,
5787
5788
  highscore: g_localStorage.highscores[scoreName],
5788
- tweetExcessive: hasVal(g_localStorage.highscores[scoreName]?.excessive, `---`) ? `(+${g_resultObj.excessive})` : ``,
5789
+ tweetExcessive: hasVal(storedExcessive, `---`) ? `(+${storedExcessive})` : ``,
5789
5790
  musicTitle, tweetDifData, tweetFrzJdg, tweetMaxCombo, baseTwitUrl,
5790
5791
  };
5791
5792
  const resultCommon = unEscapeHtml(makeResultText(g_templateObj.resultFormatDf, resultParams));
@@ -10088,6 +10089,47 @@ const getArrowSettings = () => {
10088
10089
  g_workObj.frzHitShadowColorsAll[j] = ``;
10089
10090
 
10090
10091
  }
10092
+
10093
+ // Swapping設定に応じたステップゾーンの入れ替え
10094
+ if (g_stateObj.swapping.includes(`Mirror`)) {
10095
+
10096
+ let _style = structuredClone(Object.values(g_workObj.shuffleGroupMap));
10097
+ const _styleTrans = _style.flatMap(arr => {
10098
+ // g_workObj.devidePosの値ごとにグループ化する
10099
+ const groups = {};
10100
+
10101
+ arr.forEach(n => {
10102
+ const div = g_workObj.dividePos[n];
10103
+ if (!groups[div]) groups[div] = [];
10104
+ groups[div].push(n);
10105
+ });
10106
+
10107
+ // groups は {0:[...], 1:[...], 2:[...]} のような形になるので
10108
+ // これを配列に変換して返す
10109
+ return Object.values(groups);
10110
+ });
10111
+ const _styleTransDf = structuredClone(Object.values(_styleTrans));
10112
+ if (g_stateObj.swapping === `Mirror`) {
10113
+ _styleTrans.map(_group => _group.reverse());
10114
+
10115
+ } else if (g_stateObj.swapping === `X-Mirror`) {
10116
+ // X-Mirrorの場合、グループの内側だけ入れ替える
10117
+ _styleTrans.forEach((group, i) => {
10118
+ g_settings.swapPattern.forEach(val => {
10119
+ swapGroupNums(_styleTrans, group, i, val);
10120
+ });
10121
+ });
10122
+ }
10123
+
10124
+ // 入れ替えた結果に合わせてX座標位置を入れ替える
10125
+ g_workObj.stepX_df = structuredClone(g_workObj.stepX);
10126
+ _styleTrans.forEach((_group, _i) => {
10127
+ _group.forEach((_val, _j) => {
10128
+ g_workObj.stepX[_group[_j]] = g_workObj.stepX_df[_styleTransDf[_i][_j]];
10129
+ });
10130
+ });
10131
+ }
10132
+
10091
10133
  g_workObj.orgFlatFlg = g_workObj.dividePos.every(v => v === g_workObj.dividePos[0]);
10092
10134
  if (g_stateObj.stepArea === `X-Flower` || (g_stateObj.stepArea.includes(`Mismatched`) && g_workObj.orgFlatFlg)) {
10093
10135
  for (let j = 0; j < keyNum; j++) {
@@ -10129,27 +10171,6 @@ const getArrowSettings = () => {
10129
10171
  g_workObj.backX = (g_workObj.nonDefaultSc && g_headerObj.playingLayout ? g_headerObj.scAreaWidth : 0);
10130
10172
  g_workObj.playingX = g_headerObj.playingX + g_workObj.backX;
10131
10173
 
10132
- // Swapping設定に応じたステップゾーンの入れ替え
10133
- if (g_stateObj.swapping.includes(`Mirror`)) {
10134
-
10135
- let _style = structuredClone(Object.values(g_workObj.shuffleGroupMap));
10136
- if (g_stateObj.swapping === `Mirror`) {
10137
- _style.map(_group => _group.reverse());
10138
-
10139
- } else if (g_stateObj.swapping === `X-Mirror`) {
10140
- // X-Mirrorの場合、グループの内側だけ入れ替える
10141
- _style.forEach((group, i) => g_settings.swapPattern.forEach(val => swapGroupNums(_style, group, i, val)));
10142
- }
10143
-
10144
- // 入れ替えた結果に合わせてX座標位置を入れ替える
10145
- g_workObj.stepX_df = structuredClone(g_workObj.stepX);
10146
- _style.forEach((_group, _i) => {
10147
- _group.forEach((_val, _j) => {
10148
- g_workObj.stepX[_group[_j]] = g_workObj.stepX_df[g_workObj.shuffleGroupMap[_i][_j]];
10149
- });
10150
- });
10151
- }
10152
-
10153
10174
  // FrzReturnの初期化
10154
10175
  g_workObj.frzReturnFlg = false;
10155
10176
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "39.8.18",
3
+ "version": "39.8.20",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "index.js",
6
6
  "scripts": {