danoniplus 38.1.2 → 38.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.
- package/js/danoni_main.js +25 -29
- 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 : 2024/12/
|
|
7
|
+
* Revised : 2024/12/14
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 38.
|
|
12
|
-
const g_revisedDate = `2024/12/
|
|
11
|
+
const g_version = `Ver 38.2.0`;
|
|
12
|
+
const g_revisedDate = `2024/12/14`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -8054,40 +8054,36 @@ const applySRandom = (_keyNum, _shuffleGroup, _arrowHeader, _frzHeader) => {
|
|
|
8054
8054
|
// 通常矢印の配置
|
|
8055
8055
|
const allArrows = _group.map(_key => g_scoreObj[`${_arrowHeader}Data`][_key]).flat();
|
|
8056
8056
|
allArrows.sort((_a, _b) => _a - _b);
|
|
8057
|
-
let prev2Num = 0, prevNum = 0;
|
|
8057
|
+
let prev2Num = 0, prevNum = 0, sameFlg = true;
|
|
8058
8058
|
allArrows.forEach(_arrow => {
|
|
8059
8059
|
|
|
8060
8060
|
// 直前の矢印のフレーム数を取得
|
|
8061
|
-
|
|
8062
|
-
|
|
8063
|
-
|
|
8064
|
-
|
|
8065
|
-
|
|
8066
|
-
}
|
|
8061
|
+
sameFlg = true;
|
|
8062
|
+
if (prev2Num !== _arrow && prevNum !== _arrow) {
|
|
8063
|
+
prev2Num = prevNum;
|
|
8064
|
+
prevNum = _arrow;
|
|
8065
|
+
sameFlg = false;
|
|
8066
|
+
}
|
|
8067
|
+
|
|
8068
|
+
const getFreeSpaces = ({ scatterFrame = 0, frzFlg = false, prevFlg = false } = {}) =>
|
|
8069
|
+
_group.filter(_key =>
|
|
8070
|
+
// 通常矢印と重ならない
|
|
8071
|
+
tmpArrowData[_key].find(_other => _arrow >= _other - scatterFrame && _arrow <= _other + scatterFrame) === undefined
|
|
8072
|
+
// フリーズと重ならない
|
|
8073
|
+
&& (!frzFlg || tmpFrzData[_key].find(_freeze => _arrow >= _freeze.begin - scatterFrame && _arrow <= _freeze.end + scatterFrame) === undefined)
|
|
8074
|
+
// 直前の矢印と重ならない
|
|
8075
|
+
&& (!prevFlg || tmpArrowData[_key].find(_other => prev2Num === _other) === undefined)
|
|
8076
|
+
);
|
|
8067
8077
|
|
|
8068
8078
|
// 置ける場所を検索
|
|
8069
|
-
const freeSpacesFlat =
|
|
8070
|
-
|
|
8071
|
-
|
|
8072
|
-
|
|
8073
|
-
&& tmpArrowData[_key].find(_other => _arrow >= _other - scatterFrame && _arrow <= _other + scatterFrame) === undefined
|
|
8074
|
-
// 直前の矢印と重ならない
|
|
8075
|
-
&& tmpArrowData[_key].find(_other => prev2Num === _other) === undefined
|
|
8076
|
-
);
|
|
8077
|
-
const freeSpaces = _group.filter(_key =>
|
|
8078
|
-
// フリーズと重ならない
|
|
8079
|
-
tmpFrzData[_key].find(_freeze => _arrow >= _freeze.begin && _arrow <= _freeze.end) === undefined
|
|
8080
|
-
// 通常矢印と重ならない
|
|
8081
|
-
&& tmpArrowData[_key].find(_other => _arrow === _other) === undefined
|
|
8082
|
-
);
|
|
8083
|
-
const freeSpacesAlt = _group.filter(_key =>
|
|
8084
|
-
// 通常矢印と重ならない
|
|
8085
|
-
tmpArrowData[_key].find(_other => _arrow === _other) === undefined
|
|
8086
|
-
);
|
|
8079
|
+
const freeSpacesFlat = getFreeSpaces({ scatterFrame, frzFlg: true, prevFlg: true });
|
|
8080
|
+
const freeSpaces = getFreeSpaces({ frzFlg: true });
|
|
8081
|
+
const freeSpacesAlt = getFreeSpaces();
|
|
8082
|
+
|
|
8087
8083
|
// ランダムに配置
|
|
8088
8084
|
let currentFreeSpaces = freeSpaces.length > 0 ? freeSpaces : freeSpacesAlt;
|
|
8089
8085
|
if (g_stateObj.shuffle.startsWith(`Scatter`)) {
|
|
8090
|
-
currentFreeSpaces = freeSpacesFlat.length > 0 ? freeSpacesFlat : currentFreeSpaces;
|
|
8086
|
+
currentFreeSpaces = freeSpacesFlat.length > 0 && !sameFlg ? freeSpacesFlat : currentFreeSpaces;
|
|
8091
8087
|
}
|
|
8092
8088
|
const random = Math.floor(Math.random() * currentFreeSpaces.length);
|
|
8093
8089
|
tmpArrowData[currentFreeSpaces[random]].push(_arrow);
|