danoniplus 28.3.0 → 28.4.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/css/danoni_main.css +3 -3
- package/js/danoni_main.js +65 -61
- package/js/lib/danoni_constants.js +16 -2
- package/package.json +1 -1
package/css/danoni_main.css
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
本体cssファイル
|
|
5
5
|
|
|
6
6
|
Created : 2018/10/08
|
|
7
|
-
Revised : 2022/10/
|
|
7
|
+
Revised : 2022/10/16 (v28.3.1)
|
|
8
8
|
|
|
9
9
|
https://github.com/cwtickle/danoniplus
|
|
10
10
|
------------------------------------------ */
|
|
@@ -23,14 +23,14 @@
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
input[type="range"] {
|
|
26
|
-
|
|
26
|
+
appearance: none;
|
|
27
27
|
background: transparent;
|
|
28
28
|
height: 20px;
|
|
29
29
|
width: 205px;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
input[type="range"]::-webkit-slider-thumb {
|
|
33
|
-
|
|
33
|
+
appearance: none;
|
|
34
34
|
background: #606060;
|
|
35
35
|
height: 20px;
|
|
36
36
|
width: 20px;
|
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 : 2022/10/
|
|
7
|
+
* Revised : 2022/10/20
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 28.
|
|
12
|
-
const g_revisedDate = `2022/10/
|
|
11
|
+
const g_version = `Ver 28.4.0`;
|
|
12
|
+
const g_revisedDate = `2022/10/20`;
|
|
13
13
|
const g_alphaVersion = ``;
|
|
14
14
|
|
|
15
15
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
@@ -949,8 +949,6 @@ const createDiv = (_id, _x, _y, _width, _height, _classes = []) => {
|
|
|
949
949
|
const setUserSelect = (_style, _value = C_DIS_NONE) => {
|
|
950
950
|
_style.userSelect = _value;
|
|
951
951
|
_style.webkitUserSelect = _value;
|
|
952
|
-
_style.msUserSelect = _value;
|
|
953
|
-
_style.mozUserSelect = _value;
|
|
954
952
|
_style.webkitTouchCallout = _value;
|
|
955
953
|
};
|
|
956
954
|
|
|
@@ -1573,7 +1571,6 @@ const drawTitleResultMotion = _displayName => {
|
|
|
1573
1571
|
// WebAudioAPIでAudio要素風に再生するクラス
|
|
1574
1572
|
class AudioPlayer {
|
|
1575
1573
|
constructor() {
|
|
1576
|
-
const AudioContext = window.AudioContext ?? window.webkitAudioContext;
|
|
1577
1574
|
this._context = new AudioContext();
|
|
1578
1575
|
this._gain = this._context.createGain();
|
|
1579
1576
|
this._gain.connect(this._context.destination);
|
|
@@ -3965,6 +3962,7 @@ const setWindowStyle = (_text, _bkColor, _textColor, _align = C_ALIGN_LEFT) => {
|
|
|
3965
3962
|
// ウィンドウ枠の行を取得するために一時的な枠を作成
|
|
3966
3963
|
const tmplbl = createDivCss2Label(`lblTmpWarning`, _text, {
|
|
3967
3964
|
x: 0, y: 70, w: g_sWidth, h: 20, siz: C_SIZ_MAIN, lineHeight: `15px`, fontFamily: getBasicFont(),
|
|
3965
|
+
whiteSpace: `normal`,
|
|
3968
3966
|
})
|
|
3969
3967
|
divRoot.appendChild(tmplbl);
|
|
3970
3968
|
const range = new Range();
|
|
@@ -3976,6 +3974,7 @@ const setWindowStyle = (_text, _bkColor, _textColor, _align = C_ALIGN_LEFT) => {
|
|
|
3976
3974
|
const lbl = createDivCss2Label(`lblWarning`, _text, {
|
|
3977
3975
|
x: 0, y: 70, w: g_sWidth, h: warnHeight, siz: C_SIZ_MAIN, backgroundColor: _bkColor,
|
|
3978
3976
|
opacity: 0.9, lineHeight: `15px`, color: _textColor, align: _align, fontFamily: getBasicFont(),
|
|
3977
|
+
whiteSpace: `normal`,
|
|
3979
3978
|
});
|
|
3980
3979
|
if (warnHeight === 150) {
|
|
3981
3980
|
lbl.style.overflow = `auto`;
|
|
@@ -5544,7 +5543,7 @@ const createSettingsDisplayWindow = _sprite => {
|
|
|
5544
5543
|
g_hidSudObj.filterPos = inputSlider(appearanceSlider, lblAppearancePos), false);
|
|
5545
5544
|
|
|
5546
5545
|
const dispAppearanceSlider = _ => {
|
|
5547
|
-
[`lblAppearancePos`, `lblAppearanceBar`, `lnkLockBtn`].forEach(obj =>
|
|
5546
|
+
[`lblAppearancePos`, `lblAppearanceBar`, `lnkLockBtn`, `lnkfilterLine`].forEach(obj =>
|
|
5548
5547
|
document.getElementById(obj).style.visibility =
|
|
5549
5548
|
g_appearanceRanges.includes(g_stateObj.appearance) ? `Visible` : `Hidden`
|
|
5550
5549
|
);
|
|
@@ -5554,7 +5553,13 @@ const createSettingsDisplayWindow = _sprite => {
|
|
|
5554
5553
|
// ---------------------------------------------------
|
|
5555
5554
|
// 判定表示系の不透明度 (Opacity)
|
|
5556
5555
|
// 縦位置: 9
|
|
5557
|
-
|
|
5556
|
+
let opacityUse = false;
|
|
5557
|
+
[`judgment`, `fastSlow`, `filterLine`].forEach(display =>
|
|
5558
|
+
opacityUse ||= g_headerObj[`${display}Use`] || g_headerObj[`${display}Set`] === C_FLG_ON);
|
|
5559
|
+
|
|
5560
|
+
if (opacityUse) {
|
|
5561
|
+
createGeneralSetting(spriteList.opacity, `opacity`, { unitName: g_lblNameObj.percent, displayName: g_currentPage });
|
|
5562
|
+
}
|
|
5558
5563
|
};
|
|
5559
5564
|
|
|
5560
5565
|
/**
|
|
@@ -7340,34 +7345,39 @@ const setSpeedOnFrame = (_speedData, _lastFrame) => {
|
|
|
7340
7345
|
|
|
7341
7346
|
/**
|
|
7342
7347
|
* Motionオプション適用時の矢印別の速度設定
|
|
7343
|
-
* -
|
|
7344
|
-
* - 15がステップゾーン上、0~14は矢印の枠外管理用
|
|
7348
|
+
* - 矢印が表示される最大フレーム数を 縦ピクセル数×20 と定義。
|
|
7345
7349
|
*/
|
|
7346
|
-
const setMotionOnFrame = _ =>
|
|
7347
|
-
|
|
7348
|
-
// 矢印が表示される最大フレーム数
|
|
7349
|
-
const motionLastFrame = g_sHeight * 20;
|
|
7350
|
-
const brakeLastFrame = g_sHeight / 2;
|
|
7350
|
+
const setMotionOnFrame = _ => g_motionFunc[g_stateObj.motion]([...Array(g_sHeight * 20 + 1)].fill(0));
|
|
7351
7351
|
|
|
7352
|
-
|
|
7353
|
-
|
|
7354
|
-
|
|
7355
|
-
|
|
7356
|
-
|
|
7357
|
-
|
|
7358
|
-
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
7362
|
-
|
|
7363
|
-
motionOnFrame[j] = (j - 15) * 4 / 14;
|
|
7364
|
-
}
|
|
7365
|
-
for (let j = C_MOTION_STD_POS + 19; j <= brakeLastFrame; j++) {
|
|
7366
|
-
motionOnFrame[j] = 4;
|
|
7367
|
-
}
|
|
7352
|
+
/**
|
|
7353
|
+
* Boost用の適用関数
|
|
7354
|
+
* - ステップゾーンに近づくにつれて加速量を大きく/小さくする (16 → 85)
|
|
7355
|
+
* @param {array} _frms
|
|
7356
|
+
* @param {number} _spd
|
|
7357
|
+
* @param {number} _pnFlg 正負(1 もしくは -1)
|
|
7358
|
+
* @returns
|
|
7359
|
+
*/
|
|
7360
|
+
const getBoostTrace = (_frms, _spd, _pnFlg = 1) => {
|
|
7361
|
+
for (let j = C_MOTION_STD_POS + 1; j < C_MOTION_STD_POS + 70; j++) {
|
|
7362
|
+
_frms[j] = (C_MOTION_STD_POS + 70 - j) * _pnFlg * _spd / 50;
|
|
7368
7363
|
}
|
|
7364
|
+
return _frms;
|
|
7365
|
+
};
|
|
7369
7366
|
|
|
7370
|
-
|
|
7367
|
+
/**
|
|
7368
|
+
* Brake用の適用関数
|
|
7369
|
+
* - 初期は+2x、ステップゾーンに近づくにつれて加速量を下げる (20 → 34)
|
|
7370
|
+
* @param {array} _frms
|
|
7371
|
+
* @returns
|
|
7372
|
+
*/
|
|
7373
|
+
const getBrakeTrace = _frms => {
|
|
7374
|
+
for (let j = C_MOTION_STD_POS + 5; j < C_MOTION_STD_POS + 19; j++) {
|
|
7375
|
+
_frms[j] = (j - 15) * 4 / 14;
|
|
7376
|
+
}
|
|
7377
|
+
for (let j = C_MOTION_STD_POS + 19; j <= g_sHeight / 2; j++) {
|
|
7378
|
+
_frms[j] = 4;
|
|
7379
|
+
}
|
|
7380
|
+
return _frms;
|
|
7371
7381
|
};
|
|
7372
7382
|
|
|
7373
7383
|
/**
|
|
@@ -7385,7 +7395,6 @@ const getFirstArrivalFrame = (_startFrame, _speedOnFrame, _motionOnFrame) => {
|
|
|
7385
7395
|
startY += _speedOnFrame[frm];
|
|
7386
7396
|
|
|
7387
7397
|
if (_speedOnFrame[frm] !== 0) {
|
|
7388
|
-
startY += _motionOnFrame[motionFrm];
|
|
7389
7398
|
motionFrm++;
|
|
7390
7399
|
}
|
|
7391
7400
|
frm++;
|
|
@@ -7532,18 +7541,13 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
7532
7541
|
if (hasArrayList(_dataObj.boostData, 2)) {
|
|
7533
7542
|
let delBoostIdx = 0;
|
|
7534
7543
|
for (let k = _dataObj.boostData.length - 2; k >= 0; k -= 2) {
|
|
7535
|
-
|
|
7536
|
-
|
|
7544
|
+
tmpObj = getArrowStartFrame(_dataObj.boostData[k], _speedOnFrame, _motionOnFrame);
|
|
7545
|
+
if (tmpObj.frm < g_scoreObj.frameNum) {
|
|
7546
|
+
_dataObj.boostData[k] = g_scoreObj.frameNum;
|
|
7547
|
+
delBoostIdx = k;
|
|
7537
7548
|
break;
|
|
7538
7549
|
} else {
|
|
7539
|
-
|
|
7540
|
-
if (tmpObj.frm < g_scoreObj.frameNum) {
|
|
7541
|
-
_dataObj.boostData[k] = g_scoreObj.frameNum;
|
|
7542
|
-
delBoostIdx = k;
|
|
7543
|
-
break;
|
|
7544
|
-
} else {
|
|
7545
|
-
_dataObj.boostData[k] = tmpObj.frm;
|
|
7546
|
-
}
|
|
7550
|
+
_dataObj.boostData[k] = tmpObj.frm;
|
|
7547
7551
|
}
|
|
7548
7552
|
}
|
|
7549
7553
|
for (let k = 0; k < delBoostIdx; k++) {
|
|
@@ -7705,7 +7709,6 @@ const getArrowStartFrame = (_frame, _speedOnFrame, _motionOnFrame) => {
|
|
|
7705
7709
|
obj.startY += _speedOnFrame[obj.frm];
|
|
7706
7710
|
|
|
7707
7711
|
if (_speedOnFrame[obj.frm] !== 0) {
|
|
7708
|
-
obj.startY += _motionOnFrame[obj.motionFrm];
|
|
7709
7712
|
obj.motionFrm++;
|
|
7710
7713
|
}
|
|
7711
7714
|
obj.frm--;
|
|
@@ -8256,6 +8259,7 @@ const mainInit = _ => {
|
|
|
8256
8259
|
// 現在の矢印・フリーズアローの速度、個別加算速度の初期化 (速度変化時に直す)
|
|
8257
8260
|
g_workObj.currentSpeed = 2;
|
|
8258
8261
|
g_workObj.boostSpd = 1;
|
|
8262
|
+
g_workObj.boostDir = 1;
|
|
8259
8263
|
|
|
8260
8264
|
// 開始位置、楽曲再生位置の設定
|
|
8261
8265
|
const firstFrame = g_scoreObj.frameNum;
|
|
@@ -8316,7 +8320,7 @@ const mainInit = _ => {
|
|
|
8316
8320
|
|
|
8317
8321
|
// フレーム数
|
|
8318
8322
|
divRoot.appendChild(
|
|
8319
|
-
createDivCss2Label(`lblframe`, g_scoreObj.
|
|
8323
|
+
createDivCss2Label(`lblframe`, g_scoreObj.nominalFrameNum, { x: 0, y: 0, w: 100, h: 30, siz: 20, display: g_workObj.lifegaugeDisp, })
|
|
8320
8324
|
);
|
|
8321
8325
|
|
|
8322
8326
|
// ライフ(数字)部作成
|
|
@@ -8842,12 +8846,13 @@ const mainInit = _ => {
|
|
|
8842
8846
|
* @param {string} _color 矢印色
|
|
8843
8847
|
*/
|
|
8844
8848
|
const makeArrow = (_j, _arrowCnt, _name, _color) => {
|
|
8845
|
-
const boostSpdDir = g_workObj.boostSpd * g_workObj.scrollDir[_j];
|
|
8846
8849
|
const dividePos = g_workObj.dividePos[_j];
|
|
8847
8850
|
const colorPos = g_keyObj[`color${keyCtrlPtn}`][_j];
|
|
8848
8851
|
|
|
8849
8852
|
const arrowName = `${_name}${_j}_${_arrowCnt}`;
|
|
8850
|
-
const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
|
|
8853
|
+
const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
|
|
8854
|
+
(g_workObj.initY[g_scoreObj.frameNum] * g_workObj.boostSpd +
|
|
8855
|
+
sumData(g_workObj.motionOnFrames.filter((val, j) => j < g_workObj.motionFrame[g_scoreObj.frameNum])) * g_workObj.boostDir) * g_workObj.scrollDir[_j];
|
|
8851
8856
|
|
|
8852
8857
|
const stepRoot = createEmptySprite(arrowSprite[dividePos], arrowName, {
|
|
8853
8858
|
x: g_workObj.stepX[_j], y: firstPosY, w: C_ARW_WIDTH, h: C_ARW_WIDTH,
|
|
@@ -8855,7 +8860,8 @@ const mainInit = _ => {
|
|
|
8855
8860
|
g_attrObj[arrowName] = {
|
|
8856
8861
|
cnt: g_workObj.arrivalFrame[g_scoreObj.frameNum] + 1,
|
|
8857
8862
|
boostCnt: g_workObj.motionFrame[g_scoreObj.frameNum],
|
|
8858
|
-
boostSpd:
|
|
8863
|
+
boostSpd: g_workObj.boostSpd, dividePos: dividePos,
|
|
8864
|
+
dir: g_workObj.scrollDir[_j], boostDir: g_workObj.boostDir,
|
|
8859
8865
|
prevY: firstPosY, y: firstPosY,
|
|
8860
8866
|
};
|
|
8861
8867
|
arrowSprite[dividePos].appendChild(stepRoot);
|
|
@@ -8902,7 +8908,7 @@ const mainInit = _ => {
|
|
|
8902
8908
|
if (g_workObj.currentSpeed !== 0) {
|
|
8903
8909
|
const boostCnt = g_attrObj[arrowName].boostCnt;
|
|
8904
8910
|
g_attrObj[arrowName].prevY = g_attrObj[arrowName].y;
|
|
8905
|
-
g_attrObj[arrowName].y -= (g_workObj.currentSpeed + g_workObj.motionOnFrames[boostCnt]) * g_attrObj[arrowName].
|
|
8911
|
+
g_attrObj[arrowName].y -= (g_workObj.currentSpeed * g_attrObj[arrowName].boostSpd + g_workObj.motionOnFrames[boostCnt] * g_attrObj[arrowName].boostDir) * g_attrObj[arrowName].dir;
|
|
8906
8912
|
document.getElementById(arrowName).style.top = `${g_attrObj[arrowName].y}px`;
|
|
8907
8913
|
g_attrObj[arrowName].boostCnt--;
|
|
8908
8914
|
}
|
|
@@ -8918,11 +8924,12 @@ const mainInit = _ => {
|
|
|
8918
8924
|
* @param {string} _barColor
|
|
8919
8925
|
*/
|
|
8920
8926
|
const makeFrzArrow = (_j, _arrowCnt, _name, _normalColor, _barColor) => {
|
|
8921
|
-
const boostSpdDir = g_workObj.boostSpd * g_workObj.scrollDir[_j];
|
|
8922
8927
|
const dividePos = g_workObj.dividePos[_j];
|
|
8923
8928
|
const frzNo = `${_j}_${_arrowCnt}`;
|
|
8924
8929
|
const frzName = `${_name}${frzNo}`;
|
|
8925
|
-
const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
|
|
8930
|
+
const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
|
|
8931
|
+
(g_workObj.initY[g_scoreObj.frameNum] * g_workObj.boostSpd +
|
|
8932
|
+
sumData(g_workObj.motionOnFrames.filter((val, j) => j < g_workObj.motionFrame[g_scoreObj.frameNum])) * g_workObj.boostDir) * g_workObj.scrollDir[_j];
|
|
8926
8933
|
const firstBarLength = g_workObj[`mk${toCapitalize(_name)}Length`][_j][(_arrowCnt - 1) * 2] * g_workObj.boostSpd;
|
|
8927
8934
|
|
|
8928
8935
|
const frzRoot = createEmptySprite(arrowSprite[dividePos], frzName, {
|
|
@@ -8932,10 +8939,8 @@ const mainInit = _ => {
|
|
|
8932
8939
|
cnt: g_workObj.arrivalFrame[g_scoreObj.frameNum] + 1,
|
|
8933
8940
|
boostCnt: g_workObj.motionFrame[g_scoreObj.frameNum],
|
|
8934
8941
|
judgEndFlg: false, isMoving: true, frzBarLength: firstBarLength, keyUpFrame: 0,
|
|
8935
|
-
boostSpd:
|
|
8936
|
-
y: firstPosY,
|
|
8937
|
-
barY: C_ARW_WIDTH / 2 - firstBarLength * dividePos,
|
|
8938
|
-
btmY: firstBarLength * g_workObj.scrollDir[_j],
|
|
8942
|
+
boostSpd: g_workObj.boostSpd, dividePos: dividePos, dir: g_workObj.scrollDir[_j], boostDir: g_workObj.boostDir,
|
|
8943
|
+
y: firstPosY, barY: C_ARW_WIDTH / 2 - firstBarLength * dividePos, btmY: firstBarLength * g_workObj.scrollDir[_j],
|
|
8939
8944
|
};
|
|
8940
8945
|
arrowSprite[dividePos].appendChild(frzRoot);
|
|
8941
8946
|
|
|
@@ -8995,7 +9000,7 @@ const mainInit = _ => {
|
|
|
8995
9000
|
const movFrzArrow = (_j, _k, _name) => {
|
|
8996
9001
|
const frzNo = `${_j}_${_k}`;
|
|
8997
9002
|
const frzName = `${_name}${frzNo}`;
|
|
8998
|
-
const movY = g_workObj.currentSpeed * g_attrObj[frzName].boostSpd;
|
|
9003
|
+
const movY = g_workObj.currentSpeed * g_attrObj[frzName].boostSpd * g_attrObj[frzName].dir;
|
|
8999
9004
|
|
|
9000
9005
|
if (!g_attrObj[frzName].judgEndFlg) {
|
|
9001
9006
|
if (g_attrObj[frzName].isMoving) {
|
|
@@ -9005,7 +9010,7 @@ const mainInit = _ => {
|
|
|
9005
9010
|
|
|
9006
9011
|
// 移動
|
|
9007
9012
|
if (g_workObj.currentSpeed !== 0) {
|
|
9008
|
-
g_attrObj[frzName].y -= movY + g_workObj.motionOnFrames[g_attrObj[frzName].boostCnt] * g_attrObj[frzName].
|
|
9013
|
+
g_attrObj[frzName].y -= movY + g_workObj.motionOnFrames[g_attrObj[frzName].boostCnt] * g_attrObj[frzName].dir * g_attrObj[frzName].boostDir;
|
|
9009
9014
|
document.getElementById(frzName).style.top = `${g_attrObj[frzName].y}px`;
|
|
9010
9015
|
g_attrObj[frzName].boostCnt--;
|
|
9011
9016
|
}
|
|
@@ -9059,7 +9064,7 @@ const mainInit = _ => {
|
|
|
9059
9064
|
const flowTimeline = _ => {
|
|
9060
9065
|
|
|
9061
9066
|
const currentFrame = g_scoreObj.frameNum;
|
|
9062
|
-
lblframe.textContent =
|
|
9067
|
+
lblframe.textContent = g_scoreObj.nominalFrameNum;
|
|
9063
9068
|
|
|
9064
9069
|
// キーの押下状態を取得
|
|
9065
9070
|
for (let j = 0; j < keyNum; j++) {
|
|
@@ -9112,6 +9117,7 @@ const mainInit = _ => {
|
|
|
9112
9117
|
}
|
|
9113
9118
|
while (g_workObj.boostData !== undefined && currentFrame >= g_workObj.boostData[boostCnts]) {
|
|
9114
9119
|
g_workObj.boostSpd = g_workObj.boostData[boostCnts + 1];
|
|
9120
|
+
g_workObj.boostDir = (g_workObj.boostSpd > 0 ? 1 : -1);
|
|
9115
9121
|
boostCnts += 2;
|
|
9116
9122
|
}
|
|
9117
9123
|
|
|
@@ -9329,9 +9335,7 @@ const changeAppearanceFilter = (_appearance, _num = 10) => {
|
|
|
9329
9335
|
const bottomShape = `inset(${numPlus}% 0% ${_num}% 0%)`;
|
|
9330
9336
|
|
|
9331
9337
|
$id(`arrowSprite${topNum}`).clipPath = topShape;
|
|
9332
|
-
$id(`arrowSprite${topNum}`).webkitClipPath = topShape;
|
|
9333
9338
|
$id(`arrowSprite${bottomNum}`).clipPath = bottomShape;
|
|
9334
|
-
$id(`arrowSprite${bottomNum}`).webkitClipPath = bottomShape;
|
|
9335
9339
|
|
|
9336
9340
|
$id(`filterBar0`).top = `${g_posObj.arrowHeight * _num / 100}px`;
|
|
9337
9341
|
$id(`filterBar1`).top = `${g_posObj.arrowHeight * (100 - _num) / 100}px`;
|
|
@@ -9436,7 +9440,7 @@ const changeHitFrz = (_j, _k, _name) => {
|
|
|
9436
9440
|
// 早押ししたboostCnt分のフリーズアロー終端位置の修正
|
|
9437
9441
|
let delFrzMotionLength = 0;
|
|
9438
9442
|
for (let i = 0; i < g_attrObj[frzName].cnt; i++) {
|
|
9439
|
-
delFrzMotionLength += g_workObj.motionOnFrames[g_attrObj[frzName].boostCnt - i]
|
|
9443
|
+
delFrzMotionLength += g_workObj.motionOnFrames[g_attrObj[frzName].boostCnt - i];
|
|
9440
9444
|
}
|
|
9441
9445
|
|
|
9442
9446
|
g_attrObj[frzName].frzBarLength -= (delFrzLength + delFrzMotionLength) * g_attrObj[frzName].dir;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2022/10/
|
|
8
|
+
* Revised : 2022/10/20 (v28.4.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -135,6 +135,7 @@ const updateWindowSiz = _ => {
|
|
|
135
135
|
lblComment: {
|
|
136
136
|
x: 0, y: 70, w: g_sWidth, h: g_sHeight - 180, siz: C_SIZ_DIFSELECTOR, align: C_ALIGN_LEFT,
|
|
137
137
|
overflow: `auto`, background: `#222222`, color: `#cccccc`, display: C_DIS_NONE,
|
|
138
|
+
whiteSpace: `normal`,
|
|
138
139
|
},
|
|
139
140
|
btnComment: {
|
|
140
141
|
x: g_sWidth - 160, y: (g_sHeight / 2) + 150, w: 140, h: 50, siz: 20, border: `solid 1px #999999`,
|
|
@@ -745,7 +746,7 @@ const g_settings = {
|
|
|
745
746
|
speedNum: 0,
|
|
746
747
|
speedTerms: [20, 5, 1],
|
|
747
748
|
|
|
748
|
-
motions: [C_FLG_OFF, `Boost`, `Brake`],
|
|
749
|
+
motions: [C_FLG_OFF, `Boost`, `Hi-Boost`, `Brake`],
|
|
749
750
|
motionNum: 0,
|
|
750
751
|
|
|
751
752
|
reverses: [C_FLG_OFF, C_FLG_ON],
|
|
@@ -814,6 +815,18 @@ const g_shuffleFunc = {
|
|
|
814
815
|
},
|
|
815
816
|
};
|
|
816
817
|
|
|
818
|
+
/**
|
|
819
|
+
* モーション適用関数
|
|
820
|
+
* - frmsはフレーム別の速度設定用配列。
|
|
821
|
+
* - 配列の15がステップゾーン上、0~14は矢印の枠外管理用
|
|
822
|
+
*/
|
|
823
|
+
const g_motionFunc = {
|
|
824
|
+
'OFF': _frms => _frms,
|
|
825
|
+
'Boost': _frms => getBoostTrace(_frms, 3),
|
|
826
|
+
'Hi-Boost': _frms => getBoostTrace(_frms, g_stateObj.speed * 2),
|
|
827
|
+
'Brake': _frms => getBrakeTrace(_frms),
|
|
828
|
+
};
|
|
829
|
+
|
|
817
830
|
const g_keycons = {
|
|
818
831
|
configTypes: [`Main`, `Replaced`, `ALL`],
|
|
819
832
|
configTypeNum: 0,
|
|
@@ -2967,6 +2980,7 @@ const g_lblNameObj = {
|
|
|
2967
2980
|
'u_OFF': `OFF`,
|
|
2968
2981
|
'u_ON': `ON`,
|
|
2969
2982
|
'u_Boost': `Boost`,
|
|
2983
|
+
'u_Hi-Boost': `Hi-Boost`,
|
|
2970
2984
|
'u_Brake': `Brake`,
|
|
2971
2985
|
|
|
2972
2986
|
'u_Cross': `Cross`,
|