danoniplus 39.2.0 → 39.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/js/danoni_main.js +77 -42
- package/js/lib/danoni_constants.js +244 -109
- 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/09
|
|
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.0`;
|
|
12
|
+
const g_revisedDate = `2025/02/10`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -1538,6 +1538,7 @@ const makeBgCanvas = (_ctx, { w = g_sWidth, h = g_sHeight } = {}) => {
|
|
|
1538
1538
|
const clearWindow = (_redrawFlg = false, _customDisplayName = ``) => {
|
|
1539
1539
|
resetKeyControl();
|
|
1540
1540
|
resetTransform();
|
|
1541
|
+
resetXY();
|
|
1541
1542
|
|
|
1542
1543
|
// ボタン、オブジェクトをクリア (divRoot配下のもの)
|
|
1543
1544
|
deleteChildspriteAll(`divRoot`);
|
|
@@ -7985,7 +7986,7 @@ const loadingScoreInit = async () => {
|
|
|
7985
7986
|
g_workObj.shuffleGroupMap[_val]?.push(_i) || (g_workObj.shuffleGroupMap[_val] = [_i]));
|
|
7986
7987
|
|
|
7987
7988
|
// Mirror,Random,S-Randomの適用
|
|
7988
|
-
g_shuffleFunc
|
|
7989
|
+
g_shuffleFunc.get(g_stateObj.shuffle)(keyNum, Object.values(g_workObj.shuffleGroupMap));
|
|
7989
7990
|
|
|
7990
7991
|
// アシスト用の配列があれば、ダミーデータで上書き
|
|
7991
7992
|
if (typeof g_keyObj[`assistPos${keyCtrlPtn}`] === C_TYP_OBJECT &&
|
|
@@ -8920,7 +8921,7 @@ const setSpeedOnFrame = (_speedData, _lastFrame) => {
|
|
|
8920
8921
|
* Motionオプション適用時の矢印別の速度設定
|
|
8921
8922
|
* - 矢印が表示される最大フレーム数を 縦ピクセル数×20 と定義。
|
|
8922
8923
|
*/
|
|
8923
|
-
const setMotionOnFrame = () => g_motionFunc
|
|
8924
|
+
const setMotionOnFrame = () => g_motionFunc.get(g_stateObj.motion)(fillArray(g_headerObj.playingHeight * 20 + 1));
|
|
8924
8925
|
|
|
8925
8926
|
/**
|
|
8926
8927
|
* Boost用の適用関数
|
|
@@ -9624,6 +9625,7 @@ const getArrowSettings = () => {
|
|
|
9624
9625
|
g_workObj.keyCtrl = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}`]);
|
|
9625
9626
|
g_workObj.diffList = [];
|
|
9626
9627
|
g_workObj.mainEndTime = 0;
|
|
9628
|
+
g_stateObj.layerNum = 2;
|
|
9627
9629
|
|
|
9628
9630
|
g_workObj.keyGroupMaps = tkObj.keyGroupMaps;
|
|
9629
9631
|
g_workObj.keyGroupList = tkObj.keyGroupList;
|
|
@@ -9672,9 +9674,6 @@ const getArrowSettings = () => {
|
|
|
9672
9674
|
g_workObj.stepX[j] = g_keyObj.blank * stdPos + (g_headerObj.playingWidth - C_ARW_WIDTH) / 2;
|
|
9673
9675
|
const baseLayer = g_keyObj[`layerGroup${keyCtrlPtn}`]?.[j] || 0;
|
|
9674
9676
|
g_workObj.dividePos[j] = baseLayer * 2 + ((posj <= divideCnt ? 0 : 1) + (scrollDirOptions[j] === 1 ? 0 : 1) + (g_stateObj.reverse === C_FLG_OFF ? 0 : 1)) % 2;
|
|
9675
|
-
if (g_stateObj.stepArea === `X-Flower`) {
|
|
9676
|
-
g_workObj.dividePos[j] = (g_workObj.stepX[j] < (g_headerObj.playingWidth - C_ARW_WIDTH) / 2 ? 0 : 1) * 2 + g_workObj.dividePos[j] % 2;
|
|
9677
|
-
}
|
|
9678
9677
|
g_workObj.scrollDir[j] = (posj <= divideCnt ? 1 : -1) * scrollDirOptions[j] * (g_stateObj.reverse === C_FLG_OFF ? 1 : -1);
|
|
9679
9678
|
|
|
9680
9679
|
eachOrAll.forEach(type => {
|
|
@@ -9692,6 +9691,24 @@ const getArrowSettings = () => {
|
|
|
9692
9691
|
g_workObj[`frzHitShadowColors${type}`][j] = g_headerObj.frzShadowColor[colorj][1] || ``;
|
|
9693
9692
|
});
|
|
9694
9693
|
}
|
|
9694
|
+
g_workObj.orgFlatFlg = g_workObj.dividePos.every(v => v === g_workObj.dividePos[0]);
|
|
9695
|
+
if (g_stateObj.stepArea === `X-Flower` || (g_stateObj.stepArea.includes(`Mismatched`) && g_workObj.orgFlatFlg)) {
|
|
9696
|
+
for (let j = 0; j < keyNum; j++) {
|
|
9697
|
+
g_workObj.dividePos[j] = (g_workObj.stepX[j] < (g_headerObj.playingWidth - C_ARW_WIDTH) / 2 ? 0 : 1) * 2 + g_workObj.dividePos[j] % 2;
|
|
9698
|
+
}
|
|
9699
|
+
}
|
|
9700
|
+
if (g_stateObj.stepArea === `2Step`) {
|
|
9701
|
+
for (let j = 0; j < keyNum; j++) {
|
|
9702
|
+
if (g_workObj.orgFlatFlg && g_workObj.stepX[j] >= (g_headerObj.playingWidth - C_ARW_WIDTH) / 2) {
|
|
9703
|
+
g_workObj.dividePos[j] = Math.floor(g_workObj.dividePos[j] / 2) * 2 + (g_workObj.dividePos[j] + 1) % 2;
|
|
9704
|
+
g_workObj.scrollDir[j] *= -1;
|
|
9705
|
+
}
|
|
9706
|
+
if (g_workObj.dividePos[j] % 2 === (Number(g_stateObj.reverse === C_FLG_ON) + 1) % 2) {
|
|
9707
|
+
g_workObj.dividePos[j] = g_stateObj.layerNum + g_workObj.dividePos[j] + Number(g_stateObj.reverse === C_FLG_ON ? 1 : -1);
|
|
9708
|
+
g_workObj.scrollDir[j] *= -1;
|
|
9709
|
+
}
|
|
9710
|
+
}
|
|
9711
|
+
}
|
|
9695
9712
|
g_workObj.scrollDirDefault = g_workObj.scrollDir.concat();
|
|
9696
9713
|
g_workObj.dividePosDefault = g_workObj.dividePos.concat();
|
|
9697
9714
|
g_stateObj.layerNum = Math.max(g_stateObj.layerNum, Math.ceil((Math.max(...g_workObj.dividePos) + 1) / 2) * 2);
|
|
@@ -9931,27 +9948,31 @@ const mainInit = () => {
|
|
|
9931
9948
|
g_workObj.fadeOutNo = fillArray(wordMaxLen);
|
|
9932
9949
|
g_workObj.lastFadeFrame = fillArray(wordMaxLen);
|
|
9933
9950
|
g_workObj.wordFadeFrame = fillArray(wordMaxLen);
|
|
9951
|
+
const mainCommonPos = { w: g_headerObj.playingWidth, h: g_posObj.arrowHeight };
|
|
9934
9952
|
|
|
9935
9953
|
// 背景スプライトを作成
|
|
9936
|
-
createMultipleSprite(`backSprite`, g_scoreObj.backMaxDepth
|
|
9954
|
+
createMultipleSprite(`backSprite`, g_scoreObj.backMaxDepth);
|
|
9955
|
+
addX(`backSprite`, `root`, g_workObj.backX);
|
|
9937
9956
|
|
|
9938
9957
|
// ステップゾーン、矢印のメインスプライトを作成
|
|
9939
|
-
const mainSprite = createEmptySprite(divRoot, `mainSprite`,
|
|
9940
|
-
x: g_workObj.playingX, y: g_posObj.stepY - C_STEP_Y + g_headerObj.playingY, w: g_headerObj.playingWidth, h: g_headerObj.playingHeight,
|
|
9941
|
-
});
|
|
9958
|
+
const mainSprite = createEmptySprite(divRoot, `mainSprite`, mainCommonPos);
|
|
9942
9959
|
addTransform(`mainSprite`, `root`, `scale(${g_keyObj.scale})`);
|
|
9960
|
+
addXY(`mainSprite`, `root`, g_workObj.playingX, g_posObj.stepY - C_STEP_Y + g_headerObj.playingY);
|
|
9943
9961
|
|
|
9944
9962
|
// 曲情報・判定カウント用スプライトを作成(メインスプライトより上位)
|
|
9945
|
-
const infoSprite = createEmptySprite(divRoot, `infoSprite`,
|
|
9963
|
+
const infoSprite = createEmptySprite(divRoot, `infoSprite`, mainCommonPos);
|
|
9964
|
+
addXY(`infoSprite`, `root`, g_workObj.playingX, g_headerObj.playingY);
|
|
9946
9965
|
|
|
9947
9966
|
// 判定系スプライトを作成(メインスプライトより上位)
|
|
9948
|
-
const judgeSprite = createEmptySprite(divRoot, `judgeSprite`,
|
|
9967
|
+
const judgeSprite = createEmptySprite(divRoot, `judgeSprite`, mainCommonPos);
|
|
9968
|
+
addXY(`judgeSprite`, `root`, g_workObj.playingX, g_headerObj.playingY);
|
|
9949
9969
|
|
|
9950
9970
|
const tkObj = getKeyInfo();
|
|
9951
9971
|
const [keyCtrlPtn, keyNum] = [tkObj.keyCtrlPtn, tkObj.keyNum];
|
|
9952
9972
|
|
|
9953
9973
|
// マスクスプライトを作成 (最上位)
|
|
9954
|
-
createMultipleSprite(`maskSprite`, g_scoreObj.maskMaxDepth
|
|
9974
|
+
createMultipleSprite(`maskSprite`, g_scoreObj.maskMaxDepth);
|
|
9975
|
+
addX(`maskSprite`, `root`, g_workObj.backX);
|
|
9955
9976
|
|
|
9956
9977
|
// カラー・モーションを適用するオブジェクトの種類
|
|
9957
9978
|
const objList = (g_stateObj.dummyId === `` ? [``] : [`dummy`, ``]);
|
|
@@ -9982,7 +10003,6 @@ const mainInit = () => {
|
|
|
9982
10003
|
|
|
9983
10004
|
// mainSprite配下に層別のスプライトを作成し、ステップゾーン・矢印本体・フリーズアローヒット部分に分ける
|
|
9984
10005
|
const mainSpriteN = [], stepSprite = [], arrowSprite = [], frzHitSprite = [];
|
|
9985
|
-
const mainCommonPos = { w: g_headerObj.playingWidth, h: g_posObj.arrowHeight };
|
|
9986
10006
|
|
|
9987
10007
|
// Hidden+, Sudden+用のライン、パーセント表示
|
|
9988
10008
|
const filterCss = g_stateObj.filterLock === C_FLG_OFF ? g_cssObj.life_Failed : g_cssObj.life_Cleared;
|
|
@@ -10045,12 +10065,23 @@ const mainInit = () => {
|
|
|
10045
10065
|
}
|
|
10046
10066
|
|
|
10047
10067
|
// StepArea処理
|
|
10048
|
-
g_stepAreaFunc
|
|
10068
|
+
g_stepAreaFunc.get(g_stateObj.stepArea)();
|
|
10069
|
+
|
|
10070
|
+
// mainSpriteのtransform追加処理
|
|
10071
|
+
addTransform(`mainSprite`, `playWindow`, g_playWindowFunc.get(g_stateObj.playWindow)());
|
|
10072
|
+
|
|
10073
|
+
// EffectのArrowEffect追加処理
|
|
10074
|
+
g_effectFunc.get(g_stateObj.effect)();
|
|
10049
10075
|
|
|
10050
10076
|
// Appearanceのオプション適用時は一部描画を隠す
|
|
10051
10077
|
changeAppearanceFilter(g_appearanceRanges.includes(g_stateObj.appearance) ?
|
|
10052
10078
|
g_hidSudObj.filterPos : g_hidSudObj.filterPosDefault[g_stateObj.appearance], true);
|
|
10053
10079
|
|
|
10080
|
+
// Shaking初期化
|
|
10081
|
+
if (g_stateObj.shaking !== C_FLG_OFF) {
|
|
10082
|
+
addXY(`mainSprite`, `shaking`, 0, 0);
|
|
10083
|
+
}
|
|
10084
|
+
|
|
10054
10085
|
// 現在の矢印・フリーズアローの速度、個別加算速度の初期化 (速度変化時に直す)
|
|
10055
10086
|
g_workObj.currentSpeed = 2;
|
|
10056
10087
|
g_workObj.boostSpd = 1;
|
|
@@ -10309,12 +10340,6 @@ const mainInit = () => {
|
|
|
10309
10340
|
// ユーザカスタムイベント(初期)
|
|
10310
10341
|
g_customJsObj.main.forEach(func => func());
|
|
10311
10342
|
|
|
10312
|
-
// mainSpriteのtransform追加処理
|
|
10313
|
-
addTransform(`mainSprite`, `playWindow`, g_playWindowFunc[g_stateObj.playWindow]());
|
|
10314
|
-
|
|
10315
|
-
// EffectのArrowEffect追加処理
|
|
10316
|
-
g_effectFunc[g_stateObj.effect]();
|
|
10317
|
-
|
|
10318
10343
|
/**
|
|
10319
10344
|
* キーを押したときの処理
|
|
10320
10345
|
*/
|
|
@@ -11038,7 +11063,7 @@ const mainInit = () => {
|
|
|
11038
11063
|
}
|
|
11039
11064
|
|
|
11040
11065
|
// 画面揺れの設定
|
|
11041
|
-
g_shakingFunc
|
|
11066
|
+
g_shakingFunc.get(g_stateObj.shaking)();
|
|
11042
11067
|
|
|
11043
11068
|
// ユーザカスタムイベント(フレーム毎)
|
|
11044
11069
|
g_customJsObj.mainEnterFrame.forEach(func => func());
|
|
@@ -11339,30 +11364,36 @@ const changeAppearanceFilter = (_num = 10, _shiftFlg = keyIsShift()) => {
|
|
|
11339
11364
|
_num = MAX_FILTER_POS / 2;
|
|
11340
11365
|
}
|
|
11341
11366
|
|
|
11367
|
+
// アルファマスクの位置設定
|
|
11342
11368
|
const numPlus = (g_stateObj.appearance === `Hid&Sud+` ? _num : 0);
|
|
11343
11369
|
const topShape = `inset(${_num}% 0% ${numPlus}% 0%)`;
|
|
11344
11370
|
const bottomShape = `inset(${numPlus}% 0% ${_num}% 0%)`;
|
|
11371
|
+
|
|
11372
|
+
// フィルターバーの位置設定
|
|
11345
11373
|
const appearPers = [_num, MAX_FILTER_POS - _num];
|
|
11374
|
+
const topDist = g_posObj.arrowHeight * appearPers[topNum] / MAX_FILTER_POS;
|
|
11375
|
+
const bottomDist = g_posObj.arrowHeight * appearPers[bottomNum] / MAX_FILTER_POS;
|
|
11346
11376
|
|
|
11347
11377
|
for (let j = 0; j < g_stateObj.layerNum; j += 2) {
|
|
11348
11378
|
$id(`arrowSprite${topNum + j}`).clipPath = topShape;
|
|
11349
11379
|
$id(`arrowSprite${bottomNum + j}`).clipPath = bottomShape;
|
|
11350
11380
|
|
|
11351
|
-
$id(`filterBar${topNum + j}`).top = wUnit(parseFloat($id(`arrowSprite${j}`).top) +
|
|
11352
|
-
$id(`filterBar${bottomNum + j}`).top = wUnit(parseFloat($id(`arrowSprite${j + 1}`).top) +
|
|
11381
|
+
$id(`filterBar${topNum + j}`).top = wUnit(parseFloat($id(`arrowSprite${j}`).top) + topDist);
|
|
11382
|
+
$id(`filterBar${bottomNum + j}`).top = wUnit(parseFloat($id(`arrowSprite${j + 1}`).top) + bottomDist);
|
|
11353
11383
|
|
|
11354
11384
|
if (![`Default`, `Halfway`].includes(g_stateObj.stepArea)) {
|
|
11355
|
-
$id(`filterBar${bottomNum + j}_HS`).top = wUnit(parseFloat($id(`arrowSprite${j}`).top) +
|
|
11356
|
-
$id(`filterBar${topNum + j}_HS`).top = wUnit(parseFloat($id(`arrowSprite${j + 1}`).top) +
|
|
11385
|
+
$id(`filterBar${bottomNum + j}_HS`).top = wUnit(parseFloat($id(`arrowSprite${j}`).top) + bottomDist);
|
|
11386
|
+
$id(`filterBar${topNum + j}_HS`).top = wUnit(parseFloat($id(`arrowSprite${j + 1}`).top) + topDist);
|
|
11357
11387
|
}
|
|
11358
11388
|
|
|
11359
11389
|
// 階層が多い場合はShift+pgUp/pgDownで表示する階層グループを切り替え
|
|
11360
11390
|
if (_shiftFlg && g_stateObj.d_filterline === C_FLG_ON) {
|
|
11361
11391
|
[`${topNum + j}`, `${bottomNum + j}`].forEach(type => {
|
|
11362
|
-
|
|
11392
|
+
const displayState = (j === g_workObj.aprFilterCnt ? C_DIS_INHERIT : C_DIS_NONE);
|
|
11393
|
+
$id(`filterBar${type}`).display = displayState;
|
|
11363
11394
|
|
|
11364
11395
|
if (![`Default`, `Halfway`].includes(g_stateObj.stepArea)) {
|
|
11365
|
-
$id(`filterBar${type}_HS`).display =
|
|
11396
|
+
$id(`filterBar${type}_HS`).display = displayState;
|
|
11366
11397
|
}
|
|
11367
11398
|
});
|
|
11368
11399
|
}
|
|
@@ -11377,6 +11408,7 @@ const changeAppearanceFilter = (_num = 10, _shiftFlg = keyIsShift()) => {
|
|
|
11377
11408
|
$id(`filterBar${(g_hidSudObj.std[g_stateObj.appearance][g_stateObj.reverse]) % 2}`).top;
|
|
11378
11409
|
filterView.textContent = `${_num}%`;
|
|
11379
11410
|
|
|
11411
|
+
// スクロールが1種類でHidden+/Sudden+の場合、対面のフィルターバーは不要なため非表示にする
|
|
11380
11412
|
if (g_stateObj.appearance !== `Hid&Sud+` && g_workObj.dividePos.every(v => v === g_workObj.dividePos[0])) {
|
|
11381
11413
|
$id(`filterBar${(g_hidSudObj.std[g_stateObj.appearance][g_stateObj.reverse] + 1) % 2}`).display = C_DIS_NONE;
|
|
11382
11414
|
}
|
|
@@ -11453,10 +11485,14 @@ const changeReturn = (_rad, _axis) => {
|
|
|
11453
11485
|
|
|
11454
11486
|
/**
|
|
11455
11487
|
* AutoRetryの設定
|
|
11456
|
-
* @param {
|
|
11488
|
+
* @param {string} _retryCondition リトライ基準となるAutoRetry名
|
|
11457
11489
|
*/
|
|
11458
|
-
const quickRetry = (
|
|
11459
|
-
|
|
11490
|
+
const quickRetry = (_retryCondition) => {
|
|
11491
|
+
const retryNum = g_settings.autoRetrys.findIndex(val => val === _retryCondition);
|
|
11492
|
+
if (retryNum < 0) {
|
|
11493
|
+
return;
|
|
11494
|
+
}
|
|
11495
|
+
if (g_settings.autoRetryNum >= retryNum && !g_workObj.autoRetryFlg) {
|
|
11460
11496
|
g_workObj.autoRetryFlg = true;
|
|
11461
11497
|
setTimeout(() => {
|
|
11462
11498
|
g_audio.pause();
|
|
@@ -11561,7 +11597,6 @@ const changeHitFrz = (_j, _k, _name, _difFrame = 0) => {
|
|
|
11561
11597
|
const styfrzBtmRoot = $id(`${_name}BtmRoot${frzNo}`);
|
|
11562
11598
|
const styfrzBtm = $id(`${_name}Btm${frzNo}`);
|
|
11563
11599
|
const styfrzTopRoot = $id(`${_name}TopRoot${frzNo}`);
|
|
11564
|
-
const styfrzTop = $id(`${_name}Top${frzNo}`);
|
|
11565
11600
|
const styfrzBtmShadow = $id(`${_name}BtmShadow${frzNo}`);
|
|
11566
11601
|
|
|
11567
11602
|
// フリーズアロー位置の修正(ステップゾーン上に来るように)
|
|
@@ -11612,7 +11647,7 @@ const changeHitFrz = (_j, _k, _name, _difFrame = 0) => {
|
|
|
11612
11647
|
// FrzReturnの設定
|
|
11613
11648
|
if (g_stateObj.frzReturn !== C_FLG_OFF) {
|
|
11614
11649
|
if (!g_workObj.frzReturnFlg) {
|
|
11615
|
-
changeReturn(4, g_frzReturnFunc
|
|
11650
|
+
changeReturn(4, g_frzReturnFunc.get(g_stateObj.frzReturn)());
|
|
11616
11651
|
}
|
|
11617
11652
|
}
|
|
11618
11653
|
g_customJsObj[`judg_${_name}Hit`].forEach(func => func(_difFrame));
|
|
@@ -11637,7 +11672,7 @@ const changeFailedFrz = (_j, _k) => {
|
|
|
11637
11672
|
// FrzReturnの設定
|
|
11638
11673
|
if (g_stateObj.frzReturn !== C_FLG_OFF) {
|
|
11639
11674
|
if (!g_workObj.frzReturnFlg) {
|
|
11640
|
-
changeReturn(4, g_frzReturnFunc
|
|
11675
|
+
changeReturn(4, g_frzReturnFunc.get(g_stateObj.frzReturn)());
|
|
11641
11676
|
}
|
|
11642
11677
|
}
|
|
11643
11678
|
};
|
|
@@ -11759,11 +11794,11 @@ const displayDiff = (_difFrame, _fjdg = ``, _justFrames = g_headerObj.justFrames
|
|
|
11759
11794
|
} else if (_difFrame > _justFrames) {
|
|
11760
11795
|
diffJDisp = `<span class="common_diffFast">Fast ${difCnt} Frames</span>`;
|
|
11761
11796
|
g_resultObj.fast++;
|
|
11762
|
-
quickRetry(
|
|
11797
|
+
quickRetry(`Fast/Slow`);
|
|
11763
11798
|
} else if (_difFrame < _justFrames * (-1)) {
|
|
11764
11799
|
diffJDisp = `<span class="common_diffSlow">Slow ${difCnt} Frames</span>`;
|
|
11765
11800
|
g_resultObj.slow++;
|
|
11766
|
-
quickRetry(
|
|
11801
|
+
quickRetry(`Fast/Slow`);
|
|
11767
11802
|
}
|
|
11768
11803
|
document.getElementById(`diff${_fjdg}J`).innerHTML = diffJDisp;
|
|
11769
11804
|
};
|
|
@@ -11809,7 +11844,7 @@ const lifeRecovery = () => {
|
|
|
11809
11844
|
*/
|
|
11810
11845
|
const lifeDamage = (_excessive = false) => {
|
|
11811
11846
|
g_workObj.lifeVal -= g_workObj.lifeDmg * (_excessive ? 0.25 : 1);
|
|
11812
|
-
quickRetry(
|
|
11847
|
+
quickRetry(`Miss`);
|
|
11813
11848
|
|
|
11814
11849
|
if (g_workObj.lifeVal <= 0) {
|
|
11815
11850
|
g_workObj.lifeVal = 0;
|
|
@@ -11857,11 +11892,11 @@ const judgeRecovery = (_name, _difFrame) => {
|
|
|
11857
11892
|
|
|
11858
11893
|
if (g_stateObj.freezeReturn !== C_FLG_OFF) {
|
|
11859
11894
|
if ((g_resultObj.ii + g_resultObj.shakin) % 100 === 0 && !g_workObj.frzReturnFlg) {
|
|
11860
|
-
changeReturn(1, g_frzReturnFunc
|
|
11895
|
+
changeReturn(1, g_frzReturnFunc.get(g_stateObj.frzReturn)());
|
|
11861
11896
|
}
|
|
11862
11897
|
}
|
|
11863
11898
|
if (_name === `shakin`) {
|
|
11864
|
-
quickRetry(
|
|
11899
|
+
quickRetry(`Shakin(Great)`);
|
|
11865
11900
|
}
|
|
11866
11901
|
g_customJsObj[`judg_${_name}`].forEach(func => func(_difFrame));
|
|
11867
11902
|
};
|
|
@@ -11900,7 +11935,7 @@ const judgeMatari = _difFrame => {
|
|
|
11900
11935
|
changeJudgeCharacter(`matari`, g_lblNameObj.j_matari);
|
|
11901
11936
|
comboJ.textContent = ``;
|
|
11902
11937
|
finishViewing();
|
|
11903
|
-
quickRetry(
|
|
11938
|
+
quickRetry(`Matari(Good)`);
|
|
11904
11939
|
|
|
11905
11940
|
g_customJsObj.judg_matari.forEach(func => func(_difFrame));
|
|
11906
11941
|
};
|
|
@@ -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/10 (v39.4.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -1068,7 +1068,7 @@ const g_settings = {
|
|
|
1068
1068
|
playWindows: [`Default`, `Stairs`, `R-Stairs`, `Slope`, `R-Slope`, `Distorted`, `R-Distorted`, `SideScroll`, `R-SideScroll`],
|
|
1069
1069
|
playWindowNum: 0,
|
|
1070
1070
|
|
|
1071
|
-
stepAreas: [`Default`, `Halfway`, `Mismatched`, `R-Mismatched`, `X-Flower`],
|
|
1071
|
+
stepAreas: [`Default`, `Halfway`, `2Step`, `Mismatched`, `R-Mismatched`, `X-Flower`],
|
|
1072
1072
|
stepAreaNum: 0,
|
|
1073
1073
|
|
|
1074
1074
|
frzReturns: [C_FLG_OFF, `X-Axis`, `Y-Axis`, `Z-Axis`, `Random`, `XY-Axis`, `XZ-Axis`, `YZ-Axis`, `Random+`],
|
|
@@ -1110,9 +1110,11 @@ const g_moveSettingWindow = (_changePageFlg = true, _direction = 1) => {
|
|
|
1110
1110
|
};
|
|
1111
1111
|
|
|
1112
1112
|
/**
|
|
1113
|
-
* transform
|
|
1113
|
+
* transform, 座標管理
|
|
1114
1114
|
*/
|
|
1115
1115
|
const g_transforms = {};
|
|
1116
|
+
const g_posXs = {};
|
|
1117
|
+
const g_posYs = {};
|
|
1116
1118
|
|
|
1117
1119
|
/**
|
|
1118
1120
|
* idごとのtransformを追加・変更
|
|
@@ -1123,12 +1125,10 @@ const g_transforms = {};
|
|
|
1123
1125
|
*/
|
|
1124
1126
|
const addTransform = (_id, _transformId, _transform) => {
|
|
1125
1127
|
if (g_transforms[_id] === undefined) {
|
|
1126
|
-
g_transforms[_id] =
|
|
1128
|
+
g_transforms[_id] = new Map();
|
|
1127
1129
|
}
|
|
1128
|
-
g_transforms[_id]
|
|
1129
|
-
|
|
1130
|
-
Object.keys(g_transforms[_id]).forEach(transformId => _transforms.push(g_transforms[_id][transformId]));
|
|
1131
|
-
$id(_id).transform = _transforms.join(` `);
|
|
1130
|
+
g_transforms[_id].set(_transformId, _transform);
|
|
1131
|
+
$id(_id).transform = Array.from(g_transforms[_id].values()).join(` `);
|
|
1132
1132
|
};
|
|
1133
1133
|
|
|
1134
1134
|
/**
|
|
@@ -1144,61 +1144,152 @@ const addTempTransform = (_id, _transform) => {
|
|
|
1144
1144
|
* transformの初期化
|
|
1145
1145
|
*/
|
|
1146
1146
|
const resetTransform = () => {
|
|
1147
|
-
Object.keys(g_transforms).forEach(_id => g_transforms[_id]
|
|
1147
|
+
Object.keys(g_transforms).forEach(_id => delete g_transforms[_id]);
|
|
1148
1148
|
};
|
|
1149
1149
|
|
|
1150
1150
|
/**
|
|
1151
1151
|
* id, transformIdに合致するtransform情報の取得
|
|
1152
1152
|
* @param {string} _id
|
|
1153
1153
|
* @param {string} _transformId
|
|
1154
|
-
* @returns
|
|
1154
|
+
* @returns {string}
|
|
1155
1155
|
*/
|
|
1156
1156
|
const getTransform = (_id, _transformId) => {
|
|
1157
1157
|
return g_transforms[_id]?.[_transformId] || ``;
|
|
1158
1158
|
};
|
|
1159
1159
|
|
|
1160
|
+
/**
|
|
1161
|
+
* 座標加算処理 (X座標)
|
|
1162
|
+
* @param {string} _id
|
|
1163
|
+
* @param {string} _typeId
|
|
1164
|
+
* @param {number} [_x=0]
|
|
1165
|
+
* @param {boolean} [_overwrite=false]
|
|
1166
|
+
*/
|
|
1167
|
+
const addX = (_id, _typeId, _x = 0, _overwrite = false) => {
|
|
1168
|
+
if (_overwrite) {
|
|
1169
|
+
delete g_posXs?.[_id];
|
|
1170
|
+
}
|
|
1171
|
+
if (g_posXs[_id] === undefined) {
|
|
1172
|
+
g_posXs[_id] = new Map();
|
|
1173
|
+
}
|
|
1174
|
+
if (g_posXs[_id].get(_typeId) !== _x) {
|
|
1175
|
+
g_posXs[_id].set(_typeId, _x);
|
|
1176
|
+
$id(_id).left = `${sumData(Array.from(g_posXs[_id].values()))}px`;
|
|
1177
|
+
}
|
|
1178
|
+
};
|
|
1179
|
+
|
|
1180
|
+
/**
|
|
1181
|
+
* 座標加算処理 (Y座標)
|
|
1182
|
+
* @param {string} _id
|
|
1183
|
+
* @param {string} _typeId
|
|
1184
|
+
* @param {number} [_y=0]
|
|
1185
|
+
* @param {boolean} [_overwrite=false]
|
|
1186
|
+
*/
|
|
1187
|
+
const addY = (_id, _typeId, _y = 0, _overwrite = false) => {
|
|
1188
|
+
if (_overwrite) {
|
|
1189
|
+
delete g_posYs?.[_id];
|
|
1190
|
+
}
|
|
1191
|
+
if (g_posYs[_id] === undefined) {
|
|
1192
|
+
g_posYs[_id] = new Map();
|
|
1193
|
+
}
|
|
1194
|
+
if (g_posYs[_id].get(_typeId) !== _y) {
|
|
1195
|
+
g_posYs[_id].set(_typeId, _y);
|
|
1196
|
+
$id(_id).top = `${sumData(Array.from(g_posYs[_id].values()))}px`;
|
|
1197
|
+
}
|
|
1198
|
+
};
|
|
1199
|
+
|
|
1200
|
+
/**
|
|
1201
|
+
* 座標リセット処理(X座標)
|
|
1202
|
+
* @param {string} _id
|
|
1203
|
+
* @param {string} _typeId
|
|
1204
|
+
*/
|
|
1205
|
+
const delX = (_id, _typeId) => {
|
|
1206
|
+
g_posXs[_id]?.delete(_typeId);
|
|
1207
|
+
$id(_id).left = `${sumData(Array.from(g_posXs[_id].values()))}px`;
|
|
1208
|
+
};
|
|
1209
|
+
|
|
1210
|
+
/**
|
|
1211
|
+
* 座標リセット処理(Y座標)
|
|
1212
|
+
* @param {string} _id
|
|
1213
|
+
* @param {string} _typeId
|
|
1214
|
+
*/
|
|
1215
|
+
const delY = (_id, _typeId) => {
|
|
1216
|
+
g_posYs[_id]?.delete(_typeId);
|
|
1217
|
+
$id(_id).top = `${sumData(Array.from(g_posYs[_id].values()))}px`;
|
|
1218
|
+
};
|
|
1219
|
+
|
|
1220
|
+
/**
|
|
1221
|
+
* 座標加算処理
|
|
1222
|
+
* @param {string} _id
|
|
1223
|
+
* @param {string} _typeId
|
|
1224
|
+
* @param {number} _x
|
|
1225
|
+
* @param {number} _y
|
|
1226
|
+
* @param {boolean} [_overwrite=false]
|
|
1227
|
+
*/
|
|
1228
|
+
const addXY = (_id, _typeId, _x = 0, _y = 0, _overwrite = false) => {
|
|
1229
|
+
addX(_id, _typeId, _x, _overwrite);
|
|
1230
|
+
addY(_id, _typeId, _y, _overwrite);
|
|
1231
|
+
};
|
|
1232
|
+
|
|
1233
|
+
/**
|
|
1234
|
+
* 座標リセット処理
|
|
1235
|
+
* @param {string} _id
|
|
1236
|
+
* @param {string} _typeId
|
|
1237
|
+
*/
|
|
1238
|
+
const delXY = (_id, _typeId) => {
|
|
1239
|
+
delX(_id, _typeId);
|
|
1240
|
+
delY(_id, _typeId);
|
|
1241
|
+
};
|
|
1242
|
+
|
|
1243
|
+
/**
|
|
1244
|
+
* 座標位置情報の初期化
|
|
1245
|
+
*/
|
|
1246
|
+
const resetXY = () => {
|
|
1247
|
+
Object.keys(g_posXs).forEach(_id => delete g_posXs[_id]);
|
|
1248
|
+
Object.keys(g_posYs).forEach(_id => delete g_posYs[_id]);
|
|
1249
|
+
};
|
|
1250
|
+
|
|
1160
1251
|
/**
|
|
1161
1252
|
* シャッフル適用関数
|
|
1162
1253
|
* @param {number} keyNum
|
|
1163
1254
|
* @param {array} shuffleGroup
|
|
1164
1255
|
*/
|
|
1165
|
-
const g_shuffleFunc =
|
|
1166
|
-
'OFF'
|
|
1167
|
-
'Mirror'
|
|
1168
|
-
'X-Mirror'
|
|
1169
|
-
'Turning'
|
|
1170
|
-
'Random'
|
|
1171
|
-
'Random+'
|
|
1172
|
-
'S-Random'
|
|
1256
|
+
const g_shuffleFunc = new Map([
|
|
1257
|
+
['OFF', () => true],
|
|
1258
|
+
['Mirror', (keyNum, shuffleGroup) => applyMirror(keyNum, shuffleGroup)],
|
|
1259
|
+
['X-Mirror', (keyNum, shuffleGroup) => applyMirror(keyNum, shuffleGroup, true)],
|
|
1260
|
+
['Turning', (keyNum, shuffleGroup) => applyTurning(keyNum, shuffleGroup)],
|
|
1261
|
+
['Random', (keyNum, shuffleGroup) => applyRandom(keyNum, shuffleGroup)],
|
|
1262
|
+
['Random+', keyNum => applyRandom(keyNum, [[...Array(keyNum).keys()]])],
|
|
1263
|
+
['S-Random', (keyNum, shuffleGroup) => {
|
|
1173
1264
|
applySRandom(keyNum, shuffleGroup, `arrow`, `frz`);
|
|
1174
1265
|
applySRandom(keyNum, shuffleGroup, `dummyArrow`, `dummyFrz`);
|
|
1175
|
-
},
|
|
1176
|
-
'S-Random+'
|
|
1266
|
+
}],
|
|
1267
|
+
['S-Random+', keyNum => {
|
|
1177
1268
|
applySRandom(keyNum, [[...Array(keyNum).keys()]], `arrow`, `frz`);
|
|
1178
1269
|
applySRandom(keyNum, [[...Array(keyNum).keys()]], `dummyArrow`, `dummyFrz`);
|
|
1179
|
-
},
|
|
1180
|
-
'Scatter'
|
|
1270
|
+
}],
|
|
1271
|
+
['Scatter', (keyNum, shuffleGroup) => {
|
|
1181
1272
|
applySRandom(keyNum, shuffleGroup, `arrow`, `frz`);
|
|
1182
1273
|
applySRandom(keyNum, shuffleGroup, `dummyArrow`, `dummyFrz`);
|
|
1183
|
-
},
|
|
1184
|
-
'Scatter+'
|
|
1274
|
+
}],
|
|
1275
|
+
['Scatter+', keyNum => {
|
|
1185
1276
|
applySRandom(keyNum, [[...Array(keyNum).keys()]], `arrow`, `frz`);
|
|
1186
1277
|
applySRandom(keyNum, [[...Array(keyNum).keys()]], `dummyArrow`, `dummyFrz`);
|
|
1187
|
-
},
|
|
1188
|
-
|
|
1278
|
+
}],
|
|
1279
|
+
]);
|
|
1189
1280
|
|
|
1190
1281
|
/**
|
|
1191
1282
|
* モーション適用関数
|
|
1192
1283
|
* @param {array} frms フレーム別の速度設定用配列。配列の15がステップゾーン上、0~14は矢印の枠外管理用
|
|
1193
1284
|
*/
|
|
1194
|
-
const g_motionFunc =
|
|
1195
|
-
'OFF'
|
|
1196
|
-
'Boost'
|
|
1197
|
-
'Hi-Boost'
|
|
1198
|
-
'Brake'
|
|
1199
|
-
'Compress'
|
|
1200
|
-
'Fountain'
|
|
1201
|
-
|
|
1285
|
+
const g_motionFunc = new Map([
|
|
1286
|
+
['OFF', _frms => _frms],
|
|
1287
|
+
['Boost', _frms => getBoostTrace(_frms, 3)],
|
|
1288
|
+
['Hi-Boost', _frms => getBoostTrace(_frms, g_stateObj.speed * 2)],
|
|
1289
|
+
['Brake', _frms => getBrakeTrace(_frms)],
|
|
1290
|
+
['Compress', _frms => getBoostTrace(_frms, g_stateObj.speed * 5 / 8, -1)],
|
|
1291
|
+
['Fountain', _frms => getFountainTrace(_frms, g_stateObj.speed * 2)],
|
|
1292
|
+
]);
|
|
1202
1293
|
|
|
1203
1294
|
/**
|
|
1204
1295
|
* PlayWindow適用関数
|
|
@@ -1206,87 +1297,131 @@ const g_motionFunc = {
|
|
|
1206
1297
|
const g_changeStairs = (_rad) => `rotate(${_rad}deg)`;
|
|
1207
1298
|
const g_changeSkew = (_rad) => `Skew(${_rad}deg, ${_rad}deg) scaleY(0.9)`;
|
|
1208
1299
|
|
|
1209
|
-
const g_playWindowFunc =
|
|
1210
|
-
'Default'
|
|
1211
|
-
'Stairs'
|
|
1212
|
-
'R-Stairs'
|
|
1213
|
-
'Slope'
|
|
1214
|
-
'R-Slope'
|
|
1215
|
-
'Distorted'
|
|
1216
|
-
'R-Distorted'
|
|
1217
|
-
'SideScroll'
|
|
1218
|
-
'R-SideScroll'
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
const
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1300
|
+
const g_playWindowFunc = new Map([
|
|
1301
|
+
['Default', () => ``],
|
|
1302
|
+
['Stairs', () => g_changeStairs(-8)],
|
|
1303
|
+
['R-Stairs', () => g_changeStairs(8)],
|
|
1304
|
+
['Slope', () => g_changeStairs(-45)],
|
|
1305
|
+
['R-Slope', () => g_changeStairs(45)],
|
|
1306
|
+
['Distorted', () => g_changeSkew(-15)],
|
|
1307
|
+
['R-Distorted', () => g_changeSkew(15)],
|
|
1308
|
+
['SideScroll', () => g_changeStairs(-90)],
|
|
1309
|
+
['R-SideScroll', () => g_changeStairs(90)],
|
|
1310
|
+
]);
|
|
1311
|
+
|
|
1312
|
+
const g_arrowGroupSprite = [`stepSprite`, `arrowSprite`, `frzHitSprite`];
|
|
1313
|
+
const halfwayOffset = _j => (_j % 2 === 0 ? 1 : -1) * (g_headerObj.playingHeight / 2 - g_posObj.stepY + (g_posObj.stepYR - C_ARW_WIDTH) / 2);
|
|
1314
|
+
const g_stepAreaFunc = new Map([
|
|
1315
|
+
['Default', () => ``],
|
|
1316
|
+
['Halfway', () => {
|
|
1317
|
+
g_arrowGroupSprite.forEach(sprite => {
|
|
1225
1318
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1226
|
-
|
|
1319
|
+
addY(`${sprite}${j}`, `stepArea`, halfwayOffset(j));
|
|
1227
1320
|
}
|
|
1228
1321
|
});
|
|
1229
|
-
},
|
|
1230
|
-
'Mismatched'
|
|
1322
|
+
}],
|
|
1323
|
+
['Mismatched', () => {
|
|
1231
1324
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1232
1325
|
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${(j % 2 === 0 ? 1 : -1) * -15}deg)`);
|
|
1233
1326
|
}
|
|
1234
|
-
|
|
1235
|
-
|
|
1327
|
+
if (g_workObj.orgFlatFlg) {
|
|
1328
|
+
g_arrowGroupSprite.forEach(sprite => {
|
|
1329
|
+
for (let j = 2; j < Math.min(g_stateObj.layerNum, 4); j++) {
|
|
1330
|
+
addY(`${sprite}${j}`, `stepArea`, halfwayOffset(j));
|
|
1331
|
+
}
|
|
1332
|
+
});
|
|
1333
|
+
}
|
|
1334
|
+
}],
|
|
1335
|
+
['R-Mismatched', () => {
|
|
1236
1336
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1237
1337
|
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${(j % 2 === 0 ? 1 : -1) * 15}deg)`);
|
|
1238
1338
|
}
|
|
1239
|
-
|
|
1240
|
-
|
|
1339
|
+
if (g_workObj.orgFlatFlg) {
|
|
1340
|
+
g_arrowGroupSprite.forEach(sprite => {
|
|
1341
|
+
for (let j = 0; j < Math.min(g_stateObj.layerNum, 2); j++) {
|
|
1342
|
+
addY(`${sprite}${j}`, `stepArea`, halfwayOffset(j));
|
|
1343
|
+
}
|
|
1344
|
+
});
|
|
1345
|
+
}
|
|
1346
|
+
}],
|
|
1347
|
+
['2Step', () => {
|
|
1348
|
+
g_arrowGroupSprite.forEach(sprite => {
|
|
1349
|
+
for (let j = Math.min(g_stateObj.layerNum, 4) / 2; j < Math.min(g_stateObj.layerNum, 4); j++) {
|
|
1350
|
+
addY(`${sprite}${j}`, `stepArea`, halfwayOffset(j));
|
|
1351
|
+
}
|
|
1352
|
+
});
|
|
1353
|
+
}],
|
|
1354
|
+
['X-Flower', () => {
|
|
1241
1355
|
for (let j = 0; j < Math.min(g_stateObj.layerNum, 4); j++) {
|
|
1242
1356
|
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${(j % 2 === 0 ? 1 : -1) * (j % 4 < 2 ? 1 : -1) * -15}deg)`);
|
|
1243
1357
|
}
|
|
1244
|
-
},
|
|
1245
|
-
|
|
1358
|
+
}],
|
|
1359
|
+
]);
|
|
1246
1360
|
|
|
1247
1361
|
/**
|
|
1248
1362
|
* Shaking適用関数
|
|
1249
1363
|
*/
|
|
1250
|
-
const g_shakingFunc =
|
|
1251
|
-
'OFF'
|
|
1252
|
-
'Horizontal'
|
|
1253
|
-
'Vertical'
|
|
1254
|
-
'Drunk'
|
|
1255
|
-
if (
|
|
1256
|
-
g_workObj.drunkXFlg =
|
|
1257
|
-
g_workObj.drunkYFlg =
|
|
1364
|
+
const g_shakingFunc = new Map([
|
|
1365
|
+
['OFF', () => true],
|
|
1366
|
+
['Horizontal', () => addX(`mainSprite`, `shaking`, (Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) - 25) / 1)],
|
|
1367
|
+
['Vertical', () => addY(`mainSprite`, `shaking`, (Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) - 25) / 2)],
|
|
1368
|
+
['Drunk', () => {
|
|
1369
|
+
if (g_posXs.mainSprite.get(`shaking`) === 0 && g_posYs.mainSprite.get(`shaking`) === 0) {
|
|
1370
|
+
g_workObj.drunkXFlg = Math.random() < 0.5;
|
|
1371
|
+
g_workObj.drunkYFlg = Math.random() < 0.5;
|
|
1258
1372
|
}
|
|
1259
1373
|
if (g_workObj.drunkXFlg) {
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1374
|
+
const deltaX = (Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) - 25) / 1;
|
|
1375
|
+
addX(`mainSprite`, `shaking`, deltaX);
|
|
1376
|
+
addX(`infoSprite`, `shaking`, deltaX);
|
|
1377
|
+
addX(`judgeSprite`, `shaking`, deltaX);
|
|
1263
1378
|
}
|
|
1264
1379
|
if (g_workObj.drunkYFlg) {
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1380
|
+
const deltaY = (Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) - 25) / 2;
|
|
1381
|
+
addY(`mainSprite`, `shaking`, deltaY);
|
|
1382
|
+
addY(`infoSprite`, `shaking`, deltaY);
|
|
1383
|
+
addY(`judgeSprite`, `shaking`, deltaY);
|
|
1268
1384
|
}
|
|
1269
|
-
},
|
|
1385
|
+
}],
|
|
1386
|
+
]);
|
|
1387
|
+
|
|
1388
|
+
/**
|
|
1389
|
+
* ランダムな軸を返す補助関数
|
|
1390
|
+
* @returns {string} 軸
|
|
1391
|
+
*/
|
|
1392
|
+
const g_getRandomAxis = () => {
|
|
1393
|
+
const axes = [`X`, `Y`, `Z`];
|
|
1394
|
+
return axes[Math.floor(Math.random() * axes.length)];
|
|
1395
|
+
};
|
|
1396
|
+
|
|
1397
|
+
/**
|
|
1398
|
+
* 最初に選んだ軸を除く、次の軸を返す補助関数
|
|
1399
|
+
* @param {string} _primaryAxis
|
|
1400
|
+
* @returns {string} 軸
|
|
1401
|
+
*/
|
|
1402
|
+
const g_getSecondaryAxis = (_primaryAxis) => {
|
|
1403
|
+
const remainingAxes = [`X`, `Y`, `Z`, undefined].filter(val => val !== _primaryAxis);
|
|
1404
|
+
return remainingAxes[Math.floor(Math.random() * remainingAxes.length)];
|
|
1270
1405
|
};
|
|
1271
1406
|
|
|
1272
1407
|
/**
|
|
1273
1408
|
* FrzReturn適用関数
|
|
1274
1409
|
*/
|
|
1275
|
-
const g_frzReturnFunc =
|
|
1276
|
-
'OFF'
|
|
1277
|
-
'X-Axis'
|
|
1278
|
-
'Y-Axis'
|
|
1279
|
-
'Z-Axis'
|
|
1280
|
-
'Random'
|
|
1281
|
-
'XY-Axis'
|
|
1282
|
-
'XZ-Axis'
|
|
1283
|
-
'YZ-Axis'
|
|
1284
|
-
'Random+'
|
|
1285
|
-
const axis1 =
|
|
1286
|
-
const axis2 =
|
|
1410
|
+
const g_frzReturnFunc = new Map([
|
|
1411
|
+
['OFF', () => true],
|
|
1412
|
+
['X-Axis', () => [`X`]],
|
|
1413
|
+
['Y-Axis', () => [`Y`]],
|
|
1414
|
+
['Z-Axis', () => [`Z`]],
|
|
1415
|
+
['Random', () => g_getRandomAxis()],
|
|
1416
|
+
['XY-Axis', () => [`X`, `Y`]],
|
|
1417
|
+
['XZ-Axis', () => [`X`, `Z`]],
|
|
1418
|
+
['YZ-Axis', () => [`Y`, `Z`]],
|
|
1419
|
+
['Random+', () => {
|
|
1420
|
+
const axis1 = g_getRandomAxis();
|
|
1421
|
+
const axis2 = g_getSecondaryAxis(axis1);
|
|
1287
1422
|
return [axis1, axis2];
|
|
1288
|
-
},
|
|
1289
|
-
|
|
1423
|
+
}],
|
|
1424
|
+
]);
|
|
1290
1425
|
|
|
1291
1426
|
/**
|
|
1292
1427
|
* Effect適用関数
|
|
@@ -1306,15 +1441,15 @@ const g_setEffect = (_arrowEffect, _frzEffect = ``, _frzArrowEffect = _arrowEffe
|
|
|
1306
1441
|
}
|
|
1307
1442
|
}
|
|
1308
1443
|
};
|
|
1309
|
-
const g_effectFunc =
|
|
1310
|
-
'OFF'
|
|
1311
|
-
'Dizzy'
|
|
1312
|
-
'Spin'
|
|
1313
|
-
'Wave'
|
|
1314
|
-
'Storm'
|
|
1315
|
-
'Blinking'
|
|
1316
|
-
'Squids'
|
|
1317
|
-
|
|
1444
|
+
const g_effectFunc = new Map([
|
|
1445
|
+
['OFF', () => true],
|
|
1446
|
+
['Dizzy', () => g_setEffect(`effects-dizzy`)],
|
|
1447
|
+
['Spin', () => g_setEffect(`effects-spin`)],
|
|
1448
|
+
['Wave', () => g_setEffect(`effects-wave`, `effects-wave`)],
|
|
1449
|
+
['Storm', () => g_setEffect(`effects-storm`, `effects-storm`, ``)],
|
|
1450
|
+
['Blinking', () => g_setEffect(`effects-blinking`, `effects-blinking`, ``)],
|
|
1451
|
+
['Squids', () => g_setEffect(`effects-squids-arrow`, `effects-squids-frz`)],
|
|
1452
|
+
]);
|
|
1318
1453
|
|
|
1319
1454
|
const g_keycons = {
|
|
1320
1455
|
configTypes: [`Main`, `Replaced`, `ALL`],
|
|
@@ -1361,12 +1496,12 @@ let g_canDisabledSettings = [`motion`, `scroll`, `reverse`, `shuffle`, `autoPlay
|
|
|
1361
1496
|
`excessive`, `appearance`, `playWindow`, `stepArea`, `frzReturn`, `shaking`, `effect`, `camoufrage`,
|
|
1362
1497
|
`swapping`, `judgRange`, `autoRetry`];
|
|
1363
1498
|
|
|
1364
|
-
const g_hidSudFunc =
|
|
1365
|
-
filterPos
|
|
1366
|
-
range
|
|
1367
|
-
hidden
|
|
1368
|
-
sudden
|
|
1369
|
-
|
|
1499
|
+
const g_hidSudFunc = new Map([
|
|
1500
|
+
['filterPos', _filterPos => `${_filterPos}${g_lblNameObj.percent}`],
|
|
1501
|
+
['range', () => `${Math.round(g_posObj.arrowHeight - g_posObj.stepY)}px`],
|
|
1502
|
+
['hidden', _filterPos => `${Math.min(Math.round(g_posObj.arrowHeight * (100 - _filterPos) / 100), g_posObj.arrowHeight - g_posObj.stepY)}`],
|
|
1503
|
+
['sudden', _filterPos => `${Math.max(Math.round(g_posObj.arrowHeight * (100 - _filterPos) / 100) - g_posObj.stepY, 0)}`],
|
|
1504
|
+
]);
|
|
1370
1505
|
|
|
1371
1506
|
const g_hidSudObj = {
|
|
1372
1507
|
filterPos: 10,
|
|
@@ -1400,12 +1535,12 @@ const g_hidSudObj = {
|
|
|
1400
1535
|
},
|
|
1401
1536
|
distH: {
|
|
1402
1537
|
'Visible': () => ``,
|
|
1403
|
-
'Hidden': () => `${g_hidSudFunc.filterPos(50)} (${g_hidSudFunc.hidden(50)} / ${g_hidSudFunc.range()})`,
|
|
1404
|
-
'Hidden+': (_filterPos) => `${g_hidSudFunc.filterPos(_filterPos)} (${g_hidSudFunc.hidden(_filterPos)} / ${g_hidSudFunc.range()})`,
|
|
1405
|
-
'Sudden': () => `${g_hidSudFunc.filterPos(40)} (${g_hidSudFunc.sudden(40)} / ${g_hidSudFunc.range()})`,
|
|
1406
|
-
'Sudden+': (_filterPos) => `${g_hidSudFunc.filterPos(_filterPos)} (${g_hidSudFunc.sudden(_filterPos)} / ${g_hidSudFunc.range()})`,
|
|
1407
|
-
'Hid&Sud+': (_filterPos) => `${g_hidSudFunc.filterPos(_filterPos)} (${Math.max(g_hidSudFunc.sudden(_filterPos)
|
|
1408
|
-
- (g_posObj.arrowHeight - g_posObj.stepY - g_hidSudFunc.hidden(_filterPos)), 0)} / ${g_hidSudFunc.range()})`,
|
|
1538
|
+
'Hidden': () => `${g_hidSudFunc.get(`filterPos`)(50)} (${g_hidSudFunc.get(`hidden`)(50)} / ${g_hidSudFunc.get(`range`)()})`,
|
|
1539
|
+
'Hidden+': (_filterPos) => `${g_hidSudFunc.get(`filterPos`)(_filterPos)} (${g_hidSudFunc.get(`hidden`)(_filterPos)} / ${g_hidSudFunc.get(`range`)()})`,
|
|
1540
|
+
'Sudden': () => `${g_hidSudFunc.get(`filterPos`)(40)} (${g_hidSudFunc.get(`sudden`)(40)} / ${g_hidSudFunc.get(`range`)()})`,
|
|
1541
|
+
'Sudden+': (_filterPos) => `${g_hidSudFunc.get(`filterPos`)(_filterPos)} (${g_hidSudFunc.get(`sudden`)(_filterPos)} / ${g_hidSudFunc.get(`range`)()})`,
|
|
1542
|
+
'Hid&Sud+': (_filterPos) => `${g_hidSudFunc.get(`filterPos`)(_filterPos)} (${Math.max(g_hidSudFunc.get(`sudden`)(_filterPos)
|
|
1543
|
+
- (g_posObj.arrowHeight - g_posObj.stepY - g_hidSudFunc.get(`hidden`)(_filterPos)), 0)} / ${g_hidSudFunc.get(`range`)()})`,
|
|
1409
1544
|
},
|
|
1410
1545
|
};
|
|
1411
1546
|
|