aboutsummaryrefslogtreecommitdiff
path: root/steamworks-sys/src
diff options
context:
space:
mode:
authorMatthew Collins <[email protected]>2018-05-05 15:46:12 +0100
committerMatthew Collins <[email protected]>2018-05-05 15:46:12 +0100
commit5ef3f6e17cd14d452cfcdbb8a30abf61e513e84d (patch)
treee667ed1dccc3d3ac0df83e8c66b76dd5dc0771e8 /steamworks-sys/src
parentMinor bump due to slight mistake with last publish (diff)
downloadsteamworks-rs-5ef3f6e17cd14d452cfcdbb8a30abf61e513e84d.tar.xz
steamworks-rs-5ef3f6e17cd14d452cfcdbb8a30abf61e513e84d.zip
Rework how the sys crate is generated
Due to packing issues with steam's structs we use wrapper methods to access the fields and create the structs.
Diffstat (limited to 'steamworks-sys/src')
-rw-r--r--steamworks-sys/src/lib.cpp4
-rw-r--r--steamworks-sys/src/lib.rs229
2 files changed, 16 insertions, 217 deletions
diff --git a/steamworks-sys/src/lib.cpp b/steamworks-sys/src/lib.cpp
index 226c31a..38701da 100644
--- a/steamworks-sys/src/lib.cpp
+++ b/steamworks-sys/src/lib.cpp
@@ -6,7 +6,7 @@ struct CallbackData {
int param_size;
void* userdata;
void (*run)(void*, void*, void*);
- void (*run_extra)(void*, void*, void*, bool, SteamAPICall_t);
+ void (*run_extra)(void*, void*, void*, uint8_t, SteamAPICall_t);
void (*dealloc)(void*, void*);
};
@@ -26,7 +26,7 @@ public:
}
void Run(void* pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall) {
- data.run_extra(this, data.userdata, pvParam, bIOFailure, hSteamAPICall);
+ data.run_extra(this, data.userdata, pvParam, bIOFailure ? 1 : 0, hSteamAPICall);
}
int GetCallbackSizeBytes() {
diff --git a/steamworks-sys/src/lib.rs b/steamworks-sys/src/lib.rs
index 5fbb565..7d6ebae 100644
--- a/steamworks-sys/src/lib.rs
+++ b/steamworks-sys/src/lib.rs
@@ -1,7 +1,11 @@
#![allow(non_camel_case_types)]
+#![allow(non_upper_case_globals)]
+#![allow(non_snake_case)]
extern crate libc;
+include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
+
use libc::{
c_char,
c_void,
@@ -24,222 +28,15 @@ pub struct ISteamUser(c_void);
pub struct ISteamGameServer(c_void);
pub type HSteamPipe = i32;
-pub type HSteamUser = i32;
-pub type HAuthTicket = u32;
pub type AppId = u32;
pub type SteamAPICall = u64;
#[repr(C)]
-pub enum PersonaState {
- Offline = 0,
- Online = 1,
- Busy = 2,
- Away = 3,
- Snooze = 4,
- LookingToTrade = 5,
- LookingToPlay = 6,
- Max,
-}
-
-#[repr(C)]
-pub enum LobbyType {
- Private = 0,
- FriendsOnly = 1,
- Public = 2,
- Invisible = 3,
-}
-
-#[repr(C)]
-pub struct PersonaStateChange_t {
- pub steam_id: u64,
- pub flags: c_int,
-}
-
-#[repr(C)]
-pub struct GetAuthSessionTicketResponse_t {
- pub auth_ticket: HAuthTicket,
- pub result: SResult,
-}
-
-#[repr(C)]
-pub struct ValidateAuthTicketResponse_t {
- pub steam_id: u64,
- pub response: AuthSessionResponse,
- pub owner_steam_id: u64,
-}
-
-#[repr(C)]
-pub struct LobbyCreated {
- pub result: SResult,
- pub lobby_steam_id: u64,
-}
-#[repr(C)]
-pub struct LobbyMatchList {
- pub lobbies_matching: u32,
-}
-
-#[repr(C)]
-pub enum NotificationPosition {
- TopLeft = 0,
- TopRight = 1,
- BottomLeft = 2,
- BottomRight = 3,
-}
-
-#[repr(C)]
-pub enum BeginAuthSessionResult {
- Ok = 0,
- InvalidTicket = 1,
- DuplicateRequest = 2,
- InvalidVersion = 3,
- GameMismatch = 4,
- ExpiredTicket = 5,
-}
-
-#[repr(C)]
-pub enum AuthSessionResponse {
- Ok = 0,
- UserNotConnectedToSteam = 1,
- NoLicenseOrExpired = 2,
- VACBanned = 3,
- LoggedInElseWhere = 4,
- VACCheckTimedOut = 5,
- AuthTicketCancelled = 6,
- AuthTicketInvalidAlreadyUsed = 7,
- AuthTicketInvalid = 8,
- PublisherIssuedBan = 9,
-}
-
-#[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,
- Fail = 2,
- NoConnection = 3,
- InvalidPassword = 5,
- LoggedInElsewhere = 6,
- InvalidProtocolVer = 7,
- InvalidParam = 8,
- FileNotFound = 9,
- Busy = 10,
- InvalidState = 11,
- InvalidName = 12,
- InvalidEmail = 13,
- DuplicateName = 14,
- AccessDenied = 15,
- Timeout = 16,
- Banned = 17,
- AccountNotFound = 18,
- InvalidSteamID = 19,
- ServiceUnavailable = 20,
- NotLoggedOn = 21,
- Pending = 22,
- EncryptionFailure = 23,
- InsufficientPrivilege = 24,
- LimitExceeded = 25,
- Revoked = 26,
- Expired = 27,
- AlreadyRedeemed = 28,
- DuplicateRequest = 29,
- AlreadyOwned = 30,
- IPNotFound = 31,
- PersistFailed = 32,
- LockingFailed = 33,
- LogonSessionReplaced = 34,
- ConnectFailed = 35,
- HandshakeFailed = 36,
- IOFailure = 37,
- RemoteDisconnect = 38,
- ShoppingCartNotFound = 39,
- Blocked = 40,
- Ignored = 41,
- NoMatch = 42,
- AccountDisabled = 43,
- ServiceReadOnly = 44,
- AccountNotFeatured = 45,
- AdministratorOK = 46,
- ContentVersion = 47,
- TryAnotherCM = 48,
- PasswordRequiredToKickSession = 49,
- AlreadyLoggedInElsewhere = 50,
- Suspended = 51,
- Cancelled = 52,
- DataCorruption = 53,
- DiskFull = 54,
- RemoteCallFailed = 55,
- PasswordUnset = 56,
- ExternalAccountUnlinked = 57,
- PSNTicketInvalid = 58,
- ExternalAccountAlreadyLinked = 59,
- RemoteFileConflict = 60,
- IllegalPassword = 61,
- SameAsPreviousValue = 62,
- AccountLogonDenied = 63,
- CannotUseOldPassword = 64,
- InvalidLoginAuthCode = 65,
- AccountLogonDeniedNoMail = 66,
- HardwareNotCapableOfIPT = 67,
- IPTInitError = 68,
- ParentalControlRestricted = 69,
- FacebookQueryError = 70,
- ExpiredLoginAuthCode = 71,
- IPLoginRestrictionFailed = 72,
- AccountLockedDown = 73,
- AccountLogonDeniedVerifiedEmailRequired = 74,
- NoMatchingURL = 75,
- BadResponse = 76,
- RequirePasswordReEntry = 77,
- ValueOutOfRange = 78,
- UnexpectedError = 79,
- Disabled = 80,
- InvalidCEGSubmission = 81,
- RestrictedDevice = 82,
- RegionLocked = 83,
- RateLimitExceeded = 84,
- AccountLoginDeniedNeedTwoFactor = 85,
- ItemDeleted = 86,
- AccountLoginDeniedThrottle = 87,
- TwoFactorCodeMismatch = 88,
- TwoFactorActivationCodeMismatch = 89,
- AccountAssociatedToMultiplePartners = 90,
- NotModified = 91,
- NoMobileDevice = 92,
- TimeNotSynced = 93,
- SmsCodeFailed = 94,
- AccountLimitExceeded = 95,
- AccountActivityLimitExceeded = 96,
- PhoneActivityLimitExceeded = 97,
- RefundToWallet = 98,
- EmailSendFailure = 99,
- NotSettled = 100,
- NeedCaptcha = 101,
- GSLTDenied = 102,
- GSOwnerDenied = 103,
- InvalidItemType = 104,
- IPBanned = 105,
- GSLTExpired = 106,
- InsufficientFunds = 107,
- TooManyPending = 108,
- NoSiteLicensesFound = 109,
- WGNetworkSendExceeded = 110,
- AccountNotFriends = 111,
- LimitedUserAccount = 112,
-}
-
-#[repr(C)]
pub struct CallbackData {
pub param_size: c_int,
pub userdata: *mut c_void,
pub run: unsafe extern "C" fn(*mut c_void, *mut c_void, *mut c_void),
- pub run_extra: unsafe extern "C" fn(*mut c_void, *mut c_void, *mut c_void, bool, SteamAPICall),
+ pub run_extra: unsafe extern "C" fn(*mut c_void, *mut c_void, *mut c_void, u8, SteamAPICall),
pub dealloc: unsafe extern "C" fn(*mut c_void, *mut c_void),
}
@@ -257,7 +54,7 @@ extern "C" {
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 steam_rust_game_server_init(ip: u32, steam_port: u16, game_port: u16, query_port: u16, server_mode: EServerMode, version: *const c_char) -> c_int;
//
@@ -280,11 +77,11 @@ extern "C" {
pub fn SteamAPI_ISteamUtils_GetAppID(instance: *mut ISteamUtils) -> u32;
pub fn SteamAPI_ISteamUtils_GetSteamUILanguage(instance: *mut ISteamUtils) -> *const c_char;
pub fn SteamAPI_ISteamUtils_IsAPICallCompleted(instance: *mut ISteamUtils, api_call: SteamAPICall, failed: *mut bool) -> bool;
- pub fn SteamAPI_ISteamUtils_SetOverlayNotificationPosition(instance: *mut ISteamUtils, position: NotificationPosition);
+ pub fn SteamAPI_ISteamUtils_SetOverlayNotificationPosition(instance: *mut ISteamUtils, position: ENotificationPosition);
pub fn SteamAPI_ISteamApps_BIsAppInstalled(instance: *mut ISteamApps, app_id: AppId) -> u8;
pub fn SteamAPI_ISteamApps_BIsDlcInstalled(instance: *mut ISteamApps, app_id: AppId) -> u8;
- pub fn SteamAPI_ISteamApps_BIsSubscribedApp(instace: *mut ISteamApps, app_id: AppId) -> u8;
+ pub fn SteamAPI_ISteamApps_BIsSubscribedApp(instance: *mut ISteamApps, app_id: AppId) -> u8;
pub fn SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(instance: *mut ISteamApps) -> u8;
pub fn SteamAPI_ISteamApps_BIsVACBanned(instance: *mut ISteamApps) -> u8;
pub fn SteamAPI_ISteamApps_BIsCybercafe(instance: *mut ISteamApps) -> u8;
@@ -300,18 +97,20 @@ extern "C" {
pub fn SteamAPI_ISteamFriends_GetFriendCount(instance: *mut ISteamFriends, flags: c_int) -> c_int;
pub fn SteamAPI_ISteamFriends_GetFriendByIndex(instance: *mut ISteamFriends, friend: c_int, flags: c_int) -> u64;
pub fn SteamAPI_ISteamFriends_GetFriendPersonaName(instance: *mut ISteamFriends, friend: u64) -> *const c_char;
- pub fn SteamAPI_ISteamFriends_GetFriendPersonaState(instance: *mut ISteamFriends, friend: u64) -> PersonaState;
+ pub fn SteamAPI_ISteamFriends_GetFriendPersonaState(instance: *mut ISteamFriends, friend: u64) -> EPersonaState;
pub fn SteamAPI_ISteamFriends_RequestUserInformation(instance: *mut ISteamFriends, user_id: u64, name_only: u8) -> u8;
pub fn SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(instance: *mut ISteamFriends, url: *const c_char);
pub fn SteamAPI_ISteamFriends_GetPersonaName(instance: *mut ISteamFriends) -> *const c_char;
- pub fn SteamAPI_ISteamMatchmaking_CreateLobby(instance: *mut ISteamMatchmaking, lobby_ty: LobbyType, max_members: c_int) -> SteamAPICall;
+ pub fn SteamAPI_ISteamMatchmaking_CreateLobby(instance: *mut ISteamMatchmaking, lobby_ty: ELobbyType, max_members: c_int) -> SteamAPICall;
pub fn SteamAPI_ISteamMatchmaking_RequestLobbyList(instance: *mut ISteamMatchmaking) -> SteamAPICall;
pub fn SteamAPI_ISteamMatchmaking_GetLobbyByIndex(instance: *mut ISteamMatchmaking, lobby: c_int) -> u64;
+ pub fn SteamAPI_ISteamMatchmaking_LeaveLobby(instance: *mut ISteamMatchmaking, lobby: u64);
+ pub fn SteamAPI_ISteamMatchmaking_JoinLobby(instance: *mut ISteamMatchmaking, lobby: u64) -> SteamAPICall;
pub fn SteamAPI_ISteamUser_GetSteamID(instance: *mut ISteamUser) -> u64;
pub fn SteamAPI_ISteamUser_GetAuthSessionTicket(instance: *mut ISteamUser, ticket: *mut c_void, max_ticket: c_int, ticket_size: *mut u32) -> HAuthTicket;
- pub fn SteamAPI_ISteamUser_BeginAuthSession(instance: *mut ISteamUser, ticket: *const c_void, ticket_size: *mut u32, steam_id: u64) -> BeginAuthSessionResult;
+ pub fn SteamAPI_ISteamUser_BeginAuthSession(instance: *mut ISteamUser, ticket: *const c_void, ticket_size: *mut u32, steam_id: u64) -> EBeginAuthSessionResult;
pub fn SteamAPI_ISteamUser_EndAuthSession(instance: *mut ISteamUser, steam_id: u64);
pub fn SteamAPI_ISteamUser_CancelAuthTicket(instance: *mut ISteamUser, auth_ticket: HAuthTicket);
@@ -321,7 +120,7 @@ extern "C" {
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_BeginAuthSession(instance: *mut ISteamGameServer, ticket: *const c_void, ticket_size: *mut u32, steam_id: u64) -> EBeginAuthSessionResult;
pub fn SteamAPI_ISteamGameServer_EndAuthSession(instance: *mut ISteamGameServer, steam_id: u64);
pub fn SteamAPI_ISteamGameServer_CancelAuthTicket(instance: *mut ISteamGameServer, auth_ticket: HAuthTicket);
}