2121
2222#include < iostream>
2323#include < string>
24+ #include < vector>
2425
2526// -----------------------------------------------
2627// Definitions
@@ -85,11 +86,20 @@ typedef void(*CreateItemResultCallback_t)(CreateItemResult_t);
8586typedef void (*SubmitItemUpdateResultCallback_t)(SubmitItemUpdateResult_t);
8687typedef 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+
8897struct SubscriptionResult {
8998 std::int32_t result;
9099 std::uint64_t publishedFileId;
91100};
92101
102+ typedef void (*GetAppDependenciesResultCallback_t)(GetAppDependenciesResult);
93103typedef void (*RemoteStorageSubscribeFileResultCallback_t)(SubscriptionResult);
94104typedef void (*RemoteStorageUnsubscribeFileResultCallback_t)(SubscriptionResult);
95105typedef 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+
14101461SW_PY void Workshop_SetItemSubscribedCallback (RemoteStorageSubscribeFileResultCallback_t callback) {
14111462 if (SteamUGC () == NULL ) {
14121463 return ;
0 commit comments