diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 3ddf673..9084dc6 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1081,7 +1081,7 @@ dependencies = [ [[package]] name = "ezpplauncher" -version = "3.0.0-beta.1" +version = "3.0.0-beta.2" dependencies = [ "hardware-id", "md5", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 7fa69b9..e8800da 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ezpplauncher" -version = "3.0.0-beta.1" +version = "3.0.0-beta.2" description = "EZPPLauncher redefined." authors = ["HorizonCode"] edition = "2024" diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index fd66080..d629a6c 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -677,3 +677,32 @@ pub fn hide_overlay(app: tauri::AppHandle) -> Result<(), String> { Ok(()) } + +#[tauri::command] +pub async fn check_for_corruption(folder: String) -> Result { + let osu_path = PathBuf::from(folder); + let osu_ui = osu_path.join("osu!ui.dll"); + let osu_gameplay = osu_path.join("osu!gameplay.dll"); + + let osu_ui_bak = osu_path.join("osu!ui.dll.bak"); + let osu_gameplay_bak = osu_path.join("osu!gameplay.dll.bak"); + + let required_files = [&osu_ui, &osu_gameplay]; + + for file in &required_files { + if !file.exists() { + return Ok(true); + } + } + + let bak_files = [&osu_ui_bak, &osu_gameplay_bak]; + for bak in &bak_files { + if bak.exists() { + if let Err(e) = fs::remove_file(bak).await { + return Err(format!("Failed to delete {}: {}", bak.display(), e)); + } + } + } + + Ok(false) +} diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index f1161f0..f91f96c 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -8,7 +8,7 @@ use crate::commands::{ get_ezpp_launcher_update_files, get_hwid, get_launcher_version, get_osu_release_stream, get_osu_skin, get_osu_version, get_skins_count, is_osu_running, open_url_in_browser, replace_ui_files, run_osu, run_osu_updater, set_osu_config_values, set_osu_user_config_values, - valid_osu_folder, get_platform, show_overlay, hide_overlay + valid_osu_folder, get_platform, check_for_corruption, show_overlay, hide_overlay }; #[cfg_attr(mobile, tauri::mobile_entry_point)] @@ -47,6 +47,7 @@ pub fn run() { get_launcher_version, exit, get_platform, + check_for_corruption, show_overlay, hide_overlay ]) diff --git a/src/app.css b/src/app.css index adc3a3b..a86c839 100644 --- a/src/app.css +++ b/src/app.css @@ -154,4 +154,8 @@ body { @apply bg-background text-foreground; } + button:not([disabled]), + [role="button"]:not([disabled]) { + cursor: pointer; + } } diff --git a/src/lib/osuUtil.ts b/src/lib/osuUtil.ts index ddc1afd..c9a85f3 100644 --- a/src/lib/osuUtil.ts +++ b/src/lib/osuUtil.ts @@ -114,3 +114,5 @@ export const isOsuRunning = async () => { export const getLauncherVersion = async () => await invoke('get_launcher_version'); export const exit = async () => await invoke('exit'); export const getPlatform = async () => await invoke('get_platform'); +export const isOsuCorrupted = async (folder: string) => + await invoke('check_for_corruption', { folder }); diff --git a/src/pages/Launch.svelte b/src/pages/Launch.svelte index c40668c..eed1627 100644 --- a/src/pages/Launch.svelte +++ b/src/pages/Launch.svelte @@ -84,6 +84,7 @@ getSkin, getSkinsCount, getVersion, + isOsuCorrupted, isOsuRunning, isValidOsuFolder, replaceUIFiles, @@ -181,6 +182,7 @@ try { launchInfo = 'Looking for EZPPLauncher File updates...'; const updateResult = await getEZPPLauncherUpdateFiles(osuPath); + if (updateResult) { if (updateResult.filesToDownload.length > 0) { launchInfo = 'Found EZPPLauncher File updates!'; @@ -220,7 +222,9 @@ } const releaseStream = await getReleaseStream(osuPath); - let forceUpdate = releaseStream && releaseStream.toLowerCase() !== 'stable40'; + const osuCorrupted = await isOsuCorrupted(osuPath); + let forceUpdate = + (releaseStream && releaseStream.toLowerCase() !== 'stable40') || osuCorrupted; const versions = compareBuildNumbers($osuBuild, streamInfo); if (versions > 0 || forceUpdate) { @@ -358,10 +362,11 @@ class="flex flex-col items-center text-sm text-center bg-theme-900 border border-theme-800 rounded-lg mx-3 p-3" > {#if launchError} - {launchError.message} - {#if launchError.stack} -
{launchError.stack}
- {/if} +
{JSON.stringify(
+            launchError,
+            Object.getOwnPropertyNames(launchError),
+            2
+          )}
{:else} Unexpected error {/if}