diff options
| author | Matthew Collins <[email protected]> | 2018-02-28 16:12:31 +0000 |
|---|---|---|
| committer | Matthew Collins <[email protected]> | 2018-02-28 16:12:31 +0000 |
| commit | 844887aea84cb17a135d070304726a33f17b30b7 (patch) | |
| tree | dd26d34956283c9ef261fbae9c7e56c9992ea2ce /steamworks-sys | |
| parent | Implement user authentication session methods (diff) | |
| download | steamworks-rs-844887aea84cb17a135d070304726a33f17b30b7.tar.xz steamworks-rs-844887aea84cb17a135d070304726a33f17b30b7.zip | |
Initial support for servers
Diffstat (limited to 'steamworks-sys')
| -rw-r--r-- | steamworks-sys/Cargo.toml | 2 | ||||
| -rw-r--r-- | steamworks-sys/src/lib.cpp | 24 | ||||
| -rw-r--r-- | steamworks-sys/src/lib.rs | 28 |
3 files changed, 49 insertions, 5 deletions
diff --git a/steamworks-sys/Cargo.toml b/steamworks-sys/Cargo.toml index db3af3d..d3b22cb 100644 --- a/steamworks-sys/Cargo.toml +++ b/steamworks-sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "steamworks-sys" -version = "0.1.1" +version = "0.2.0" authors = ["Thinkofname"] build = "build.rs" description = "Provides raw bindings to the steamworks sdk" diff --git a/steamworks-sys/src/lib.cpp b/steamworks-sys/src/lib.cpp index 75c399a..bed54e6 100644 --- a/steamworks-sys/src/lib.cpp +++ b/steamworks-sys/src/lib.cpp @@ -1,12 +1,17 @@ #include <steam_api.h> +#include <steam_gameserver.h> +#include <stdint.h> class RustSteamCallback final : CCallbackBase { public: RustSteamCallback(int parameter_size, void *userdata, void (*run_func)(void *, void *), void (*dealloc)(void *), - int callback_id) + int callback_id, int game_server) : parameter_size(parameter_size), userdata(userdata), run_func(run_func), dealloc(dealloc) { + if (game_server) { + m_nCallbackFlags |= k_ECallbackFlagsGameServer; + } SteamAPI_RegisterCallback(this, callback_id); } ~RustSteamCallback() { @@ -31,9 +36,11 @@ extern "C" void *register_rust_steam_callback(int parameter_size, void *userdata, void (*run_func)(void *, void *), void (*dealloc)(void *), - int callback_id) { + int callback_id, + int game_server + ) { return new RustSteamCallback(parameter_size, userdata, run_func, dealloc, - callback_id); + callback_id, game_server); } extern "C" void unregister_rust_steam_callback(void *ty) { @@ -93,6 +100,13 @@ extern "C" void unregister_rust_steam_call_result(void *ty) { delete cb; } +extern "C" int steam_rust_game_server_init( + uint32_t ip, uint16_t steam_port, uint16_t game_port, + uint16_t query_port, EServerMode server_mode, const char* version +) { + return SteamGameServer_Init(ip, steam_port, game_port, query_port, server_mode, version); +} + extern "C" ISteamClient *steam_rust_get_client() { return SteamClient(); } extern "C" ISteamMatchmaking *steam_rust_get_matchmaking() { return SteamMatchmaking(); @@ -100,4 +114,6 @@ extern "C" ISteamMatchmaking *steam_rust_get_matchmaking() { extern "C" ISteamUtils *steam_rust_get_utils() { return SteamUtils(); } extern "C" ISteamApps *steam_rust_get_apps() { return SteamApps(); } extern "C" ISteamFriends *steam_rust_get_friends() { return SteamFriends(); } -extern "C" ISteamUser *steam_rust_get_user() { return SteamUser(); }
\ No newline at end of file +extern "C" ISteamUser *steam_rust_get_user() { return SteamUser(); } +extern "C" ISteamGameServer *steam_rust_get_server() { return SteamGameServer(); } +extern "C" ISteamApps *steam_rust_get_server_apps() { return SteamGameServerApps(); }
\ No newline at end of file diff --git a/steamworks-sys/src/lib.rs b/steamworks-sys/src/lib.rs index e84848b..42b5049 100644 --- a/steamworks-sys/src/lib.rs +++ b/steamworks-sys/src/lib.rs @@ -20,6 +20,8 @@ pub struct ISteamFriends(c_void); pub struct ISteamMatchmaking(c_void); #[repr(C)] pub struct ISteamUser(c_void); +#[repr(C)] +pub struct ISteamGameServer(c_void); pub type HSteamPipe = i32; pub type HSteamUser = i32; @@ -110,6 +112,14 @@ pub enum AuthSessionResponse { } #[repr(C)] +pub enum ServerMode { + Invalid = 0, + NoAuthentication = 1, + Authentication = 2, + AuthenticationAndSecure = 3, +} + +#[repr(C)] #[derive(Clone, Copy, Debug, Ord, PartialOrd, Eq, PartialEq)] pub enum SResult { Ok = 1, @@ -235,6 +245,7 @@ extern "C" { run_func: extern "C" fn (*mut c_void, *mut c_void), dealloc: extern "C" fn (*mut c_void), callback_id: c_int, + game_server: c_int, ) -> *mut c_void; pub fn unregister_rust_steam_callback( ty: *mut c_void, @@ -257,12 +268,19 @@ extern "C" { pub fn steam_rust_get_apps() -> *mut ISteamApps; pub fn steam_rust_get_friends() -> *mut ISteamFriends; pub fn steam_rust_get_user() -> *mut ISteamUser; + pub fn steam_rust_get_server() -> *mut ISteamGameServer; + pub fn steam_rust_get_server_apps() -> *mut ISteamApps; + + pub fn steam_rust_game_server_init(ip: u32, steam_port: u16, game_port: u16, query_port: u16, server_mode: ServerMode, version: *const c_char) -> c_int; // pub fn SteamAPI_Init() -> u8; pub fn SteamAPI_Shutdown(); pub fn SteamAPI_RunCallbacks(); + pub fn SteamGameServer_Shutdown(); + pub fn SteamGameServer_RunCallbacks(); + pub fn SteamAPI_ISteamClient_CreateSteamPipe(instance: *mut ISteamClient) -> HSteamPipe; pub fn SteamAPI_ISteamClient_BReleaseSteamPipe(instance: *mut ISteamClient, pipe: HSteamPipe) -> u8; pub fn SteamAPI_ISteamClient_ConnectToGlobalUser(instance: *mut ISteamClient, pipe: HSteamPipe) -> HSteamUser; @@ -303,4 +321,14 @@ extern "C" { pub fn SteamAPI_ISteamUser_BeginAuthSession(instance: *mut ISteamUser, ticket: *const c_void, ticket_size: *mut u32, steam_id: u64) -> BeginAuthSessionResult; pub fn SteamAPI_ISteamUser_EndAuthSession(instance: *mut ISteamUser, steam_id: u64); pub fn SteamAPI_ISteamUser_CancelAuthTicket(instance: *mut ISteamUser, auth_ticket: HAuthTicket); + + pub fn SteamAPI_ISteamGameServer_LogOnAnonymous(instance: *mut ISteamGameServer); + pub fn SteamAPI_ISteamGameServer_SetProduct(instance: *mut ISteamGameServer, product: *const c_char); + pub fn SteamAPI_ISteamGameServer_SetGameDescription(instance: *mut ISteamGameServer, description: *const c_char); + pub fn SteamAPI_ISteamGameServer_SetDedicatedServer(instance: *mut ISteamGameServer, dedicated: u8); + pub fn SteamAPI_ISteamGameServer_GetSteamID(instance: *mut ISteamGameServer) -> u64; + pub fn SteamAPI_ISteamGameServer_GetAuthSessionTicket(instance: *mut ISteamGameServer, ticket: *mut c_void, max_ticket: c_int, ticket_size: *mut u32) -> HAuthTicket; + pub fn SteamAPI_ISteamGameServer_BeginAuthSession(instance: *mut ISteamGameServer, ticket: *const c_void, ticket_size: *mut u32, steam_id: u64) -> BeginAuthSessionResult; + pub fn SteamAPI_ISteamGameServer_EndAuthSession(instance: *mut ISteamGameServer, steam_id: u64); + pub fn SteamAPI_ISteamGameServer_CancelAuthTicket(instance: *mut ISteamGameServer, auth_ticket: HAuthTicket); } |