aboutsummaryrefslogtreecommitdiff
path: root/steamworks-sys/src
diff options
context:
space:
mode:
authorAlex Parrill <[email protected]>2019-06-05 22:34:44 -0400
committerMatthew Collins <[email protected]>2019-06-09 23:50:11 +0100
commitaa49b26053d17a4f0a80ae487678ed9791c5133c (patch)
treeaf5cfba0d3be2e44015dda1fc768b0d7f086223a /steamworks-sys/src
parentAdd SteamId::account_id to get the account ID (diff)
downloadsteamworks-rs-aa49b26053d17a4f0a80ae487678ed9791c5133c.tar.xz
steamworks-rs-aa49b26053d17a4f0a80ae487678ed9791c5133c.zip
Add partial UGC (Workshop) support
Supported major features are (un)subscribing from items, getting the list of currently subscribed items, and performing searches against user-related lists (ex. currently subscribed, favorited, ...) for the current app. Can be extended to other searches later.
Diffstat (limited to 'steamworks-sys/src')
-rw-r--r--steamworks-sys/src/lib.cpp1
-rw-r--r--steamworks-sys/src/lib.rs25
2 files changed, 26 insertions, 0 deletions
diff --git a/steamworks-sys/src/lib.cpp b/steamworks-sys/src/lib.cpp
index 2c5860d..ea05028 100644
--- a/steamworks-sys/src/lib.cpp
+++ b/steamworks-sys/src/lib.cpp
@@ -93,4 +93,5 @@ extern "C" {
ISteamRemoteStorage* steam_rust_get_remote_storage() { return SteamRemoteStorage(); }
ISteamGameServer* steam_rust_get_server() { return SteamGameServer(); }
ISteamApps* steam_rust_get_server_apps() { return SteamGameServerApps(); }
+ ISteamUGC* steam_rust_get_ugc() { return SteamUGC(); }
} \ No newline at end of file
diff --git a/steamworks-sys/src/lib.rs b/steamworks-sys/src/lib.rs
index f90257d..f778485 100644
--- a/steamworks-sys/src/lib.rs
+++ b/steamworks-sys/src/lib.rs
@@ -26,6 +26,8 @@ pub struct ISteamRemoteStorage(c_void);
pub struct ISteamGameServer(c_void);
#[repr(transparent)]
pub struct ISteamNetworking(c_void);
+#[repr(transparent)]
+pub struct ISteamUGC(c_void);
#[repr(transparent)]
#[derive(Clone, Copy, PartialEq, Eq, Hash)]
@@ -68,6 +70,7 @@ extern "C" {
pub fn steam_rust_get_server() -> *mut ISteamGameServer;
pub fn steam_rust_get_server_apps() -> *mut ISteamApps;
pub fn steam_rust_get_networking() -> *mut ISteamNetworking;
+ pub fn steam_rust_get_ugc() -> *mut ISteamUGC;
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;
pub fn steam_rust_is_steam_id_valid(id: u64) -> c_int;
@@ -157,6 +160,28 @@ extern "C" {
pub fn SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(instance: *mut ISteamUserStats, leaderboard: SteamLeaderboard_t, data_request: ELeaderboardDataRequest, start: c_int, end: c_int) -> SteamAPICall_t;
pub fn SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(instance: *mut ISteamUserStats, entries: SteamLeaderboardEntries_t, index: c_int, entry: *mut LeaderboardEntry_t, details: *mut i32, details_max: c_int) -> u8;
+ pub fn SteamAPI_ISteamUGC_SuspendDownload(instance: *mut ISteamUGC, suspend: bool);
+ pub fn SteamAPI_ISteamUGC_SubscribeItem(instance: *mut ISteamUGC, publisher_field_id: u64) -> SteamAPICall_t;
+ pub fn SteamAPI_ISteamUGC_UnsubscribeItem(instance: *mut ISteamUGC, publisher_field_id: u64) -> SteamAPICall_t;
+ pub fn SteamAPI_ISteamUGC_GetItemState(instance: *mut ISteamUGC, publisher_field_id: u64) -> u32;
+ pub fn SteamAPI_ISteamUGC_GetNumSubscribedItems(instance: *mut ISteamUGC) -> u32;
+ pub fn SteamAPI_ISteamUGC_GetSubscribedItems(instance: *mut ISteamUGC, vec: *mut u64, max_entries: u32) -> u32;
+ pub fn SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(instance: *mut ISteamUGC, accountt_id: AccountID_t, list: EUserUGCList, matching: EUGCMatchingUGCType, oreder: EUserUGCListSortOrder, creator_app: AppId_t, consumer_app: AppId_t, page: u32) -> UGCQueryHandle_t;
+ pub fn SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(instance: *mut ISteamUGC, handle: UGCQueryHandle_t) -> bool;
+ pub fn SteamAPI_ISteamUGC_AddExcludedTag(instance: *mut ISteamUGC, handle: UGCQueryHandle_t, tag: *const c_char) -> bool;
+ pub fn SteamAPI_ISteamUGC_AddRequiredTag(instance: *mut ISteamUGC, handle: UGCQueryHandle_t, tag: *const c_char) -> bool;
+ pub fn SteamAPI_ISteamUGC_SetLanguage(instance: *mut ISteamUGC, handle: UGCQueryHandle_t, language: *const c_char) -> bool;
+ pub fn SteamAPI_ISteamUGC_SetMatchAnyTag(instance: *mut ISteamUGC, handle: UGCQueryHandle_t, any: bool) -> bool;
+ pub fn SteamAPI_ISteamUGC_SetReturnLongDescription(instance: *mut ISteamUGC, handle: UGCQueryHandle_t, any: bool) -> bool;
+ pub fn SteamAPI_ISteamUGC_SetReturnMetadata(instance: *mut ISteamUGC, handle: UGCQueryHandle_t, any: bool) -> bool;
+ pub fn SteamAPI_ISteamUGC_SetReturnChildren(instance: *mut ISteamUGC, handle: UGCQueryHandle_t, any: bool) -> bool;
+ pub fn SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(instance: *mut ISteamUGC, handle: UGCQueryHandle_t, any: bool) -> bool;
+ pub fn SteamAPI_ISteamUGC_SetReturnOnlyIDs(instance: *mut ISteamUGC, handle: UGCQueryHandle_t, any: bool) -> bool;
+ pub fn SteamAPI_ISteamUGC_SetReturnTotalOnly(instance: *mut ISteamUGC, handle: UGCQueryHandle_t, any: bool) -> bool;
+ pub fn SteamAPI_ISteamUGC_SetAllowCachedResponse(instance: *mut ISteamUGC, handle: UGCQueryHandle_t, timeout: u32) -> bool;
+ pub fn SteamAPI_ISteamUGC_SendQueryUGCRequest(instance: *mut ISteamUGC, handle: UGCQueryHandle_t) -> SteamAPICall_t;
+ pub fn SteamAPI_ISteamUGC_GetQueryUGCResult(instance: *mut ISteamUGC, handle: UGCQueryHandle_t, index: u32, details: *mut SteamUGCDetails_t) -> bool;
+
/// https://partner.steamgames.com/doc/api/ISteamUserStats#RequestCurrentStats
///
/// Returns true if successful