This crate provides rust friendly bindings to the steamworks sdk.
Add the following to your Cargo.toml
:
[dependencies]
steamworks = "0.7.0"
Ensure that your computer has all the needed requirements to use bindgen.
Download and install the steamworks sdk and set the environment variable STEAM_SDK_LOCATION
to point to it. This is currently built against steamworks v151.
You can find more examples in examples.
use steamworks::AppId;
use steamworks::Client;
use steamworks::FriendFlags;
use steamworks::PersonaStateChange;
fn main() {
let (client, single) = Client::init().unwrap();
let _cb = client.register_callback(|p: PersonaStateChange| {
println!("Got callback: {:?}", p);
});
let utils = client.utils();
println!("Utils:");
println!("AppId: {:?}", utils.app_id());
println!("UI Language: {}", utils.ui_language());
let apps = client.apps();
println!("Apps");
println!("IsInstalled(480): {}", apps.is_app_installed(AppId(480)));
println!("InstallDir(480): {}", apps.app_install_dir(AppId(480)));
println!("BuildId: {}", apps.app_build_id());
println!("AppOwner: {:?}", apps.app_owner());
println!("Langs: {:?}", apps.available_game_languages());
println!("Lang: {}", apps.current_game_language());
println!("Beta: {:?}", apps.current_beta_name());
let friends = client.friends();
println!("Friends");
let list = friends.get_friends(FriendFlags::IMMEDIATE);
println!("{:?}", list);
for f in &list {
println!("Friend: {:?} - {}({:?})", f.id(), f.name(), f.state());
friends.request_user_information(f.id(), true);
}
for _ in 0..50 {
single.run_callbacks();
::std::thread::sleep(::std::time::Duration::from_millis(100));
}
}
serde
: This feature enables serialization and deserialization of some types with serde
.