Skip to content

Commit cfee251

Browse files
author
twstagg
committed
Implement ISteamUGC/GetAppDependencies
See: https://partner.steamgames.com/doc/api/ISteamUGC#GetAppDependencies steamworks.structs.GetAppDependencies(ctypes.Structure).get_app_dependencies_list() will return Python list of these integers.
1 parent a1d5cb0 commit cfee251

File tree

5 files changed

+411
-551
lines changed

5 files changed

+411
-551
lines changed

library/SteamworksPy.cpp

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
#include <iostream>
2323
#include <string>
24+
#include <vector>
2425

2526
//-----------------------------------------------
2627
// Definitions
@@ -85,11 +86,20 @@ typedef void(*CreateItemResultCallback_t)(CreateItemResult_t);
8586
typedef void(*SubmitItemUpdateResultCallback_t)(SubmitItemUpdateResult_t);
8687
typedef void(*ItemInstalledCallback_t)(ItemInstalled_t);
8788

89+
struct GetAppDependenciesResult {
90+
std::int32_t result;
91+
std::uint64_t publishedFileId;
92+
std::uint32_t* array_app_dependencies;
93+
std::uint32_t array_num_app_dependencies;
94+
std::uint32_t total_num_app_dependencies;
95+
};
96+
8897
struct SubscriptionResult {
8998
std::int32_t result;
9099
std::uint64_t publishedFileId;
91100
};
92101

102+
typedef void(*GetAppDependenciesResultCallback_t)(GetAppDependenciesResult);
93103
typedef void(*RemoteStorageSubscribeFileResultCallback_t)(SubscriptionResult);
94104
typedef void(*RemoteStorageUnsubscribeFileResultCallback_t)(SubscriptionResult);
95105
typedef void(*LeaderboardFindResultCallback_t)(LeaderboardFindResult_t);
@@ -103,11 +113,13 @@ class Workshop {
103113
CreateItemResultCallback_t _pyItemCreatedCallback;
104114
SubmitItemUpdateResultCallback_t _pyItemUpdatedCallback;
105115
ItemInstalledCallback_t _pyItemInstalledCallback;
116+
GetAppDependenciesResultCallback_t _pyGetAppDependenciesCallback;
106117
RemoteStorageSubscribeFileResultCallback_t _pyItemSubscribedCallback;
107118
RemoteStorageUnsubscribeFileResultCallback_t _pyItemUnsubscribedCallback;
108119

109120
CCallResult <Workshop, CreateItemResult_t> _itemCreatedCallback;
110121
CCallResult <Workshop, SubmitItemUpdateResult_t> _itemUpdatedCallback;
122+
CCallResult <Workshop, GetAppDependenciesResult_t> _getAppDependenciesCallback;
111123
CCallResult <Workshop, RemoteStorageSubscribePublishedFileResult_t> _itemSubscribedCallback;
112124
CCallResult <Workshop, RemoteStorageUnsubscribePublishedFileResult_t> _itemUnsubscribedCallback;
113125

@@ -131,6 +143,10 @@ class Workshop {
131143
_pyItemInstalledCallback = nullptr;
132144
}
133145

146+
void SetGetAppDependenciesResultCallback(GetAppDependenciesResultCallback_t callback) {
147+
_pyGetAppDependenciesCallback = callback;
148+
}
149+
134150
void SetItemSubscribedCallback(RemoteStorageSubscribeFileResultCallback_t callback) {
135151
_pyItemSubscribedCallback = callback;
136152
}
@@ -150,6 +166,11 @@ class Workshop {
150166
_itemUpdatedCallback.Set(submitItemUpdateCall, this, &Workshop::OnItemUpdateSubmitted);
151167
}
152168

169+
void GetAppDependencies(PublishedFileId_t publishedFileID) {
170+
SteamAPICall_t getAppDependenciesCall = SteamUGC()->GetAppDependencies(publishedFileID);
171+
_getAppDependenciesCallback.Set(getAppDependenciesCall, this, &Workshop::OnGetAppDependencies);
172+
}
173+
153174
void SubscribeItem(PublishedFileId_t publishedFileID) {
154175
SteamAPICall_t subscribeItemCall = SteamUGC()->SubscribeItem(publishedFileID);
155176
_itemSubscribedCallback.Set(subscribeItemCall, this, &Workshop::OnItemSubscribed);
@@ -179,6 +200,22 @@ class Workshop {
179200
}
180201
}
181202

203+
void OnGetAppDependencies(GetAppDependenciesResult_t* getAppDependenciesResult, bool bIOFailure) {
204+
if (_pyGetAppDependenciesCallback != nullptr) {
205+
GetAppDependenciesResult result;
206+
result.result = getAppDependenciesResult->m_eResult;
207+
result.publishedFileId = getAppDependenciesResult->m_nPublishedFileId;
208+
result.array_num_app_dependencies = getAppDependenciesResult->m_nNumAppDependencies;
209+
result.total_num_app_dependencies = getAppDependenciesResult->m_nTotalNumAppDependencies;
210+
result.array_app_dependencies = new std::uint32_t[result.array_num_app_dependencies];
211+
std::copy(getAppDependenciesResult->m_rgAppIDs,
212+
getAppDependenciesResult->m_rgAppIDs + result.array_num_app_dependencies,
213+
result.array_app_dependencies);
214+
_pyGetAppDependenciesCallback(result);
215+
delete[] result.array_app_dependencies;
216+
}
217+
}
218+
182219
void OnItemSubscribed(RemoteStorageSubscribePublishedFileResult_t *itemSubscribedResult, bool bIOFailure) {
183220
if (_pyItemSubscribedCallback != nullptr) {
184221
SubscriptionResult result{itemSubscribedResult->m_eResult, itemSubscribedResult->m_nPublishedFileId};
@@ -1407,6 +1444,20 @@ SW_PY void Workshop_ClearItemInstalledCallback() {
14071444
workshop.ClearItemInstallCallback();
14081445
}
14091446

1447+
SW_PY void Workshop_GetAppDependencies(PublishedFileId_t publishedFileID) {
1448+
if(SteamUGC() == NULL){
1449+
return;
1450+
}
1451+
workshop.GetAppDependencies(publishedFileID);
1452+
}
1453+
1454+
SW_PY void Workshop_SetGetAppDependenciesResultCallback(GetAppDependenciesResultCallback_t callback) {
1455+
if (SteamUGC() == NULL) {
1456+
return;
1457+
}
1458+
workshop.SetGetAppDependenciesResultCallback(callback);
1459+
}
1460+
14101461
SW_PY void Workshop_SetItemSubscribedCallback(RemoteStorageSubscribeFileResultCallback_t callback) {
14111462
if (SteamUGC() == NULL) {
14121463
return;

library/sdk/redist/.gitignore

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)