use super::*;
#[derive(Clone, Debug)]
pub struct UserStatsReceived {
pub steam_id: SteamId,
pub game_id: GameId,
pub result: Result<(), SteamError>,
}
impl_callback!(cb: UserStatsReceived_t => UserStatsReceived {
Self {
steam_id: SteamId(cb.m_steamIDUser.m_steamid.m_unAll64Bits),
game_id: GameId(cb.m_nGameID),
result: crate::to_steam_result(cb.m_eResult),
}
});
#[derive(Clone, Debug)]
pub struct UserStatsStored {
pub game_id: GameId,
pub result: Result<(), SteamError>,
}
impl_callback!(cb: UserStatsStored_t => UserStatsStored {
Self {
game_id: GameId(cb.m_nGameID),
result: crate::to_steam_result(cb.m_eResult),
}
});
#[derive(Clone, Debug)]
pub struct UserAchievementStored {
pub game_id: GameId,
pub achievement_name: String,
pub current_progress: u32,
pub max_progress: u32,
}
impl_callback!(cb: UserAchievementStored_t => UserAchievementStored {
let name = CStr::from_ptr(cb.m_rgchAchievementName.as_ptr()).to_owned();
Self {
game_id: GameId(cb.m_nGameID),
achievement_name: name.into_string().unwrap(),
current_progress: cb.m_nCurProgress,
max_progress: cb.m_nMaxProgress,
}
});
#[derive(Clone, Debug)]
pub struct UserAchievementIconFetched {
pub game_id: GameId,
pub achievement_name: String,
pub achieved: bool,
pub icon_handle: i32,
}
impl_callback!(cb: UserAchievementIconFetched_t => UserAchievementIconFetched {
let name = CStr::from_ptr(cb.m_rgchAchievementName.as_ptr()).to_owned();
Self {
game_id: GameId(cb.m_nGameID.__bindgen_anon_1.m_ulGameID),
achievement_name: name.into_string().unwrap(),
achieved: cb.m_bAchieved,
icon_handle: cb.m_nIconHandle,
}
});
#[derive(Clone, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
pub struct GlobalStatsReceived {
pub game_id: GameId,
#[cfg_attr(feature = "serde", serde(skip))]
pub result: Result<(), SteamError>,
}
impl_callback!(cb: GlobalStatsReceived_t => GlobalStatsReceived {
Self {
game_id: GameId(cb.m_nGameID),
result: crate::to_steam_result(cb.m_eResult),
}
});