import type { BlockFeature, CodecProfile, DeviceVibrationMode, GameBarPosition, LoadingScreenRocket, NativeMkbMode, StreamPlayerType, StreamResolution, StreamStat, StreamStatPosition, StreamVideoProcessing, TouchControllerMode, TouchControllerStyleCustom, TouchControllerStyleStandard, UiLayout, UiSection, VideoPosition, VideoPowerPreference, VideoRatio } from "./pref-values" export const enum StorageKey { GLOBAL = 'BetterXcloud', LOCALE = 'BetterXcloud.Locale', LOCALE_TRANSLATIONS = 'BetterXcloud.Locale.Translations', PATCHES_CACHE = 'BetterXcloud.Patches.Cache', PATCHES_SIGNATURE = 'BetterXcloud.Patches.Cache.Signature', USER_AGENT = 'BetterXcloud.UserAgent', GH_PAGES_COMMIT_HASH = 'BetterXcloud.GhPages.CommitHash', LIST_CUSTOM_TOUCH_LAYOUTS = 'BetterXcloud.GhPages.CustomTouchLayouts', LIST_FORCE_NATIVE_MKB = 'BetterXcloud.GhPages.ForceNativeMkb', } export const enum PrefKey { VERSION_LAST_CHECK = 'version.lastCheck', VERSION_LATEST = 'version.latest', VERSION_CURRENT = 'version.current', SCRIPT_LOCALE = 'bx.locale', SERVER_REGION = 'server.region', SERVER_BYPASS_RESTRICTION = 'server.bypassRestriction', SERVER_PREFER_IPV6 = 'server.ipv6.prefer', STREAM_PREFERRED_LOCALE = 'stream.locale', STREAM_RESOLUTION = 'stream.video.resolution', STREAM_CODEC_PROFILE = 'stream.video.codecProfile', STREAM_MAX_VIDEO_BITRATE = 'stream.video.maxBitrate', STREAM_COMBINE_SOURCES = 'stream.video.combineAudio', USER_AGENT_PROFILE = 'userAgent.profile', TOUCH_CONTROLLER_MODE = 'touchController.mode', TOUCH_CONTROLLER_AUTO_OFF = 'touchController.autoOff', TOUCH_CONTROLLER_DEFAULT_OPACITY = 'touchController.opacity.default', TOUCH_CONTROLLER_STYLE_STANDARD = 'touchController.style.standard', TOUCH_CONTROLLER_STYLE_CUSTOM = 'touchController.style.custom', GAME_BAR_POSITION = 'gameBar.position', LOCAL_CO_OP_ENABLED = 'localCoOp.enabled', DEVICE_VIBRATION_MODE = 'deviceVibration.mode', DEVICE_VIBRATION_INTENSITY = 'deviceVibration.intensity', CONTROLLER_POLLING_RATE = 'controller.pollingRate', NATIVE_MKB_MODE = 'nativeMkb.mode', NATIVE_MKB_FORCED_GAMES = 'nativeMkb.forcedGames', NATIVE_MKB_SCROLL_HORIZONTAL_SENSITIVITY = 'nativeMkb.scroll.sensitivityX', NATIVE_MKB_SCROLL_VERTICAL_SENSITIVITY = 'nativeMkb.scroll.sensitivityY', MKB_ENABLED = 'mkb.enabled', MKB_HIDE_IDLE_CURSOR = 'mkb.cursor.hideIdle', MKB_P1_MAPPING_PRESET_ID = 'mkb.p1.preset.mappingId', MKB_P1_SLOT = 'mkb.p1.slot', MKB_P2_MAPPING_PRESET_ID = 'mkb.p2.preset.mappingId', MKB_P2_SLOT = 'mkb.p2.slot', KEYBOARD_SHORTCUTS_IN_GAME_PRESET_ID = 'keyboardShortcuts.preset.inGameId', SCREENSHOT_APPLY_FILTERS = 'screenshot.applyFilters', BLOCK_TRACKING = 'block.tracking', BLOCK_FEATURES = 'block.features', LOADING_SCREEN_GAME_ART = 'loadingScreen.gameArt.show', LOADING_SCREEN_SHOW_WAIT_TIME = 'loadingScreen.waitTime.show', LOADING_SCREEN_ROCKET = 'loadingScreen.rocket', UI_CONTROLLER_FRIENDLY = 'ui.controllerFriendly', UI_LAYOUT = 'ui.layout', UI_SCROLLBAR_HIDE = 'ui.hideScrollbar', UI_HIDE_SECTIONS = 'ui.hideSections', UI_GAME_CARD_SHOW_WAIT_TIME = 'ui.gameCard.waitTime.show', UI_SIMPLIFY_STREAM_MENU = 'ui.streamMenu.simplify', UI_DISABLE_FEEDBACK_DIALOG = 'ui.feedbackDialog.disabled', UI_CONTROLLER_SHOW_STATUS = 'ui.controllerStatus.show', UI_SKIP_SPLASH_VIDEO = 'ui.splashVideo.skip', UI_HIDE_SYSTEM_MENU_ICON = 'ui.systemMenu.hideHandle', UI_REDUCE_ANIMATIONS = 'ui.reduceAnimations', VIDEO_PLAYER_TYPE = 'video.player.type', VIDEO_POWER_PREFERENCE = 'video.player.powerPreference', VIDEO_PROCESSING = 'video.processing', VIDEO_SHARPNESS = 'video.processing.sharpness', VIDEO_MAX_FPS = 'video.maxFps', VIDEO_RATIO = 'video.ratio', VIDEO_BRIGHTNESS = 'video.brightness', VIDEO_CONTRAST = 'video.contrast', VIDEO_SATURATION = 'video.saturation', VIDEO_POSITION = 'video.position', AUDIO_MIC_ON_PLAYING = 'audio.mic.onPlaying', AUDIO_VOLUME_CONTROL_ENABLED = 'audio.volume.booster.enabled', AUDIO_VOLUME = 'audio.volume', STATS_ITEMS = 'stats.items', STATS_SHOW_WHEN_PLAYING = 'stats.showWhenPlaying', STATS_QUICK_GLANCE_ENABLED = 'stats.quickGlance.enabled', STATS_POSITION = 'stats.position', STATS_TEXT_SIZE = 'stats.textSize', STATS_OPACITY_ALL = 'stats.opacity.all', STATS_OPACITY_BACKGROUND = 'stats.opacity.background', STATS_CONDITIONAL_FORMATTING = 'stats.colors', REMOTE_PLAY_ENABLED = 'xhome.enabled', REMOTE_PLAY_STREAM_RESOLUTION = 'xhome.video.resolution', GAME_FORTNITE_FORCE_CONSOLE = 'game.fortnite.forceConsole', } export type PrefTypeMap = { [PrefKey.AUDIO_MIC_ON_PLAYING]: boolean, [PrefKey.AUDIO_VOLUME_CONTROL_ENABLED]: boolean, [PrefKey.AUDIO_VOLUME]: number, [PrefKey.BLOCK_FEATURES]: BlockFeature[], [PrefKey.BLOCK_TRACKING]: boolean, [PrefKey.CONTROLLER_POLLING_RATE]: number, [PrefKey.DEVICE_VIBRATION_INTENSITY]: number, [PrefKey.DEVICE_VIBRATION_MODE]: DeviceVibrationMode, [PrefKey.GAME_BAR_POSITION]: GameBarPosition, [PrefKey.GAME_FORTNITE_FORCE_CONSOLE]: boolean, [PrefKey.KEYBOARD_SHORTCUTS_IN_GAME_PRESET_ID]: number, [PrefKey.LOADING_SCREEN_GAME_ART]: boolean, [PrefKey.LOADING_SCREEN_ROCKET]: LoadingScreenRocket, [PrefKey.LOADING_SCREEN_SHOW_WAIT_TIME]: boolean, [PrefKey.LOCAL_CO_OP_ENABLED]: boolean, [PrefKey.MKB_ENABLED]: boolean, [PrefKey.MKB_HIDE_IDLE_CURSOR]: boolean, [PrefKey.MKB_P1_MAPPING_PRESET_ID]: number, [PrefKey.MKB_P1_SLOT]: number, [PrefKey.NATIVE_MKB_FORCED_GAMES]: string[], [PrefKey.NATIVE_MKB_MODE]: NativeMkbMode, [PrefKey.NATIVE_MKB_SCROLL_HORIZONTAL_SENSITIVITY]: number, [PrefKey.NATIVE_MKB_SCROLL_VERTICAL_SENSITIVITY]: number, [PrefKey.REMOTE_PLAY_ENABLED]: boolean, [PrefKey.REMOTE_PLAY_STREAM_RESOLUTION]: StreamResolution, [PrefKey.SCREENSHOT_APPLY_FILTERS]: boolean, [PrefKey.SERVER_BYPASS_RESTRICTION]: string, [PrefKey.SERVER_PREFER_IPV6]: boolean, [PrefKey.SERVER_REGION]: string, [PrefKey.STATS_CONDITIONAL_FORMATTING]: boolean, [PrefKey.STATS_ITEMS]: StreamStat[], [PrefKey.STATS_OPACITY_ALL]: number, [PrefKey.STATS_OPACITY_BACKGROUND]: number, [PrefKey.STATS_POSITION]: StreamStatPosition, [PrefKey.STATS_QUICK_GLANCE_ENABLED]: boolean, [PrefKey.STATS_SHOW_WHEN_PLAYING]: boolean, [PrefKey.STATS_TEXT_SIZE]: string, [PrefKey.STREAM_CODEC_PROFILE]: CodecProfile, [PrefKey.STREAM_COMBINE_SOURCES]: boolean, [PrefKey.STREAM_MAX_VIDEO_BITRATE]: number, [PrefKey.STREAM_PREFERRED_LOCALE]: StreamPreferredLocale, [PrefKey.STREAM_RESOLUTION]: StreamResolution, [PrefKey.TOUCH_CONTROLLER_AUTO_OFF]: boolean, [PrefKey.TOUCH_CONTROLLER_DEFAULT_OPACITY]: number, [PrefKey.TOUCH_CONTROLLER_MODE]: TouchControllerMode, [PrefKey.TOUCH_CONTROLLER_STYLE_CUSTOM]: TouchControllerStyleCustom, [PrefKey.TOUCH_CONTROLLER_STYLE_STANDARD]: TouchControllerStyleStandard, [PrefKey.UI_CONTROLLER_FRIENDLY]: boolean, [PrefKey.UI_CONTROLLER_SHOW_STATUS]: boolean, [PrefKey.UI_DISABLE_FEEDBACK_DIALOG]: boolean, [PrefKey.UI_GAME_CARD_SHOW_WAIT_TIME]: boolean, [PrefKey.UI_HIDE_SECTIONS]: UiSection[], [PrefKey.UI_HIDE_SYSTEM_MENU_ICON]: boolean, [PrefKey.UI_LAYOUT]: UiLayout, [PrefKey.UI_REDUCE_ANIMATIONS]: boolean, [PrefKey.UI_SCROLLBAR_HIDE]: boolean, [PrefKey.UI_SIMPLIFY_STREAM_MENU]: boolean, [PrefKey.UI_SKIP_SPLASH_VIDEO]: boolean, [PrefKey.VERSION_CURRENT]: string, [PrefKey.VERSION_LAST_CHECK]: number, [PrefKey.VERSION_LATEST]: string, [PrefKey.VIDEO_BRIGHTNESS]: number, [PrefKey.VIDEO_CONTRAST]: number, [PrefKey.VIDEO_MAX_FPS]: number, [PrefKey.VIDEO_PLAYER_TYPE]: StreamPlayerType, [PrefKey.VIDEO_POSITION]: VideoPosition, [PrefKey.VIDEO_POWER_PREFERENCE]: VideoPowerPreference, [PrefKey.VIDEO_PROCESSING]: StreamVideoProcessing, [PrefKey.VIDEO_RATIO]: VideoRatio, [PrefKey.VIDEO_SATURATION]: number, [PrefKey.VIDEO_SHARPNESS]: number, }