[feat/663] moved to advanced settings section + finalisations + old comments

This commit is contained in:
LiamillionSS
2024-11-23 08:14:52 +11:00
parent 4f42b3ffcf
commit 3741558ffb
19 changed files with 98 additions and 37 deletions
+7 -3
View File
@@ -41,7 +41,9 @@
"advanced-launch": {
"button": "Erweiterter Start",
"placeholder": "Weitere Argumente, bspw: --revert; --nowait"
}
},
"skipvr": "SteamVR überspringen",
"skipvr-description": "Verhindert, dass SteamVR automatisch mit Beat Saber geöffnet wird. Aktivieren Sie dies, wenn Sie eine andere VR-Laufzeit wie WiVRn oder Monado verwenden, mit der SteamVR interferieren könnte."
},
"maps": {
"search-bar": {
@@ -427,11 +429,13 @@
"success": {
"titles": {
"BS_LAUNCHING": "Starte... 🚀",
"STEAM_LAUNCHING": "Steam startet!"
"STEAM_LAUNCHING": "Steam startet!",
"SKIPPING_STEAM_LAUNCH": "Steam-Start überspringen"
},
"msg": {
"BS_LAUNCHING": "Vergiss nicht, dich aufzuwärmen 😉",
"STEAM_LAUNCHING": "Beat Saber wird automatisch nach Steam gestartet."
"STEAM_LAUNCHING": "Beat Saber wird automatisch nach Steam gestartet.",
"SKIPPING_STEAM_LAUNCH": "Ich hoffe, du weißt, was du tust :)"
}
},
"errors": {
+9 -5
View File
@@ -41,7 +41,9 @@
"advanced-launch": {
"button": "Advanced launch",
"placeholder": "Additional arguments ex: --revert; --nowait"
}
},
"skipvr": "Skip SteamVR",
"skipvr-description": "Stops SteamVR from opening automatically with Beat Saber, enable if you are using a different VR runtime like WiVRn or Monado that SteamVR may interfere with."
},
"maps": {
"search-bar": {
@@ -242,7 +244,7 @@
"confirm-btn": "Yes I'm sure"
},
"error-notification": {
"message": "An error occur, unable to disable hardware acceleration."
"message": "An error occured, unable to disable hardware acceleration."
}
},
"use-symlinks": {
@@ -254,7 +256,7 @@
"confirm-btn": "Yes I'm sure"
},
"error-notification": {
"message": "An error occur, unable to change symlinks settings."
"message": "An error occured, unable to change symlinks settings."
}
}
}
@@ -427,11 +429,13 @@
"success": {
"titles": {
"BS_LAUNCHING": "Launching...🚀",
"STEAM_LAUNCHING": "Steam is launching!"
"STEAM_LAUNCHING": "Steam is launching!",
"SKIPPING_STEAM_LAUNCH": "Skipping Steam launch"
},
"msg": {
"BS_LAUNCHING": "Don't forget to warm up 😉",
"STEAM_LAUNCHING": "Beat Saber will automatically launch after Steam."
"STEAM_LAUNCHING": "Beat Saber will automatically launch after Steam.",
"SKIPPING_STEAM_LAUNCH": "I hope you know what you're doing :)"
}
},
"errors": {
+7 -3
View File
@@ -51,7 +51,9 @@
"export-maps": "Exportar mapas",
"delete-maps": "Borrar mapas",
"delete-duplicate-maps": "Borrar duplicados"
}
},
"skipvr": "Saltar SteamVR",
"skipvr-description": "Evita que SteamVR se abra automáticamente con Beat Saber, habilita esto si estás usando un runtime de VR diferente como WiVRn o Monado que SteamVR podría interferir."
},
"tabs": {
"maps": {
@@ -427,11 +429,13 @@
"success": {
"titles": {
"BS_LAUNCHING": "Lanzamiento...🚀",
"STEAM_LAUNCHING": "¡Steam se está iniciando!"
"STEAM_LAUNCHING": "¡Steam se está iniciando!",
"SKIPPING_STEAM_LAUNCH": "Saltando el lanzamiento de Steam"
},
"msg": {
"BS_LAUNCHING": "No olvides calentar 😉",
"STEAM_LAUNCHING": "Beat Saber se iniciará automáticamente después de Steam."
"STEAM_LAUNCHING": "Beat Saber se iniciará automáticamente después de Steam.",
"SKIPPING_STEAM_LAUNCH": "Espero que sepas lo que estás haciendo :)"
}
},
"errors": {
+7 -3
View File
@@ -41,7 +41,9 @@
"advanced-launch": {
"button": "Lancement avancé",
"placeholder": "Arguments supplémentaires ex: --revert; --nowait"
}
},
"skipvr": "Ignorer SteamVR",
"skipvr-description": "Empêche SteamVR de s'ouvrir automatiquement avec Beat Saber, activez-le si vous utilisez un autre runtime VR comme WiVRn ou Monado avec lequel SteamVR pourrait interférer."
},
"maps": {
"search-bar": {
@@ -427,11 +429,13 @@
"success": {
"titles": {
"BS_LAUNCHING": "Lancement...🚀",
"STEAM_LAUNCHING": "Steam se lance !"
"STEAM_LAUNCHING": "Steam se lance !",
"SKIPPING_STEAM_LAUNCH": "Sauter le lancement de Steam"
},
"msg": {
"BS_LAUNCHING": "N'oublie pas de t'échauffer 😉",
"STEAM_LAUNCHING": "Beat Saber se lancera automatiquement après Steam."
"STEAM_LAUNCHING": "Beat Saber se lancera automatiquement après Steam.",
"SKIPPING_STEAM_LAUNCH": "J'espère que vous savez ce que vous faites :)"
}
},
"errors": {
+7 -3
View File
@@ -41,7 +41,9 @@
"advanced-launch": {
"button": "高度な起動",
"placeholder": "追加引数 例:--revert; --nowait"
}
},
"skipvr": "SteamVRをスキップ",
"skipvr-description": "Beat Saberと一緒にSteamVRが自動的に開くのを防ぎます。SteamVRが干渉する可能性のあるWiVRnやMonadoなど、別のVRランタイムを使用している場合は有効にしてください。"
},
"maps": {
"search-bar": {
@@ -427,11 +429,13 @@
"success": {
"titles": {
"BS_LAUNCHING": "起動中...🚀",
"STEAM_LAUNCHING": "Steamの起動を確認しました!"
"STEAM_LAUNCHING": "Steamの起動を確認しました!",
"SKIPPING_STEAM_LAUNCH": "Steamの起動をスキップ"
},
"msg": {
"BS_LAUNCHING": "ウォームアップを忘れずに 😉",
"STEAM_LAUNCHING": "Beat SaberはSteamの起動後に自動的に起動します。"
"STEAM_LAUNCHING": "Beat SaberはSteamの起動後に自動的に起動します。",
"SKIPPING_STEAM_LAUNCH": "あなたが何をしているのか分かっていることを願っています :)"
}
},
"errors": {
+7 -3
View File
@@ -41,7 +41,9 @@
"advanced-launch": {
"button": "고급 실행",
"placeholder": "추가 인수 예: --revert; --nowait"
}
},
"skipvr": "Steam 실행 건너뛰기",
"skipvr-description": "Beat Saber와 함께 SteamVR이 자동으로 열리는 것을 방지합니다. SteamVR이 간섭할 수 있는 WiVRn 또는 Monado와 같은 다른 VR 런타임을 사용하는 경우 활성화하세요."
},
"maps": {
"search-bar": {
@@ -427,11 +429,13 @@
"success": {
"titles": {
"BS_LAUNCHING": "실행 중...🚀",
"STEAM_LAUNCHING": "Steam 실행 확인 완료!"
"STEAM_LAUNCHING": "Steam 실행 확인 완료!",
"SKIPPING_STEAM_LAUNCH": "Steam 실행 건너뛰기"
},
"msg": {
"BS_LAUNCHING": "워밍업을 잊지 마세요 😉",
"STEAM_LAUNCHING": "Beat Saber는 Steam 실행 후 자동으로 시작됩니다."
"STEAM_LAUNCHING": "Beat Saber는 Steam 실행 후 자동으로 시작됩니다.",
"SKIPPING_STEAM_LAUNCH": "신이 무엇을 하고 있는지 알고 있기를 바랍니다 :)"
}
},
"errors": {
+7 -3
View File
@@ -41,7 +41,9 @@
"advanced-launch": {
"button": "Расширенный запуск",
"placeholder": "Параметры запуска, например: --revert; --nowait"
}
},
"skipvr": "Пропустить SteamVR",
"skipvr-description": "Предотвращает автоматическое открытие SteamVR с Beat Saber, включите, если вы используете другую VR-среду, такую как WiVRn или Monado, с которой SteamVR может мешать."
},
"maps": {
"search-bar": {
@@ -427,11 +429,13 @@
"success": {
"titles": {
"BS_LAUNCHING": "Запуск...🚀",
"STEAM_LAUNCHING": "Steam запускается!"
"STEAM_LAUNCHING": "Steam запускается!",
"SKIPPING_STEAM_LAUNCH": "Пропуск запуска Steam"
},
"msg": {
"BS_LAUNCHING": "Не забудьте разогреться 😉",
"STEAM_LAUNCHING": "Beat Saber запустится сам после Steam."
"STEAM_LAUNCHING": "Beat Saber запустится сам после Steam.",
"SKIPPING_STEAM_LAUNCH": "Надеюсь, вы знаете, что делаете :)"
}
},
"errors": {
+7 -3
View File
@@ -41,7 +41,9 @@
"advanced-launch": {
"button": "高級啟動",
"placeholder": "額外啟動參數,例如: --revert; --nowait"
}
},
"skipvr": "跳過 SteamVR",
"skipvr-description": "防止 SteamVR 與 Beat Saber 自動打開,如果您使用的是其他 VR 執行時,如 WiVRn 或 Monado,SteamVR 可能會干擾,請啟用此選項。"
},
"maps": {
"search-bar": {
@@ -427,11 +429,13 @@
"success": {
"titles": {
"BS_LAUNCHING": "啟動中...🚀",
"STEAM_LAUNCHING": "Steam 正在啟動!"
"STEAM_LAUNCHING": "Steam 正在啟動!",
"SKIPPING_STEAM_LAUNCH": "跳過 Steam 啟動"
},
"msg": {
"BS_LAUNCHING": "別忘了熱身哦 😉",
"STEAM_LAUNCHING": "Beat Saber 會在 Steam 啟動後自動啟動。"
"STEAM_LAUNCHING": "Beat Saber 會在 Steam 啟動後自動啟動。",
"SKIPPING_STEAM_LAUNCH": "希望你知道自己在做什麼 :)"
}
},
"errors": {
+7 -3
View File
@@ -41,7 +41,9 @@
"advanced-launch": {
"button": "高级启动",
"placeholder": "额外启动参数,例如: --revert; --nowait"
}
},
"skipvr": "跳过 SteamVR",
"skipvr-description": "防止 SteamVR 与 Beat Saber 自动打开,如果您使用的是其他 VR 运行时,如 WiVRn 或 Monado,SteamVR 可能会干扰,请启用此选项。"
},
"maps": {
"search-bar": {
@@ -427,11 +429,13 @@
"success": {
"titles": {
"BS_LAUNCHING": "启动中...🚀",
"STEAM_LAUNCHING": "Steam 正在启动!"
"STEAM_LAUNCHING": "Steam 正在启动!",
"SKIPPING_STEAM_LAUNCH": "跳过 Steam 启动"
},
"msg": {
"BS_LAUNCHING": "别忘了热身哦 😉",
"STEAM_LAUNCHING": "Beat Saber 会在 Steam 启动后自动启动。"
"STEAM_LAUNCHING": "Beat Saber 会在 Steam 启动后自动启动。",
"SKIPPING_STEAM_LAUNCH": "希望你知道自己在做什么 :)"
}
},
"errors": {
@@ -29,6 +29,9 @@ export abstract class AbstractLauncherService {
if (launchOptions.additionalArgs) {
launchArgs.push(...launchOptions.additionalArgs);
}
if (launchOptions.launchVR) {
launchArgs.push(...launchOptions.launchVR);
}
return Array.from(new Set(launchArgs).values());
}
@@ -105,7 +105,8 @@ export class BSLauncherService {
oculus: params.oculusMode === "true",
desktop: params.desktopMode === "true",
debug: params.debug === "true",
additionalArgs: params.additionalArgs
additionalArgs: params.additionalArgs,
skipVR: params.skipVR === "true",
};
return res;
@@ -123,6 +124,7 @@ export class BSLauncherService {
if(launchOptions.desktop){ res.desktopMode = "true"; }
if(launchOptions.debug){ res.debug = "true"; }
if(launchOptions.additionalArgs){ res.additionalArgs = launchOptions.additionalArgs; }
if(launchOptions.skipVR){ res.skipVR = "true"; }
return res;
}
@@ -239,6 +241,7 @@ type ShortcutParams = {
desktopMode?: string;
debug?: string;
additionalArgs?: string[];
skipVR?: string;
version: string;
versionName?: string;
versionIno?: string;
@@ -77,8 +77,10 @@ export class SteamLauncherService extends AbstractLauncherService implements Sto
throw CustomError.fromError(new Error(`Path not exist : ${exePath}`), BSLaunchError.BS_NOT_FOUND);
}
const skipVR: boolean = launchOptions.skipVR ?? false;
// Open Steam if not running
if(!(await this.steam.steamRunning())){
if(!skipVR && !(await this.steam.steamRunning())){
obs.next({type: BSLaunchEvent.STEAM_LAUNCHING});
await this.steam.openSteam().then(() => {
@@ -88,6 +90,9 @@ export class SteamLauncherService extends AbstractLauncherService implements Sto
obs.next({type: BSLaunchWarning.UNABLE_TO_LAUNCH_STEAM});
});
}
else if (!launchOptions.desktop) {
obs.next({ type: BSLaunchEvent.SKIPPING_STEAM_LAUNCH});
}
// Backup SteamVR when desktop mode is enabled
if(launchOptions.desktop){
@@ -35,7 +35,7 @@ export function BsVersionItem(props: { version: BSVersion }) {
useOnUpdate(() => {
const subs: Subscription[] = []
subs.push(bsDownloader.downloadingVersion$.pipe(map(download => equal(download, props.version)), distinctUntilChanged()).subscribe(isDownloading => {
setIsDownloading(() => isDownloading);
}));
@@ -63,6 +63,7 @@ export function BsVersionItem(props: { version: BSVersion }) {
oculus: !!configService.get<boolean>(LaunchMods.OCULUS_MOD),
desktop: !!configService.get<boolean>(LaunchMods.DESKTOP_MOD),
debug: !!configService.get<boolean>(LaunchMods.DEBUG_MOD),
skipVR: !!configService.get<boolean>(LaunchMods.SKIPVR_MOD),
});
return lastValueFrom(launch$).catch(() => {});
};
@@ -67,7 +67,7 @@ import { BrowseIcon } from "./icons/browse-icon.component";
import { AddFileIcon } from "./icons/add-file-icon.component";
export type BsmIconType = SongDetailDiffCharactertistic | ("settings" | "trash" | "favorite" | "folder" | "bsNote" | "check" | "three-dots" | "twitch" | "eye" | "play" | "checkCircleIcon" | "discord" | "info" | "eye-cross" | "terminal" | "desktop" | "oculus" | "add" | "cross" | "task" | "github" | "close" | "thumbUpFill" | "timerFill" | "pause" | "twitter" | "sync" | "chevron-top" | "copy" | "steam" | "edit" | "export" | "patreon" | "search" | "bsMapDifficulty" | "link" | "unlink" | "download" | "filter" | "mee6" | "volume-up" | "volume-off" | "volume-down" | "shortcut" | "backup-restore" | "web-site" | "clean" | "browse" | "add-file" | "fr-FR-flag" | "es-ES-flag" | "en-US-flag" | "en-EN-flag" | "de-DE-flag" | "ru-RU-flag" | "zh-CN-flag" | "zh-TW-flag" | "ja-JP-flag" | "ko-KR-flag");
export type BsmIconType = SongDetailDiffCharactertistic | ("settings" | "trash" | "favorite" | "folder" | "bsNote" | "check" | "three-dots" | "twitch" | "eye" | "play" | "checkCircleIcon" | "discord" | "info" | "eye-cross" | "terminal" | "desktop" | "oculus" | "add" | "cross" | "task" | "github" | "close" | "thumbUpFill" | "timerFill" | "pause" | "twitter" | "sync" | "chevron-top" | "copy" | "steam" | "edit" | "export" | "patreon" | "search" | "bsMapDifficulty" | "link" | "unlink" | "download" | "filter" | "mee6" | "volume-up" | "volume-off" | "volume-down" | "shortcut" | "backup-restore" | "web-site" | "clean" | "browse" | "add-file" | "fr-FR-flag" | "es-ES-flag" | "en-US-flag" | "en-EN-flag" | "de-DE-flag" | "ru-RU-flag" | "zh-CN-flag" | "zh-TW-flag" | "ja-JP-flag" | "ko-KR-flag" | "null" );
export const BsmIcon = memo(({ className, icon, style }: { className?: string; icon: BsmIconType; style?: CSSProperties }) => {
// TODO : Very ugly very messy, need to find a better way to do this
@@ -275,7 +275,9 @@ export const BsmIcon = memo(({ className, icon, style }: { className?: string; i
if(icon === "add-file") {
return <AddFileIcon className={className} style={style} />;
}
if(icon === "null") {
return null;
}
return <TrashIcon className={className} style={style} />;
@@ -18,11 +18,11 @@ export function LaunchModToogle({ onClick, active, text, icon, infoText }: Props
<div className={`relative rounded-full cursor-pointer group active:scale-95 transition-transform ${!active && "shadow-md shadow-black"}`} onClick={() => onClick(!active)}>
<GlowEffect visible={active} className="absolute !rounded-full blur-[2px]" />
<div className="w-full h-full px-6 flex gap-1.5 justify-center items-center bg-light-main-color-2 dark:bg-main-color-2 p-3 rounded-full text-gray-800 dark:text-white group-hover:bg-light-main-color-1 dark:group-hover:bg-main-color-1">
<BsmIcon icon={icon} className="h-7 text-gray-800 dark:text-white" />
<BsmIcon icon={icon} className="h-7 shrink-0 text-gray-800 dark:text-white" />
<span className="w-fit min-w-fit text-lg font-bold uppercase tracking-wide italic ">{t(text)}</span>
{infoText && (
<Tippy content={t(infoText)} placement="bottom" delay={[400, 0]}>
<div className="h-[25px] w-[25px] p-1.5 rounded-full cursor-help bg-light-main-color-1 dark:bg-main-color-3 hover:brightness-110">
<div className="h-[25px] w-[25px] shrink-0 p-1.5 rounded-full cursor-help bg-light-main-color-1 dark:bg-main-color-3 hover:brightness-110">
<BsmIcon className="w-full h-full" icon="info" />
</div>
</Tippy>
@@ -30,6 +30,7 @@ export function LaunchSlide({ version }: Props) {
const [debugMode, setDebugMode] = useState(!!configService.get<boolean>(LaunchMods.DEBUG_MOD));
const [advancedLaunch, setAdvancedLaunch] = useState(false);
const [additionalArgsString, setAdditionalArgsString] = useState<string>(configService.get<string>("additionnal-args") || "");
const [skipVRMode, setSkipVRMode] = useState(!!configService.get<boolean>(LaunchMods.SKIPVR_MOD));
const versionDownloading = useObservable(() => bsDownloader.downloadingVersion$);
const versionRunning = useObservable(() => bsLauncherService.versionRunning$);
@@ -51,6 +52,8 @@ export function LaunchSlide({ version }: Props) {
setOculusMode(value);
} else if (mode === LaunchMods.DESKTOP_MOD) {
setDesktopMode(value);
} else if (mode === LaunchMods.SKIPVR_MOD) {
setSkipVRMode(value);
}
configService.set(mode, value);
};
@@ -66,6 +69,7 @@ export function LaunchSlide({ version }: Props) {
desktop: desktopMode,
debug: debugMode,
additionalArgs: advancedLaunch ? additionalArgs : [],
skipVR: skipVRMode,
});
return lastValueFrom(launch$).catch(() => {});
@@ -98,6 +102,9 @@ export function LaunchSlide({ version }: Props) {
<div className="bg-light-main-color-2 dark:bg-main-color-2 h-9 rounded-full overflow-hidden flex items-center justify-center transition-all duration-100 ease-in-out w-full origin-top shadow-black shadow-sm" style={{ scale: advancedLaunch ? "100% 100%" : "0 0" }}>
<input className="w-[calc(100%-12px)] h-[calc(100%-12px)] bg-light-main-color-1 dark:bg-main-color-1 text-black dark:text-white rounded-full outline-none text-center" type="text" placeholder={t("pages.version-viewer.launch-mods.advanced-launch.placeholder")} value={additionalArgsString} onChange={handleAdditionalArgsChange} />
</div>
<div className="grid grid-cols-3 gap-3 transition-all duration-300 ease-in-out origin-top" style={{ scale: advancedLaunch ? "75% 75%" : "0% 0%" }}>
{advancedLaunch && !(version.oculus || version.metadata?.store === BsStore.OCULUS) && <LaunchModToogle infoText="pages.version-viewer.launch-mods.skipvr-description" icon="null" onClick={() => setMode(LaunchMods.SKIPVR_MOD, !skipVRMode)} active={skipVRMode} text="pages.version-viewer.launch-mods.skipvr" />}
</div>
</div>
<div className='grow flex justify-center items-center'>
<BsmButton
+3 -1
View File
@@ -50,7 +50,8 @@ export class BSLauncherService {
oculus: this.config.get(LaunchMods.OCULUS_MOD),
desktop: this.config.get(LaunchMods.DESKTOP_MOD),
debug: this.config.get(LaunchMods.DEBUG_MOD),
additionalArgs: (this.config.get<string>("additionnal-args") || "").split(";").map(arg => arg.trim()).filter(arg => arg.length > 0)
additionalArgs: (this.config.get<string>("additionnal-args") || "").split(";").map(arg => arg.trim()).filter(arg => arg.length > 0),
skipVR: this.config.get(LaunchMods.SKIPVR_MOD),
}
}
@@ -128,4 +129,5 @@ export enum LaunchMods {
OCULUS_MOD = "LAUNCH_OCULUS_MOD",
DESKTOP_MOD = "LAUNCH_DESKTOP_MOD",
DEBUG_MOD = "LAUNCH_DEBUG_MOD",
SKIPVR_MOD = "LAUNCH_SKIPVR_MOD",
}
@@ -23,6 +23,7 @@ export enum BSLaunchError{
export enum BSLaunchEvent{
STEAM_LAUNCHING = "STEAM_LAUNCHING",
STEAM_LAUNCHED = "STEAM_LAUNCHED",
SKIPPING_STEAM_LAUNCH = "SKIPPING_STEAM_LAUNCH",
BS_LAUNCHING = "BS_LAUNCHING",
}
@@ -7,4 +7,5 @@ export interface LaunchOption {
debug?: boolean,
additionalArgs?: string[],
admin?: boolean,
skipVR?: boolean
}