danoniplus 39.3.0 → 39.4.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 +78 -60
- package/js/lib/danoni_constants.js +214 -154
- 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 : 2025/02/
|
|
7
|
+
* Revised : 2025/02/11
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 39.
|
|
12
|
-
const g_revisedDate = `2025/02/
|
|
11
|
+
const g_version = `Ver 39.4.1`;
|
|
12
|
+
const g_revisedDate = `2025/02/11`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -89,6 +89,7 @@ const C_FLG_ON = `ON`;
|
|
|
89
89
|
const C_FLG_OFF = `OFF`;
|
|
90
90
|
const C_FLG_ALL = `ALL`;
|
|
91
91
|
const C_DIS_NONE = `none`;
|
|
92
|
+
const C_DIS_AUTO = `auto`;
|
|
92
93
|
const C_DIS_INHERIT = `inherit`;
|
|
93
94
|
|
|
94
95
|
// 初期化フラグ(ボタンアニメーション制御)
|
|
@@ -663,7 +664,7 @@ const createScText = (_obj, _settingLabel, { displayName = `option`, dfLabel = `
|
|
|
663
664
|
multiAppend(_obj,
|
|
664
665
|
createDivCss2Label(`sc${_settingLabel}`,
|
|
665
666
|
g_scViewObj.format.split(`{0}`).join(dfLabel || (`${g_kCd[g_kCdN.findIndex(kCd => kCd === scKey[0])] ?? ''}`)), {
|
|
666
|
-
x, y, w, siz, fontWeight: `bold`, opacity: 0.75,
|
|
667
|
+
x, y, w, siz, fontWeight: `bold`, opacity: 0.75,
|
|
667
668
|
})
|
|
668
669
|
);
|
|
669
670
|
}
|
|
@@ -1106,7 +1107,6 @@ const getFontSize = (_str, _maxWidth, _font = getBasicFont(), _maxFontsize = 64,
|
|
|
1106
1107
|
const createDescDiv = (_id, _str, { altId = _id, siz = g_limitObj.mainSiz } = {}) =>
|
|
1107
1108
|
createDivCss2Label(_id, _str, Object.assign(g_lblPosObj[altId], {
|
|
1108
1109
|
siz: getFontSize(_str, g_lblPosObj[altId]?.w || g_sWidth, getBasicFont(), siz),
|
|
1109
|
-
pointerEvents: C_DIS_NONE,
|
|
1110
1110
|
}));
|
|
1111
1111
|
|
|
1112
1112
|
/*-----------------------------------------------------------*/
|
|
@@ -1173,6 +1173,7 @@ const createDivCss2Label = (_id, _text, { x = 0, y = 0, w = g_limitObj.setLblWid
|
|
|
1173
1173
|
style.fontSize = wUnit(siz);
|
|
1174
1174
|
style.fontFamily = getBasicFont();
|
|
1175
1175
|
style.textAlign = `${align}`;
|
|
1176
|
+
style.pointerEvents = C_DIS_NONE;
|
|
1176
1177
|
div.innerHTML = _text;
|
|
1177
1178
|
Object.keys(rest).forEach(property => style[property] = rest[property]);
|
|
1178
1179
|
|
|
@@ -1212,6 +1213,7 @@ const createColorPicker = (_parentObj, _id, _func, { x = 0, y = 0 } = {}) => {
|
|
|
1212
1213
|
picker.style.left = wUnit(x);
|
|
1213
1214
|
picker.style.top = wUnit(y);
|
|
1214
1215
|
picker.style.position = `absolute`;
|
|
1216
|
+
picker.style.pointerEvents = C_DIS_AUTO;
|
|
1215
1217
|
picker.addEventListener(`change`, _func);
|
|
1216
1218
|
_parentObj.appendChild(picker);
|
|
1217
1219
|
return picker;
|
|
@@ -1252,6 +1254,7 @@ const createColorObject2 = (_id,
|
|
|
1252
1254
|
style.maskSize = `contain`;
|
|
1253
1255
|
style.webkitMaskImage = `url("${g_imgObj[charaStyle]}")`;
|
|
1254
1256
|
style.webkitMaskSize = `contain`;
|
|
1257
|
+
style.pointerEvents = C_DIS_NONE;
|
|
1255
1258
|
Object.keys(rest).forEach(property => style[property] = rest[property]);
|
|
1256
1259
|
setAttrs(div, { color: rest.background ?? ``, type: charaStyle, cnt: 0, });
|
|
1257
1260
|
|
|
@@ -1281,6 +1284,7 @@ const createEmptySprite = (_parentObj, _newObjId, { x = 0, y = 0, w = g_sWidth,
|
|
|
1281
1284
|
div.title = title;
|
|
1282
1285
|
|
|
1283
1286
|
const style = div.style;
|
|
1287
|
+
style.pointerEvents = title === `` ? C_DIS_NONE : C_DIS_AUTO;
|
|
1284
1288
|
Object.keys(rest).forEach(property => style[property] = rest[property]);
|
|
1285
1289
|
_parentObj.appendChild(div);
|
|
1286
1290
|
|
|
@@ -1297,8 +1301,9 @@ const createEmptySprite = (_parentObj, _newObjId, { x = 0, y = 0, w = g_sWidth,
|
|
|
1297
1301
|
const createMultipleSprite = (_baseName, _num, { x = 0 } = {}) => {
|
|
1298
1302
|
const sprite = createEmptySprite(divRoot, _baseName);
|
|
1299
1303
|
for (let j = 0; j <= _num; j++) {
|
|
1300
|
-
createEmptySprite(sprite, `${_baseName}${j}
|
|
1304
|
+
createEmptySprite(sprite, `${_baseName}${j}`);
|
|
1301
1305
|
}
|
|
1306
|
+
addX(_baseName, `root`, x);
|
|
1302
1307
|
return sprite;
|
|
1303
1308
|
};
|
|
1304
1309
|
|
|
@@ -1403,6 +1408,7 @@ const createCss2Button = (_id, _text, _func = () => true, {
|
|
|
1403
1408
|
style.textAlign = align;
|
|
1404
1409
|
style.fontSize = wUnit(siz);
|
|
1405
1410
|
style.fontFamily = getBasicFont();
|
|
1411
|
+
style.pointerEvents = C_DIS_AUTO;
|
|
1406
1412
|
if (rest.animationName !== undefined) {
|
|
1407
1413
|
style.animationDuration = `1s`;
|
|
1408
1414
|
}
|
|
@@ -1413,7 +1419,7 @@ const createCss2Button = (_id, _text, _func = () => true, {
|
|
|
1413
1419
|
if (g_initialFlg && g_btnWaitFrame[groupName].initial) {
|
|
1414
1420
|
} else {
|
|
1415
1421
|
style.pointerEvents = C_DIS_NONE;
|
|
1416
|
-
setTimeout(() => style.pointerEvents = rest.pointerEvents ??
|
|
1422
|
+
setTimeout(() => style.pointerEvents = rest.pointerEvents ?? C_DIS_AUTO,
|
|
1417
1423
|
g_btnWaitFrame[groupName].b_frame * 1000 / g_fps);
|
|
1418
1424
|
}
|
|
1419
1425
|
}
|
|
@@ -3101,7 +3107,7 @@ const headerConvert = _dosObj => {
|
|
|
3101
3107
|
g_settings.speedNum = roundZero(g_settings.speeds.findIndex(speed => speed === g_stateObj.speed));
|
|
3102
3108
|
|
|
3103
3109
|
// グラデーションのデフォルト中間色を設定
|
|
3104
|
-
divRoot.appendChild(createDivCss2Label(`dummyLabel`,
|
|
3110
|
+
divRoot.appendChild(createDivCss2Label(`dummyLabel`, ``));
|
|
3105
3111
|
obj.baseBrightFlg = setBoolVal(_dosObj.baseBright, checkLightOrDark(colorNameToCode(window.getComputedStyle(dummyLabel, ``).color)));
|
|
3106
3112
|
const intermediateColor = obj.baseBrightFlg ? `#111111` : `#eeeeee`;
|
|
3107
3113
|
|
|
@@ -3469,7 +3475,7 @@ const headerConvert = _dosObj => {
|
|
|
3469
3475
|
obj.commentExternal = setBoolVal(_dosObj.commentExternal);
|
|
3470
3476
|
|
|
3471
3477
|
// Reverse時の歌詞の自動反転制御
|
|
3472
|
-
obj.wordAutoReverse = _dosObj.wordAutoReverse ?? g_presetObj.wordAutoReverse ??
|
|
3478
|
+
obj.wordAutoReverse = _dosObj.wordAutoReverse ?? g_presetObj.wordAutoReverse ?? C_DIS_AUTO;
|
|
3473
3479
|
|
|
3474
3480
|
// プレイ中クレジットを表示しないエリアのサイズ(X方向)
|
|
3475
3481
|
obj.customViewWidth = setVal(_dosObj.customViewWidth ?? _dosObj.customCreditWidth, 0, C_TYP_FLOAT);
|
|
@@ -4567,9 +4573,7 @@ const titleInit = () => {
|
|
|
4567
4573
|
|
|
4568
4574
|
// マスクスプライトを作成
|
|
4569
4575
|
const maskTitleSprite = createMultipleSprite(`maskTitleSprite`, g_headerObj.maskTitleMaxDepth);
|
|
4570
|
-
|
|
4571
|
-
maskTitleSprite.style.pointerEvents = C_DIS_NONE;
|
|
4572
|
-
}
|
|
4576
|
+
maskTitleSprite.style.pointerEvents = g_headerObj.masktitleButton ? C_DIS_AUTO : C_DIS_NONE;
|
|
4573
4577
|
|
|
4574
4578
|
/**
|
|
4575
4579
|
* タイトルのモーション設定
|
|
@@ -4677,10 +4681,10 @@ const setWindowStyle = (_text, _bkColor, _textColor, _align = C_ALIGN_LEFT, { _x
|
|
|
4677
4681
|
const lbl = createDivCss2Label(`lblWarning`, _text, {
|
|
4678
4682
|
x: _x, y: 70 + _y, w: _w, h: warnHeight, siz: g_limitObj.mainSiz, backgroundColor: _bkColor,
|
|
4679
4683
|
opacity: 0.9, lineHeight: wUnit(15), color: _textColor, align: _align, fontFamily: getBasicFont(),
|
|
4680
|
-
whiteSpace: `normal`,
|
|
4684
|
+
whiteSpace: `normal`, pointerEvents: C_DIS_AUTO,
|
|
4681
4685
|
});
|
|
4682
4686
|
if (warnHeight === 150) {
|
|
4683
|
-
lbl.style.overflow =
|
|
4687
|
+
lbl.style.overflow = C_DIS_AUTO;
|
|
4684
4688
|
}
|
|
4685
4689
|
|
|
4686
4690
|
// 一時的な枠を削除
|
|
@@ -5386,7 +5390,7 @@ const makeHighScore = _scoreId => {
|
|
|
5386
5390
|
`${g_localStorage.highscores?.[scoreName]?.fullCombo ?? '' ? '<span class="result_FullCombo">◆</span>' : ''}` +
|
|
5387
5391
|
`${g_localStorage.highscores?.[scoreName]?.perfect ?? '' ? '<span class="result_Perfect">◆</span>' : ''}` +
|
|
5388
5392
|
`${g_localStorage.highscores?.[scoreName]?.allPerfect ?? '' ? '<span class="result_AllPerfect">◆</span>' : ''}`, { xPos: 1, dx: 20, yPos: 12, w: 100, align: C_ALIGN_CENTER }),
|
|
5389
|
-
createScoreLabel(`lblHClearLamps`, `Cleared: ` + (g_localStorage.highscores?.[scoreName]?.clearLamps?.join(', ') ?? `---`), { yPos: 13, overflow:
|
|
5393
|
+
createScoreLabel(`lblHClearLamps`, `Cleared: ` + (g_localStorage.highscores?.[scoreName]?.clearLamps?.join(', ') ?? `---`), { yPos: 13, overflow: C_DIS_AUTO, w: g_sWidth / 2 + 40, h: 37 }),
|
|
5390
5394
|
|
|
5391
5395
|
createScoreLabel(`lblHShuffle`, g_stateObj.shuffle.indexOf(`Mirror`) < 0 ? `` : `Shuffle: <span class="common_iknai">${g_stateObj.shuffle}</span>`, { yPos: 11.5, dx: -130 }),
|
|
5392
5396
|
createScoreLabel(`lblHAssist`, g_autoPlaysBase.includes(g_stateObj.autoPlay) ? `` : `Assist: <span class="common_kita">${g_stateObj.autoPlay}</span>`, { yPos: 12.5, dx: -130 }),
|
|
@@ -6027,7 +6031,7 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
|
6027
6031
|
*/
|
|
6028
6032
|
const createLblSetting = (_settingName, _adjY = 0, _settingLabel = _settingName) => {
|
|
6029
6033
|
const lbl = createDivCss2Label(`lbl${_settingName}`, g_lblNameObj[_settingLabel], {
|
|
6030
|
-
x: -5, y: _adjY, w: 110,
|
|
6034
|
+
x: -5, y: _adjY, w: 110, pointerEvents: C_DIS_AUTO,
|
|
6031
6035
|
}, `settings_${_settingName}`);
|
|
6032
6036
|
lbl.title = g_msgObj[`${_settingName.charAt(0).toLowerCase()}${_settingName.slice(1)}`];
|
|
6033
6037
|
return lbl;
|
|
@@ -6920,18 +6924,18 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6920
6924
|
// 矢印の塗り部分
|
|
6921
6925
|
createColorObject2(`arrowShadow${j}`, {
|
|
6922
6926
|
x: keyconX, y: keyconY, background: hasVal(g_headerObj[`setShadowColor${g_colorType}`][colorPos]) ? getShadowColor(colorPos, arrowColor) : ``,
|
|
6923
|
-
rotate: g_keyObj[`stepRtn${keyCtrlPtn}_${g_keycons.stepRtnGroupNum}`][j], styleName: `Shadow`,
|
|
6927
|
+
rotate: g_keyObj[`stepRtn${keyCtrlPtn}_${g_keycons.stepRtnGroupNum}`][j], styleName: `Shadow`,
|
|
6924
6928
|
}),
|
|
6925
6929
|
// 矢印本体
|
|
6926
6930
|
createColorObject2(`arrow${j}`, {
|
|
6927
|
-
x: keyconX, y: keyconY, background: arrowColor, rotate: g_keyObj[`stepRtn${keyCtrlPtn}_${g_keycons.stepRtnGroupNum}`][j],
|
|
6931
|
+
x: keyconX, y: keyconY, background: arrowColor, rotate: g_keyObj[`stepRtn${keyCtrlPtn}_${g_keycons.stepRtnGroupNum}`][j],
|
|
6928
6932
|
}),
|
|
6929
6933
|
);
|
|
6930
6934
|
if (g_headerObj.shuffleUse && g_keyObj[`shuffle${keyCtrlPtn}`] !== undefined) {
|
|
6931
6935
|
keyconSprite.appendChild(
|
|
6932
6936
|
createCss2Button(`sArrow${j}`, ``, () => changeTmpShuffleNum(j), {
|
|
6933
6937
|
x: keyconX, y: keyconY - 12, w: C_ARW_WIDTH, h: 15, siz: 12, fontWeight: `bold`,
|
|
6934
|
-
pointerEvents: (g_settings.shuffles.filter(val => val.endsWith(`+`)).length > 0 ?
|
|
6938
|
+
pointerEvents: (g_settings.shuffles.filter(val => val.endsWith(`+`)).length > 0 ? C_DIS_AUTO : C_DIS_NONE),
|
|
6935
6939
|
cxtFunc: () => changeTmpShuffleNum(j, -1),
|
|
6936
6940
|
}, g_cssObj.button_Default_NoColor, g_cssObj.title_base)
|
|
6937
6941
|
);
|
|
@@ -7986,7 +7990,7 @@ const loadingScoreInit = async () => {
|
|
|
7986
7990
|
g_workObj.shuffleGroupMap[_val]?.push(_i) || (g_workObj.shuffleGroupMap[_val] = [_i]));
|
|
7987
7991
|
|
|
7988
7992
|
// Mirror,Random,S-Randomの適用
|
|
7989
|
-
g_shuffleFunc
|
|
7993
|
+
g_shuffleFunc.get(g_stateObj.shuffle)(keyNum, Object.values(g_workObj.shuffleGroupMap));
|
|
7990
7994
|
|
|
7991
7995
|
// アシスト用の配列があれば、ダミーデータで上書き
|
|
7992
7996
|
if (typeof g_keyObj[`assistPos${keyCtrlPtn}`] === C_TYP_OBJECT &&
|
|
@@ -8608,7 +8612,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8608
8612
|
// word_dataのみ指定されている場合、下記ルールに従って設定
|
|
8609
8613
|
if (!wordTarget.includes(`Rev`) && g_stateObj.scroll === `---`) {
|
|
8610
8614
|
// Reverse時の歌詞の自動反転制御設定
|
|
8611
|
-
if (g_headerObj.wordAutoReverse !==
|
|
8615
|
+
if (g_headerObj.wordAutoReverse !== C_DIS_AUTO) {
|
|
8612
8616
|
wordReverseFlg = g_headerObj.wordAutoReverse === C_FLG_ON;
|
|
8613
8617
|
} else if (keyNum === divideCnt + 1) {
|
|
8614
8618
|
wordReverseFlg = true;
|
|
@@ -8632,7 +8636,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8632
8636
|
let wordReverseFlg = _reverseFlg;
|
|
8633
8637
|
const tmpArrayData = splitLF(_data);
|
|
8634
8638
|
|
|
8635
|
-
if (g_headerObj.wordAutoReverse ===
|
|
8639
|
+
if (g_headerObj.wordAutoReverse === C_DIS_AUTO) {
|
|
8636
8640
|
tmpArrayData.filter(data => hasVal(data) && data?.indexOf(`<br>`) !== -1).forEach(() => wordReverseFlg = false);
|
|
8637
8641
|
}
|
|
8638
8642
|
|
|
@@ -8921,7 +8925,7 @@ const setSpeedOnFrame = (_speedData, _lastFrame) => {
|
|
|
8921
8925
|
* Motionオプション適用時の矢印別の速度設定
|
|
8922
8926
|
* - 矢印が表示される最大フレーム数を 縦ピクセル数×20 と定義。
|
|
8923
8927
|
*/
|
|
8924
|
-
const setMotionOnFrame = () => g_motionFunc
|
|
8928
|
+
const setMotionOnFrame = () => g_motionFunc.get(g_stateObj.motion)(fillArray(g_headerObj.playingHeight * 20 + 1));
|
|
8925
8929
|
|
|
8926
8930
|
/**
|
|
8927
8931
|
* Boost用の適用関数
|
|
@@ -9948,21 +9952,23 @@ const mainInit = () => {
|
|
|
9948
9952
|
g_workObj.fadeOutNo = fillArray(wordMaxLen);
|
|
9949
9953
|
g_workObj.lastFadeFrame = fillArray(wordMaxLen);
|
|
9950
9954
|
g_workObj.wordFadeFrame = fillArray(wordMaxLen);
|
|
9955
|
+
const mainCommonPos = { w: g_headerObj.playingWidth, h: g_posObj.arrowHeight };
|
|
9951
9956
|
|
|
9952
9957
|
// 背景スプライトを作成
|
|
9953
9958
|
createMultipleSprite(`backSprite`, g_scoreObj.backMaxDepth, { x: g_workObj.backX });
|
|
9954
9959
|
|
|
9955
9960
|
// ステップゾーン、矢印のメインスプライトを作成
|
|
9956
|
-
const mainSprite = createEmptySprite(divRoot, `mainSprite`,
|
|
9957
|
-
x: g_workObj.playingX, y: g_posObj.stepY - C_STEP_Y + g_headerObj.playingY, w: g_headerObj.playingWidth, h: g_headerObj.playingHeight,
|
|
9958
|
-
});
|
|
9961
|
+
const mainSprite = createEmptySprite(divRoot, `mainSprite`, mainCommonPos);
|
|
9959
9962
|
addTransform(`mainSprite`, `root`, `scale(${g_keyObj.scale})`);
|
|
9963
|
+
addXY(`mainSprite`, `root`, g_workObj.playingX, g_posObj.stepY - C_STEP_Y + g_headerObj.playingY);
|
|
9960
9964
|
|
|
9961
9965
|
// 曲情報・判定カウント用スプライトを作成(メインスプライトより上位)
|
|
9962
|
-
const infoSprite = createEmptySprite(divRoot, `infoSprite`,
|
|
9966
|
+
const infoSprite = createEmptySprite(divRoot, `infoSprite`, mainCommonPos);
|
|
9967
|
+
addXY(`infoSprite`, `root`, g_workObj.playingX, g_headerObj.playingY);
|
|
9963
9968
|
|
|
9964
9969
|
// 判定系スプライトを作成(メインスプライトより上位)
|
|
9965
|
-
const judgeSprite = createEmptySprite(divRoot, `judgeSprite`,
|
|
9970
|
+
const judgeSprite = createEmptySprite(divRoot, `judgeSprite`, mainCommonPos);
|
|
9971
|
+
addXY(`judgeSprite`, `root`, g_workObj.playingX, g_headerObj.playingY);
|
|
9966
9972
|
|
|
9967
9973
|
const tkObj = getKeyInfo();
|
|
9968
9974
|
const [keyCtrlPtn, keyNum] = [tkObj.keyCtrlPtn, tkObj.keyNum];
|
|
@@ -9999,7 +10005,6 @@ const mainInit = () => {
|
|
|
9999
10005
|
|
|
10000
10006
|
// mainSprite配下に層別のスプライトを作成し、ステップゾーン・矢印本体・フリーズアローヒット部分に分ける
|
|
10001
10007
|
const mainSpriteN = [], stepSprite = [], arrowSprite = [], frzHitSprite = [];
|
|
10002
|
-
const mainCommonPos = { w: g_headerObj.playingWidth, h: g_posObj.arrowHeight };
|
|
10003
10008
|
|
|
10004
10009
|
// Hidden+, Sudden+用のライン、パーセント表示
|
|
10005
10010
|
const filterCss = g_stateObj.filterLock === C_FLG_OFF ? g_cssObj.life_Failed : g_cssObj.life_Cleared;
|
|
@@ -10062,12 +10067,23 @@ const mainInit = () => {
|
|
|
10062
10067
|
}
|
|
10063
10068
|
|
|
10064
10069
|
// StepArea処理
|
|
10065
|
-
g_stepAreaFunc
|
|
10070
|
+
g_stepAreaFunc.get(g_stateObj.stepArea)();
|
|
10071
|
+
|
|
10072
|
+
// mainSpriteのtransform追加処理
|
|
10073
|
+
addTransform(`mainSprite`, `playWindow`, g_playWindowFunc.get(g_stateObj.playWindow)());
|
|
10074
|
+
|
|
10075
|
+
// EffectのArrowEffect追加処理
|
|
10076
|
+
g_effectFunc.get(g_stateObj.effect)();
|
|
10066
10077
|
|
|
10067
10078
|
// Appearanceのオプション適用時は一部描画を隠す
|
|
10068
10079
|
changeAppearanceFilter(g_appearanceRanges.includes(g_stateObj.appearance) ?
|
|
10069
10080
|
g_hidSudObj.filterPos : g_hidSudObj.filterPosDefault[g_stateObj.appearance], true);
|
|
10070
10081
|
|
|
10082
|
+
// Shaking初期化
|
|
10083
|
+
if (g_stateObj.shaking !== C_FLG_OFF) {
|
|
10084
|
+
addXY(`mainSprite`, `shaking`, 0, 0);
|
|
10085
|
+
}
|
|
10086
|
+
|
|
10071
10087
|
// 現在の矢印・フリーズアローの速度、個別加算速度の初期化 (速度変化時に直す)
|
|
10072
10088
|
g_workObj.currentSpeed = 2;
|
|
10073
10089
|
g_workObj.boostSpd = 1;
|
|
@@ -10326,12 +10342,6 @@ const mainInit = () => {
|
|
|
10326
10342
|
// ユーザカスタムイベント(初期)
|
|
10327
10343
|
g_customJsObj.main.forEach(func => func());
|
|
10328
10344
|
|
|
10329
|
-
// mainSpriteのtransform追加処理
|
|
10330
|
-
addTransform(`mainSprite`, `playWindow`, g_playWindowFunc[g_stateObj.playWindow]());
|
|
10331
|
-
|
|
10332
|
-
// EffectのArrowEffect追加処理
|
|
10333
|
-
g_effectFunc[g_stateObj.effect]();
|
|
10334
|
-
|
|
10335
10345
|
/**
|
|
10336
10346
|
* キーを押したときの処理
|
|
10337
10347
|
*/
|
|
@@ -11055,7 +11065,7 @@ const mainInit = () => {
|
|
|
11055
11065
|
}
|
|
11056
11066
|
|
|
11057
11067
|
// 画面揺れの設定
|
|
11058
|
-
g_shakingFunc
|
|
11068
|
+
g_shakingFunc.get(g_stateObj.shaking)();
|
|
11059
11069
|
|
|
11060
11070
|
// ユーザカスタムイベント(フレーム毎)
|
|
11061
11071
|
g_customJsObj.mainEnterFrame.forEach(func => func());
|
|
@@ -11356,30 +11366,36 @@ const changeAppearanceFilter = (_num = 10, _shiftFlg = keyIsShift()) => {
|
|
|
11356
11366
|
_num = MAX_FILTER_POS / 2;
|
|
11357
11367
|
}
|
|
11358
11368
|
|
|
11369
|
+
// アルファマスクの位置設定
|
|
11359
11370
|
const numPlus = (g_stateObj.appearance === `Hid&Sud+` ? _num : 0);
|
|
11360
11371
|
const topShape = `inset(${_num}% 0% ${numPlus}% 0%)`;
|
|
11361
11372
|
const bottomShape = `inset(${numPlus}% 0% ${_num}% 0%)`;
|
|
11373
|
+
|
|
11374
|
+
// フィルターバーの位置設定
|
|
11362
11375
|
const appearPers = [_num, MAX_FILTER_POS - _num];
|
|
11376
|
+
const topDist = g_posObj.arrowHeight * appearPers[topNum] / MAX_FILTER_POS;
|
|
11377
|
+
const bottomDist = g_posObj.arrowHeight * appearPers[bottomNum] / MAX_FILTER_POS;
|
|
11363
11378
|
|
|
11364
11379
|
for (let j = 0; j < g_stateObj.layerNum; j += 2) {
|
|
11365
11380
|
$id(`arrowSprite${topNum + j}`).clipPath = topShape;
|
|
11366
11381
|
$id(`arrowSprite${bottomNum + j}`).clipPath = bottomShape;
|
|
11367
11382
|
|
|
11368
|
-
$id(`filterBar${topNum + j}`).top = wUnit(parseFloat($id(`arrowSprite${j}`).top) +
|
|
11369
|
-
$id(`filterBar${bottomNum + j}`).top = wUnit(parseFloat($id(`arrowSprite${j + 1}`).top) +
|
|
11383
|
+
$id(`filterBar${topNum + j}`).top = wUnit(parseFloat($id(`arrowSprite${j}`).top) + topDist);
|
|
11384
|
+
$id(`filterBar${bottomNum + j}`).top = wUnit(parseFloat($id(`arrowSprite${j + 1}`).top) + bottomDist);
|
|
11370
11385
|
|
|
11371
11386
|
if (![`Default`, `Halfway`].includes(g_stateObj.stepArea)) {
|
|
11372
|
-
$id(`filterBar${bottomNum + j}_HS`).top = wUnit(parseFloat($id(`arrowSprite${j}`).top) +
|
|
11373
|
-
$id(`filterBar${topNum + j}_HS`).top = wUnit(parseFloat($id(`arrowSprite${j + 1}`).top) +
|
|
11387
|
+
$id(`filterBar${bottomNum + j}_HS`).top = wUnit(parseFloat($id(`arrowSprite${j}`).top) + bottomDist);
|
|
11388
|
+
$id(`filterBar${topNum + j}_HS`).top = wUnit(parseFloat($id(`arrowSprite${j + 1}`).top) + topDist);
|
|
11374
11389
|
}
|
|
11375
11390
|
|
|
11376
11391
|
// 階層が多い場合はShift+pgUp/pgDownで表示する階層グループを切り替え
|
|
11377
11392
|
if (_shiftFlg && g_stateObj.d_filterline === C_FLG_ON) {
|
|
11378
11393
|
[`${topNum + j}`, `${bottomNum + j}`].forEach(type => {
|
|
11379
|
-
|
|
11394
|
+
const displayState = (j === g_workObj.aprFilterCnt ? C_DIS_INHERIT : C_DIS_NONE);
|
|
11395
|
+
$id(`filterBar${type}`).display = displayState;
|
|
11380
11396
|
|
|
11381
11397
|
if (![`Default`, `Halfway`].includes(g_stateObj.stepArea)) {
|
|
11382
|
-
$id(`filterBar${type}_HS`).display =
|
|
11398
|
+
$id(`filterBar${type}_HS`).display = displayState;
|
|
11383
11399
|
}
|
|
11384
11400
|
});
|
|
11385
11401
|
}
|
|
@@ -11394,6 +11410,7 @@ const changeAppearanceFilter = (_num = 10, _shiftFlg = keyIsShift()) => {
|
|
|
11394
11410
|
$id(`filterBar${(g_hidSudObj.std[g_stateObj.appearance][g_stateObj.reverse]) % 2}`).top;
|
|
11395
11411
|
filterView.textContent = `${_num}%`;
|
|
11396
11412
|
|
|
11413
|
+
// スクロールが1種類でHidden+/Sudden+の場合、対面のフィルターバーは不要なため非表示にする
|
|
11397
11414
|
if (g_stateObj.appearance !== `Hid&Sud+` && g_workObj.dividePos.every(v => v === g_workObj.dividePos[0])) {
|
|
11398
11415
|
$id(`filterBar${(g_hidSudObj.std[g_stateObj.appearance][g_stateObj.reverse] + 1) % 2}`).display = C_DIS_NONE;
|
|
11399
11416
|
}
|
|
@@ -11470,10 +11487,14 @@ const changeReturn = (_rad, _axis) => {
|
|
|
11470
11487
|
|
|
11471
11488
|
/**
|
|
11472
11489
|
* AutoRetryの設定
|
|
11473
|
-
* @param {
|
|
11490
|
+
* @param {string} _retryCondition リトライ基準となるAutoRetry名
|
|
11474
11491
|
*/
|
|
11475
|
-
const quickRetry = (
|
|
11476
|
-
|
|
11492
|
+
const quickRetry = (_retryCondition) => {
|
|
11493
|
+
const retryNum = g_settings.autoRetrys.findIndex(val => val === _retryCondition);
|
|
11494
|
+
if (retryNum < 0) {
|
|
11495
|
+
return;
|
|
11496
|
+
}
|
|
11497
|
+
if (g_settings.autoRetryNum >= retryNum && !g_workObj.autoRetryFlg) {
|
|
11477
11498
|
g_workObj.autoRetryFlg = true;
|
|
11478
11499
|
setTimeout(() => {
|
|
11479
11500
|
g_audio.pause();
|
|
@@ -11578,7 +11599,6 @@ const changeHitFrz = (_j, _k, _name, _difFrame = 0) => {
|
|
|
11578
11599
|
const styfrzBtmRoot = $id(`${_name}BtmRoot${frzNo}`);
|
|
11579
11600
|
const styfrzBtm = $id(`${_name}Btm${frzNo}`);
|
|
11580
11601
|
const styfrzTopRoot = $id(`${_name}TopRoot${frzNo}`);
|
|
11581
|
-
const styfrzTop = $id(`${_name}Top${frzNo}`);
|
|
11582
11602
|
const styfrzBtmShadow = $id(`${_name}BtmShadow${frzNo}`);
|
|
11583
11603
|
|
|
11584
11604
|
// フリーズアロー位置の修正(ステップゾーン上に来るように)
|
|
@@ -11629,7 +11649,7 @@ const changeHitFrz = (_j, _k, _name, _difFrame = 0) => {
|
|
|
11629
11649
|
// FrzReturnの設定
|
|
11630
11650
|
if (g_stateObj.frzReturn !== C_FLG_OFF) {
|
|
11631
11651
|
if (!g_workObj.frzReturnFlg) {
|
|
11632
|
-
changeReturn(4, g_frzReturnFunc
|
|
11652
|
+
changeReturn(4, g_frzReturnFunc.get(g_stateObj.frzReturn)());
|
|
11633
11653
|
}
|
|
11634
11654
|
}
|
|
11635
11655
|
g_customJsObj[`judg_${_name}Hit`].forEach(func => func(_difFrame));
|
|
@@ -11654,7 +11674,7 @@ const changeFailedFrz = (_j, _k) => {
|
|
|
11654
11674
|
// FrzReturnの設定
|
|
11655
11675
|
if (g_stateObj.frzReturn !== C_FLG_OFF) {
|
|
11656
11676
|
if (!g_workObj.frzReturnFlg) {
|
|
11657
|
-
changeReturn(4, g_frzReturnFunc
|
|
11677
|
+
changeReturn(4, g_frzReturnFunc.get(g_stateObj.frzReturn)());
|
|
11658
11678
|
}
|
|
11659
11679
|
}
|
|
11660
11680
|
};
|
|
@@ -11776,11 +11796,11 @@ const displayDiff = (_difFrame, _fjdg = ``, _justFrames = g_headerObj.justFrames
|
|
|
11776
11796
|
} else if (_difFrame > _justFrames) {
|
|
11777
11797
|
diffJDisp = `<span class="common_diffFast">Fast ${difCnt} Frames</span>`;
|
|
11778
11798
|
g_resultObj.fast++;
|
|
11779
|
-
quickRetry(
|
|
11799
|
+
quickRetry(`Fast/Slow`);
|
|
11780
11800
|
} else if (_difFrame < _justFrames * (-1)) {
|
|
11781
11801
|
diffJDisp = `<span class="common_diffSlow">Slow ${difCnt} Frames</span>`;
|
|
11782
11802
|
g_resultObj.slow++;
|
|
11783
|
-
quickRetry(
|
|
11803
|
+
quickRetry(`Fast/Slow`);
|
|
11784
11804
|
}
|
|
11785
11805
|
document.getElementById(`diff${_fjdg}J`).innerHTML = diffJDisp;
|
|
11786
11806
|
};
|
|
@@ -11826,7 +11846,7 @@ const lifeRecovery = () => {
|
|
|
11826
11846
|
*/
|
|
11827
11847
|
const lifeDamage = (_excessive = false) => {
|
|
11828
11848
|
g_workObj.lifeVal -= g_workObj.lifeDmg * (_excessive ? 0.25 : 1);
|
|
11829
|
-
quickRetry(
|
|
11849
|
+
quickRetry(`Miss`);
|
|
11830
11850
|
|
|
11831
11851
|
if (g_workObj.lifeVal <= 0) {
|
|
11832
11852
|
g_workObj.lifeVal = 0;
|
|
@@ -11874,11 +11894,11 @@ const judgeRecovery = (_name, _difFrame) => {
|
|
|
11874
11894
|
|
|
11875
11895
|
if (g_stateObj.freezeReturn !== C_FLG_OFF) {
|
|
11876
11896
|
if ((g_resultObj.ii + g_resultObj.shakin) % 100 === 0 && !g_workObj.frzReturnFlg) {
|
|
11877
|
-
changeReturn(1, g_frzReturnFunc
|
|
11897
|
+
changeReturn(1, g_frzReturnFunc.get(g_stateObj.frzReturn)());
|
|
11878
11898
|
}
|
|
11879
11899
|
}
|
|
11880
11900
|
if (_name === `shakin`) {
|
|
11881
|
-
quickRetry(
|
|
11901
|
+
quickRetry(`Shakin(Great)`);
|
|
11882
11902
|
}
|
|
11883
11903
|
g_customJsObj[`judg_${_name}`].forEach(func => func(_difFrame));
|
|
11884
11904
|
};
|
|
@@ -11917,7 +11937,7 @@ const judgeMatari = _difFrame => {
|
|
|
11917
11937
|
changeJudgeCharacter(`matari`, g_lblNameObj.j_matari);
|
|
11918
11938
|
comboJ.textContent = ``;
|
|
11919
11939
|
finishViewing();
|
|
11920
|
-
quickRetry(
|
|
11940
|
+
quickRetry(`Matari(Good)`);
|
|
11921
11941
|
|
|
11922
11942
|
g_customJsObj.judg_matari.forEach(func => func(_difFrame));
|
|
11923
11943
|
};
|
|
@@ -12470,7 +12490,7 @@ const resultInit = () => {
|
|
|
12470
12490
|
* @param {string} _msg
|
|
12471
12491
|
*/
|
|
12472
12492
|
const copyResultImageData = _msg => {
|
|
12473
|
-
const tmpDiv = createEmptySprite(divRoot, `tmpDiv`, { x: 0, y: 0, w: g_sWidth, h: g_sHeight });
|
|
12493
|
+
const tmpDiv = createEmptySprite(divRoot, `tmpDiv`, { x: 0, y: 0, w: g_sWidth, h: g_sHeight, pointerEvents: C_DIS_AUTO });
|
|
12474
12494
|
tmpDiv.style.background = `#000000cc`;
|
|
12475
12495
|
const canvas = document.createElement(`canvas`);
|
|
12476
12496
|
const artistName = g_headerObj.artistNames[g_headerObj.musicNos[g_stateObj.scoreId]] || g_headerObj.artistName;
|
|
@@ -12645,10 +12665,8 @@ const resultInit = () => {
|
|
|
12645
12665
|
);
|
|
12646
12666
|
|
|
12647
12667
|
// マスクスプライトを作成
|
|
12648
|
-
const
|
|
12649
|
-
|
|
12650
|
-
maskResultSprite.style.pointerEvents = C_DIS_NONE;
|
|
12651
|
-
}
|
|
12668
|
+
const makeResultSprite = createMultipleSprite(`maskResultSprite`, g_headerObj.maskResultMaxDepth);
|
|
12669
|
+
makeResultSprite.style.pointerEvents = g_headerObj.maskresultButton ? C_DIS_AUTO : C_DIS_NONE;
|
|
12652
12670
|
|
|
12653
12671
|
// リザルトモーションの0フレーム対応
|
|
12654
12672
|
g_animationData.filter(sprite => g_scoreObj[`${sprite}ResultFrameNum`] === 0 && g_headerObj[`${sprite}ResultData`][0] !== undefined)
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2025/02/
|
|
8
|
+
* Revised : 2025/02/11 (v39.4.1)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -156,14 +156,14 @@ let [g_sWidth, g_sHeight] = [
|
|
|
156
156
|
];
|
|
157
157
|
$id(`canvas-frame`).width = `${Math.max(g_sWidth, 500)}px`;
|
|
158
158
|
$id(`canvas-frame`).height = `${Math.max(g_sHeight, 500)}px`;
|
|
159
|
-
$id(`canvas-frame`).margin =
|
|
159
|
+
$id(`canvas-frame`).margin = C_DIS_AUTO;
|
|
160
160
|
|
|
161
161
|
const g_btnWidth = (_multi = 1) => Math.min(g_sWidth, g_limitObj.btnBaseWidth) * _multi;
|
|
162
162
|
const g_btnX = (_multi = 0) => g_btnWidth(_multi) + Math.max((g_sWidth - g_limitObj.btnBaseWidth) / 2, 0);
|
|
163
163
|
|
|
164
164
|
// 固定ウィンドウサイズ
|
|
165
165
|
const g_windowObj = {
|
|
166
|
-
divRoot: { margin:
|
|
166
|
+
divRoot: { margin: C_DIS_AUTO, letterSpacing: `normal`, pointerEvents: C_DIS_AUTO },
|
|
167
167
|
divBack: { background: `linear-gradient(#000000, #222222)` },
|
|
168
168
|
|
|
169
169
|
colorPickSprite: { x: 0, y: 90, w: 50, h: 280 },
|
|
@@ -191,13 +191,13 @@ const getScMsg = {
|
|
|
191
191
|
const updateWindowSiz = () => {
|
|
192
192
|
Object.assign(g_windowObj, {
|
|
193
193
|
optionSprite: { x: (g_sWidth - 450) / 2, y: 65, w: 450, h: 325 },
|
|
194
|
-
difList: { x: 165, y: 60, w: 280, h: 270 + g_sHeight - 500, overflow:
|
|
195
|
-
difCover: { x: 20, y: 60, w: 145, h: 270 + g_sHeight - 500, opacity: 0.95 },
|
|
196
|
-
difFilter: { x: 0, y: 66, w: 140, h: 204 + g_sHeight - 500, overflow:
|
|
194
|
+
difList: { x: 165, y: 60, w: 280, h: 270 + g_sHeight - 500, overflow: C_DIS_AUTO, pointerEvents: C_DIS_AUTO },
|
|
195
|
+
difCover: { x: 20, y: 60, w: 145, h: 270 + g_sHeight - 500, opacity: 0.95, pointerEvents: C_DIS_AUTO },
|
|
196
|
+
difFilter: { x: 0, y: 66, w: 140, h: 204 + g_sHeight - 500, overflow: C_DIS_AUTO, pointerEvents: C_DIS_AUTO },
|
|
197
197
|
displaySprite: { x: 25, y: 30, w: (g_sWidth - 450) / 2, h: g_limitObj.setLblHeight * 5 },
|
|
198
|
-
scoreDetail: { x: 20, y: 85, w: (g_sWidth - 500) / 2 + 420, h: 245, visibility: `hidden
|
|
198
|
+
scoreDetail: { x: 20, y: 85, w: (g_sWidth - 500) / 2 + 420, h: 245, visibility: `hidden`, pointerEvents: C_DIS_AUTO },
|
|
199
199
|
detailObj: { w: (g_sWidth - 500) / 2 + 420, h: 230, visibility: `hidden` },
|
|
200
|
-
keyconSprite: { y: 105, h: g_sHeight - 105, overflow:
|
|
200
|
+
keyconSprite: { y: 105, h: g_sHeight - 105, overflow: C_DIS_AUTO },
|
|
201
201
|
loader: { y: g_sHeight - 10, h: 10, backgroundColor: `#333333` },
|
|
202
202
|
playDataWindow: { x: g_sWidth / 2 - 225, y: 70, w: 450, h: 110 },
|
|
203
203
|
resultWindow: { x: g_sWidth / 2 - 200, y: 185, w: 400, h: 210 },
|
|
@@ -232,7 +232,7 @@ const updateWindowSiz = () => {
|
|
|
232
232
|
},
|
|
233
233
|
lblComment: {
|
|
234
234
|
x: g_btnX(), y: 70, w: g_btnWidth(), h: g_sHeight - 180, siz: g_limitObj.difSelectorSiz, align: C_ALIGN_LEFT,
|
|
235
|
-
overflow:
|
|
235
|
+
overflow: C_DIS_AUTO, background: `#222222`, color: `#cccccc`, display: C_DIS_NONE,
|
|
236
236
|
whiteSpace: `normal`,
|
|
237
237
|
},
|
|
238
238
|
btnComment: {
|
|
@@ -304,7 +304,7 @@ const updateWindowSiz = () => {
|
|
|
304
304
|
x: 130, y: 70, w: 200, h: 90,
|
|
305
305
|
},
|
|
306
306
|
dataArrowInfo2: {
|
|
307
|
-
x: 140, y: 70, w: (g_sWidth - 500) / 2 + 275, h: 150, overflow:
|
|
307
|
+
x: 140, y: 70, w: (g_sWidth - 500) / 2 + 275, h: 150, overflow: C_DIS_AUTO,
|
|
308
308
|
},
|
|
309
309
|
lnkDifInfo: {
|
|
310
310
|
w: g_limitObj.difCoverWidth, h: 20, borderStyle: `solid`,
|
|
@@ -340,7 +340,6 @@ const updateWindowSiz = () => {
|
|
|
340
340
|
},
|
|
341
341
|
kcMsg: {
|
|
342
342
|
x: g_btnX(), y: g_sHeight - 33, w: g_btnWidth(), h: 20, siz: g_limitObj.mainSiz,
|
|
343
|
-
pointerEvents: `none`,
|
|
344
343
|
},
|
|
345
344
|
kcDesc: {
|
|
346
345
|
x: g_btnX() + 50, y: 68, w: g_btnWidth() - 100, h: 20,
|
|
@@ -434,7 +433,7 @@ const updateWindowSiz = () => {
|
|
|
434
433
|
},
|
|
435
434
|
lblWord: {
|
|
436
435
|
x: 100, w: g_headerObj.playingWidth - 200, h: 50,
|
|
437
|
-
siz: g_limitObj.mainSiz, align: C_ALIGN_LEFT, display: `block`, margin:
|
|
436
|
+
siz: g_limitObj.mainSiz, align: C_ALIGN_LEFT, display: `block`, margin: C_DIS_AUTO,
|
|
438
437
|
},
|
|
439
438
|
finishView: {
|
|
440
439
|
x: g_headerObj.playingWidth / 2 - 150, y: g_headerObj.playingHeight / 2 - 50, w: 300, h: 20, siz: 50,
|
|
@@ -492,13 +491,13 @@ const updateWindowSiz = () => {
|
|
|
492
491
|
const g_windowAlign = {
|
|
493
492
|
left: () => {
|
|
494
493
|
$id(`canvas-frame`).marginLeft = `0px`;
|
|
495
|
-
$id(`canvas-frame`).marginRight =
|
|
494
|
+
$id(`canvas-frame`).marginRight = C_DIS_AUTO;
|
|
496
495
|
},
|
|
497
496
|
center: () => {
|
|
498
|
-
$id(`canvas-frame`).margin =
|
|
497
|
+
$id(`canvas-frame`).margin = C_DIS_AUTO;
|
|
499
498
|
},
|
|
500
499
|
right: () => {
|
|
501
|
-
$id(`canvas-frame`).marginLeft =
|
|
500
|
+
$id(`canvas-frame`).marginLeft = C_DIS_AUTO;
|
|
502
501
|
$id(`canvas-frame`).marginRight = `0px`;
|
|
503
502
|
},
|
|
504
503
|
};
|
|
@@ -1113,7 +1112,8 @@ const g_moveSettingWindow = (_changePageFlg = true, _direction = 1) => {
|
|
|
1113
1112
|
* transform, 座標管理
|
|
1114
1113
|
*/
|
|
1115
1114
|
const g_transforms = {};
|
|
1116
|
-
const
|
|
1115
|
+
const g_posXs = {};
|
|
1116
|
+
const g_posYs = {};
|
|
1117
1117
|
|
|
1118
1118
|
/**
|
|
1119
1119
|
* idごとのtransformを追加・変更
|
|
@@ -1124,12 +1124,10 @@ const g_posXYs = {};
|
|
|
1124
1124
|
*/
|
|
1125
1125
|
const addTransform = (_id, _transformId, _transform) => {
|
|
1126
1126
|
if (g_transforms[_id] === undefined) {
|
|
1127
|
-
g_transforms[_id] =
|
|
1127
|
+
g_transforms[_id] = new Map();
|
|
1128
1128
|
}
|
|
1129
|
-
g_transforms[_id]
|
|
1130
|
-
|
|
1131
|
-
Object.keys(g_transforms[_id]).forEach(transformId => _transforms.push(g_transforms[_id][transformId]));
|
|
1132
|
-
$id(_id).transform = _transforms.join(` `);
|
|
1129
|
+
g_transforms[_id].set(_transformId, _transform);
|
|
1130
|
+
$id(_id).transform = Array.from(g_transforms[_id].values()).join(` `);
|
|
1133
1131
|
};
|
|
1134
1132
|
|
|
1135
1133
|
/**
|
|
@@ -1145,22 +1143,77 @@ const addTempTransform = (_id, _transform) => {
|
|
|
1145
1143
|
* transformの初期化
|
|
1146
1144
|
*/
|
|
1147
1145
|
const resetTransform = () => {
|
|
1148
|
-
Object.keys(g_transforms).forEach(_id => g_transforms[_id]
|
|
1146
|
+
Object.keys(g_transforms).forEach(_id => delete g_transforms[_id]);
|
|
1149
1147
|
};
|
|
1150
1148
|
|
|
1151
1149
|
/**
|
|
1152
|
-
*
|
|
1150
|
+
* id, transformIdに合致するtransform情報の取得
|
|
1151
|
+
* @param {string} _id
|
|
1152
|
+
* @param {string} _transformId
|
|
1153
|
+
* @returns {string}
|
|
1154
|
+
*/
|
|
1155
|
+
const getTransform = (_id, _transformId) => {
|
|
1156
|
+
return g_transforms[_id]?.[_transformId] || ``;
|
|
1157
|
+
};
|
|
1158
|
+
|
|
1159
|
+
/**
|
|
1160
|
+
* 座標加算処理 (X座標)
|
|
1153
1161
|
* @param {string} _id
|
|
1154
1162
|
* @param {string} _typeId
|
|
1163
|
+
* @param {number} [_x=0]
|
|
1164
|
+
* @param {boolean} [_overwrite=false]
|
|
1155
1165
|
*/
|
|
1156
|
-
const
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1166
|
+
const addX = (_id, _typeId, _x = 0, _overwrite = false) => {
|
|
1167
|
+
if (_overwrite) {
|
|
1168
|
+
delete g_posXs?.[_id];
|
|
1169
|
+
}
|
|
1170
|
+
if (g_posXs[_id] === undefined) {
|
|
1171
|
+
g_posXs[_id] = new Map();
|
|
1172
|
+
}
|
|
1173
|
+
if (g_posXs[_id].get(_typeId) !== _x) {
|
|
1174
|
+
g_posXs[_id].set(_typeId, _x);
|
|
1175
|
+
$id(_id).left = `${sumData(Array.from(g_posXs[_id].values()))}px`;
|
|
1176
|
+
}
|
|
1177
|
+
};
|
|
1178
|
+
|
|
1179
|
+
/**
|
|
1180
|
+
* 座標加算処理 (Y座標)
|
|
1181
|
+
* @param {string} _id
|
|
1182
|
+
* @param {string} _typeId
|
|
1183
|
+
* @param {number} [_y=0]
|
|
1184
|
+
* @param {boolean} [_overwrite=false]
|
|
1185
|
+
*/
|
|
1186
|
+
const addY = (_id, _typeId, _y = 0, _overwrite = false) => {
|
|
1187
|
+
if (_overwrite) {
|
|
1188
|
+
delete g_posYs?.[_id];
|
|
1189
|
+
}
|
|
1190
|
+
if (g_posYs[_id] === undefined) {
|
|
1191
|
+
g_posYs[_id] = new Map();
|
|
1192
|
+
}
|
|
1193
|
+
if (g_posYs[_id].get(_typeId) !== _y) {
|
|
1194
|
+
g_posYs[_id].set(_typeId, _y);
|
|
1195
|
+
$id(_id).top = `${sumData(Array.from(g_posYs[_id].values()))}px`;
|
|
1196
|
+
}
|
|
1197
|
+
};
|
|
1198
|
+
|
|
1199
|
+
/**
|
|
1200
|
+
* 座標リセット処理(X座標)
|
|
1201
|
+
* @param {string} _id
|
|
1202
|
+
* @param {string} _typeId
|
|
1203
|
+
*/
|
|
1204
|
+
const delX = (_id, _typeId) => {
|
|
1205
|
+
g_posXs[_id]?.delete(_typeId);
|
|
1206
|
+
$id(_id).left = `${sumData(Array.from(g_posXs[_id].values()))}px`;
|
|
1207
|
+
};
|
|
1208
|
+
|
|
1209
|
+
/**
|
|
1210
|
+
* 座標リセット処理(Y座標)
|
|
1211
|
+
* @param {string} _id
|
|
1212
|
+
* @param {string} _typeId
|
|
1213
|
+
*/
|
|
1214
|
+
const delY = (_id, _typeId) => {
|
|
1215
|
+
g_posYs[_id]?.delete(_typeId);
|
|
1216
|
+
$id(_id).top = `${sumData(Array.from(g_posYs[_id].values()))}px`;
|
|
1164
1217
|
};
|
|
1165
1218
|
|
|
1166
1219
|
/**
|
|
@@ -1172,14 +1225,8 @@ const calcXY = (_id, _typeId) => {
|
|
|
1172
1225
|
* @param {boolean} [_overwrite=false]
|
|
1173
1226
|
*/
|
|
1174
1227
|
const addXY = (_id, _typeId, _x = 0, _y = 0, _overwrite = false) => {
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
}
|
|
1178
|
-
if (g_posXYs[_id] === undefined) {
|
|
1179
|
-
g_posXYs[_id] = {};
|
|
1180
|
-
}
|
|
1181
|
-
g_posXYs[_id][_typeId] = [_x, _y];
|
|
1182
|
-
calcXY(_id, _typeId);
|
|
1228
|
+
addX(_id, _typeId, _x, _overwrite);
|
|
1229
|
+
addY(_id, _typeId, _y, _overwrite);
|
|
1183
1230
|
};
|
|
1184
1231
|
|
|
1185
1232
|
/**
|
|
@@ -1188,25 +1235,16 @@ const addXY = (_id, _typeId, _x = 0, _y = 0, _overwrite = false) => {
|
|
|
1188
1235
|
* @param {string} _typeId
|
|
1189
1236
|
*/
|
|
1190
1237
|
const delXY = (_id, _typeId) => {
|
|
1191
|
-
|
|
1192
|
-
|
|
1238
|
+
delX(_id, _typeId);
|
|
1239
|
+
delY(_id, _typeId);
|
|
1193
1240
|
};
|
|
1194
1241
|
|
|
1195
1242
|
/**
|
|
1196
1243
|
* 座標位置情報の初期化
|
|
1197
1244
|
*/
|
|
1198
1245
|
const resetXY = () => {
|
|
1199
|
-
Object.keys(
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
/**
|
|
1203
|
-
* id, transformIdに合致するtransform情報の取得
|
|
1204
|
-
* @param {string} _id
|
|
1205
|
-
* @param {string} _transformId
|
|
1206
|
-
* @returns
|
|
1207
|
-
*/
|
|
1208
|
-
const getTransform = (_id, _transformId) => {
|
|
1209
|
-
return g_transforms[_id]?.[_transformId] || ``;
|
|
1246
|
+
Object.keys(g_posXs).forEach(_id => delete g_posXs[_id]);
|
|
1247
|
+
Object.keys(g_posYs).forEach(_id => delete g_posYs[_id]);
|
|
1210
1248
|
};
|
|
1211
1249
|
|
|
1212
1250
|
/**
|
|
@@ -1214,43 +1252,43 @@ const getTransform = (_id, _transformId) => {
|
|
|
1214
1252
|
* @param {number} keyNum
|
|
1215
1253
|
* @param {array} shuffleGroup
|
|
1216
1254
|
*/
|
|
1217
|
-
const g_shuffleFunc =
|
|
1218
|
-
'OFF'
|
|
1219
|
-
'Mirror'
|
|
1220
|
-
'X-Mirror'
|
|
1221
|
-
'Turning'
|
|
1222
|
-
'Random'
|
|
1223
|
-
'Random+'
|
|
1224
|
-
'S-Random'
|
|
1255
|
+
const g_shuffleFunc = new Map([
|
|
1256
|
+
['OFF', () => true],
|
|
1257
|
+
['Mirror', (keyNum, shuffleGroup) => applyMirror(keyNum, shuffleGroup)],
|
|
1258
|
+
['X-Mirror', (keyNum, shuffleGroup) => applyMirror(keyNum, shuffleGroup, true)],
|
|
1259
|
+
['Turning', (keyNum, shuffleGroup) => applyTurning(keyNum, shuffleGroup)],
|
|
1260
|
+
['Random', (keyNum, shuffleGroup) => applyRandom(keyNum, shuffleGroup)],
|
|
1261
|
+
['Random+', keyNum => applyRandom(keyNum, [[...Array(keyNum).keys()]])],
|
|
1262
|
+
['S-Random', (keyNum, shuffleGroup) => {
|
|
1225
1263
|
applySRandom(keyNum, shuffleGroup, `arrow`, `frz`);
|
|
1226
1264
|
applySRandom(keyNum, shuffleGroup, `dummyArrow`, `dummyFrz`);
|
|
1227
|
-
},
|
|
1228
|
-
'S-Random+'
|
|
1265
|
+
}],
|
|
1266
|
+
['S-Random+', keyNum => {
|
|
1229
1267
|
applySRandom(keyNum, [[...Array(keyNum).keys()]], `arrow`, `frz`);
|
|
1230
1268
|
applySRandom(keyNum, [[...Array(keyNum).keys()]], `dummyArrow`, `dummyFrz`);
|
|
1231
|
-
},
|
|
1232
|
-
'Scatter'
|
|
1269
|
+
}],
|
|
1270
|
+
['Scatter', (keyNum, shuffleGroup) => {
|
|
1233
1271
|
applySRandom(keyNum, shuffleGroup, `arrow`, `frz`);
|
|
1234
1272
|
applySRandom(keyNum, shuffleGroup, `dummyArrow`, `dummyFrz`);
|
|
1235
|
-
},
|
|
1236
|
-
'Scatter+'
|
|
1273
|
+
}],
|
|
1274
|
+
['Scatter+', keyNum => {
|
|
1237
1275
|
applySRandom(keyNum, [[...Array(keyNum).keys()]], `arrow`, `frz`);
|
|
1238
1276
|
applySRandom(keyNum, [[...Array(keyNum).keys()]], `dummyArrow`, `dummyFrz`);
|
|
1239
|
-
},
|
|
1240
|
-
|
|
1277
|
+
}],
|
|
1278
|
+
]);
|
|
1241
1279
|
|
|
1242
1280
|
/**
|
|
1243
1281
|
* モーション適用関数
|
|
1244
1282
|
* @param {array} frms フレーム別の速度設定用配列。配列の15がステップゾーン上、0~14は矢印の枠外管理用
|
|
1245
1283
|
*/
|
|
1246
|
-
const g_motionFunc =
|
|
1247
|
-
'OFF'
|
|
1248
|
-
'Boost'
|
|
1249
|
-
'Hi-Boost'
|
|
1250
|
-
'Brake'
|
|
1251
|
-
'Compress'
|
|
1252
|
-
'Fountain'
|
|
1253
|
-
|
|
1284
|
+
const g_motionFunc = new Map([
|
|
1285
|
+
['OFF', _frms => _frms],
|
|
1286
|
+
['Boost', _frms => getBoostTrace(_frms, 3)],
|
|
1287
|
+
['Hi-Boost', _frms => getBoostTrace(_frms, g_stateObj.speed * 2)],
|
|
1288
|
+
['Brake', _frms => getBrakeTrace(_frms)],
|
|
1289
|
+
['Compress', _frms => getBoostTrace(_frms, g_stateObj.speed * 5 / 8, -1)],
|
|
1290
|
+
['Fountain', _frms => getFountainTrace(_frms, g_stateObj.speed * 2)],
|
|
1291
|
+
]);
|
|
1254
1292
|
|
|
1255
1293
|
/**
|
|
1256
1294
|
* PlayWindow適用関数
|
|
@@ -1258,109 +1296,131 @@ const g_motionFunc = {
|
|
|
1258
1296
|
const g_changeStairs = (_rad) => `rotate(${_rad}deg)`;
|
|
1259
1297
|
const g_changeSkew = (_rad) => `Skew(${_rad}deg, ${_rad}deg) scaleY(0.9)`;
|
|
1260
1298
|
|
|
1261
|
-
const g_playWindowFunc =
|
|
1262
|
-
'Default'
|
|
1263
|
-
'Stairs'
|
|
1264
|
-
'R-Stairs'
|
|
1265
|
-
'Slope'
|
|
1266
|
-
'R-Slope'
|
|
1267
|
-
'Distorted'
|
|
1268
|
-
'R-Distorted'
|
|
1269
|
-
'SideScroll'
|
|
1270
|
-
'R-SideScroll'
|
|
1271
|
-
|
|
1299
|
+
const g_playWindowFunc = new Map([
|
|
1300
|
+
['Default', () => ``],
|
|
1301
|
+
['Stairs', () => g_changeStairs(-8)],
|
|
1302
|
+
['R-Stairs', () => g_changeStairs(8)],
|
|
1303
|
+
['Slope', () => g_changeStairs(-45)],
|
|
1304
|
+
['R-Slope', () => g_changeStairs(45)],
|
|
1305
|
+
['Distorted', () => g_changeSkew(-15)],
|
|
1306
|
+
['R-Distorted', () => g_changeSkew(15)],
|
|
1307
|
+
['SideScroll', () => g_changeStairs(-90)],
|
|
1308
|
+
['R-SideScroll', () => g_changeStairs(90)],
|
|
1309
|
+
]);
|
|
1272
1310
|
|
|
1273
1311
|
const g_arrowGroupSprite = [`stepSprite`, `arrowSprite`, `frzHitSprite`];
|
|
1274
|
-
const
|
|
1275
|
-
|
|
1276
|
-
'
|
|
1312
|
+
const halfwayOffset = _j => (_j % 2 === 0 ? 1 : -1) * (g_headerObj.playingHeight / 2 - g_posObj.stepY + (g_posObj.stepYR - C_ARW_WIDTH) / 2);
|
|
1313
|
+
const g_stepAreaFunc = new Map([
|
|
1314
|
+
['Default', () => ``],
|
|
1315
|
+
['Halfway', () => {
|
|
1277
1316
|
g_arrowGroupSprite.forEach(sprite => {
|
|
1278
1317
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1279
|
-
|
|
1318
|
+
addY(`${sprite}${j}`, `stepArea`, halfwayOffset(j));
|
|
1280
1319
|
}
|
|
1281
1320
|
});
|
|
1282
|
-
},
|
|
1283
|
-
'Mismatched'
|
|
1321
|
+
}],
|
|
1322
|
+
['Mismatched', () => {
|
|
1284
1323
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1285
1324
|
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${(j % 2 === 0 ? 1 : -1) * -15}deg)`);
|
|
1286
1325
|
}
|
|
1287
1326
|
if (g_workObj.orgFlatFlg) {
|
|
1288
1327
|
g_arrowGroupSprite.forEach(sprite => {
|
|
1289
1328
|
for (let j = 2; j < Math.min(g_stateObj.layerNum, 4); j++) {
|
|
1290
|
-
|
|
1329
|
+
addY(`${sprite}${j}`, `stepArea`, halfwayOffset(j));
|
|
1291
1330
|
}
|
|
1292
1331
|
});
|
|
1293
1332
|
}
|
|
1294
|
-
},
|
|
1295
|
-
'R-Mismatched'
|
|
1333
|
+
}],
|
|
1334
|
+
['R-Mismatched', () => {
|
|
1296
1335
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1297
1336
|
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${(j % 2 === 0 ? 1 : -1) * 15}deg)`);
|
|
1298
1337
|
}
|
|
1299
1338
|
if (g_workObj.orgFlatFlg) {
|
|
1300
1339
|
g_arrowGroupSprite.forEach(sprite => {
|
|
1301
1340
|
for (let j = 0; j < Math.min(g_stateObj.layerNum, 2); j++) {
|
|
1302
|
-
|
|
1341
|
+
addY(`${sprite}${j}`, `stepArea`, halfwayOffset(j));
|
|
1303
1342
|
}
|
|
1304
1343
|
});
|
|
1305
1344
|
}
|
|
1306
|
-
},
|
|
1307
|
-
'2Step'
|
|
1345
|
+
}],
|
|
1346
|
+
['2Step', () => {
|
|
1308
1347
|
g_arrowGroupSprite.forEach(sprite => {
|
|
1309
1348
|
for (let j = Math.min(g_stateObj.layerNum, 4) / 2; j < Math.min(g_stateObj.layerNum, 4); j++) {
|
|
1310
|
-
|
|
1349
|
+
addY(`${sprite}${j}`, `stepArea`, halfwayOffset(j));
|
|
1311
1350
|
}
|
|
1312
1351
|
});
|
|
1313
|
-
},
|
|
1314
|
-
'X-Flower'
|
|
1352
|
+
}],
|
|
1353
|
+
['X-Flower', () => {
|
|
1315
1354
|
for (let j = 0; j < Math.min(g_stateObj.layerNum, 4); j++) {
|
|
1316
1355
|
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${(j % 2 === 0 ? 1 : -1) * (j % 4 < 2 ? 1 : -1) * -15}deg)`);
|
|
1317
1356
|
}
|
|
1318
|
-
},
|
|
1319
|
-
|
|
1357
|
+
}],
|
|
1358
|
+
]);
|
|
1320
1359
|
|
|
1321
1360
|
/**
|
|
1322
1361
|
* Shaking適用関数
|
|
1323
1362
|
*/
|
|
1324
|
-
const g_shakingFunc =
|
|
1325
|
-
'OFF'
|
|
1326
|
-
'Horizontal'
|
|
1327
|
-
'Vertical'
|
|
1328
|
-
'Drunk'
|
|
1329
|
-
if (
|
|
1330
|
-
g_workObj.drunkXFlg =
|
|
1331
|
-
g_workObj.drunkYFlg =
|
|
1363
|
+
const g_shakingFunc = new Map([
|
|
1364
|
+
['OFF', () => true],
|
|
1365
|
+
['Horizontal', () => addX(`mainSprite`, `shaking`, (Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) - 25) / 1)],
|
|
1366
|
+
['Vertical', () => addY(`mainSprite`, `shaking`, (Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) - 25) / 2)],
|
|
1367
|
+
['Drunk', () => {
|
|
1368
|
+
if (g_posXs.mainSprite.get(`shaking`) === 0 && g_posYs.mainSprite.get(`shaking`) === 0) {
|
|
1369
|
+
g_workObj.drunkXFlg = Math.random() < 0.5;
|
|
1370
|
+
g_workObj.drunkYFlg = Math.random() < 0.5;
|
|
1332
1371
|
}
|
|
1333
1372
|
if (g_workObj.drunkXFlg) {
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1373
|
+
const deltaX = (Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) - 25) / 1;
|
|
1374
|
+
addX(`mainSprite`, `shaking`, deltaX);
|
|
1375
|
+
addX(`infoSprite`, `shaking`, deltaX);
|
|
1376
|
+
addX(`judgeSprite`, `shaking`, deltaX);
|
|
1337
1377
|
}
|
|
1338
1378
|
if (g_workObj.drunkYFlg) {
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1379
|
+
const deltaY = (Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) - 25) / 2;
|
|
1380
|
+
addY(`mainSprite`, `shaking`, deltaY);
|
|
1381
|
+
addY(`infoSprite`, `shaking`, deltaY);
|
|
1382
|
+
addY(`judgeSprite`, `shaking`, deltaY);
|
|
1342
1383
|
}
|
|
1343
|
-
},
|
|
1384
|
+
}],
|
|
1385
|
+
]);
|
|
1386
|
+
|
|
1387
|
+
/**
|
|
1388
|
+
* ランダムな軸を返す補助関数
|
|
1389
|
+
* @returns {string} 軸
|
|
1390
|
+
*/
|
|
1391
|
+
const g_getRandomAxis = () => {
|
|
1392
|
+
const axes = [`X`, `Y`, `Z`];
|
|
1393
|
+
return axes[Math.floor(Math.random() * axes.length)];
|
|
1394
|
+
};
|
|
1395
|
+
|
|
1396
|
+
/**
|
|
1397
|
+
* 最初に選んだ軸を除く、次の軸を返す補助関数
|
|
1398
|
+
* @param {string} _primaryAxis
|
|
1399
|
+
* @returns {string} 軸
|
|
1400
|
+
*/
|
|
1401
|
+
const g_getSecondaryAxis = (_primaryAxis) => {
|
|
1402
|
+
const remainingAxes = [`X`, `Y`, `Z`, undefined].filter(val => val !== _primaryAxis);
|
|
1403
|
+
return remainingAxes[Math.floor(Math.random() * remainingAxes.length)];
|
|
1344
1404
|
};
|
|
1345
1405
|
|
|
1346
1406
|
/**
|
|
1347
1407
|
* FrzReturn適用関数
|
|
1348
1408
|
*/
|
|
1349
|
-
const g_frzReturnFunc =
|
|
1350
|
-
'OFF'
|
|
1351
|
-
'X-Axis'
|
|
1352
|
-
'Y-Axis'
|
|
1353
|
-
'Z-Axis'
|
|
1354
|
-
'Random'
|
|
1355
|
-
'XY-Axis'
|
|
1356
|
-
'XZ-Axis'
|
|
1357
|
-
'YZ-Axis'
|
|
1358
|
-
'Random+'
|
|
1359
|
-
const axis1 =
|
|
1360
|
-
const axis2 =
|
|
1409
|
+
const g_frzReturnFunc = new Map([
|
|
1410
|
+
['OFF', () => true],
|
|
1411
|
+
['X-Axis', () => [`X`]],
|
|
1412
|
+
['Y-Axis', () => [`Y`]],
|
|
1413
|
+
['Z-Axis', () => [`Z`]],
|
|
1414
|
+
['Random', () => g_getRandomAxis()],
|
|
1415
|
+
['XY-Axis', () => [`X`, `Y`]],
|
|
1416
|
+
['XZ-Axis', () => [`X`, `Z`]],
|
|
1417
|
+
['YZ-Axis', () => [`Y`, `Z`]],
|
|
1418
|
+
['Random+', () => {
|
|
1419
|
+
const axis1 = g_getRandomAxis();
|
|
1420
|
+
const axis2 = g_getSecondaryAxis(axis1);
|
|
1361
1421
|
return [axis1, axis2];
|
|
1362
|
-
},
|
|
1363
|
-
|
|
1422
|
+
}],
|
|
1423
|
+
]);
|
|
1364
1424
|
|
|
1365
1425
|
/**
|
|
1366
1426
|
* Effect適用関数
|
|
@@ -1380,15 +1440,15 @@ const g_setEffect = (_arrowEffect, _frzEffect = ``, _frzArrowEffect = _arrowEffe
|
|
|
1380
1440
|
}
|
|
1381
1441
|
}
|
|
1382
1442
|
};
|
|
1383
|
-
const g_effectFunc =
|
|
1384
|
-
'OFF'
|
|
1385
|
-
'Dizzy'
|
|
1386
|
-
'Spin'
|
|
1387
|
-
'Wave'
|
|
1388
|
-
'Storm'
|
|
1389
|
-
'Blinking'
|
|
1390
|
-
'Squids'
|
|
1391
|
-
|
|
1443
|
+
const g_effectFunc = new Map([
|
|
1444
|
+
['OFF', () => true],
|
|
1445
|
+
['Dizzy', () => g_setEffect(`effects-dizzy`)],
|
|
1446
|
+
['Spin', () => g_setEffect(`effects-spin`)],
|
|
1447
|
+
['Wave', () => g_setEffect(`effects-wave`, `effects-wave`)],
|
|
1448
|
+
['Storm', () => g_setEffect(`effects-storm`, `effects-storm`, ``)],
|
|
1449
|
+
['Blinking', () => g_setEffect(`effects-blinking`, `effects-blinking`, ``)],
|
|
1450
|
+
['Squids', () => g_setEffect(`effects-squids-arrow`, `effects-squids-frz`)],
|
|
1451
|
+
]);
|
|
1392
1452
|
|
|
1393
1453
|
const g_keycons = {
|
|
1394
1454
|
configTypes: [`Main`, `Replaced`, `ALL`],
|
|
@@ -1435,12 +1495,12 @@ let g_canDisabledSettings = [`motion`, `scroll`, `reverse`, `shuffle`, `autoPlay
|
|
|
1435
1495
|
`excessive`, `appearance`, `playWindow`, `stepArea`, `frzReturn`, `shaking`, `effect`, `camoufrage`,
|
|
1436
1496
|
`swapping`, `judgRange`, `autoRetry`];
|
|
1437
1497
|
|
|
1438
|
-
const g_hidSudFunc =
|
|
1439
|
-
filterPos
|
|
1440
|
-
range
|
|
1441
|
-
hidden
|
|
1442
|
-
sudden
|
|
1443
|
-
|
|
1498
|
+
const g_hidSudFunc = new Map([
|
|
1499
|
+
['filterPos', _filterPos => `${_filterPos}${g_lblNameObj.percent}`],
|
|
1500
|
+
['range', () => `${Math.round(g_posObj.arrowHeight - g_posObj.stepY)}px`],
|
|
1501
|
+
['hidden', _filterPos => `${Math.min(Math.round(g_posObj.arrowHeight * (100 - _filterPos) / 100), g_posObj.arrowHeight - g_posObj.stepY)}`],
|
|
1502
|
+
['sudden', _filterPos => `${Math.max(Math.round(g_posObj.arrowHeight * (100 - _filterPos) / 100) - g_posObj.stepY, 0)}`],
|
|
1503
|
+
]);
|
|
1444
1504
|
|
|
1445
1505
|
const g_hidSudObj = {
|
|
1446
1506
|
filterPos: 10,
|
|
@@ -1474,12 +1534,12 @@ const g_hidSudObj = {
|
|
|
1474
1534
|
},
|
|
1475
1535
|
distH: {
|
|
1476
1536
|
'Visible': () => ``,
|
|
1477
|
-
'Hidden': () => `${g_hidSudFunc.filterPos(50)} (${g_hidSudFunc.hidden(50)} / ${g_hidSudFunc.range()})`,
|
|
1478
|
-
'Hidden+': (_filterPos) => `${g_hidSudFunc.filterPos(_filterPos)} (${g_hidSudFunc.hidden(_filterPos)} / ${g_hidSudFunc.range()})`,
|
|
1479
|
-
'Sudden': () => `${g_hidSudFunc.filterPos(40)} (${g_hidSudFunc.sudden(40)} / ${g_hidSudFunc.range()})`,
|
|
1480
|
-
'Sudden+': (_filterPos) => `${g_hidSudFunc.filterPos(_filterPos)} (${g_hidSudFunc.sudden(_filterPos)} / ${g_hidSudFunc.range()})`,
|
|
1481
|
-
'Hid&Sud+': (_filterPos) => `${g_hidSudFunc.filterPos(_filterPos)} (${Math.max(g_hidSudFunc.sudden(_filterPos)
|
|
1482
|
-
- (g_posObj.arrowHeight - g_posObj.stepY - g_hidSudFunc.hidden(_filterPos)), 0)} / ${g_hidSudFunc.range()})`,
|
|
1537
|
+
'Hidden': () => `${g_hidSudFunc.get(`filterPos`)(50)} (${g_hidSudFunc.get(`hidden`)(50)} / ${g_hidSudFunc.get(`range`)()})`,
|
|
1538
|
+
'Hidden+': (_filterPos) => `${g_hidSudFunc.get(`filterPos`)(_filterPos)} (${g_hidSudFunc.get(`hidden`)(_filterPos)} / ${g_hidSudFunc.get(`range`)()})`,
|
|
1539
|
+
'Sudden': () => `${g_hidSudFunc.get(`filterPos`)(40)} (${g_hidSudFunc.get(`sudden`)(40)} / ${g_hidSudFunc.get(`range`)()})`,
|
|
1540
|
+
'Sudden+': (_filterPos) => `${g_hidSudFunc.get(`filterPos`)(_filterPos)} (${g_hidSudFunc.get(`sudden`)(_filterPos)} / ${g_hidSudFunc.get(`range`)()})`,
|
|
1541
|
+
'Hid&Sud+': (_filterPos) => `${g_hidSudFunc.get(`filterPos`)(_filterPos)} (${Math.max(g_hidSudFunc.get(`sudden`)(_filterPos)
|
|
1542
|
+
- (g_posObj.arrowHeight - g_posObj.stepY - g_hidSudFunc.get(`hidden`)(_filterPos)), 0)} / ${g_hidSudFunc.get(`range`)()})`,
|
|
1483
1543
|
},
|
|
1484
1544
|
};
|
|
1485
1545
|
|