danoniplus 30.1.1 → 30.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 +141 -27
- package/js/lib/danoni_constants.js +2 -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 : 2023/02/
|
|
7
|
+
* Revised : 2023/02/17
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 30.
|
|
12
|
-
const g_revisedDate = `2023/02/
|
|
11
|
+
const g_version = `Ver 30.2.0`;
|
|
12
|
+
const g_revisedDate = `2023/02/17`;
|
|
13
13
|
const g_alphaVersion = ``;
|
|
14
14
|
|
|
15
15
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
@@ -7134,6 +7134,31 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
7134
7134
|
return [];
|
|
7135
7135
|
};
|
|
7136
7136
|
|
|
7137
|
+
/**
|
|
7138
|
+
* スクロール変化データの分解
|
|
7139
|
+
* @param {number} _scoreNo
|
|
7140
|
+
*/
|
|
7141
|
+
const setScrollchData = (_scoreNo) => {
|
|
7142
|
+
const dosScrollchData = _dosObj[`scrollch${_scoreNo}_data`] || _dosObj.scrollch_data;
|
|
7143
|
+
const scrollchData = [];
|
|
7144
|
+
|
|
7145
|
+
if (hasVal(dosScrollchData)) {
|
|
7146
|
+
splitLF(dosScrollchData).filter(data => hasVal(data)).forEach(tmpData => {
|
|
7147
|
+
const tmpScrollchData = tmpData.split(`,`);
|
|
7148
|
+
if (isNaN(parseInt(tmpScrollchData[0]))) {
|
|
7149
|
+
return;
|
|
7150
|
+
}
|
|
7151
|
+
const frame = calcFrame(tmpScrollchData[0]);
|
|
7152
|
+
const arrowNum = parseFloat(tmpScrollchData[1]);
|
|
7153
|
+
const scrollDir = parseFloat(tmpScrollchData[2] ?? `1`);
|
|
7154
|
+
|
|
7155
|
+
scrollchData.push([frame, frame, arrowNum, scrollDir]);
|
|
7156
|
+
});
|
|
7157
|
+
return scrollchData.sort((_a, _b) => _a[0] - _b[0]).flat();
|
|
7158
|
+
}
|
|
7159
|
+
return [];
|
|
7160
|
+
};
|
|
7161
|
+
|
|
7137
7162
|
/**
|
|
7138
7163
|
* 譜面データの優先順配列の取得
|
|
7139
7164
|
* @param {string} _header
|
|
@@ -7154,21 +7179,24 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
7154
7179
|
*/
|
|
7155
7180
|
const getPriorityHeader = _ => {
|
|
7156
7181
|
const list = [];
|
|
7182
|
+
const anotherKeyFlg = hasVal(g_keyObj[`transKey${_keyCtrlPtn}`]);
|
|
7157
7183
|
let type = ``;
|
|
7158
7184
|
if (g_stateObj.scroll !== `---`) {
|
|
7159
7185
|
type = `Alt`;
|
|
7160
7186
|
} else if (g_stateObj.reverse === C_FLG_ON) {
|
|
7161
7187
|
type = `Rev`;
|
|
7162
7188
|
}
|
|
7163
|
-
|
|
7189
|
+
|
|
7190
|
+
if (anotherKeyFlg) {
|
|
7191
|
+
list.push(`${g_stateObj.scroll}A`);
|
|
7164
7192
|
list.push(`${type}A`);
|
|
7193
|
+
list.push(`A`);
|
|
7165
7194
|
}
|
|
7166
|
-
|
|
7167
|
-
|
|
7168
|
-
}
|
|
7195
|
+
list.push(g_stateObj.scroll);
|
|
7196
|
+
list.push(type);
|
|
7169
7197
|
list.push(``);
|
|
7170
7198
|
|
|
7171
|
-
return list;
|
|
7199
|
+
return makeDedupliArray(list);
|
|
7172
7200
|
};
|
|
7173
7201
|
|
|
7174
7202
|
/**
|
|
@@ -7323,6 +7351,9 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
7323
7351
|
obj.dummyFrzCssMotionData = setCssMotionData(`frz`, _dummyNo);
|
|
7324
7352
|
}
|
|
7325
7353
|
|
|
7354
|
+
// スクロール変化データの分解
|
|
7355
|
+
obj.scrollchData = setScrollchData(scoreIdHeader);
|
|
7356
|
+
|
|
7326
7357
|
// 歌詞データの分解 (3つで1セット, セット毎の改行区切り可)
|
|
7327
7358
|
obj.wordData = [];
|
|
7328
7359
|
obj.wordMaxDepth = -1;
|
|
@@ -7364,7 +7395,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
7364
7395
|
// キー変化定義
|
|
7365
7396
|
obj.keychFrames = [];
|
|
7366
7397
|
if (hasVal(_dosObj[`keych${setScoreIdHeader(g_stateObj.scoreId, g_stateObj.scoreLockFlg)}_data`])) {
|
|
7367
|
-
const keychdata = _dosObj[`keych${setScoreIdHeader(g_stateObj.scoreId, g_stateObj.scoreLockFlg)}_data`]
|
|
7398
|
+
const keychdata = splitLF2(_dosObj[`keych${setScoreIdHeader(g_stateObj.scoreId, g_stateObj.scoreLockFlg)}_data`], `,`);
|
|
7368
7399
|
obj.keychFrames = keychdata.filter((val, j) => j % 2 === 0);
|
|
7369
7400
|
obj.keychTarget = keychdata.filter((val, j) => j % 2 === 1);
|
|
7370
7401
|
} else {
|
|
@@ -7684,26 +7715,27 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
7684
7715
|
}
|
|
7685
7716
|
|
|
7686
7717
|
// 個別加速のタイミング更新
|
|
7687
|
-
|
|
7688
|
-
|
|
7689
|
-
|
|
7690
|
-
|
|
7691
|
-
|
|
7692
|
-
|
|
7693
|
-
|
|
7694
|
-
|
|
7695
|
-
|
|
7696
|
-
|
|
7697
|
-
|
|
7698
|
-
|
|
7699
|
-
_dataObj.boostData[k] = tmpObj.frm;
|
|
7718
|
+
const getTimingData = _data => {
|
|
7719
|
+
if (hasArrayList(_data, 2)) {
|
|
7720
|
+
let delIdx = 0;
|
|
7721
|
+
for (let k = _data.length - 2; k >= 0; k -= 2) {
|
|
7722
|
+
const tmpObj = getArrowStartFrame(_data[k], _speedOnFrame, _motionOnFrame);
|
|
7723
|
+
if (tmpObj.frm < g_scoreObj.frameNum) {
|
|
7724
|
+
_data[k] = g_scoreObj.frameNum;
|
|
7725
|
+
delIdx = k;
|
|
7726
|
+
break;
|
|
7727
|
+
} else {
|
|
7728
|
+
_data[k] = tmpObj.frm;
|
|
7729
|
+
}
|
|
7700
7730
|
}
|
|
7731
|
+
for (let k = 0; k < delIdx; k++) {
|
|
7732
|
+
_data.shift();
|
|
7733
|
+
}
|
|
7734
|
+
return copyArray2d(_data);
|
|
7701
7735
|
}
|
|
7702
|
-
|
|
7703
|
-
|
|
7704
|
-
|
|
7705
|
-
g_workObj.boostData = copyArray2d(_dataObj.boostData);
|
|
7706
|
-
}
|
|
7736
|
+
return [];
|
|
7737
|
+
};
|
|
7738
|
+
g_workObj.boostData = getTimingData(_dataObj.boostData);
|
|
7707
7739
|
|
|
7708
7740
|
/**
|
|
7709
7741
|
* 色変化・モーションデータのタイミング更新
|
|
@@ -7819,6 +7851,8 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
7819
7851
|
g_typeLists.arrow.forEach(header =>
|
|
7820
7852
|
calcDataTiming(`cssMotion`, header, pushCssMotions, { _calcFrameFlg: true }));
|
|
7821
7853
|
|
|
7854
|
+
calcDataTiming(`scrollch`, ``, pushScrollchs, { _calcFrameFlg: true });
|
|
7855
|
+
|
|
7822
7856
|
g_fadeinStockList.forEach(type =>
|
|
7823
7857
|
_dataObj[`${type}Data`] = calcAnimationData(type, _dataObj[`${type}Data`]));
|
|
7824
7858
|
|
|
@@ -8052,6 +8086,48 @@ const pushCssMotions = (_header, _frame, _val, _styleName, _styleNameRev) => {
|
|
|
8052
8086
|
}
|
|
8053
8087
|
};
|
|
8054
8088
|
|
|
8089
|
+
/**
|
|
8090
|
+
* スクロール変化情報の格納
|
|
8091
|
+
* @param {string} _header
|
|
8092
|
+
* @param {number} _frameArrow
|
|
8093
|
+
* @param {number} _frameStep
|
|
8094
|
+
* @param {number} _val
|
|
8095
|
+
* @param {number} _scrollDir
|
|
8096
|
+
*/
|
|
8097
|
+
const pushScrollchs = (_header, _frameArrow, _frameStep, _val, _scrollDir) => {
|
|
8098
|
+
const tkObj = getKeyInfo();
|
|
8099
|
+
|
|
8100
|
+
const frameArrow = Math.max(_frameArrow, g_scoreObj.frameNum);
|
|
8101
|
+
const frameStep = Math.max(_frameStep, g_scoreObj.frameNum);
|
|
8102
|
+
|
|
8103
|
+
if (g_workObj.mkScrollchArrow[frameArrow] === undefined) {
|
|
8104
|
+
g_workObj.mkScrollchArrow[frameArrow] = [];
|
|
8105
|
+
g_workObj.mkScrollchArrowDir[frameArrow] = [];
|
|
8106
|
+
}
|
|
8107
|
+
if (g_workObj.mkScrollchStep[frameStep] === undefined) {
|
|
8108
|
+
g_workObj.mkScrollchStep[frameStep] = [];
|
|
8109
|
+
g_workObj.mkScrollchStepDir[frameStep] = [];
|
|
8110
|
+
}
|
|
8111
|
+
if (_val < 20 || _val >= 1000) {
|
|
8112
|
+
const realVal = g_workObj.replaceNums[_val % 1000];
|
|
8113
|
+
g_workObj.mkScrollchArrow[frameArrow].push(realVal);
|
|
8114
|
+
g_workObj.mkScrollchArrowDir[frameArrow].push(_scrollDir);
|
|
8115
|
+
g_workObj.mkScrollchStep[frameStep].push(realVal);
|
|
8116
|
+
g_workObj.mkScrollchStepDir[frameStep].push(_scrollDir);
|
|
8117
|
+
|
|
8118
|
+
} else {
|
|
8119
|
+
const colorNum = _val - 20;
|
|
8120
|
+
for (let j = 0; j < tkObj.keyNum; j++) {
|
|
8121
|
+
if (g_keyObj[`color${tkObj.keyCtrlPtn}`][j] === colorNum) {
|
|
8122
|
+
g_workObj.mkScrollchArrow[frameArrow].push(j);
|
|
8123
|
+
g_workObj.mkScrollchArrowDir[frameArrow].push(_scrollDir);
|
|
8124
|
+
g_workObj.mkScrollchStep[frameStep].push(j);
|
|
8125
|
+
g_workObj.mkScrollchStepDir[frameStep].push(_scrollDir);
|
|
8126
|
+
}
|
|
8127
|
+
}
|
|
8128
|
+
}
|
|
8129
|
+
};
|
|
8130
|
+
|
|
8055
8131
|
/**
|
|
8056
8132
|
* メイン画面前の初期化処理
|
|
8057
8133
|
*/
|
|
@@ -8067,6 +8143,7 @@ const getArrowSettings = _ => {
|
|
|
8067
8143
|
|
|
8068
8144
|
g_workObj.stepX = [];
|
|
8069
8145
|
g_workObj.scrollDir = [];
|
|
8146
|
+
g_workObj.scrollDirDefault = [];
|
|
8070
8147
|
g_workObj.dividePos = [];
|
|
8071
8148
|
g_workObj.stepRtn = copyArray2d(g_keyObj[`stepRtn${keyCtrlPtn}`]);
|
|
8072
8149
|
g_workObj.stepHitRtn = copyArray2d(g_keyObj[`stepRtn${keyCtrlPtn}`]);
|
|
@@ -8138,6 +8215,7 @@ const getArrowSettings = _ => {
|
|
|
8138
8215
|
});
|
|
8139
8216
|
});
|
|
8140
8217
|
}
|
|
8218
|
+
g_workObj.scrollDirDefault = g_workObj.scrollDir.concat();
|
|
8141
8219
|
|
|
8142
8220
|
Object.keys(g_resultObj).forEach(judgeCnt => g_resultObj[judgeCnt] = 0);
|
|
8143
8221
|
g_resultObj.spState = ``;
|
|
@@ -9329,6 +9407,10 @@ const mainInit = _ => {
|
|
|
9329
9407
|
keychCnts++;
|
|
9330
9408
|
}
|
|
9331
9409
|
|
|
9410
|
+
// スクロール変化
|
|
9411
|
+
changeScrollArrowDirs(currentFrame);
|
|
9412
|
+
changeStepY(currentFrame);
|
|
9413
|
+
|
|
9332
9414
|
// ダミー矢印生成(背面に表示するため先に処理)
|
|
9333
9415
|
if (g_workObj.mkDummyArrow[currentFrame] !== undefined) {
|
|
9334
9416
|
g_workObj.mkDummyArrow[currentFrame].forEach(data =>
|
|
@@ -9622,6 +9704,38 @@ const changeCssMotions = (_header, _name, _frameNum) => {
|
|
|
9622
9704
|
}
|
|
9623
9705
|
};
|
|
9624
9706
|
|
|
9707
|
+
/**
|
|
9708
|
+
* スクロール方向の変更(矢印・フリーズアロー)
|
|
9709
|
+
* @param {number} _frameNum
|
|
9710
|
+
*/
|
|
9711
|
+
const changeScrollArrowDirs = (_frameNum) => {
|
|
9712
|
+
const frameData = g_workObj.mkScrollchArrow[_frameNum];
|
|
9713
|
+
if (frameData !== undefined) {
|
|
9714
|
+
for (let j = 0; j < frameData.length; j++) {
|
|
9715
|
+
const targetj = frameData[j];
|
|
9716
|
+
g_workObj.scrollDir[targetj] = g_workObj.scrollDirDefault[targetj] * g_workObj.mkScrollchArrowDir[_frameNum][j];
|
|
9717
|
+
g_workObj.dividePos[targetj] = (g_workObj.scrollDir[targetj] === 1 ? 0 : 1);
|
|
9718
|
+
}
|
|
9719
|
+
}
|
|
9720
|
+
};
|
|
9721
|
+
|
|
9722
|
+
/**
|
|
9723
|
+
* ステップゾーンの位置反転
|
|
9724
|
+
* @param {number} _frameNum
|
|
9725
|
+
*/
|
|
9726
|
+
const changeStepY = (_frameNum) => {
|
|
9727
|
+
const frameData = g_workObj.mkScrollchStep[_frameNum];
|
|
9728
|
+
if (frameData !== undefined) {
|
|
9729
|
+
for (let j = 0; j < frameData.length; j++) {
|
|
9730
|
+
const targetj = frameData[j];
|
|
9731
|
+
const dividePos = (g_workObj.scrollDirDefault[targetj] * g_workObj.mkScrollchStepDir[_frameNum][j] === 1 ? 0 : 1);
|
|
9732
|
+
const baseY = C_STEP_Y + g_posObj.reverseStepY * dividePos;
|
|
9733
|
+
$id(`stepRoot${targetj}`).top = `${baseY}px`;
|
|
9734
|
+
$id(`frzHit${targetj}`).top = `${baseY}px`;
|
|
9735
|
+
}
|
|
9736
|
+
}
|
|
9737
|
+
};
|
|
9738
|
+
|
|
9625
9739
|
/**
|
|
9626
9740
|
* フリーズアローヒット時の描画変更
|
|
9627
9741
|
* @param {number} _j
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2023/02/
|
|
8
|
+
* Revised : 2023/02/17 (v30.2.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -486,7 +486,7 @@ const g_typeLists = {
|
|
|
486
486
|
frzColor: [`Normal`, `NormalBar`, `Hit`, `HitBar`],
|
|
487
487
|
dataList: [
|
|
488
488
|
`Arrow`, `FrzArrow`, `FrzLength`,
|
|
489
|
-
`Color`, `ColorCd`,
|
|
489
|
+
`Color`, `ColorCd`, `ScrollchArrow`, `ScrollchStep`, `ScrollchArrowDir`, `ScrollchStepDir`,
|
|
490
490
|
`FColorNormal`, `FColorNormalCd`, `FColorNormalBar`, `FColorNormalBarCd`,
|
|
491
491
|
`FColorHit`, `FColorHitCd`, `FColorHitBar`, `FColorHitBarCd`,
|
|
492
492
|
`ArrowCssMotion`, `ArrowCssMotionName`,
|