diff --git a/src/retroachievements.rs b/src/retroachievements.rs index a55cf1d..25571cd 100644 --- a/src/retroachievements.rs +++ b/src/retroachievements.rs @@ -313,15 +313,25 @@ pub fn is_user_logged_in() -> bool { } pub fn get_username() -> &'static str { - unsafe { - std::ffi::CStr::from_ptr(ra_get_username()) + let c_username = unsafe { ra_get_username() }; + if c_username.is_null() { + "unknown" + } else { + unsafe { std::ffi::CStr::from_ptr(c_username) } .to_str() .unwrap() } } pub fn get_token() -> &'static str { - unsafe { std::ffi::CStr::from_ptr(ra_get_token()).to_str().unwrap() } + let c_token = unsafe { ra_get_token() }; + if c_token.is_null() { + "unknown" + } else { + unsafe { std::ffi::CStr::from_ptr(c_token) } + .to_str() + .unwrap() + } } pub fn state_size() -> usize { diff --git a/src/ui/gui.rs b/src/ui/gui.rs index fe84e3c..ea7badd 100644 --- a/src/ui/gui.rs +++ b/src/ui/gui.rs @@ -32,6 +32,7 @@ pub struct GameSettings { } pub struct RASettings { + pub enabled: bool, pub hardcore: bool, pub challenge: bool, pub leaderboard: bool, @@ -360,7 +361,7 @@ pub fn run_rom( "--cheats", cheats_path.to_str().unwrap(), ]); - } else if retroachievements::is_user_logged_in() { + } else if ra_settings.enabled { command.args([ "--ra-username", retroachievements::get_username(), @@ -445,6 +446,7 @@ fn open_rom(app: &AppWindow) { let overclock = app.get_overclock_n64_cpu(); let disable_expansion_pak = app.get_disable_expansion_pak(); + let ra_enabled = app.get_ra_enabled(); let ra_hardcore = app.get_ra_hardcore(); let ra_challenge = app.get_ra_challenge(); let ra_leaderboard = app.get_ra_leaderboard(); @@ -479,6 +481,7 @@ fn open_rom(app: &AppWindow) { }, None, RASettings { + enabled: ra_enabled, hardcore: ra_hardcore, challenge: ra_challenge, leaderboard: ra_leaderboard, diff --git a/src/ui/netplay.rs b/src/ui/netplay.rs index 7eafc3d..c341d31 100644 --- a/src/ui/netplay.rs +++ b/src/ui/netplay.rs @@ -1108,6 +1108,7 @@ fn setup_wait_window( player_number: player_number as u8, }), RASettings { + enabled: false, hardcore: false, challenge: false, leaderboard: false,