aboutsummaryrefslogtreecommitdiff
path: root/steamworks-sys/src/lib.rs
diff options
context:
space:
mode:
authorMatthew Collins <[email protected]>2018-02-24 00:04:51 +0000
committerMatthew Collins <[email protected]>2018-02-24 00:04:51 +0000
commitd2e40121732f79a5152d9d1d8b395351b882fe2b (patch)
tree938ebc64b5d31d55d979b946a5b863fe00cd2717 /steamworks-sys/src/lib.rs
parentMake the client `Send + Sync` (diff)
downloadsteamworks-rs-d2e40121732f79a5152d9d1d8b395351b882fe2b.tar.xz
steamworks-rs-d2e40121732f79a5152d9d1d8b395351b882fe2b.zip
Initial work on lobbies + A clean up
Diffstat (limited to 'steamworks-sys/src/lib.rs')
-rw-r--r--steamworks-sys/src/lib.rs173
1 files changed, 162 insertions, 11 deletions
diff --git a/steamworks-sys/src/lib.rs b/steamworks-sys/src/lib.rs
index 5cc10e7..1173b34 100644
--- a/steamworks-sys/src/lib.rs
+++ b/steamworks-sys/src/lib.rs
@@ -15,15 +15,13 @@ pub struct ISteamUtils(c_void);
pub struct ISteamApps(c_void);
#[repr(C)]
pub struct ISteamFriends(c_void);
+#[repr(C)]
+pub struct ISteamMatchmaking(c_void);
pub type HSteamPipe = i32;
pub type HSteamUser = i32;
pub type AppId = u32;
-
-pub const STEAMCLIENT_INTERFACE_VERSION: &'static [u8] = b"SteamClient017\0";
-pub const STEAMUTILS_INTERFACE_VERSION: &'static [u8] = b"SteamUtils009\0";
-pub const STEAMAPPS_INTERFACE_VERSION: &'static [u8] = b"STEAMAPPS_INTERFACE_VERSION008\0";
-pub const STEAMFRIENDS_INTERFACE_VERSION: &'static [u8] = b"SteamFriends015\0";
+pub type SteamAPICall = u64;
#[repr(C)]
pub enum PersonaState {
@@ -37,12 +35,148 @@ pub enum PersonaState {
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 LobbyCreated {
+ pub result: SResult,
+ pub lobby_steam_id: u64,
+}
+#[repr(C)]
+pub struct LobbyMatchList {
+ pub lobbies_matching: u32,
+}
+
+#[repr(C)]
+#[derive(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,
+}
+
+
extern "C" {
// Helpers from lib.cpp
@@ -51,28 +185,41 @@ extern "C" {
userdata: *mut c_void,
run_func: extern "C" fn (*mut c_void, *mut c_void),
dealloc: extern "C" fn (*mut c_void),
- callback_id: c_int
+ callback_id: c_int,
) -> *mut c_void;
pub fn unregister_rust_steam_callback(
ty: *mut c_void,
);
+ pub fn register_rust_steam_call_result(
+ parameter_size: c_int,
+ userdata: *mut c_void,
+ run_func: extern "C" fn (*mut c_void, *mut c_void, bool),
+ dealloc: extern "C" fn (*mut c_void),
+ api_call: SteamAPICall,
+ callback_id: c_int,
+ ) -> *mut c_void;
+ pub fn unregister_rust_steam_call_result(
+ ty: *mut c_void,
+ );
+
+ pub fn steam_rust_get_client() -> *mut ISteamClient;
+ pub fn steam_rust_get_matchmaking() -> *mut ISteamMatchmaking;
+ pub fn steam_rust_get_utils() -> *mut ISteamUtils;
+ pub fn steam_rust_get_apps() -> *mut ISteamApps;
+ pub fn steam_rust_get_friends() -> *mut ISteamFriends;
//
pub fn SteamAPI_Init() -> u8;
pub fn SteamAPI_Shutdown();
pub fn SteamAPI_RunCallbacks();
- pub fn SteamInternal_CreateInterface(version: *const c_char) -> *mut ISteamClient;
-
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;
- pub fn SteamAPI_ISteamClient_GetISteamUtils(instance: *mut ISteamClient, pipe: HSteamPipe, version: *const c_char) -> *mut ISteamUtils;
- pub fn SteamAPI_ISteamClient_GetISteamApps(instance: *mut ISteamClient, user: HSteamUser, pipe: HSteamPipe, version: *const c_char) -> *mut ISteamApps;
- pub fn SteamAPI_ISteamClient_GetISteamFriends(instance: *mut ISteamClient, user: HSteamUser, pipe: HSteamPipe, version: *const c_char) -> *mut ISteamFriends;
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_ISteamApps_BIsAppInstalled(instance: *mut ISteamApps, app_id: AppId) -> u8;
pub fn SteamAPI_ISteamApps_BIsDlcInstalled(instance: *mut ISteamApps, app_id: AppId) -> u8;
@@ -95,4 +242,8 @@ extern "C" {
pub fn SteamAPI_ISteamFriends_GetFriendPersonaState(instance: *mut ISteamFriends, friend: u64) -> PersonaState;
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_ISteamMatchmaking_CreateLobby(instance: *mut ISteamMatchmaking, lobby_ty: LobbyType, 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;
}