danoniplus 45.5.1 → 45.5.3
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 +47 -34
- 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/12
|
|
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.3`;
|
|
12
|
+
const g_revisedDate = `2026/03/12`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -7359,13 +7359,14 @@ const makeHighScore = _scoreId => {
|
|
|
7359
7359
|
tweetDifData += `:${getStgDetailName(g_stateObj.shuffle)}`;
|
|
7360
7360
|
}
|
|
7361
7361
|
|
|
7362
|
+
const storedExcessive = g_localStorage.highscores[scoreName]?.excessive;
|
|
7362
7363
|
const resultParams = {
|
|
7363
7364
|
hashTag: (hasVal(g_headerObj.hashTag) ? ` ${g_headerObj.hashTag}` : ``),
|
|
7364
7365
|
tuning: g_headerObj.creatorNames[_scoreId],
|
|
7365
7366
|
rankMark: g_localStorage.highscores?.[scoreName]?.rankMark || `--`,
|
|
7366
7367
|
playStyleData: g_localStorage.highscores[scoreName]?.playStyle || `--`,
|
|
7367
7368
|
highscore: g_localStorage.highscores[scoreName],
|
|
7368
|
-
tweetExcessive: hasVal(
|
|
7369
|
+
tweetExcessive: hasVal(storedExcessive, `---`) ? `(+${storedExcessive})` : ``,
|
|
7369
7370
|
musicTitle, tweetDifData, tweetFrzJdg, tweetMaxCombo, baseTwitUrl,
|
|
7370
7371
|
};
|
|
7371
7372
|
const resultCommon = unEscapeHtml(makeResultText(g_templateObj.resultFormatDf, resultParams));
|
|
@@ -11763,7 +11764,7 @@ const getArrowSettings = () => {
|
|
|
11763
11764
|
const changeStepRtn = (_name, _angle) =>
|
|
11764
11765
|
g_workObj[_name] = g_workObj[_name].map(v => rotateBy(v, _angle));
|
|
11765
11766
|
|
|
11766
|
-
if (g_stateObj.playWindow
|
|
11767
|
+
if (g_stateObj.playWindow === `SideScroll`) {
|
|
11767
11768
|
if (g_stateObj.rotateEnabled) {
|
|
11768
11769
|
const sign = g_stateObj.playWindowType === `Reverse` ? -1 : 1;
|
|
11769
11770
|
changeStepRtn(`stepRtn`, 90 * sign);
|
|
@@ -12005,15 +12006,14 @@ const getArrowSettings = () => {
|
|
|
12005
12006
|
const _copiedArray = structuredClone(_array);
|
|
12006
12007
|
return _array.map((_val, _i) => _array[_i] = _copiedArray[randArray[_i]]);
|
|
12007
12008
|
};
|
|
12008
|
-
if (
|
|
12009
|
+
if ([`Arrow`, C_FLG_ALL].includes(g_stateObj.camoufrage)) {
|
|
12009
12010
|
|
|
12010
12011
|
// 矢印ヒット時に元の矢印がわかるようにするため、あえて g_workObj.stepHitRtn はそのままにする
|
|
12011
12012
|
g_workObj.stepRtn = getSwapArray(g_workObj.stepRtn);
|
|
12012
12013
|
g_workObj.arrowRtn = getSwapArray(g_workObj.arrowRtn);
|
|
12013
12014
|
}
|
|
12014
|
-
|
|
12015
|
-
|
|
12016
|
-
|
|
12015
|
+
if ([`Color`, C_FLG_ALL].includes(g_stateObj.camoufrage)) {
|
|
12016
|
+
eachOrAll.forEach(type => {
|
|
12017
12017
|
// ダミー矢印は対象外
|
|
12018
12018
|
g_workObj[`arrowColors${type}`] = getSwapArray(g_workObj[`arrowColors${type}`]);
|
|
12019
12019
|
g_workObj[`arrowShadowColors${type}`] = getSwapArray(g_workObj[`arrowShadowColors${type}`]);
|
|
@@ -12023,23 +12023,19 @@ const getArrowSettings = () => {
|
|
|
12023
12023
|
});
|
|
12024
12024
|
g_workObj[`frzNormalShadowColors${type}`] = getSwapArray(g_workObj[`frzNormalShadowColors${type}`]);
|
|
12025
12025
|
g_workObj[`frzHitShadowColors${type}`] = getSwapArray(g_workObj[`frzHitShadowColors${type}`]);
|
|
12026
|
-
}
|
|
12027
|
-
});
|
|
12026
|
+
});
|
|
12028
12027
|
|
|
12029
|
-
|
|
12030
|
-
if (g_stateObj.camoufrage === `Color` || g_stateObj.camoufrage === C_FLG_ALL) {
|
|
12028
|
+
// 位置変更用の配列に従い、個別・全体色変化の位置変更
|
|
12031
12029
|
const getSwapList = (_array) => {
|
|
12032
12030
|
const _copiedArray = structuredClone(_array);
|
|
12033
12031
|
return _array.map((_val, _i) => _array[_i] = randArray[_copiedArray[_i]]);
|
|
12034
12032
|
};
|
|
12035
|
-
usedColorKeys.forEach(type => {
|
|
12036
|
-
|
|
12037
|
-
|
|
12038
|
-
|
|
12039
|
-
continue;
|
|
12040
|
-
}
|
|
12041
|
-
g_workObj[type][j] = getSwapList(g_workObj[type][j]);
|
|
12033
|
+
usedColorKeys.filter(type => g_workObj[type] !== undefined).forEach(type => {
|
|
12034
|
+
for (let j = 0; j < g_workObj[type].length; j++) {
|
|
12035
|
+
if (g_workObj[type][j] === undefined) {
|
|
12036
|
+
continue;
|
|
12042
12037
|
}
|
|
12038
|
+
g_workObj[type][j] = getSwapList(g_workObj[type][j]);
|
|
12043
12039
|
}
|
|
12044
12040
|
});
|
|
12045
12041
|
}
|
|
@@ -12238,7 +12234,7 @@ const mainInit = () => {
|
|
|
12238
12234
|
|
|
12239
12235
|
// Hidden+, Sudden+用のライン、パーセント表示
|
|
12240
12236
|
const filterCss = g_stateObj.filterLock === C_FLG_OFF ? g_cssObj.life_Failed : g_cssObj.life_Cleared;
|
|
12241
|
-
const doubleFilterFlg =
|
|
12237
|
+
const doubleFilterFlg = getDoubleFilterFlg();
|
|
12242
12238
|
|
|
12243
12239
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
12244
12240
|
const mainSpriteJ = createEmptySprite(mainSprite, `mainSprite${j}`, mainCommonPos);
|
|
@@ -12300,6 +12296,10 @@ const mainInit = () => {
|
|
|
12300
12296
|
}
|
|
12301
12297
|
}
|
|
12302
12298
|
|
|
12299
|
+
// Appearanceのオプション適用時は一部描画を隠す
|
|
12300
|
+
changeAppearanceBar(g_appearanceRanges.includes(g_stateObj.appearance)
|
|
12301
|
+
? g_hidSudObj.filterPos : g_hidSudObj.filterPosDefault[g_stateObj.appearance], 0);
|
|
12302
|
+
|
|
12303
12303
|
// StepArea処理
|
|
12304
12304
|
g_stepAreaFunc.get(g_stateObj.stepArea)();
|
|
12305
12305
|
|
|
@@ -12309,10 +12309,6 @@ const mainInit = () => {
|
|
|
12309
12309
|
// EffectのArrowEffect追加処理
|
|
12310
12310
|
g_effectFunc.get(g_stateObj.effect)();
|
|
12311
12311
|
|
|
12312
|
-
// Appearanceのオプション適用時は一部描画を隠す
|
|
12313
|
-
changeAppearanceBar(g_appearanceRanges.includes(g_stateObj.appearance)
|
|
12314
|
-
? g_hidSudObj.filterPos : g_hidSudObj.filterPosDefault[g_stateObj.appearance], 0);
|
|
12315
|
-
|
|
12316
12312
|
// 現在の矢印・フリーズアローの速度、個別加算速度の初期化 (速度変化時に直す)
|
|
12317
12313
|
g_workObj.currentSpeed = 2;
|
|
12318
12314
|
g_workObj.boostSpd = 1;
|
|
@@ -13645,6 +13641,14 @@ const makeStepZone = (_j, _keyCtrlPtn) => {
|
|
|
13645
13641
|
}
|
|
13646
13642
|
};
|
|
13647
13643
|
|
|
13644
|
+
/**
|
|
13645
|
+
* フィルターバーが同一層で複数必要かを確認
|
|
13646
|
+
* @returns {boolean}
|
|
13647
|
+
*/
|
|
13648
|
+
const getDoubleFilterFlg = () =>
|
|
13649
|
+
g_settings.stepAreaLayers.includes(g_stateObj.stepArea) ||
|
|
13650
|
+
(g_stateObj.stepArea === `Halfway` && g_stateObj.appearance === `Hid&Sud+`);
|
|
13651
|
+
|
|
13648
13652
|
/**
|
|
13649
13653
|
* フィルターバーの対象表示変更
|
|
13650
13654
|
* @param {number} _num
|
|
@@ -13655,7 +13659,7 @@ const changeAppearanceBar = (_num = 10, _dirPlus = 2) => {
|
|
|
13655
13659
|
const step = Math.trunc(_dirPlus / 2) * 2;
|
|
13656
13660
|
g_workObj.aprFilterCnt = nextPos(g_workObj.aprFilterCnt, step, g_stateObj.layerNum);
|
|
13657
13661
|
}
|
|
13658
|
-
changeAppearanceFilter(_num);
|
|
13662
|
+
const doubleFilterFlg = changeAppearanceFilter(_num);
|
|
13659
13663
|
|
|
13660
13664
|
// フィルターバーを使用するオプションのみ以下を適用
|
|
13661
13665
|
if (g_appearanceRanges.includes(g_stateObj.appearance) && g_stateObj.d_filterline === C_FLG_ON) {
|
|
@@ -13669,13 +13673,13 @@ const changeAppearanceBar = (_num = 10, _dirPlus = 2) => {
|
|
|
13669
13673
|
const displayState = (j === g_workObj.aprFilterCnt ? C_DIS_INHERIT : C_DIS_NONE);
|
|
13670
13674
|
$id(`filterBar${type}`).display = displayState;
|
|
13671
13675
|
|
|
13672
|
-
if (
|
|
13676
|
+
if (doubleFilterFlg) {
|
|
13673
13677
|
$id(`filterBar${type}_HS`).display = displayState;
|
|
13674
13678
|
}
|
|
13675
13679
|
});
|
|
13676
13680
|
}
|
|
13677
13681
|
|
|
13678
|
-
//
|
|
13682
|
+
// フィルターバーの非表示条件
|
|
13679
13683
|
const baseLayer = g_workObj.aprFilterCnt;
|
|
13680
13684
|
const dividePosPart = g_workObj.dividePos.filter(v => Math.floor(v / 2) === g_workObj.aprFilterCnt / 2);
|
|
13681
13685
|
const currentBarNum = g_hidSudObj.std[g_stateObj.appearance][
|
|
@@ -13684,12 +13688,17 @@ const changeAppearanceBar = (_num = 10, _dirPlus = 2) => {
|
|
|
13684
13688
|
: g_stateObj.reverse
|
|
13685
13689
|
];
|
|
13686
13690
|
|
|
13687
|
-
if (
|
|
13688
|
-
&& dividePosPart.length > 0
|
|
13691
|
+
if (dividePosPart.length > 0
|
|
13689
13692
|
&& dividePosPart.every(v => v % 2 === dividePosPart[0] % 2)) {
|
|
13690
|
-
|
|
13691
|
-
|
|
13692
|
-
$id(`filterBar${(currentBarNum + 1) % 2 + baseLayer}
|
|
13693
|
+
if (g_stateObj.appearance !== `Hid&Sud+` || (g_stateObj.appearance === `Hid&Sud+` && g_stateObj.stepArea === `Halfway`)) {
|
|
13694
|
+
// スクロールが1種類の場合、対面のフィルターバーは不要なため非表示にする
|
|
13695
|
+
$id(`filterBar${(currentBarNum + 1) % 2 + baseLayer}`).display = C_DIS_NONE;
|
|
13696
|
+
|
|
13697
|
+
if (g_settings.stepAreaLayers.includes(g_stateObj.stepArea)) {
|
|
13698
|
+
$id(`filterBar${(currentBarNum + 1) % 2 + baseLayer}_HS`).display = C_DIS_NONE;
|
|
13699
|
+
} else if (g_stateObj.appearance === `Hid&Sud+` && g_stateObj.stepArea === `Halfway`) {
|
|
13700
|
+
$id(`filterBar${(currentBarNum) % 2 + baseLayer}_HS`).display = C_DIS_NONE;
|
|
13701
|
+
}
|
|
13693
13702
|
}
|
|
13694
13703
|
}
|
|
13695
13704
|
}
|
|
@@ -13698,6 +13707,7 @@ const changeAppearanceBar = (_num = 10, _dirPlus = 2) => {
|
|
|
13698
13707
|
/**
|
|
13699
13708
|
* アルファマスクの再描画 (Appearance: Hidden+, Sudden+ 用)
|
|
13700
13709
|
* @param {number} _num
|
|
13710
|
+
* @returns {boolean} フィルターバーを複数利用するかどうかのフラグ (changeAppearanceBarで利用)
|
|
13701
13711
|
*/
|
|
13702
13712
|
const changeAppearanceFilter = (_num = 10) => {
|
|
13703
13713
|
const MAX_FILTER_POS = 100;
|
|
@@ -13716,6 +13726,7 @@ const changeAppearanceFilter = (_num = 10) => {
|
|
|
13716
13726
|
const appearPers = [_num, MAX_FILTER_POS - _num];
|
|
13717
13727
|
const topDist = g_posObj.arrowHeight * appearPers[topNum] / MAX_FILTER_POS;
|
|
13718
13728
|
const bottomDist = g_posObj.arrowHeight * appearPers[bottomNum] / MAX_FILTER_POS;
|
|
13729
|
+
const doubleFilterFlg = getDoubleFilterFlg();
|
|
13719
13730
|
|
|
13720
13731
|
for (let j = 0; j < g_stateObj.layerNum; j += 2) {
|
|
13721
13732
|
$id(`arrowSprite${topNum + j}`).clipPath = topShape;
|
|
@@ -13724,7 +13735,7 @@ const changeAppearanceFilter = (_num = 10) => {
|
|
|
13724
13735
|
addTransform(`filterBar${topNum + j}`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${j}`).top) + topDist}px)`, g_transPriority.layer);
|
|
13725
13736
|
addTransform(`filterBar${bottomNum + j}`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${j + 1}`).top) + bottomDist}px)`, g_transPriority.layer);
|
|
13726
13737
|
|
|
13727
|
-
if (
|
|
13738
|
+
if (doubleFilterFlg) {
|
|
13728
13739
|
addTransform(`filterBar${bottomNum + j}_HS`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${j}`).top) + bottomDist}px)`, g_transPriority.layer);
|
|
13729
13740
|
addTransform(`filterBar${topNum + j}_HS`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${j + 1}`).top) + topDist}px)`, g_transPriority.layer);
|
|
13730
13741
|
}
|
|
@@ -13741,6 +13752,8 @@ const changeAppearanceFilter = (_num = 10) => {
|
|
|
13741
13752
|
|
|
13742
13753
|
// ユーザカスタムイベント(アルファマスクの再描画)
|
|
13743
13754
|
g_customJsObj.appearanceFilter.forEach(func => func(topNum, bottomNum));
|
|
13755
|
+
|
|
13756
|
+
return doubleFilterFlg;
|
|
13744
13757
|
};
|
|
13745
13758
|
|
|
13746
13759
|
/**
|
|
@@ -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++) {
|