mirror of
https://github.com/redphx/better-xcloud.git
synced 2025-06-07 16:17:20 +02:00
Update better-xcloud.user.js
This commit is contained in:
parent
5604664b66
commit
228c2ad008
477
dist/better-xcloud.user.js
vendored
477
dist/better-xcloud.user.js
vendored
@ -445,8 +445,6 @@ var MkbPresetKey;
|
|||||||
MkbPresetKey2["MOUSE_SENSITIVITY_X"] = "sensitivity_x";
|
MkbPresetKey2["MOUSE_SENSITIVITY_X"] = "sensitivity_x";
|
||||||
MkbPresetKey2["MOUSE_SENSITIVITY_Y"] = "sensitivity_y";
|
MkbPresetKey2["MOUSE_SENSITIVITY_Y"] = "sensitivity_y";
|
||||||
MkbPresetKey2["MOUSE_DEADZONE_COUNTERWEIGHT"] = "deadzone_counterweight";
|
MkbPresetKey2["MOUSE_DEADZONE_COUNTERWEIGHT"] = "deadzone_counterweight";
|
||||||
MkbPresetKey2["MOUSE_STICK_DECAY_STRENGTH"] = "stick_decay_strength";
|
|
||||||
MkbPresetKey2["MOUSE_STICK_DECAY_MIN"] = "stick_decay_min";
|
|
||||||
})(MkbPresetKey || (MkbPresetKey = {}));
|
})(MkbPresetKey || (MkbPresetKey = {}));
|
||||||
|
|
||||||
// src/utils/translation.ts
|
// src/utils/translation.ts
|
||||||
@ -1085,27 +1083,6 @@ class MkbPreset {
|
|||||||
suffix: "%",
|
suffix: "%",
|
||||||
exactTicks: 10
|
exactTicks: 10
|
||||||
}
|
}
|
||||||
},
|
|
||||||
[MkbPresetKey.MOUSE_STICK_DECAY_STRENGTH]: {
|
|
||||||
label: t("stick-decay-strength"),
|
|
||||||
type: SettingElementType.NUMBER_STEPPER,
|
|
||||||
default: 100,
|
|
||||||
min: 10,
|
|
||||||
max: 100,
|
|
||||||
params: {
|
|
||||||
suffix: "%",
|
|
||||||
exactTicks: 10
|
|
||||||
}
|
|
||||||
},
|
|
||||||
[MkbPresetKey.MOUSE_STICK_DECAY_MIN]: {
|
|
||||||
label: t("stick-decay-minimum"),
|
|
||||||
type: SettingElementType.NUMBER_STEPPER,
|
|
||||||
default: 10,
|
|
||||||
min: 1,
|
|
||||||
max: 10,
|
|
||||||
params: {
|
|
||||||
suffix: "%"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
static DEFAULT_PRESET = {
|
static DEFAULT_PRESET = {
|
||||||
@ -1138,11 +1115,9 @@ class MkbPreset {
|
|||||||
},
|
},
|
||||||
mouse: {
|
mouse: {
|
||||||
[MkbPresetKey.MOUSE_MAP_TO]: MouseMapTo[MouseMapTo.RS],
|
[MkbPresetKey.MOUSE_MAP_TO]: MouseMapTo[MouseMapTo.RS],
|
||||||
[MkbPresetKey.MOUSE_SENSITIVITY_X]: 50,
|
[MkbPresetKey.MOUSE_SENSITIVITY_X]: 100,
|
||||||
[MkbPresetKey.MOUSE_SENSITIVITY_Y]: 50,
|
[MkbPresetKey.MOUSE_SENSITIVITY_Y]: 100,
|
||||||
[MkbPresetKey.MOUSE_DEADZONE_COUNTERWEIGHT]: 20,
|
[MkbPresetKey.MOUSE_DEADZONE_COUNTERWEIGHT]: 20
|
||||||
[MkbPresetKey.MOUSE_STICK_DECAY_STRENGTH]: 100,
|
|
||||||
[MkbPresetKey.MOUSE_STICK_DECAY_MIN]: 10
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
static convert(preset) {
|
static convert(preset) {
|
||||||
@ -1159,8 +1134,6 @@ class MkbPreset {
|
|||||||
mouse[MkbPresetKey.MOUSE_SENSITIVITY_X] *= MkbHandler.DEFAULT_PANNING_SENSITIVITY;
|
mouse[MkbPresetKey.MOUSE_SENSITIVITY_X] *= MkbHandler.DEFAULT_PANNING_SENSITIVITY;
|
||||||
mouse[MkbPresetKey.MOUSE_SENSITIVITY_Y] *= MkbHandler.DEFAULT_PANNING_SENSITIVITY;
|
mouse[MkbPresetKey.MOUSE_SENSITIVITY_Y] *= MkbHandler.DEFAULT_PANNING_SENSITIVITY;
|
||||||
mouse[MkbPresetKey.MOUSE_DEADZONE_COUNTERWEIGHT] *= MkbHandler.DEFAULT_DEADZONE_COUNTERWEIGHT;
|
mouse[MkbPresetKey.MOUSE_DEADZONE_COUNTERWEIGHT] *= MkbHandler.DEFAULT_DEADZONE_COUNTERWEIGHT;
|
||||||
mouse[MkbPresetKey.MOUSE_STICK_DECAY_STRENGTH] *= 0.01;
|
|
||||||
mouse[MkbPresetKey.MOUSE_STICK_DECAY_MIN] *= 0.01;
|
|
||||||
const mouseMapTo = MouseMapTo[mouse[MkbPresetKey.MOUSE_MAP_TO]];
|
const mouseMapTo = MouseMapTo[mouse[MkbPresetKey.MOUSE_MAP_TO]];
|
||||||
if (typeof mouseMapTo !== "undefined") {
|
if (typeof mouseMapTo !== "undefined") {
|
||||||
mouse[MkbPresetKey.MOUSE_MAP_TO] = mouseMapTo;
|
mouse[MkbPresetKey.MOUSE_MAP_TO] = mouseMapTo;
|
||||||
@ -1970,7 +1943,7 @@ class Preferences {
|
|||||||
default: false,
|
default: false,
|
||||||
unsupported: (() => {
|
unsupported: (() => {
|
||||||
const userAgent2 = (window.navigator.orgUserAgent || window.navigator.userAgent || "").toLowerCase();
|
const userAgent2 = (window.navigator.orgUserAgent || window.navigator.userAgent || "").toLowerCase();
|
||||||
return userAgent2.match(/(android|iphone|ipad)/) ? t("browser-unsupported-feature") : false;
|
return !AppInterface && userAgent2.match(/(android|iphone|ipad)/) ? t("browser-unsupported-feature") : false;
|
||||||
})(),
|
})(),
|
||||||
ready: (setting) => {
|
ready: (setting) => {
|
||||||
let note;
|
let note;
|
||||||
@ -2531,7 +2504,7 @@ class KeyHelper {
|
|||||||
code = WheelCode.SCROLL_DOWN;
|
code = WheelCode.SCROLL_DOWN;
|
||||||
} else if (e.deltaX < 0) {
|
} else if (e.deltaX < 0) {
|
||||||
code = WheelCode.SCROLL_LEFT;
|
code = WheelCode.SCROLL_LEFT;
|
||||||
} else {
|
} else if (e.deltaX > 0) {
|
||||||
code = WheelCode.SCROLL_RIGHT;
|
code = WheelCode.SCROLL_RIGHT;
|
||||||
}
|
}
|
||||||
} else if (e instanceof MouseEvent) {
|
} else if (e instanceof MouseEvent) {
|
||||||
@ -2841,8 +2814,217 @@ function showStreamSettings(tabId) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// src/modules/mkb/pointer-client.ts
|
||||||
|
var LOG_TAG = "PointerClient";
|
||||||
|
var PointerAction;
|
||||||
|
(function(PointerAction2) {
|
||||||
|
PointerAction2[PointerAction2["MOVE"] = 1] = "MOVE";
|
||||||
|
PointerAction2[PointerAction2["BUTTON_PRESS"] = 2] = "BUTTON_PRESS";
|
||||||
|
PointerAction2[PointerAction2["BUTTON_RELEASE"] = 3] = "BUTTON_RELEASE";
|
||||||
|
PointerAction2[PointerAction2["SCROLL"] = 4] = "SCROLL";
|
||||||
|
})(PointerAction || (PointerAction = {}));
|
||||||
|
var FixedMouseIndex = {
|
||||||
|
1: 0,
|
||||||
|
2: 2,
|
||||||
|
4: 1
|
||||||
|
};
|
||||||
|
|
||||||
|
class PointerClient {
|
||||||
|
static #PORT = 9269;
|
||||||
|
static instance;
|
||||||
|
static getInstance() {
|
||||||
|
if (!PointerClient.instance) {
|
||||||
|
PointerClient.instance = new PointerClient;
|
||||||
|
}
|
||||||
|
return PointerClient.instance;
|
||||||
|
}
|
||||||
|
#socket;
|
||||||
|
#mkbHandler;
|
||||||
|
start(mkbHandler) {
|
||||||
|
this.#mkbHandler = mkbHandler;
|
||||||
|
this.#socket = new WebSocket(`ws://localhost:${PointerClient.#PORT}`);
|
||||||
|
this.#socket.binaryType = "arraybuffer";
|
||||||
|
this.#socket.addEventListener("open", (event) => {
|
||||||
|
BxLogger.info(LOG_TAG, "connected");
|
||||||
|
});
|
||||||
|
this.#socket.addEventListener("message", (event) => {
|
||||||
|
const dataView = new DataView(event.data);
|
||||||
|
let messageType = dataView.getInt8(0);
|
||||||
|
let offset = Int8Array.BYTES_PER_ELEMENT;
|
||||||
|
switch (messageType) {
|
||||||
|
case PointerAction.MOVE:
|
||||||
|
this.onMove(dataView, offset);
|
||||||
|
break;
|
||||||
|
case PointerAction.BUTTON_PRESS:
|
||||||
|
case PointerAction.BUTTON_RELEASE:
|
||||||
|
this.onPress(messageType, dataView, offset);
|
||||||
|
break;
|
||||||
|
case PointerAction.SCROLL:
|
||||||
|
this.onScroll(dataView, offset);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
onMove(dataView, offset) {
|
||||||
|
const x = dataView.getInt16(offset);
|
||||||
|
offset += Int16Array.BYTES_PER_ELEMENT;
|
||||||
|
const y = dataView.getInt16(offset);
|
||||||
|
this.#mkbHandler?.handleMouseMove({
|
||||||
|
movementX: x,
|
||||||
|
movementY: y
|
||||||
|
});
|
||||||
|
}
|
||||||
|
onPress(messageType, dataView, offset) {
|
||||||
|
const buttonIndex = dataView.getInt8(offset);
|
||||||
|
const fixedIndex = FixedMouseIndex[buttonIndex];
|
||||||
|
const keyCode = "Mouse" + fixedIndex;
|
||||||
|
this.#mkbHandler?.handleMouseClick({
|
||||||
|
key: {
|
||||||
|
code: keyCode,
|
||||||
|
name: KeyHelper.codeToKeyName(keyCode)
|
||||||
|
},
|
||||||
|
pressed: messageType === PointerAction.BUTTON_PRESS
|
||||||
|
});
|
||||||
|
}
|
||||||
|
onScroll(dataView, offset) {
|
||||||
|
const vScroll = dataView.getInt8(offset);
|
||||||
|
offset += Int8Array.BYTES_PER_ELEMENT;
|
||||||
|
const hScroll = dataView.getInt8(offset);
|
||||||
|
let code = "";
|
||||||
|
if (vScroll < 0) {
|
||||||
|
code = WheelCode.SCROLL_UP;
|
||||||
|
} else if (vScroll > 0) {
|
||||||
|
code = WheelCode.SCROLL_DOWN;
|
||||||
|
} else if (hScroll < 0) {
|
||||||
|
code = WheelCode.SCROLL_LEFT;
|
||||||
|
} else if (hScroll > 0) {
|
||||||
|
code = WheelCode.SCROLL_RIGHT;
|
||||||
|
}
|
||||||
|
code && this.#mkbHandler?.handleMouseWheel({
|
||||||
|
key: {
|
||||||
|
code,
|
||||||
|
name: KeyHelper.codeToKeyName(code)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
stop() {
|
||||||
|
try {
|
||||||
|
this.#socket?.close();
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// src/modules/mkb/mkb-handler.ts
|
// src/modules/mkb/mkb-handler.ts
|
||||||
var LOG_TAG = "MkbHandler";
|
var LOG_TAG2 = "MkbHandler";
|
||||||
|
|
||||||
|
class MouseDataProvider {
|
||||||
|
mkbHandler;
|
||||||
|
constructor(handler) {
|
||||||
|
this.mkbHandler = handler;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class WebSocketMouseDataProvider extends MouseDataProvider {
|
||||||
|
constructor() {
|
||||||
|
super(...arguments);
|
||||||
|
}
|
||||||
|
#pointerClient;
|
||||||
|
init() {
|
||||||
|
AppInterface.startPointerServer();
|
||||||
|
this.#pointerClient = PointerClient.getInstance();
|
||||||
|
this.#pointerClient.start(this.mkbHandler);
|
||||||
|
}
|
||||||
|
start() {
|
||||||
|
AppInterface.requestPointerCapture();
|
||||||
|
}
|
||||||
|
stop() {
|
||||||
|
AppInterface.releasePointerCapture();
|
||||||
|
}
|
||||||
|
destroy() {
|
||||||
|
this.#pointerClient?.stop();
|
||||||
|
AppInterface.stopPointerServer();
|
||||||
|
}
|
||||||
|
toggle(enabled) {
|
||||||
|
enabled ? this.mkbHandler.start() : this.mkbHandler.stop();
|
||||||
|
this.mkbHandler.waitForMouseData(!enabled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class PointerLockMouseDataProvider extends MouseDataProvider {
|
||||||
|
constructor() {
|
||||||
|
super(...arguments);
|
||||||
|
}
|
||||||
|
init() {
|
||||||
|
document.addEventListener("pointerlockchange", this.#onPointerLockChange);
|
||||||
|
document.addEventListener("pointerlockerror", this.#onPointerLockError);
|
||||||
|
}
|
||||||
|
start() {
|
||||||
|
if (!document.pointerLockElement) {
|
||||||
|
document.body.requestPointerLock();
|
||||||
|
}
|
||||||
|
window.addEventListener("mousemove", this.#onMouseMoveEvent);
|
||||||
|
window.addEventListener("mousedown", this.#onMouseEvent);
|
||||||
|
window.addEventListener("mouseup", this.#onMouseEvent);
|
||||||
|
window.addEventListener("wheel", this.#onWheelEvent);
|
||||||
|
window.addEventListener("contextmenu", this.#disableContextMenu);
|
||||||
|
}
|
||||||
|
stop() {
|
||||||
|
window.removeEventListener("mousemove", this.#onMouseMoveEvent);
|
||||||
|
window.removeEventListener("mousedown", this.#onMouseEvent);
|
||||||
|
window.removeEventListener("mouseup", this.#onMouseEvent);
|
||||||
|
window.removeEventListener("wheel", this.#onWheelEvent);
|
||||||
|
window.removeEventListener("contextmenu", this.#disableContextMenu);
|
||||||
|
}
|
||||||
|
destroy() {
|
||||||
|
document.removeEventListener("pointerlockchange", this.#onPointerLockChange);
|
||||||
|
document.removeEventListener("pointerlockerror", this.#onPointerLockError);
|
||||||
|
}
|
||||||
|
toggle(enabled) {
|
||||||
|
enabled ? document.pointerLockElement && this.mkbHandler.start() : this.mkbHandler.stop();
|
||||||
|
if (enabled) {
|
||||||
|
!document.pointerLockElement && this.mkbHandler.waitForMouseData(true);
|
||||||
|
} else {
|
||||||
|
this.mkbHandler.waitForMouseData(false);
|
||||||
|
document.pointerLockElement && document.exitPointerLock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#onPointerLockChange = () => {
|
||||||
|
if (this.mkbHandler.isEnabled() && !document.pointerLockElement) {
|
||||||
|
this.mkbHandler.stop();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#onPointerLockError = (e) => {
|
||||||
|
console.log(e);
|
||||||
|
this.stop();
|
||||||
|
};
|
||||||
|
#onMouseMoveEvent = (e) => {
|
||||||
|
this.mkbHandler.handleMouseMove({
|
||||||
|
movementX: e.movementX,
|
||||||
|
movementY: e.movementY
|
||||||
|
});
|
||||||
|
};
|
||||||
|
#onMouseEvent = (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
const isMouseDown = e.type === "mousedown";
|
||||||
|
const key = KeyHelper.getKeyFromEvent(e);
|
||||||
|
const data = {
|
||||||
|
key,
|
||||||
|
pressed: isMouseDown
|
||||||
|
};
|
||||||
|
this.mkbHandler.handleMouseClick(data);
|
||||||
|
};
|
||||||
|
#onWheelEvent = (e) => {
|
||||||
|
const key = KeyHelper.getKeyFromEvent(e);
|
||||||
|
if (!key) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.mkbHandler.handleMouseWheel({ key })) {
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#disableContextMenu = (e) => e.preventDefault();
|
||||||
|
}
|
||||||
|
|
||||||
class MkbHandler {
|
class MkbHandler {
|
||||||
static #instance;
|
static #instance;
|
||||||
@ -2854,7 +3036,6 @@ class MkbHandler {
|
|||||||
}
|
}
|
||||||
#CURRENT_PRESET_DATA = MkbPreset.convert(MkbPreset.DEFAULT_PRESET);
|
#CURRENT_PRESET_DATA = MkbPreset.convert(MkbPreset.DEFAULT_PRESET);
|
||||||
static DEFAULT_PANNING_SENSITIVITY = 0.001;
|
static DEFAULT_PANNING_SENSITIVITY = 0.001;
|
||||||
static DEFAULT_STICK_SENSITIVITY = 0.0006;
|
|
||||||
static DEFAULT_DEADZONE_COUNTERWEIGHT = 0.01;
|
static DEFAULT_DEADZONE_COUNTERWEIGHT = 0.01;
|
||||||
static MAXIMUM_STICK_RANGE = 1.1;
|
static MAXIMUM_STICK_RANGE = 1.1;
|
||||||
static VIRTUAL_GAMEPAD_ID = "Xbox 360 Controller";
|
static VIRTUAL_GAMEPAD_ID = "Xbox 360 Controller";
|
||||||
@ -2871,11 +3052,11 @@ class MkbHandler {
|
|||||||
};
|
};
|
||||||
#nativeGetGamepads = window.navigator.getGamepads.bind(window.navigator);
|
#nativeGetGamepads = window.navigator.getGamepads.bind(window.navigator);
|
||||||
#enabled = false;
|
#enabled = false;
|
||||||
|
#mouseDataProvider;
|
||||||
#isPolling = false;
|
#isPolling = false;
|
||||||
#prevWheelCode = null;
|
#prevWheelCode = null;
|
||||||
#wheelStoppedTimeout;
|
#wheelStoppedTimeout;
|
||||||
#detectMouseStoppedTimeout;
|
#detectMouseStoppedTimeout;
|
||||||
#allowStickDecaying = false;
|
|
||||||
#$message;
|
#$message;
|
||||||
#STICK_MAP;
|
#STICK_MAP;
|
||||||
#LEFT_STICK_X = [];
|
#LEFT_STICK_X = [];
|
||||||
@ -2894,6 +3075,7 @@ class MkbHandler {
|
|||||||
[GamepadKey.RS_DOWN]: [this.#RIGHT_STICK_Y, 3, 1]
|
[GamepadKey.RS_DOWN]: [this.#RIGHT_STICK_Y, 3, 1]
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
isEnabled = () => this.#enabled;
|
||||||
#patchedGetGamepads = () => {
|
#patchedGetGamepads = () => {
|
||||||
const gamepads = this.#nativeGetGamepads() || [];
|
const gamepads = this.#nativeGetGamepads() || [];
|
||||||
gamepads[this.#VIRTUAL_GAMEPAD.index] = this.#VIRTUAL_GAMEPAD;
|
gamepads[this.#VIRTUAL_GAMEPAD.index] = this.#VIRTUAL_GAMEPAD;
|
||||||
@ -2906,15 +3088,7 @@ class MkbHandler {
|
|||||||
virtualGamepad.axes[stick * 2 + 1] = y;
|
virtualGamepad.axes[stick * 2 + 1] = y;
|
||||||
virtualGamepad.timestamp = performance.now();
|
virtualGamepad.timestamp = performance.now();
|
||||||
}
|
}
|
||||||
#getStickAxes(stick) {
|
|
||||||
const virtualGamepad = this.#getVirtualGamepad();
|
|
||||||
return {
|
|
||||||
x: virtualGamepad.axes[stick * 2],
|
|
||||||
y: virtualGamepad.axes[stick * 2 + 1]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
#vectorLength = (x, y) => Math.sqrt(x ** 2 + y ** 2);
|
#vectorLength = (x, y) => Math.sqrt(x ** 2 + y ** 2);
|
||||||
#disableContextMenu = (e) => e.preventDefault();
|
|
||||||
#resetGamepad = () => {
|
#resetGamepad = () => {
|
||||||
const gamepad = this.#getVirtualGamepad();
|
const gamepad = this.#getVirtualGamepad();
|
||||||
gamepad.axes = [0, 0, 0, 0];
|
gamepad.axes = [0, 0, 0, 0];
|
||||||
@ -2956,6 +3130,10 @@ class MkbHandler {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
this.toggle();
|
this.toggle();
|
||||||
return;
|
return;
|
||||||
|
} else if (e.code === "Escape") {
|
||||||
|
e.preventDefault();
|
||||||
|
this.#enabled && this.stop();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (!this.#isPolling) {
|
if (!this.#isPolling) {
|
||||||
return;
|
return;
|
||||||
@ -2971,83 +3149,32 @@ class MkbHandler {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
this.#pressButton(buttonIndex, isKeyDown);
|
this.#pressButton(buttonIndex, isKeyDown);
|
||||||
};
|
};
|
||||||
#onMouseEvent = (e) => {
|
|
||||||
const isMouseDown = e.type === "mousedown";
|
|
||||||
const key = KeyHelper.getKeyFromEvent(e);
|
|
||||||
if (!key) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const buttonIndex = this.#CURRENT_PRESET_DATA.mapping[key.code];
|
|
||||||
if (typeof buttonIndex === "undefined") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
e.preventDefault();
|
|
||||||
this.#pressButton(buttonIndex, isMouseDown);
|
|
||||||
};
|
|
||||||
#onWheelEvent = (e) => {
|
|
||||||
const key = KeyHelper.getKeyFromEvent(e);
|
|
||||||
if (!key) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const buttonIndex = this.#CURRENT_PRESET_DATA.mapping[key.code];
|
|
||||||
if (typeof buttonIndex === "undefined") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
e.preventDefault();
|
|
||||||
if (this.#prevWheelCode === null || this.#prevWheelCode === key.code) {
|
|
||||||
this.#wheelStoppedTimeout && clearTimeout(this.#wheelStoppedTimeout);
|
|
||||||
this.#pressButton(buttonIndex, true);
|
|
||||||
}
|
|
||||||
this.#wheelStoppedTimeout = window.setTimeout(() => {
|
|
||||||
this.#prevWheelCode = null;
|
|
||||||
this.#pressButton(buttonIndex, false);
|
|
||||||
}, 20);
|
|
||||||
};
|
|
||||||
#decayStick = () => {
|
|
||||||
if (!this.#allowStickDecaying) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const mouseMapTo = this.#CURRENT_PRESET_DATA.mouse[MkbPresetKey.MOUSE_MAP_TO];
|
|
||||||
if (mouseMapTo === MouseMapTo.OFF) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const analog = mouseMapTo === MouseMapTo.LS ? GamepadStick.LEFT : GamepadStick.RIGHT;
|
|
||||||
let { x, y } = this.#getStickAxes(analog);
|
|
||||||
const length = this.#vectorLength(x, y);
|
|
||||||
const clampedLength = Math.min(1, length);
|
|
||||||
const decayStrength = this.#CURRENT_PRESET_DATA.mouse[MkbPresetKey.MOUSE_STICK_DECAY_STRENGTH];
|
|
||||||
const decay = 1 - clampedLength * clampedLength * decayStrength;
|
|
||||||
const minDecay = this.#CURRENT_PRESET_DATA.mouse[MkbPresetKey.MOUSE_STICK_DECAY_MIN];
|
|
||||||
const clampedDecay = Math.min(1 - minDecay, decay);
|
|
||||||
x *= clampedDecay;
|
|
||||||
y *= clampedDecay;
|
|
||||||
const deadzoneCounterweight = 20 * MkbHandler.DEFAULT_DEADZONE_COUNTERWEIGHT;
|
|
||||||
if (Math.abs(x) <= deadzoneCounterweight && Math.abs(y) <= deadzoneCounterweight) {
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
}
|
|
||||||
if (this.#allowStickDecaying) {
|
|
||||||
this.#updateStick(analog, x, y);
|
|
||||||
(x !== 0 || y !== 0) && requestAnimationFrame(this.#decayStick);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
#onMouseStopped = () => {
|
#onMouseStopped = () => {
|
||||||
this.#allowStickDecaying = true;
|
this.#detectMouseStoppedTimeout = null;
|
||||||
requestAnimationFrame(this.#decayStick);
|
const mouseMapTo = this.#CURRENT_PRESET_DATA.mouse[MkbPresetKey.MOUSE_MAP_TO];
|
||||||
|
const analog = mouseMapTo === MouseMapTo.LS ? GamepadStick.LEFT : GamepadStick.RIGHT;
|
||||||
|
this.#updateStick(analog, 0, 0);
|
||||||
};
|
};
|
||||||
#onMouseMoveEvent = (e) => {
|
handleMouseClick = (data) => {
|
||||||
|
if (!data || !data.key) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const buttonIndex = this.#CURRENT_PRESET_DATA.mapping[data.key.code];
|
||||||
|
if (typeof buttonIndex === "undefined") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.#pressButton(buttonIndex, data.pressed);
|
||||||
|
};
|
||||||
|
handleMouseMove = (data) => {
|
||||||
const mouseMapTo = this.#CURRENT_PRESET_DATA.mouse[MkbPresetKey.MOUSE_MAP_TO];
|
const mouseMapTo = this.#CURRENT_PRESET_DATA.mouse[MkbPresetKey.MOUSE_MAP_TO];
|
||||||
if (mouseMapTo === MouseMapTo.OFF) {
|
if (mouseMapTo === MouseMapTo.OFF) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.#allowStickDecaying = false;
|
|
||||||
this.#detectMouseStoppedTimeout && clearTimeout(this.#detectMouseStoppedTimeout);
|
this.#detectMouseStoppedTimeout && clearTimeout(this.#detectMouseStoppedTimeout);
|
||||||
this.#detectMouseStoppedTimeout = window.setTimeout(this.#onMouseStopped.bind(this), 10);
|
this.#detectMouseStoppedTimeout = window.setTimeout(this.#onMouseStopped.bind(this), 50);
|
||||||
const deltaX = e.movementX;
|
|
||||||
const deltaY = e.movementY;
|
|
||||||
const deadzoneCounterweight = this.#CURRENT_PRESET_DATA.mouse[MkbPresetKey.MOUSE_DEADZONE_COUNTERWEIGHT];
|
const deadzoneCounterweight = this.#CURRENT_PRESET_DATA.mouse[MkbPresetKey.MOUSE_DEADZONE_COUNTERWEIGHT];
|
||||||
let x = deltaX * this.#CURRENT_PRESET_DATA.mouse[MkbPresetKey.MOUSE_SENSITIVITY_X];
|
let x = data.movementX * this.#CURRENT_PRESET_DATA.mouse[MkbPresetKey.MOUSE_SENSITIVITY_X];
|
||||||
let y = deltaY * this.#CURRENT_PRESET_DATA.mouse[MkbPresetKey.MOUSE_SENSITIVITY_Y];
|
let y = data.movementY * this.#CURRENT_PRESET_DATA.mouse[MkbPresetKey.MOUSE_SENSITIVITY_Y];
|
||||||
let length = this.#vectorLength(x, y);
|
let length = this.#vectorLength(x, y);
|
||||||
if (length !== 0 && length < deadzoneCounterweight) {
|
if (length !== 0 && length < deadzoneCounterweight) {
|
||||||
x *= deadzoneCounterweight / length;
|
x *= deadzoneCounterweight / length;
|
||||||
@ -3059,16 +3186,28 @@ class MkbHandler {
|
|||||||
const analog = mouseMapTo === MouseMapTo.LS ? GamepadStick.LEFT : GamepadStick.RIGHT;
|
const analog = mouseMapTo === MouseMapTo.LS ? GamepadStick.LEFT : GamepadStick.RIGHT;
|
||||||
this.#updateStick(analog, x, y);
|
this.#updateStick(analog, x, y);
|
||||||
};
|
};
|
||||||
|
handleMouseWheel = (data) => {
|
||||||
|
if (!data || !data.key) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const buttonIndex = this.#CURRENT_PRESET_DATA.mapping[data.key.code];
|
||||||
|
if (typeof buttonIndex === "undefined") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.#prevWheelCode === null || this.#prevWheelCode === data.key.code) {
|
||||||
|
this.#wheelStoppedTimeout && clearTimeout(this.#wheelStoppedTimeout);
|
||||||
|
this.#pressButton(buttonIndex, true);
|
||||||
|
}
|
||||||
|
this.#wheelStoppedTimeout = window.setTimeout(() => {
|
||||||
|
this.#prevWheelCode = null;
|
||||||
|
this.#pressButton(buttonIndex, false);
|
||||||
|
}, 20);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
toggle = () => {
|
toggle = () => {
|
||||||
this.#enabled = !this.#enabled;
|
this.#enabled = !this.#enabled;
|
||||||
this.#enabled ? document.pointerLockElement && this.start() : this.stop();
|
|
||||||
Toast.show(t("mouse-and-keyboard"), t(this.#enabled ? "enabled" : "disabled"), { instant: true });
|
Toast.show(t("mouse-and-keyboard"), t(this.#enabled ? "enabled" : "disabled"), { instant: true });
|
||||||
if (this.#enabled) {
|
this.#mouseDataProvider?.toggle(this.#enabled);
|
||||||
!document.pointerLockElement && this.#waitForPointerLock(true);
|
|
||||||
} else {
|
|
||||||
this.#waitForPointerLock(false);
|
|
||||||
document.pointerLockElement && document.exitPointerLock();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
#getCurrentPreset = () => {
|
#getCurrentPreset = () => {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
@ -3084,38 +3223,25 @@ class MkbHandler {
|
|||||||
this.#resetGamepad();
|
this.#resetGamepad();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
#onPointerLockChange = () => {
|
waitForMouseData = (wait) => {
|
||||||
if (this.#enabled && !document.pointerLockElement) {
|
|
||||||
this.stop();
|
|
||||||
this.#waitForPointerLock(true);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
#onPointerLockError = (e) => {
|
|
||||||
console.log(e);
|
|
||||||
this.stop();
|
|
||||||
};
|
|
||||||
#onActivatePointerLock = () => {
|
|
||||||
if (!document.pointerLockElement) {
|
|
||||||
document.body.requestPointerLock();
|
|
||||||
}
|
|
||||||
this.#waitForPointerLock(false);
|
|
||||||
this.start();
|
|
||||||
};
|
|
||||||
#waitForPointerLock = (wait) => {
|
|
||||||
this.#$message && this.#$message.classList.toggle("bx-gone", !wait);
|
this.#$message && this.#$message.classList.toggle("bx-gone", !wait);
|
||||||
};
|
};
|
||||||
#onStreamMenuShown = () => {
|
#onStreamMenuShown = () => {
|
||||||
this.#enabled && this.#waitForPointerLock(false);
|
this.#enabled && this.waitForMouseData(false);
|
||||||
};
|
};
|
||||||
#onStreamMenuHidden = () => {
|
#onStreamMenuHidden = () => {
|
||||||
this.#enabled && this.#waitForPointerLock(true);
|
this.#enabled && this.waitForMouseData(true);
|
||||||
};
|
};
|
||||||
init = () => {
|
init = () => {
|
||||||
this.refreshPresetData();
|
this.refreshPresetData();
|
||||||
this.#enabled = true;
|
this.#enabled = true;
|
||||||
|
if (AppInterface) {
|
||||||
|
this.#mouseDataProvider = new WebSocketMouseDataProvider(this);
|
||||||
|
} else {
|
||||||
|
this.#mouseDataProvider = new PointerLockMouseDataProvider(this);
|
||||||
|
}
|
||||||
|
this.#mouseDataProvider.init();
|
||||||
window.addEventListener("keydown", this.#onKeyboardEvent);
|
window.addEventListener("keydown", this.#onKeyboardEvent);
|
||||||
document.addEventListener("pointerlockchange", this.#onPointerLockChange);
|
|
||||||
document.addEventListener("pointerlockerror", this.#onPointerLockError);
|
|
||||||
this.#$message = CE("div", { class: "bx-mkb-pointer-lock-msg bx-gone" }, createButton({
|
this.#$message = CE("div", { class: "bx-mkb-pointer-lock-msg bx-gone" }, createButton({
|
||||||
icon: BxIcon.MOUSE_SETTINGS,
|
icon: BxIcon.MOUSE_SETTINGS,
|
||||||
style: ButtonStyle.PRIMARY,
|
style: ButtonStyle.PRIMARY,
|
||||||
@ -3125,34 +3251,34 @@ class MkbHandler {
|
|||||||
showStreamSettings("mkb");
|
showStreamSettings("mkb");
|
||||||
}
|
}
|
||||||
}), CE("div", {}, CE("p", {}, t("mkb-click-to-activate")), CE("p", {}, t("press-key-to-toggle-mkb", { key: "F8" }))));
|
}), CE("div", {}, CE("p", {}, t("mkb-click-to-activate")), CE("p", {}, t("press-key-to-toggle-mkb", { key: "F8" }))));
|
||||||
this.#$message.addEventListener("click", this.#onActivatePointerLock);
|
this.#$message.addEventListener("click", this.start.bind(this));
|
||||||
document.documentElement.appendChild(this.#$message);
|
document.documentElement.appendChild(this.#$message);
|
||||||
window.addEventListener(BxEvent.STREAM_MENU_SHOWN, this.#onStreamMenuShown);
|
window.addEventListener(BxEvent.STREAM_MENU_SHOWN, this.#onStreamMenuShown);
|
||||||
window.addEventListener(BxEvent.STREAM_MENU_HIDDEN, this.#onStreamMenuHidden);
|
window.addEventListener(BxEvent.STREAM_MENU_HIDDEN, this.#onStreamMenuHidden);
|
||||||
this.#waitForPointerLock(true);
|
this.waitForMouseData(true);
|
||||||
};
|
};
|
||||||
destroy = () => {
|
destroy = () => {
|
||||||
this.#isPolling = false;
|
this.#isPolling = false;
|
||||||
this.#enabled = false;
|
this.#enabled = false;
|
||||||
this.stop();
|
this.stop();
|
||||||
this.#waitForPointerLock(false);
|
this.waitForMouseData(false);
|
||||||
document.pointerLockElement && document.exitPointerLock();
|
document.pointerLockElement && document.exitPointerLock();
|
||||||
window.removeEventListener("keydown", this.#onKeyboardEvent);
|
window.removeEventListener("keydown", this.#onKeyboardEvent);
|
||||||
document.removeEventListener("pointerlockchange", this.#onPointerLockChange);
|
this.#mouseDataProvider?.destroy();
|
||||||
document.removeEventListener("pointerlockerror", this.#onPointerLockError);
|
|
||||||
window.removeEventListener(BxEvent.STREAM_MENU_SHOWN, this.#onStreamMenuShown);
|
window.removeEventListener(BxEvent.STREAM_MENU_SHOWN, this.#onStreamMenuShown);
|
||||||
window.removeEventListener(BxEvent.STREAM_MENU_HIDDEN, this.#onStreamMenuHidden);
|
window.removeEventListener(BxEvent.STREAM_MENU_HIDDEN, this.#onStreamMenuHidden);
|
||||||
};
|
};
|
||||||
start = () => {
|
start = () => {
|
||||||
|
if (!this.#enabled) {
|
||||||
|
this.#enabled = true;
|
||||||
|
Toast.show(t("mouse-and-keyboard"), t("enabled"), { instant: true });
|
||||||
|
}
|
||||||
this.#isPolling = true;
|
this.#isPolling = true;
|
||||||
window.navigator.getGamepads = this.#patchedGetGamepads;
|
|
||||||
this.#resetGamepad();
|
this.#resetGamepad();
|
||||||
|
window.navigator.getGamepads = this.#patchedGetGamepads;
|
||||||
|
this.waitForMouseData(false);
|
||||||
window.addEventListener("keyup", this.#onKeyboardEvent);
|
window.addEventListener("keyup", this.#onKeyboardEvent);
|
||||||
window.addEventListener("mousemove", this.#onMouseMoveEvent);
|
this.#mouseDataProvider?.start();
|
||||||
window.addEventListener("mousedown", this.#onMouseEvent);
|
|
||||||
window.addEventListener("mouseup", this.#onMouseEvent);
|
|
||||||
window.addEventListener("wheel", this.#onWheelEvent);
|
|
||||||
window.addEventListener("contextmenu", this.#disableContextMenu);
|
|
||||||
const virtualGamepad = this.#getVirtualGamepad();
|
const virtualGamepad = this.#getVirtualGamepad();
|
||||||
virtualGamepad.connected = true;
|
virtualGamepad.connected = true;
|
||||||
virtualGamepad.timestamp = performance.now();
|
virtualGamepad.timestamp = performance.now();
|
||||||
@ -3162,6 +3288,7 @@ class MkbHandler {
|
|||||||
};
|
};
|
||||||
stop = () => {
|
stop = () => {
|
||||||
this.#isPolling = false;
|
this.#isPolling = false;
|
||||||
|
this.#resetGamepad();
|
||||||
const virtualGamepad = this.#getVirtualGamepad();
|
const virtualGamepad = this.#getVirtualGamepad();
|
||||||
virtualGamepad.connected = false;
|
virtualGamepad.connected = false;
|
||||||
virtualGamepad.timestamp = performance.now();
|
virtualGamepad.timestamp = performance.now();
|
||||||
@ -3169,18 +3296,14 @@ class MkbHandler {
|
|||||||
gamepad: virtualGamepad
|
gamepad: virtualGamepad
|
||||||
});
|
});
|
||||||
window.navigator.getGamepads = this.#nativeGetGamepads;
|
window.navigator.getGamepads = this.#nativeGetGamepads;
|
||||||
this.#resetGamepad();
|
|
||||||
window.removeEventListener("keyup", this.#onKeyboardEvent);
|
window.removeEventListener("keyup", this.#onKeyboardEvent);
|
||||||
window.removeEventListener("mousemove", this.#onMouseMoveEvent);
|
this.waitForMouseData(true);
|
||||||
window.removeEventListener("mousedown", this.#onMouseEvent);
|
this.#mouseDataProvider?.stop();
|
||||||
window.removeEventListener("mouseup", this.#onMouseEvent);
|
|
||||||
window.removeEventListener("wheel", this.#onWheelEvent);
|
|
||||||
window.removeEventListener("contextmenu", this.#disableContextMenu);
|
|
||||||
};
|
};
|
||||||
static setupEvents() {
|
static setupEvents() {
|
||||||
getPref(PrefKey.MKB_ENABLED) && !UserAgent.isMobile() && window.addEventListener(BxEvent.STREAM_PLAYING, () => {
|
getPref(PrefKey.MKB_ENABLED) && (AppInterface || !UserAgent.isMobile()) && window.addEventListener(BxEvent.STREAM_PLAYING, () => {
|
||||||
if (!STATES.currentStream.titleInfo?.details.hasMkbSupport) {
|
if (!STATES.currentStream.titleInfo?.details.hasMkbSupport) {
|
||||||
BxLogger.info(LOG_TAG, "Emulate MKB");
|
BxLogger.info(LOG_TAG2, "Emulate MKB");
|
||||||
MkbHandler.INSTANCE.init();
|
MkbHandler.INSTANCE.init();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -3623,7 +3746,7 @@ class ScreenshotAction extends BaseGameBarAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// src/modules/touch-controller.ts
|
// src/modules/touch-controller.ts
|
||||||
var LOG_TAG2 = "TouchController";
|
var LOG_TAG3 = "TouchController";
|
||||||
|
|
||||||
class TouchController {
|
class TouchController {
|
||||||
static #EVENT_SHOW_DEFAULT_CONTROLLER = new MessageEvent("message", {
|
static #EVENT_SHOW_DEFAULT_CONTROLLER = new MessageEvent("message", {
|
||||||
@ -3845,7 +3968,7 @@ class TouchController {
|
|||||||
STATES.currentStream.xboxTitleId = parseInt(json.titleid, 16).toString();
|
STATES.currentStream.xboxTitleId = parseInt(json.titleid, 16).toString();
|
||||||
}
|
}
|
||||||
} catch (e2) {
|
} catch (e2) {
|
||||||
BxLogger.error(LOG_TAG2, "Load custom layout", e2);
|
BxLogger.error(LOG_TAG3, "Load custom layout", e2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -5195,7 +5318,7 @@ function setupStreamUi() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// src/modules/remote-play.ts
|
// src/modules/remote-play.ts
|
||||||
var LOG_TAG3 = "RemotePlay";
|
var LOG_TAG4 = "RemotePlay";
|
||||||
var RemotePlayConsoleState;
|
var RemotePlayConsoleState;
|
||||||
(function(RemotePlayConsoleState2) {
|
(function(RemotePlayConsoleState2) {
|
||||||
RemotePlayConsoleState2["ON"] = "On";
|
RemotePlayConsoleState2["ON"] = "On";
|
||||||
@ -5261,7 +5384,7 @@ class RemotePlay {
|
|||||||
RemotePlay.#$content = CE("div", {}, t("getting-consoles-list"));
|
RemotePlay.#$content = CE("div", {}, t("getting-consoles-list"));
|
||||||
RemotePlay.#getXhomeToken(() => {
|
RemotePlay.#getXhomeToken(() => {
|
||||||
RemotePlay.#getConsolesList(() => {
|
RemotePlay.#getConsolesList(() => {
|
||||||
BxLogger.info(LOG_TAG3, "Consoles", RemotePlay.#CONSOLES);
|
BxLogger.info(LOG_TAG4, "Consoles", RemotePlay.#CONSOLES);
|
||||||
RemotePlay.#renderConsoles();
|
RemotePlay.#renderConsoles();
|
||||||
BxEvent.dispatch(window, BxEvent.REMOTE_PLAY_READY);
|
BxEvent.dispatch(window, BxEvent.REMOTE_PLAY_READY);
|
||||||
});
|
});
|
||||||
@ -7353,7 +7476,7 @@ var vibration_adjust_default = "if (!window.BX_ENABLE_CONTROLLER_VIBRATION) {\n
|
|||||||
|
|
||||||
// src/modules/patcher.ts
|
// src/modules/patcher.ts
|
||||||
var ENDING_CHUNKS_PATCH_NAME = "loadingEndingChunks";
|
var ENDING_CHUNKS_PATCH_NAME = "loadingEndingChunks";
|
||||||
var LOG_TAG4 = "Patcher";
|
var LOG_TAG5 = "Patcher";
|
||||||
var PATCHES = {
|
var PATCHES = {
|
||||||
disableAiTrack(str2) {
|
disableAiTrack(str2) {
|
||||||
const text = ".track=function(";
|
const text = ".track=function(";
|
||||||
@ -7538,7 +7661,7 @@ if (!!window.BX_REMOTE_PLAY_CONFIG) {
|
|||||||
if (!str2.includes(text)) {
|
if (!str2.includes(text)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
BxLogger.info(LOG_TAG4, "Remaining patches:", PATCH_ORDERS);
|
BxLogger.info(LOG_TAG5, "Remaining patches:", PATCH_ORDERS);
|
||||||
PATCH_ORDERS = PATCH_ORDERS.concat(PLAYING_PATCH_ORDERS);
|
PATCH_ORDERS = PATCH_ORDERS.concat(PLAYING_PATCH_ORDERS);
|
||||||
return str2;
|
return str2;
|
||||||
},
|
},
|
||||||
@ -7815,7 +7938,7 @@ class Patcher {
|
|||||||
}
|
}
|
||||||
PatcherCache.init();
|
PatcherCache.init();
|
||||||
if (typeof arguments[1] === "function") {
|
if (typeof arguments[1] === "function") {
|
||||||
BxLogger.info(LOG_TAG4, "Restored Function.prototype.bind()");
|
BxLogger.info(LOG_TAG5, "Restored Function.prototype.bind()");
|
||||||
Function.prototype.bind = nativeBind;
|
Function.prototype.bind = nativeBind;
|
||||||
}
|
}
|
||||||
const orgFunc = this;
|
const orgFunc = this;
|
||||||
@ -7859,7 +7982,7 @@ class Patcher {
|
|||||||
}
|
}
|
||||||
modified = true;
|
modified = true;
|
||||||
str = patchedStr;
|
str = patchedStr;
|
||||||
BxLogger.info(LOG_TAG4, `✅ ${patchName}`);
|
BxLogger.info(LOG_TAG5, `✅ ${patchName}`);
|
||||||
appliedPatches.push(patchName);
|
appliedPatches.push(patchName);
|
||||||
patchesToCheck.splice(patchIndex, 1);
|
patchesToCheck.splice(patchIndex, 1);
|
||||||
patchIndex--;
|
patchIndex--;
|
||||||
@ -7901,11 +8024,11 @@ class PatcherCache {
|
|||||||
const storedSig = window.localStorage.getItem(PatcherCache.#KEY_SIGNATURE) || 0;
|
const storedSig = window.localStorage.getItem(PatcherCache.#KEY_SIGNATURE) || 0;
|
||||||
const currentSig = PatcherCache.#getSignature();
|
const currentSig = PatcherCache.#getSignature();
|
||||||
if (currentSig !== parseInt(storedSig)) {
|
if (currentSig !== parseInt(storedSig)) {
|
||||||
BxLogger.warning(LOG_TAG4, "Signature changed");
|
BxLogger.warning(LOG_TAG5, "Signature changed");
|
||||||
window.localStorage.setItem(PatcherCache.#KEY_SIGNATURE, currentSig.toString());
|
window.localStorage.setItem(PatcherCache.#KEY_SIGNATURE, currentSig.toString());
|
||||||
PatcherCache.clear();
|
PatcherCache.clear();
|
||||||
} else {
|
} else {
|
||||||
BxLogger.info(LOG_TAG4, "Signature unchanged");
|
BxLogger.info(LOG_TAG5, "Signature unchanged");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static #cleanupPatches(patches) {
|
static #cleanupPatches(patches) {
|
||||||
@ -7945,7 +8068,7 @@ class PatcherCache {
|
|||||||
PatcherCache.#isInitialized = true;
|
PatcherCache.#isInitialized = true;
|
||||||
PatcherCache.checkSignature();
|
PatcherCache.checkSignature();
|
||||||
PatcherCache.#CACHE = JSON.parse(window.localStorage.getItem(PatcherCache.#KEY_CACHE) || "{}");
|
PatcherCache.#CACHE = JSON.parse(window.localStorage.getItem(PatcherCache.#KEY_CACHE) || "{}");
|
||||||
BxLogger.info(LOG_TAG4, PatcherCache.#CACHE);
|
BxLogger.info(LOG_TAG5, PatcherCache.#CACHE);
|
||||||
if (window.location.pathname.includes("/play/")) {
|
if (window.location.pathname.includes("/play/")) {
|
||||||
PATCH_ORDERS.push(...PLAYING_PATCH_ORDERS);
|
PATCH_ORDERS.push(...PLAYING_PATCH_ORDERS);
|
||||||
} else {
|
} else {
|
||||||
@ -7953,8 +8076,8 @@ class PatcherCache {
|
|||||||
}
|
}
|
||||||
PATCH_ORDERS = PatcherCache.#cleanupPatches(PATCH_ORDERS);
|
PATCH_ORDERS = PatcherCache.#cleanupPatches(PATCH_ORDERS);
|
||||||
PLAYING_PATCH_ORDERS = PatcherCache.#cleanupPatches(PLAYING_PATCH_ORDERS);
|
PLAYING_PATCH_ORDERS = PatcherCache.#cleanupPatches(PLAYING_PATCH_ORDERS);
|
||||||
BxLogger.info(LOG_TAG4, PATCH_ORDERS.slice(0));
|
BxLogger.info(LOG_TAG5, PATCH_ORDERS.slice(0));
|
||||||
BxLogger.info(LOG_TAG4, PLAYING_PATCH_ORDERS.slice(0));
|
BxLogger.info(LOG_TAG5, PLAYING_PATCH_ORDERS.slice(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8360,7 +8483,7 @@ function overridePreloadState() {
|
|||||||
try {
|
try {
|
||||||
state.appContext.requestInfo.userAgent = window.navigator.userAgent;
|
state.appContext.requestInfo.userAgent = window.navigator.userAgent;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
BxLogger.error(LOG_TAG5, e);
|
BxLogger.error(LOG_TAG6, e);
|
||||||
}
|
}
|
||||||
if (STATES.hasTouchSupport) {
|
if (STATES.hasTouchSupport) {
|
||||||
try {
|
try {
|
||||||
@ -8372,14 +8495,14 @@ function overridePreloadState() {
|
|||||||
sigls[GamePassCloudGallery.TOUCH]?.data.products.push(...customList);
|
sigls[GamePassCloudGallery.TOUCH]?.data.products.push(...customList);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
BxLogger.error(LOG_TAG5, e);
|
BxLogger.error(LOG_TAG6, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (getPref(PrefKey.UI_HOME_CONTEXT_MENU_DISABLED)) {
|
if (getPref(PrefKey.UI_HOME_CONTEXT_MENU_DISABLED)) {
|
||||||
try {
|
try {
|
||||||
state.experiments.experimentationInfo.data.treatments.EnableHomeContextMenu = false;
|
state.experiments.experimentationInfo.data.treatments.EnableHomeContextMenu = false;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
BxLogger.error(LOG_TAG5, e);
|
BxLogger.error(LOG_TAG6, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_state = state;
|
_state = state;
|
||||||
@ -8387,7 +8510,7 @@ function overridePreloadState() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
var LOG_TAG5 = "PreloadState";
|
var LOG_TAG6 = "PreloadState";
|
||||||
|
|
||||||
// src/utils/sdp.ts
|
// src/utils/sdp.ts
|
||||||
function patchSdpBitrate(sdp, video, audio) {
|
function patchSdpBitrate(sdp, video, audio) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user