diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index dea52a0..d589788 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -198,6 +198,15 @@ pub fn get_skins_count(folder: String) -> Option { return Some(count); } +#[tauri::command] +pub fn get_osu_skin(folder: String) -> String { + let path = PathBuf::from(folder); + let osu_user_config = get_osu_user_config(path.clone()); + return osu_user_config + .and_then(|config| config.get("Skin").cloned()) + .unwrap_or_else(|| "Default".to_string()); +} + #[tauri::command] pub fn get_osu_version(folder: String) -> String { let path = PathBuf::from(folder); @@ -342,18 +351,18 @@ pub fn run_osu(folder: String) -> Result<(), String> { #[cfg(windows)] let mut game_process = Command::new(osu_exe_path) - .creation_flags(DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP) - .arg("-devserver") - .arg("ez-pp.farm") - .spawn() - .map_err(|e| e.to_string())?; + .creation_flags(DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP) + .arg("-devserver") + .arg("ez-pp.farm") + .spawn() + .map_err(|e| e.to_string())?; #[cfg(not(windows))] let mut game_process = Command::new(osu_exe_path) - .arg("-devserver") - .arg("ez-pp.farm") - .spawn() - .map_err(|e| e.to_string())?; + .arg("-devserver") + .arg("ez-pp.farm") + .spawn() + .map_err(|e| e.to_string())?; game_process.wait().map_err(|e| e.to_string())?; diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 13f1e13..9ef6ecc 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -6,7 +6,7 @@ pub mod utils; use crate::commands::{ find_osu_installation, get_beatmapsets_count, get_hwid, get_osu_release_stream, get_osu_version, get_skins_count, run_osu, run_osu_updater, set_osu_config_values, - set_osu_user_config_values, valid_osu_folder, + set_osu_user_config_values, valid_osu_folder, get_osu_skin }; #[cfg_attr(mobile, tauri::mobile_entry_point)] @@ -36,6 +36,7 @@ pub fn run() { set_osu_user_config_values, run_osu_updater, run_osu, + get_osu_skin ]) .plugin(tauri_plugin_fs::init()) .plugin(tauri_plugin_dialog::init()) diff --git a/src/lib/global.ts b/src/lib/global.ts index 477130a..b58f550 100644 --- a/src/lib/global.ts +++ b/src/lib/global.ts @@ -22,6 +22,8 @@ export const skins = writable(undefined); export const osuStream = writable(undefined); export const osuBuild = writable(undefined); +export const currentSkin = writable(""); + let updateValues = true; launching.subscribe((val) => (updateValues = !val)); diff --git a/src/pages/Launch.svelte b/src/pages/Launch.svelte index a406e8c..5c9f72c 100644 --- a/src/pages/Launch.svelte +++ b/src/pages/Launch.svelte @@ -6,6 +6,7 @@ import * as Select from '@/components/ui/select'; import { beatmapSets, + currentSkin, currentView, launching, osuBuild, @@ -121,6 +122,10 @@ if (skinsCount) { skins.set(skinsCount); } + const skin: string = await invoke('get_osu_skin', { + folder: $osuInstallationPath, + }); + currentSkin.set(skin); } }; @@ -266,6 +271,11 @@ }); if (skinCount) skins.set(skinCount); + const skin: string = await invoke('get_osu_skin', { + folder: $osuInstallationPath, + }); + currentSkin.set(skin); + launching.set(false); } catch (err) { console.log(err); @@ -706,6 +716,16 @@ {/if} + Skin + + + {#if $currentSkin} + {$currentSkin} + {:else} + + {/if} + + {:else if selectedTab === 'settings'} diff --git a/src/pages/Loading.svelte b/src/pages/Loading.svelte index 88fd196..26a514b 100644 --- a/src/pages/Loading.svelte +++ b/src/pages/Loading.svelte @@ -4,6 +4,7 @@ import { beatmapSets, currentLoadingInfo, + currentSkin, currentView, firstStartup, osuBuild, @@ -136,6 +137,10 @@ folder: $osuInstallationPath, }); if (skinCount) skins.set(skinCount); + const skin: string = await invoke('get_osu_skin', { + folder: $osuInstallationPath, + }); + currentSkin.set(skin); } } diff --git a/src/pages/SetupWizard.svelte b/src/pages/SetupWizard.svelte index ad96af0..0787252 100644 --- a/src/pages/SetupWizard.svelte +++ b/src/pages/SetupWizard.svelte @@ -17,7 +17,7 @@ userSettings, } from '@/userSettings'; import Label from '@/components/ui/label/label.svelte'; - import { beatmapSets, currentView, osuBuild, osuStream, skins } from '@/global'; + import { beatmapSets, currentSkin, currentView, osuBuild, osuStream, skins } from '@/global'; import Launch from './Launch.svelte'; import Confetti from 'svelte-confetti'; @@ -92,6 +92,11 @@ skins.set(skinsCount); } + const skin: string = await invoke('get_osu_skin', { + folder: $osuInstallationPath, + }); + currentSkin.set(skin); + const osuReleaseStream: string = await invoke('get_osu_release_stream', { folder: $osuInstallationPath, });