diff --git a/src/index.ts b/src/index.ts index d0de5ea..3a10a70 100644 --- a/src/index.ts +++ b/src/index.ts @@ -149,12 +149,17 @@ window.addEventListener(BxEvent.STREAM_PLAYING, e => { STATES.isPlaying = true; injectStreamMenuButtons(); - GameBar.reset(); - GameBar.enable(); - GameBar.showBar(); + if (getPref(PrefKey.GAME_BAR_ENABLED)) { + GameBar.reset(); + GameBar.enable(); + GameBar.showBar(); + } + + if (STATES.currentStream.$screenshotCanvas) { + STATES.currentStream.$screenshotCanvas.width = $video.videoWidth; + STATES.currentStream.$screenshotCanvas.height = $video.videoHeight; + } - STATES.currentStream.$screenshotCanvas!.width = $video.videoWidth; - STATES.currentStream.$screenshotCanvas!.height = $video.videoHeight; updateVideoPlayerCss(); }); diff --git a/src/modules/ui/global-settings.ts b/src/modules/ui/global-settings.ts index d805b25..651759e 100644 --- a/src/modules/ui/global-settings.ts +++ b/src/modules/ui/global-settings.ts @@ -27,12 +27,16 @@ const SETTINGS_UI = { items: [ PrefKey.STREAM_TARGET_RESOLUTION, PrefKey.STREAM_CODEC_PROFILE, - PrefKey.GAME_FORTNITE_FORCE_CONSOLE, + + PrefKey.GAME_BAR_ENABLED, + PrefKey.AUDIO_MIC_ON_PLAYING, PrefKey.STREAM_DISABLE_FEEDBACK_DIALOG, PrefKey.SCREENSHOT_APPLY_FILTERS, + PrefKey.GAME_FORTNITE_FORCE_CONSOLE, + PrefKey.AUDIO_ENABLE_VOLUME_CONTROL, PrefKey.STREAM_COMBINE_SOURCES, ], diff --git a/src/modules/ui/ui.ts b/src/modules/ui/ui.ts index 49218a7..6b85e06 100644 --- a/src/modules/ui/ui.ts +++ b/src/modules/ui/ui.ts @@ -427,8 +427,8 @@ export function updateVideoPlayerCss() { } // Apply video filters to screenshots - if (getPref(PrefKey.SCREENSHOT_APPLY_FILTERS)) { - STATES.currentStream.$screenshotCanvas!.getContext('2d')!.filter = filters; + if (getPref(PrefKey.SCREENSHOT_APPLY_FILTERS) && STATES.currentStream.$screenshotCanvas) { + STATES.currentStream.$screenshotCanvas.getContext('2d')!.filter = filters; } const PREF_RATIO = getPref(PrefKey.VIDEO_RATIO); @@ -475,7 +475,7 @@ export function setupStreamUi() { setupQuickSettingsBar(); StreamStats.render(); - GameBar.setup(); + getPref(PrefKey.GAME_BAR_ENABLED) && GameBar.setup(); } updateVideoPlayerCss(); diff --git a/src/utils/bx-exposed.ts b/src/utils/bx-exposed.ts index 29a2f04..4fcf9aa 100644 --- a/src/utils/bx-exposed.ts +++ b/src/utils/bx-exposed.ts @@ -14,7 +14,12 @@ enum InputType { } export const BxExposed = { + // Enable/disable Game Bar when playing/pausing onPollingModeChanged: (mode: 'All' | 'None') => { + if (!getPref(PrefKey.GAME_BAR_ENABLED)) { + return; + } + if (!STATES.isPlaying) { GameBar.disable(); return; diff --git a/src/utils/preferences.ts b/src/utils/preferences.ts index 4e430b4..6c6f4bf 100644 --- a/src/utils/preferences.ts +++ b/src/utils/preferences.ts @@ -32,6 +32,8 @@ export enum PrefKey { STREAM_DISABLE_FEEDBACK_DIALOG = 'stream_disable_feedback_dialog', + GAME_BAR_ENABLED = 'game_bar_enabled', + LOCAL_CO_OP_ENABLED = 'local_co_op_enabled', // LOCAL_CO_OP_SEPARATE_TOUCH_CONTROLLER = 'local_co_op_separate_touch_controller', @@ -312,6 +314,11 @@ export class Preferences { default: false, }, + [PrefKey.GAME_BAR_ENABLED]: { + label: t('enable-game-bar'), + default: true, + }, + [PrefKey.LOCAL_CO_OP_ENABLED]: { label: t('enable-local-co-op-support'), default: false, @@ -437,6 +444,7 @@ export class Preferences { }, [PrefKey.USER_AGENT_PROFILE]: { label: t('user-agent-profile'), + note: '⚠️ ' + t('user-agent-note'), default: 'default', options: { [UserAgentProfile.DEFAULT]: t('default'),