diff options
| author | Matthew Collins <[email protected]> | 2018-05-05 15:46:12 +0100 |
|---|---|---|
| committer | Matthew Collins <[email protected]> | 2018-05-05 15:46:12 +0100 |
| commit | 5ef3f6e17cd14d452cfcdbb8a30abf61e513e84d (patch) | |
| tree | e667ed1dccc3d3ac0df83e8c66b76dd5dc0771e8 /steamworks-sys/src | |
| parent | Minor bump due to slight mistake with last publish (diff) | |
| download | steamworks-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.cpp | 4 | ||||
| -rw-r--r-- | steamworks-sys/src/lib.rs | 229 |
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); } |