danoniplus 38.1.1 → 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 +30 -33
- 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);
|
|
@@ -8809,7 +8805,7 @@ const getBrakeTrace = _frms => {
|
|
|
8809
8805
|
const getFountainTrace = (_frms, _spd) => {
|
|
8810
8806
|
const minj = C_MOTION_STD_POS + 1;
|
|
8811
8807
|
const maxj = C_MOTION_STD_POS + Math.ceil(400 / _spd) + 1;
|
|
8812
|
-
const maxMotionFrm = Math.max(maxj, C_MOTION_STD_POS +
|
|
8808
|
+
const maxMotionFrm = Math.max(maxj, C_MOTION_STD_POS + g_sHeight / 2);
|
|
8813
8809
|
const diff = 50 / (maxj - minj);
|
|
8814
8810
|
const factor = 0.5 + _spd / 40;
|
|
8815
8811
|
|
|
@@ -8910,6 +8906,7 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
8910
8906
|
return;
|
|
8911
8907
|
}
|
|
8912
8908
|
|
|
8909
|
+
const calcInitBoostY = _frm => sumData(g_workObj.motionOnFrames.filter((val, j) => j <= g_workObj.motionFrame[_frm]));
|
|
8913
8910
|
const camelHeader = toCapitalize(_header);
|
|
8914
8911
|
const setcnt = (_frzFlg ? 2 : 1);
|
|
8915
8912
|
if (_frzFlg && _data.length % 2 !== 0) {
|
|
@@ -8931,7 +8928,7 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
8931
8928
|
g_workObj.initY[frmPrev] = tmpObj.startY;
|
|
8932
8929
|
g_workObj.arrivalFrame[frmPrev] = tmpObj.arrivalFrm;
|
|
8933
8930
|
g_workObj.motionFrame[frmPrev] = tmpObj.motionFrm;
|
|
8934
|
-
g_workObj.initBoostY[frmPrev] =
|
|
8931
|
+
g_workObj.initBoostY[frmPrev] = calcInitBoostY(frmPrev);
|
|
8935
8932
|
|
|
8936
8933
|
if (_frzFlg) {
|
|
8937
8934
|
g_workObj[`mk${camelHeader}Length`][_j] = [];
|
|
@@ -8960,7 +8957,7 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
8960
8957
|
g_workObj.initY[tmpFrame] = g_workObj.initY[frmPrev];
|
|
8961
8958
|
g_workObj.arrivalFrame[tmpFrame] = g_workObj.arrivalFrame[frmPrev];
|
|
8962
8959
|
g_workObj.motionFrame[tmpFrame] = g_workObj.motionFrame[frmPrev];
|
|
8963
|
-
g_workObj.initBoostY[tmpFrame] =
|
|
8960
|
+
g_workObj.initBoostY[tmpFrame] = calcInitBoostY(tmpFrame);
|
|
8964
8961
|
|
|
8965
8962
|
} else {
|
|
8966
8963
|
|
|
@@ -8977,7 +8974,7 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
8977
8974
|
g_workObj.initY[frmPrev] = tmpObj.startY;
|
|
8978
8975
|
g_workObj.arrivalFrame[frmPrev] = tmpObj.arrivalFrm;
|
|
8979
8976
|
g_workObj.motionFrame[frmPrev] = tmpObj.motionFrm;
|
|
8980
|
-
g_workObj.initBoostY[frmPrev] =
|
|
8977
|
+
g_workObj.initBoostY[frmPrev] = calcInitBoostY(frmPrev);
|
|
8981
8978
|
}
|
|
8982
8979
|
|
|
8983
8980
|
// 出現タイミングを保存
|