danoniplus 37.2.1 → 37.3.1
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 +63 -30
- 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/
|
|
7
|
+
* Revised : 2024/07/07
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 37.
|
|
12
|
-
const g_revisedDate = `2024/
|
|
11
|
+
const g_version = `Ver 37.3.1`;
|
|
12
|
+
const g_revisedDate = `2024/07/07`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -2406,7 +2406,7 @@ const storeBaseData = (_scoreId, _scoreObj, _keyCtrlPtn) => {
|
|
|
2406
2406
|
g_detailObj.maxDensity[_scoreId] = getMaxValIdxs(densityData, g_limitObj.densityMaxVals).flat();
|
|
2407
2407
|
|
|
2408
2408
|
g_detailObj.arrowCnt[_scoreId] = noteCnt.arrow.concat();
|
|
2409
|
-
g_detailObj.frzCnt[_scoreId] = noteCnt.frz.
|
|
2409
|
+
g_detailObj.frzCnt[_scoreId] = noteCnt.frz.map((val, k) => _scoreObj.frzData[k].length % 2 === 0 ? val : val - 0.5);
|
|
2410
2410
|
g_detailObj.startFrame[_scoreId] = startFrame;
|
|
2411
2411
|
g_detailObj.playingFrame[_scoreId] = playingFrame;
|
|
2412
2412
|
g_detailObj.playingFrameWithBlank[_scoreId] = lastFrame - startFrame;
|
|
@@ -4977,7 +4977,7 @@ const makeDifInfoLabels = _scoreId => {
|
|
|
4977
4977
|
const makeDifInfo = _scoreId => {
|
|
4978
4978
|
|
|
4979
4979
|
const arrowCnts = sumData(g_detailObj.arrowCnt[_scoreId]);
|
|
4980
|
-
const frzCnts = sumData(g_detailObj.frzCnt[_scoreId]);
|
|
4980
|
+
const frzCnts = sumData(g_detailObj.frzCnt[_scoreId].map(val => Math.floor(val)));
|
|
4981
4981
|
const push3CntStr = (g_detailObj.toolDif[_scoreId].push3.length === 0 ? `None` : `(${g_detailObj.toolDif[_scoreId].push3.join(', ')})`);
|
|
4982
4982
|
|
|
4983
4983
|
if (document.getElementById(`lblTooldif`) === null) {
|
|
@@ -5011,6 +5011,9 @@ const makeDifInfo = _scoreId => {
|
|
|
5011
5011
|
array[j] = (val === minVal ? `<span class="settings_minArrowCnts">${val}</span>` :
|
|
5012
5012
|
(val === maxVal ? `<span class="settings_maxArrowCnts common_bold">${val}</span>` : val));
|
|
5013
5013
|
}
|
|
5014
|
+
if (val - Math.floor(val) > 0) {
|
|
5015
|
+
array[j] = `<span class="keyconfig_warning">${val}</span>`;
|
|
5016
|
+
}
|
|
5014
5017
|
});
|
|
5015
5018
|
cntlistStr += array.join(`, `) + ` ]`;
|
|
5016
5019
|
});
|
|
@@ -7513,7 +7516,7 @@ const loadingScoreInit = async () => {
|
|
|
7513
7516
|
g_allArrow = 0;
|
|
7514
7517
|
g_allFrz = 0;
|
|
7515
7518
|
g_scoreObj.arrowData.forEach(data => g_allArrow += data.length);
|
|
7516
|
-
g_scoreObj.frzData.forEach(data => g_allFrz += data.length);
|
|
7519
|
+
g_scoreObj.frzData.forEach(data => g_allFrz += Math.floor(data.length / 2) * 2);
|
|
7517
7520
|
|
|
7518
7521
|
// ライフ回復・ダメージ量の計算
|
|
7519
7522
|
// フリーズ始点でも通常判定させる場合は総矢印数を水増しする
|
|
@@ -8463,9 +8466,24 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
8463
8466
|
/** Motionの適用フレーム数 */
|
|
8464
8467
|
g_workObj.motionFrame = [];
|
|
8465
8468
|
|
|
8466
|
-
const setNotes = (_j, _k, _data, _startPoint, _header, _frzFlg = false) => {
|
|
8469
|
+
const setNotes = (_j, _k, _data, _startPoint, _header, _frzFlg = false, { initY, initBoostY, arrivalFrame, motionFrame } = {}) => {
|
|
8467
8470
|
if (_startPoint >= 0) {
|
|
8468
|
-
|
|
8471
|
+
const arrowAttrs = { pos: _j, initY, initBoostY, arrivalFrame, motionFrame };
|
|
8472
|
+
if (g_workObj[`mk${_header}Arrow`][_startPoint] === undefined) {
|
|
8473
|
+
g_workObj[`mk${_header}Arrow`][_startPoint] = [arrowAttrs];
|
|
8474
|
+
} else {
|
|
8475
|
+
let insertFlg = false;
|
|
8476
|
+
for (let m = 0; m < g_workObj[`mk${_header}Arrow`][_startPoint].length; m++) {
|
|
8477
|
+
if (arrowAttrs.arrivalFrame < g_workObj[`mk${_header}Arrow`][_startPoint][m].arrivalFrame) {
|
|
8478
|
+
g_workObj[`mk${_header}Arrow`][_startPoint].splice(m, 0, arrowAttrs);
|
|
8479
|
+
insertFlg = true;
|
|
8480
|
+
break;
|
|
8481
|
+
}
|
|
8482
|
+
}
|
|
8483
|
+
if (!insertFlg) {
|
|
8484
|
+
g_workObj[`mk${_header}Arrow`][_startPoint].push(arrowAttrs);
|
|
8485
|
+
}
|
|
8486
|
+
}
|
|
8469
8487
|
if (_frzFlg) {
|
|
8470
8488
|
g_workObj[`mk${_header}Length`][_j][_k] = getFrzLength(_speedOnFrame, _data[_k], _data[_k + 1]);
|
|
8471
8489
|
}
|
|
@@ -8481,6 +8499,9 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
8481
8499
|
|
|
8482
8500
|
const camelHeader = toCapitalize(_header);
|
|
8483
8501
|
const setcnt = (_frzFlg ? 2 : 1);
|
|
8502
|
+
if (_frzFlg && _data.length % 2 !== 0) {
|
|
8503
|
+
_data.pop();
|
|
8504
|
+
}
|
|
8484
8505
|
|
|
8485
8506
|
const startPoint = [];
|
|
8486
8507
|
let spdNext = Infinity;
|
|
@@ -8502,7 +8523,8 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
8502
8523
|
if (_frzFlg) {
|
|
8503
8524
|
g_workObj[`mk${camelHeader}Length`][_j] = [];
|
|
8504
8525
|
}
|
|
8505
|
-
setNotes(_j, lastk, _data, startPoint[lastk], camelHeader, _frzFlg
|
|
8526
|
+
setNotes(_j, lastk, _data, startPoint[lastk], camelHeader, _frzFlg,
|
|
8527
|
+
{ initY: tmpObj.startY, initBoostY: g_workObj.initBoostY[frmPrev], arrivalFrame: tmpObj.arrivalFrm, motionFrame: tmpObj.motionFrm });
|
|
8506
8528
|
|
|
8507
8529
|
// 矢印は1つずつ、フリーズアローは2つで1セット
|
|
8508
8530
|
for (let k = lastk - setcnt; k >= 0; k -= setcnt) {
|
|
@@ -8546,7 +8568,9 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
8546
8568
|
}
|
|
8547
8569
|
|
|
8548
8570
|
// 出現タイミングを保存
|
|
8549
|
-
setNotes(_j, k, _data, startPoint[k], camelHeader, _frzFlg
|
|
8571
|
+
setNotes(_j, k, _data, startPoint[k], camelHeader, _frzFlg,
|
|
8572
|
+
{ initY: tmpObj.startY, initBoostY: g_workObj.initBoostY[frmPrev], arrivalFrame: tmpObj.arrivalFrm, motionFrame: tmpObj.motionFrm }
|
|
8573
|
+
);
|
|
8550
8574
|
}
|
|
8551
8575
|
};
|
|
8552
8576
|
|
|
@@ -8994,6 +9018,11 @@ const getArrowSettings = _ => {
|
|
|
8994
9018
|
g_keyCopyLists.simpleDef.forEach(header => updateKeyInfo(header, keyCtrlPtn));
|
|
8995
9019
|
g_headerObj.tuning = g_headerObj.creatorNames[g_stateObj.scoreId];
|
|
8996
9020
|
|
|
9021
|
+
delete g_workObj.initY;
|
|
9022
|
+
delete g_workObj.initBoostY;
|
|
9023
|
+
delete g_workObj.arrivalFrame;
|
|
9024
|
+
delete g_workObj.motionFrame;
|
|
9025
|
+
|
|
8997
9026
|
g_workObj.stepX = [];
|
|
8998
9027
|
g_workObj.scrollDir = [];
|
|
8999
9028
|
g_workObj.scrollDirDefault = [];
|
|
@@ -10002,27 +10031,30 @@ const mainInit = _ => {
|
|
|
10002
10031
|
|
|
10003
10032
|
/**
|
|
10004
10033
|
* 矢印生成
|
|
10005
|
-
* @param {number}
|
|
10034
|
+
* @param {number} _attrs 矢印個別の属性
|
|
10035
|
+
* (pos: 矢印種類, arrivalFrame: 到達フレーム数, initY: 初期表示位置,
|
|
10036
|
+
* initBoostY: Motion有効時の初期表示位置加算, motionFrame: アニメーション有効フレーム数)
|
|
10006
10037
|
* @param {number} _arrowCnt 現在の判定矢印順
|
|
10007
10038
|
* @param {string} _name 矢印名
|
|
10008
10039
|
* @param {string} _color 矢印色
|
|
10009
10040
|
* @param {string} _shadowColor 矢印塗りつぶし部分の色
|
|
10010
10041
|
*/
|
|
10011
|
-
const makeArrow = (
|
|
10042
|
+
const makeArrow = (_attrs, _arrowCnt, _name, _color, _shadowColor) => {
|
|
10043
|
+
const _j = _attrs.pos;
|
|
10012
10044
|
const dividePos = g_workObj.dividePos[_j];
|
|
10013
10045
|
const colorPos = g_keyObj[`color${keyCtrlPtn}`][_j];
|
|
10014
10046
|
|
|
10015
10047
|
const arrowName = `${_name}${_j}_${_arrowCnt}`;
|
|
10016
10048
|
const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
|
|
10017
|
-
(
|
|
10018
|
-
|
|
10049
|
+
(_attrs.initY * g_workObj.boostSpd +
|
|
10050
|
+
_attrs.initBoostY * g_workObj.boostDir) * g_workObj.scrollDir[_j];
|
|
10019
10051
|
|
|
10020
10052
|
const stepRoot = createEmptySprite(arrowSprite[dividePos], arrowName, {
|
|
10021
10053
|
x: g_workObj.stepX[_j], y: firstPosY, w: C_ARW_WIDTH, h: C_ARW_WIDTH,
|
|
10022
10054
|
});
|
|
10023
10055
|
g_attrObj[arrowName] = {
|
|
10024
|
-
cnt:
|
|
10025
|
-
boostCnt:
|
|
10056
|
+
cnt: _attrs.arrivalFrame + 1,
|
|
10057
|
+
boostCnt: _attrs.motionFrame,
|
|
10026
10058
|
boostSpd: g_workObj.boostSpd, dividePos: dividePos,
|
|
10027
10059
|
dir: g_workObj.scrollDir[_j], boostDir: g_workObj.boostDir,
|
|
10028
10060
|
prevY: firstPosY, y: firstPosY,
|
|
@@ -10032,7 +10064,7 @@ const mainInit = _ => {
|
|
|
10032
10064
|
|
|
10033
10065
|
if (g_workObj[`${_name}CssMotions`][_j] !== ``) {
|
|
10034
10066
|
stepRoot.classList.add(g_workObj[`${_name}CssMotions`][_j]);
|
|
10035
|
-
stepRoot.style.animationDuration = `${
|
|
10067
|
+
stepRoot.style.animationDuration = `${_attrs.arrivalFrame / g_fps}s`;
|
|
10036
10068
|
}
|
|
10037
10069
|
|
|
10038
10070
|
// 内側塗りつぶし矢印は、下記の順で作成する。
|
|
@@ -10084,28 +10116,29 @@ const mainInit = _ => {
|
|
|
10084
10116
|
|
|
10085
10117
|
/**
|
|
10086
10118
|
* フリーズアロー生成
|
|
10087
|
-
* @param {number}
|
|
10119
|
+
* @param {number} _attrs
|
|
10088
10120
|
* @param {number} _arrowCnt
|
|
10089
10121
|
* @param {string} _name
|
|
10090
10122
|
* @param {string} _normalColor
|
|
10091
10123
|
* @param {string} _barColor
|
|
10092
10124
|
* @param {string} _shadowColor
|
|
10093
10125
|
*/
|
|
10094
|
-
const makeFrzArrow = (
|
|
10126
|
+
const makeFrzArrow = (_attrs, _arrowCnt, _name, _normalColor, _barColor, _shadowColor) => {
|
|
10127
|
+
const _j = _attrs.pos;
|
|
10095
10128
|
const dividePos = g_workObj.dividePos[_j];
|
|
10096
10129
|
const frzNo = `${_j}_${_arrowCnt}`;
|
|
10097
10130
|
const frzName = `${_name}${frzNo}`;
|
|
10098
10131
|
const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
|
|
10099
|
-
(
|
|
10100
|
-
|
|
10132
|
+
(_attrs.initY * g_workObj.boostSpd +
|
|
10133
|
+
_attrs.initBoostY * g_workObj.boostDir) * g_workObj.scrollDir[_j];
|
|
10101
10134
|
const firstBarLength = g_workObj[`mk${toCapitalize(_name)}Length`][_j][(_arrowCnt - 1) * 2] * g_workObj.boostSpd;
|
|
10102
10135
|
|
|
10103
10136
|
const frzRoot = createEmptySprite(arrowSprite[dividePos], frzName, {
|
|
10104
10137
|
x: g_workObj.stepX[_j], y: firstPosY, w: C_ARW_WIDTH, h: C_ARW_WIDTH + firstBarLength,
|
|
10105
10138
|
});
|
|
10106
10139
|
g_attrObj[frzName] = {
|
|
10107
|
-
cnt:
|
|
10108
|
-
boostCnt:
|
|
10140
|
+
cnt: _attrs.arrivalFrame + 1,
|
|
10141
|
+
boostCnt: _attrs.motionFrame,
|
|
10109
10142
|
judgEndFlg: false, isMoving: true, frzBarLength: firstBarLength, keyUpFrame: 0,
|
|
10110
10143
|
boostSpd: g_workObj.boostSpd, dividePos: dividePos, dir: g_workObj.scrollDir[_j], boostDir: g_workObj.boostDir,
|
|
10111
10144
|
y: firstPosY, barY: C_ARW_WIDTH / 2 - firstBarLength * dividePos, btmY: firstBarLength * g_workObj.scrollDir[_j],
|
|
@@ -10115,7 +10148,7 @@ const mainInit = _ => {
|
|
|
10115
10148
|
|
|
10116
10149
|
if (g_workObj[`${_name}CssMotions`][_j] !== ``) {
|
|
10117
10150
|
frzRoot.classList.add(g_workObj[`${_name}CssMotions`][_j]);
|
|
10118
|
-
frzRoot.style.animationDuration = `${
|
|
10151
|
+
frzRoot.style.animationDuration = `${_attrs.arrivalFrame / g_fps}s`;
|
|
10119
10152
|
}
|
|
10120
10153
|
let shadowColor = _shadowColor === `Default` ? _normalColor : _shadowColor;
|
|
10121
10154
|
|
|
@@ -10312,21 +10345,21 @@ const mainInit = _ => {
|
|
|
10312
10345
|
|
|
10313
10346
|
// ダミー矢印生成(背面に表示するため先に処理)
|
|
10314
10347
|
g_workObj.mkDummyArrow[currentFrame]?.forEach(data =>
|
|
10315
|
-
makeArrow(data, ++dummyArrowCnts[data], `dummyArrow`, g_workObj.dummyArrowColors[data], g_workObj.dummyArrowShadowColors[data]));
|
|
10348
|
+
makeArrow(data, ++dummyArrowCnts[data.pos], `dummyArrow`, g_workObj.dummyArrowColors[data.pos], g_workObj.dummyArrowShadowColors[data.pos]));
|
|
10316
10349
|
|
|
10317
10350
|
// 矢印生成
|
|
10318
10351
|
g_workObj.mkArrow[currentFrame]?.forEach(data =>
|
|
10319
|
-
makeArrow(data, ++arrowCnts[data], `arrow`, g_workObj.arrowColors[data], g_workObj.arrowShadowColors[data]));
|
|
10352
|
+
makeArrow(data, ++arrowCnts[data.pos], `arrow`, g_workObj.arrowColors[data.pos], g_workObj.arrowShadowColors[data.pos]));
|
|
10320
10353
|
|
|
10321
10354
|
// ダミーフリーズアロー生成
|
|
10322
10355
|
g_workObj.mkDummyFrzArrow[currentFrame]?.forEach(data =>
|
|
10323
|
-
makeFrzArrow(data, ++dummyFrzCnts[data], `dummyFrz`, g_workObj.dummyFrzNormalColors[data],
|
|
10324
|
-
g_workObj.dummyFrzNormalBarColors[data], g_workObj.dummyFrzNormalShadowColors[data]));
|
|
10356
|
+
makeFrzArrow(data, ++dummyFrzCnts[data.pos], `dummyFrz`, g_workObj.dummyFrzNormalColors[data.pos],
|
|
10357
|
+
g_workObj.dummyFrzNormalBarColors[data.pos], g_workObj.dummyFrzNormalShadowColors[data.pos]));
|
|
10325
10358
|
|
|
10326
10359
|
// フリーズアロー生成
|
|
10327
10360
|
g_workObj.mkFrzArrow[currentFrame]?.forEach(data =>
|
|
10328
|
-
makeFrzArrow(data, ++frzCnts[data], `frz`, g_workObj.frzNormalColors[data],
|
|
10329
|
-
g_workObj.frzNormalBarColors[data], g_workObj.frzNormalShadowColors[data]));
|
|
10361
|
+
makeFrzArrow(data, ++frzCnts[data.pos], `frz`, g_workObj.frzNormalColors[data.pos],
|
|
10362
|
+
g_workObj.frzNormalBarColors[data.pos], g_workObj.frzNormalShadowColors[data.pos]));
|
|
10330
10363
|
|
|
10331
10364
|
// 矢印・フリーズアロー移動&消去
|
|
10332
10365
|
for (let j = 0; j < keyNum; j++) {
|