danoniplus 45.5.0 → 45.5.2
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 +55 -36
- package/js/lib/danoni_constants.js +91 -1
- 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 : 2026/03/
|
|
7
|
+
* Revised : 2026/03/10
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 45.5.
|
|
12
|
-
const g_revisedDate = `2026/03/
|
|
11
|
+
const g_version = `Ver 45.5.2`;
|
|
12
|
+
const g_revisedDate = `2026/03/10`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -6558,7 +6558,7 @@ const updateSettingSummary = () => {
|
|
|
6558
6558
|
(g_stateObj.shuffle === C_FLG_OFF || (g_stateObj.shuffle.endsWith(`Mirror`) && orgShuffleFlg)));
|
|
6559
6559
|
|
|
6560
6560
|
document.getElementById(`lblSummaryDifInfo`).innerHTML = settingData.difData + `${estimatedHighscoreCondition ? '' : ` | <span class="common_kita common_bold">No Records</span>`}`;
|
|
6561
|
-
document.getElementById(`lblSummaryPlaystyleInfo`).textContent = settingData.playStyleData
|
|
6561
|
+
document.getElementById(`lblSummaryPlaystyleInfo`).textContent = settingData.playStyleData + `${g_stateObj.excessive === C_FLG_ON ? ' | Excessive' : ''}`;
|
|
6562
6562
|
document.getElementById(`lblSummaryDisplayInfo`).textContent = settingData.displayData;
|
|
6563
6563
|
document.getElementById(`lblSummaryDisplay2Info`).textContent = settingData.display2Data;
|
|
6564
6564
|
document.getElementById(`lblSummaryEnvironment`).textContent =
|
|
@@ -7586,6 +7586,9 @@ const setDifficulty = (_initFlg) => {
|
|
|
7586
7586
|
// ユーザカスタムイベント(初期)
|
|
7587
7587
|
g_customJsObj.difficulty.forEach(func => func(_initFlg, g_canLoadDifInfoFlg));
|
|
7588
7588
|
|
|
7589
|
+
// 設定サマリー表示の更新
|
|
7590
|
+
updateSettingSummary();
|
|
7591
|
+
|
|
7589
7592
|
// ---------------------------------------------------
|
|
7590
7593
|
// 4. 譜面初期情報ロード許可フラグの設定
|
|
7591
7594
|
g_canLoadDifInfoFlg = true;
|
|
@@ -7864,6 +7867,7 @@ const createOptionWindow = _sprite => {
|
|
|
7864
7867
|
g_stateObj.fadein = nextPos(g_stateObj.fadein, _sign, 100);
|
|
7865
7868
|
fadeinSlider.value = g_stateObj.fadein;
|
|
7866
7869
|
lnkFadein.textContent = `${g_stateObj.fadein}${g_lblNameObj.percent}`;
|
|
7870
|
+
updateSettingSummary();
|
|
7867
7871
|
};
|
|
7868
7872
|
|
|
7869
7873
|
multiAppend(spriteList.fadein,
|
|
@@ -7879,8 +7883,10 @@ const createOptionWindow = _sprite => {
|
|
|
7879
7883
|
);
|
|
7880
7884
|
|
|
7881
7885
|
const fadeinSlider = document.getElementById(`fadeinSlider`);
|
|
7882
|
-
fadeinSlider.addEventListener(`input`, () =>
|
|
7883
|
-
g_stateObj.fadein = inputSlider(fadeinSlider, lnkFadein, `fadein`)
|
|
7886
|
+
fadeinSlider.addEventListener(`input`, () => {
|
|
7887
|
+
g_stateObj.fadein = inputSlider(fadeinSlider, lnkFadein, `fadein`);
|
|
7888
|
+
updateSettingSummary();
|
|
7889
|
+
}, false);
|
|
7884
7890
|
|
|
7885
7891
|
// ---------------------------------------------------
|
|
7886
7892
|
// ボリューム (Volume)
|
|
@@ -8320,6 +8326,7 @@ const setExcessive = (_btn, _val) => {
|
|
|
8320
8326
|
g_stateObj.excessiveScoreId = g_stateObj.scoreId;
|
|
8321
8327
|
}
|
|
8322
8328
|
g_stateObj.excessive = g_settings.excessives[g_settings.excessiveNum];
|
|
8329
|
+
updateSettingSummary();
|
|
8323
8330
|
_btn.classList.replace(g_cssObj[`button_Rev${g_settings.excessives[curExcessive]}`],
|
|
8324
8331
|
g_cssObj[`button_Rev${g_settings.excessives[g_settings.excessiveNum]}`]);
|
|
8325
8332
|
};
|
|
@@ -11756,7 +11763,7 @@ const getArrowSettings = () => {
|
|
|
11756
11763
|
const changeStepRtn = (_name, _angle) =>
|
|
11757
11764
|
g_workObj[_name] = g_workObj[_name].map(v => rotateBy(v, _angle));
|
|
11758
11765
|
|
|
11759
|
-
if (g_stateObj.playWindow
|
|
11766
|
+
if (g_stateObj.playWindow === `SideScroll`) {
|
|
11760
11767
|
if (g_stateObj.rotateEnabled) {
|
|
11761
11768
|
const sign = g_stateObj.playWindowType === `Reverse` ? -1 : 1;
|
|
11762
11769
|
changeStepRtn(`stepRtn`, 90 * sign);
|
|
@@ -11998,15 +12005,14 @@ const getArrowSettings = () => {
|
|
|
11998
12005
|
const _copiedArray = structuredClone(_array);
|
|
11999
12006
|
return _array.map((_val, _i) => _array[_i] = _copiedArray[randArray[_i]]);
|
|
12000
12007
|
};
|
|
12001
|
-
if (
|
|
12008
|
+
if ([`Arrow`, C_FLG_ALL].includes(g_stateObj.camoufrage)) {
|
|
12002
12009
|
|
|
12003
12010
|
// 矢印ヒット時に元の矢印がわかるようにするため、あえて g_workObj.stepHitRtn はそのままにする
|
|
12004
12011
|
g_workObj.stepRtn = getSwapArray(g_workObj.stepRtn);
|
|
12005
12012
|
g_workObj.arrowRtn = getSwapArray(g_workObj.arrowRtn);
|
|
12006
12013
|
}
|
|
12007
|
-
|
|
12008
|
-
|
|
12009
|
-
|
|
12014
|
+
if ([`Color`, C_FLG_ALL].includes(g_stateObj.camoufrage)) {
|
|
12015
|
+
eachOrAll.forEach(type => {
|
|
12010
12016
|
// ダミー矢印は対象外
|
|
12011
12017
|
g_workObj[`arrowColors${type}`] = getSwapArray(g_workObj[`arrowColors${type}`]);
|
|
12012
12018
|
g_workObj[`arrowShadowColors${type}`] = getSwapArray(g_workObj[`arrowShadowColors${type}`]);
|
|
@@ -12016,23 +12022,19 @@ const getArrowSettings = () => {
|
|
|
12016
12022
|
});
|
|
12017
12023
|
g_workObj[`frzNormalShadowColors${type}`] = getSwapArray(g_workObj[`frzNormalShadowColors${type}`]);
|
|
12018
12024
|
g_workObj[`frzHitShadowColors${type}`] = getSwapArray(g_workObj[`frzHitShadowColors${type}`]);
|
|
12019
|
-
}
|
|
12020
|
-
});
|
|
12025
|
+
});
|
|
12021
12026
|
|
|
12022
|
-
|
|
12023
|
-
if (g_stateObj.camoufrage === `Color` || g_stateObj.camoufrage === C_FLG_ALL) {
|
|
12027
|
+
// 位置変更用の配列に従い、個別・全体色変化の位置変更
|
|
12024
12028
|
const getSwapList = (_array) => {
|
|
12025
12029
|
const _copiedArray = structuredClone(_array);
|
|
12026
12030
|
return _array.map((_val, _i) => _array[_i] = randArray[_copiedArray[_i]]);
|
|
12027
12031
|
};
|
|
12028
|
-
usedColorKeys.forEach(type => {
|
|
12029
|
-
|
|
12030
|
-
|
|
12031
|
-
|
|
12032
|
-
continue;
|
|
12033
|
-
}
|
|
12034
|
-
g_workObj[type][j] = getSwapList(g_workObj[type][j]);
|
|
12032
|
+
usedColorKeys.filter(type => g_workObj[type] !== undefined).forEach(type => {
|
|
12033
|
+
for (let j = 0; j < g_workObj[type].length; j++) {
|
|
12034
|
+
if (g_workObj[type][j] === undefined) {
|
|
12035
|
+
continue;
|
|
12035
12036
|
}
|
|
12037
|
+
g_workObj[type][j] = getSwapList(g_workObj[type][j]);
|
|
12036
12038
|
}
|
|
12037
12039
|
});
|
|
12038
12040
|
}
|
|
@@ -12231,7 +12233,7 @@ const mainInit = () => {
|
|
|
12231
12233
|
|
|
12232
12234
|
// Hidden+, Sudden+用のライン、パーセント表示
|
|
12233
12235
|
const filterCss = g_stateObj.filterLock === C_FLG_OFF ? g_cssObj.life_Failed : g_cssObj.life_Cleared;
|
|
12234
|
-
const doubleFilterFlg =
|
|
12236
|
+
const doubleFilterFlg = getDoubleFilterFlg();
|
|
12235
12237
|
|
|
12236
12238
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
12237
12239
|
const mainSpriteJ = createEmptySprite(mainSprite, `mainSprite${j}`, mainCommonPos);
|
|
@@ -12293,6 +12295,10 @@ const mainInit = () => {
|
|
|
12293
12295
|
}
|
|
12294
12296
|
}
|
|
12295
12297
|
|
|
12298
|
+
// Appearanceのオプション適用時は一部描画を隠す
|
|
12299
|
+
changeAppearanceBar(g_appearanceRanges.includes(g_stateObj.appearance)
|
|
12300
|
+
? g_hidSudObj.filterPos : g_hidSudObj.filterPosDefault[g_stateObj.appearance], 0);
|
|
12301
|
+
|
|
12296
12302
|
// StepArea処理
|
|
12297
12303
|
g_stepAreaFunc.get(g_stateObj.stepArea)();
|
|
12298
12304
|
|
|
@@ -12302,10 +12308,6 @@ const mainInit = () => {
|
|
|
12302
12308
|
// EffectのArrowEffect追加処理
|
|
12303
12309
|
g_effectFunc.get(g_stateObj.effect)();
|
|
12304
12310
|
|
|
12305
|
-
// Appearanceのオプション適用時は一部描画を隠す
|
|
12306
|
-
changeAppearanceBar(g_appearanceRanges.includes(g_stateObj.appearance)
|
|
12307
|
-
? g_hidSudObj.filterPos : g_hidSudObj.filterPosDefault[g_stateObj.appearance], 0);
|
|
12308
|
-
|
|
12309
12311
|
// 現在の矢印・フリーズアローの速度、個別加算速度の初期化 (速度変化時に直す)
|
|
12310
12312
|
g_workObj.currentSpeed = 2;
|
|
12311
12313
|
g_workObj.boostSpd = 1;
|
|
@@ -13638,6 +13640,14 @@ const makeStepZone = (_j, _keyCtrlPtn) => {
|
|
|
13638
13640
|
}
|
|
13639
13641
|
};
|
|
13640
13642
|
|
|
13643
|
+
/**
|
|
13644
|
+
* フィルターバーが同一層で複数必要かを確認
|
|
13645
|
+
* @returns {boolean}
|
|
13646
|
+
*/
|
|
13647
|
+
const getDoubleFilterFlg = () =>
|
|
13648
|
+
g_settings.stepAreaLayers.includes(g_stateObj.stepArea) ||
|
|
13649
|
+
(g_stateObj.stepArea === `Halfway` && g_stateObj.appearance === `Hid&Sud+`);
|
|
13650
|
+
|
|
13641
13651
|
/**
|
|
13642
13652
|
* フィルターバーの対象表示変更
|
|
13643
13653
|
* @param {number} _num
|
|
@@ -13648,7 +13658,7 @@ const changeAppearanceBar = (_num = 10, _dirPlus = 2) => {
|
|
|
13648
13658
|
const step = Math.trunc(_dirPlus / 2) * 2;
|
|
13649
13659
|
g_workObj.aprFilterCnt = nextPos(g_workObj.aprFilterCnt, step, g_stateObj.layerNum);
|
|
13650
13660
|
}
|
|
13651
|
-
changeAppearanceFilter(_num);
|
|
13661
|
+
const doubleFilterFlg = changeAppearanceFilter(_num);
|
|
13652
13662
|
|
|
13653
13663
|
// フィルターバーを使用するオプションのみ以下を適用
|
|
13654
13664
|
if (g_appearanceRanges.includes(g_stateObj.appearance) && g_stateObj.d_filterline === C_FLG_ON) {
|
|
@@ -13662,13 +13672,13 @@ const changeAppearanceBar = (_num = 10, _dirPlus = 2) => {
|
|
|
13662
13672
|
const displayState = (j === g_workObj.aprFilterCnt ? C_DIS_INHERIT : C_DIS_NONE);
|
|
13663
13673
|
$id(`filterBar${type}`).display = displayState;
|
|
13664
13674
|
|
|
13665
|
-
if (
|
|
13675
|
+
if (doubleFilterFlg) {
|
|
13666
13676
|
$id(`filterBar${type}_HS`).display = displayState;
|
|
13667
13677
|
}
|
|
13668
13678
|
});
|
|
13669
13679
|
}
|
|
13670
13680
|
|
|
13671
|
-
//
|
|
13681
|
+
// フィルターバーの非表示条件
|
|
13672
13682
|
const baseLayer = g_workObj.aprFilterCnt;
|
|
13673
13683
|
const dividePosPart = g_workObj.dividePos.filter(v => Math.floor(v / 2) === g_workObj.aprFilterCnt / 2);
|
|
13674
13684
|
const currentBarNum = g_hidSudObj.std[g_stateObj.appearance][
|
|
@@ -13677,12 +13687,17 @@ const changeAppearanceBar = (_num = 10, _dirPlus = 2) => {
|
|
|
13677
13687
|
: g_stateObj.reverse
|
|
13678
13688
|
];
|
|
13679
13689
|
|
|
13680
|
-
if (
|
|
13681
|
-
&& dividePosPart.length > 0
|
|
13690
|
+
if (dividePosPart.length > 0
|
|
13682
13691
|
&& dividePosPart.every(v => v % 2 === dividePosPart[0] % 2)) {
|
|
13683
|
-
|
|
13684
|
-
|
|
13685
|
-
$id(`filterBar${(currentBarNum + 1) % 2 + baseLayer}
|
|
13692
|
+
if (g_stateObj.appearance !== `Hid&Sud+` || (g_stateObj.appearance === `Hid&Sud+` && g_stateObj.stepArea === `Halfway`)) {
|
|
13693
|
+
// スクロールが1種類の場合、対面のフィルターバーは不要なため非表示にする
|
|
13694
|
+
$id(`filterBar${(currentBarNum + 1) % 2 + baseLayer}`).display = C_DIS_NONE;
|
|
13695
|
+
|
|
13696
|
+
if (g_settings.stepAreaLayers.includes(g_stateObj.stepArea)) {
|
|
13697
|
+
$id(`filterBar${(currentBarNum + 1) % 2 + baseLayer}_HS`).display = C_DIS_NONE;
|
|
13698
|
+
} else if (g_stateObj.appearance === `Hid&Sud+` && g_stateObj.stepArea === `Halfway`) {
|
|
13699
|
+
$id(`filterBar${(currentBarNum) % 2 + baseLayer}_HS`).display = C_DIS_NONE;
|
|
13700
|
+
}
|
|
13686
13701
|
}
|
|
13687
13702
|
}
|
|
13688
13703
|
}
|
|
@@ -13691,6 +13706,7 @@ const changeAppearanceBar = (_num = 10, _dirPlus = 2) => {
|
|
|
13691
13706
|
/**
|
|
13692
13707
|
* アルファマスクの再描画 (Appearance: Hidden+, Sudden+ 用)
|
|
13693
13708
|
* @param {number} _num
|
|
13709
|
+
* @returns {boolean} フィルターバーを複数利用するかどうかのフラグ (changeAppearanceBarで利用)
|
|
13694
13710
|
*/
|
|
13695
13711
|
const changeAppearanceFilter = (_num = 10) => {
|
|
13696
13712
|
const MAX_FILTER_POS = 100;
|
|
@@ -13709,6 +13725,7 @@ const changeAppearanceFilter = (_num = 10) => {
|
|
|
13709
13725
|
const appearPers = [_num, MAX_FILTER_POS - _num];
|
|
13710
13726
|
const topDist = g_posObj.arrowHeight * appearPers[topNum] / MAX_FILTER_POS;
|
|
13711
13727
|
const bottomDist = g_posObj.arrowHeight * appearPers[bottomNum] / MAX_FILTER_POS;
|
|
13728
|
+
const doubleFilterFlg = getDoubleFilterFlg();
|
|
13712
13729
|
|
|
13713
13730
|
for (let j = 0; j < g_stateObj.layerNum; j += 2) {
|
|
13714
13731
|
$id(`arrowSprite${topNum + j}`).clipPath = topShape;
|
|
@@ -13717,7 +13734,7 @@ const changeAppearanceFilter = (_num = 10) => {
|
|
|
13717
13734
|
addTransform(`filterBar${topNum + j}`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${j}`).top) + topDist}px)`, g_transPriority.layer);
|
|
13718
13735
|
addTransform(`filterBar${bottomNum + j}`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${j + 1}`).top) + bottomDist}px)`, g_transPriority.layer);
|
|
13719
13736
|
|
|
13720
|
-
if (
|
|
13737
|
+
if (doubleFilterFlg) {
|
|
13721
13738
|
addTransform(`filterBar${bottomNum + j}_HS`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${j}`).top) + bottomDist}px)`, g_transPriority.layer);
|
|
13722
13739
|
addTransform(`filterBar${topNum + j}_HS`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${j + 1}`).top) + topDist}px)`, g_transPriority.layer);
|
|
13723
13740
|
}
|
|
@@ -13734,6 +13751,8 @@ const changeAppearanceFilter = (_num = 10) => {
|
|
|
13734
13751
|
|
|
13735
13752
|
// ユーザカスタムイベント(アルファマスクの再描画)
|
|
13736
13753
|
g_customJsObj.appearanceFilter.forEach(func => func(topNum, bottomNum));
|
|
13754
|
+
|
|
13755
|
+
return doubleFilterFlg;
|
|
13737
13756
|
};
|
|
13738
13757
|
|
|
13739
13758
|
/**
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2026/03/
|
|
8
|
+
* Revised : 2026/03/10 (v45.5.2)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -1738,6 +1738,7 @@ const g_playWindowFunc = new Map([
|
|
|
1738
1738
|
const g_arrowGroupSprite = [`stepSprite`, `arrowSprite`, `frzHitSprite`];
|
|
1739
1739
|
const halfwayOffset = _j => (_j % 2 === 0 ? 1 : -1) * (g_headerObj.playingHeight / 2 - g_posObj.stepY + (g_posObj.stepYR - C_ARW_WIDTH) / 2);
|
|
1740
1740
|
const getDirFromLayer = _j => (_j % 2 === 0 ? 1 : -1) * (_j < g_stateObj.layerNumDf ? 1 : -1);
|
|
1741
|
+
const getDirFromRev = () => g_stateObj.reverse === C_FLG_OFF ? 1 : -1;
|
|
1741
1742
|
const g_stepAreaFunc = new Map([
|
|
1742
1743
|
['Default', () => ``],
|
|
1743
1744
|
['Halfway', () => {
|
|
@@ -1746,6 +1747,32 @@ const g_stepAreaFunc = new Map([
|
|
|
1746
1747
|
addTransform(`${sprite}${j}`, `stepArea`, `translateY(${halfwayOffset(j)}px)`, g_transPriority.stepArea);
|
|
1747
1748
|
}
|
|
1748
1749
|
});
|
|
1750
|
+
|
|
1751
|
+
// Appearanceフィルターの差分適用
|
|
1752
|
+
if (g_appearanceRanges.includes(g_stateObj.appearance)) {
|
|
1753
|
+
|
|
1754
|
+
// Hidden+, Sudden+の場合はレイヤー毎に座標を画面中央から見てフィルターバーを外側へシフト
|
|
1755
|
+
for (let j = 0; j < g_stateObj.layerNumDf; j++) {
|
|
1756
|
+
addTransform(
|
|
1757
|
+
`filterBar${j}`, `stepArea`,
|
|
1758
|
+
`translateY(calc(${g_hidSudObj[g_stateObj.appearance] === 0 ? 1 : -1} * ${halfwayOffset(j)}px))`,
|
|
1759
|
+
g_transPriority.stepArea
|
|
1760
|
+
);
|
|
1761
|
+
}
|
|
1762
|
+
|
|
1763
|
+
// Hid&Sud+の場合は片側に2つのフィルターバーが必要なため、
|
|
1764
|
+
// 追加したフィルターバーを元のフィルターバーに対して反転するようにシフト
|
|
1765
|
+
if (g_stateObj.appearance === `Hid&Sud+`) {
|
|
1766
|
+
for (let j = 0; j < g_stateObj.layerNumDf; j++) {
|
|
1767
|
+
addTransform(
|
|
1768
|
+
`filterBar${j}_HS`, `stepArea`,
|
|
1769
|
+
`translateY(calc(${(-1) * (g_hidSudObj[g_stateObj.appearance] === 0 ? 1 : -1)} * ${halfwayOffset(j)}px))`,
|
|
1770
|
+
g_transPriority.stepArea
|
|
1771
|
+
);
|
|
1772
|
+
}
|
|
1773
|
+
}
|
|
1774
|
+
addTransform(`filterView`, `stepArea`, `translateY(${halfwayOffset(Number(g_settings.reverseNum))}px)`, g_transPriority.stepArea);
|
|
1775
|
+
}
|
|
1749
1776
|
}],
|
|
1750
1777
|
['Mismatched', () => {
|
|
1751
1778
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
@@ -1757,6 +1784,27 @@ const g_stepAreaFunc = new Map([
|
|
|
1757
1784
|
addTransform(`${sprite}${j}`, `stepArea`, `translateY(${halfwayOffset(j)}px)`, g_transPriority.stepArea);
|
|
1758
1785
|
}
|
|
1759
1786
|
});
|
|
1787
|
+
|
|
1788
|
+
// Appearanceフィルターの差分適用
|
|
1789
|
+
if (g_appearanceRanges.includes(g_stateObj.appearance)) {
|
|
1790
|
+
for (let j = 0; j < g_stateObj.layerNumDf; j++) {
|
|
1791
|
+
if (j % 2 === 0) {
|
|
1792
|
+
// Hidden+用のフィルターバー補正
|
|
1793
|
+
addTransform(
|
|
1794
|
+
`filterBar${j + Number(g_settings.reverseNum)}_HS`, `stepArea`,
|
|
1795
|
+
`translateY(calc((${getDirFromRev()}) * ${halfwayOffset(j)}px))`,
|
|
1796
|
+
g_transPriority.stepArea
|
|
1797
|
+
);
|
|
1798
|
+
} else {
|
|
1799
|
+
// Sudden+用のフィルターバー補正
|
|
1800
|
+
addTransform(
|
|
1801
|
+
`filterBar${j - Number(g_settings.reverseNum)}`, `stepArea`,
|
|
1802
|
+
`translateY(calc((${(-1) * getDirFromRev()}) * ${halfwayOffset(j)}px))`,
|
|
1803
|
+
g_transPriority.stepArea
|
|
1804
|
+
);
|
|
1805
|
+
}
|
|
1806
|
+
}
|
|
1807
|
+
}
|
|
1760
1808
|
}
|
|
1761
1809
|
}],
|
|
1762
1810
|
['R-Mismatched', () => {
|
|
@@ -1769,6 +1817,27 @@ const g_stepAreaFunc = new Map([
|
|
|
1769
1817
|
addTransform(`${sprite}${j}`, `stepArea`, `translateY(${halfwayOffset(j)}px)`, g_transPriority.stepArea);
|
|
1770
1818
|
}
|
|
1771
1819
|
});
|
|
1820
|
+
|
|
1821
|
+
// Appearanceフィルターの差分適用
|
|
1822
|
+
if (g_appearanceRanges.includes(g_stateObj.appearance)) {
|
|
1823
|
+
for (let j = 0; j < g_stateObj.layerNumDf; j++) {
|
|
1824
|
+
if (j % 2 === 0) {
|
|
1825
|
+
// Hidden+用のフィルターバー補正
|
|
1826
|
+
addTransform(
|
|
1827
|
+
`filterBar${j + Number(g_settings.reverseNum)}`, `stepArea`,
|
|
1828
|
+
`translateY(calc((${getDirFromRev()}) * ${halfwayOffset(j)}px))`,
|
|
1829
|
+
g_transPriority.stepArea
|
|
1830
|
+
);
|
|
1831
|
+
} else {
|
|
1832
|
+
// Sudden+用のフィルターバー補正
|
|
1833
|
+
addTransform(
|
|
1834
|
+
`filterBar${j - Number(g_settings.reverseNum)}_HS`, `stepArea`,
|
|
1835
|
+
`translateY(calc((${(-1) * getDirFromRev()}) * ${halfwayOffset(j)}px))`,
|
|
1836
|
+
g_transPriority.stepArea
|
|
1837
|
+
);
|
|
1838
|
+
}
|
|
1839
|
+
}
|
|
1840
|
+
}
|
|
1772
1841
|
}
|
|
1773
1842
|
}],
|
|
1774
1843
|
['2Step', () => {
|
|
@@ -1777,6 +1846,27 @@ const g_stepAreaFunc = new Map([
|
|
|
1777
1846
|
addTransform(`${sprite}${j}`, `stepArea`, `translateY(${halfwayOffset(j)}px)`, g_transPriority.stepArea);
|
|
1778
1847
|
}
|
|
1779
1848
|
});
|
|
1849
|
+
|
|
1850
|
+
// Appearanceフィルターの差分適用
|
|
1851
|
+
if (g_appearanceRanges.includes(g_stateObj.appearance)) {
|
|
1852
|
+
for (let j = 0; j < g_stateObj.layerNumDf; j++) {
|
|
1853
|
+
addTransform(
|
|
1854
|
+
`filterBar${j}_HS`, `stepArea`,
|
|
1855
|
+
`translateY(calc((${g_hidSudObj[g_stateObj.appearance] === 0 ? 1 : -1}) * ${halfwayOffset(j)}px))`,
|
|
1856
|
+
g_transPriority.stepArea
|
|
1857
|
+
);
|
|
1858
|
+
}
|
|
1859
|
+
if (g_stateObj.appearance === `Hid&Sud+`) {
|
|
1860
|
+
// 2Stepは逆方向スクロールが存在しないため、2つごとに設定
|
|
1861
|
+
for (let j = 0; j < g_stateObj.layerNumDf; j += 2) {
|
|
1862
|
+
addTransform(
|
|
1863
|
+
`filterBar${j + Number(g_settings.reverseNum)}_HS`, `stepArea`,
|
|
1864
|
+
`translateY(calc((${getDirFromRev()}) * ${halfwayOffset(j)}px))`,
|
|
1865
|
+
g_transPriority.stepArea
|
|
1866
|
+
);
|
|
1867
|
+
}
|
|
1868
|
+
}
|
|
1869
|
+
}
|
|
1780
1870
|
}],
|
|
1781
1871
|
['X-Flower', () => {
|
|
1782
1872
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|