mirror of
https://github.com/mordentral/AdvancedSessionsPlugin.git
synced 2025-10-22 16:04:18 +00:00
Original Request UGC details function has been deprecated.
New version supports arrays of data and dataset filtering, not using that yet but will in the future. Also changes UGCFile_ID to be uint64 to match the new backend for steam, it used to be uint32. Former-commit-id: 6cdb799eb0256fbad68c44d6bc597d11c10abe44
This commit is contained in:
@@ -48,14 +48,14 @@ struct FBPSteamWorkshopID
|
||||
|
||||
public:
|
||||
|
||||
uint32 SteamWorkshopID;
|
||||
uint64 SteamWorkshopID;
|
||||
|
||||
FBPSteamWorkshopID()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
FBPSteamWorkshopID(uint32 ID)
|
||||
FBPSteamWorkshopID(uint64 ID)
|
||||
{
|
||||
SteamWorkshopID = ID;
|
||||
}
|
||||
|
@@ -32,7 +32,6 @@
|
||||
|
||||
#include "SteamWSRequestUGCDetailsCallbackProxy.generated.h"
|
||||
|
||||
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FBlueprintWorkshopDetailsDelegate, const FBPSteamWorkshopItemDetails&, WorkShopDetails);
|
||||
|
||||
UCLASS(MinimalAPI)
|
||||
@@ -50,7 +49,7 @@ class USteamWSRequestUGCDetailsCallbackProxy : public UOnlineBlueprintCallProxyB
|
||||
|
||||
// Ends the current session
|
||||
UFUNCTION(BlueprintCallable, meta=(BlueprintInternalUseOnly = "true", WorldContext="WorldContextObject"), Category = "Online|AdvancedSteamWorkshop")
|
||||
static USteamWSRequestUGCDetailsCallbackProxy* GetWorkshopItemDetails(UObject* WorldContextObject, FBPSteamWorkshopID WorkShopID, int32 NumSecondsBeforeTimeout);
|
||||
static USteamWSRequestUGCDetailsCallbackProxy* GetWorkshopItemDetails(UObject* WorldContextObject, FBPSteamWorkshopID WorkShopID);
|
||||
|
||||
// UOnlineBlueprintCallProxyBase interface
|
||||
virtual void Activate() override;
|
||||
@@ -59,18 +58,15 @@ class USteamWSRequestUGCDetailsCallbackProxy : public UOnlineBlueprintCallProxyB
|
||||
private:
|
||||
|
||||
#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
|
||||
// Internal callback when the operation completes, calls out to the public success/failure callbacks
|
||||
/* Steam UGC details */
|
||||
//STEAM_CALLBACK(USteamWSRequestUGCDetailsCallbackProxy, OnUGCRequestUGCDetails, SteamUGCRequestUGCDetailsResult_t, OnUGCRequestUGCDetailsCallback);
|
||||
void OnUGCRequestUGCDetails(SteamUGCRequestUGCDetailsResult_t *pResult, bool bIOFailure);
|
||||
CCallResult<USteamWSRequestUGCDetailsCallbackProxy, SteamUGCRequestUGCDetailsResult_t> m_callResultUGCRequestDetails;
|
||||
// Internal callback when the operation completes, calls out to the public success/failure callbacks
|
||||
|
||||
void OnUGCRequestUGCDetails(SteamUGCQueryCompleted_t *pResult, bool bIOFailure);
|
||||
CCallResult<USteamWSRequestUGCDetailsCallbackProxy, SteamUGCQueryCompleted_t> m_callResultUGCRequestDetails;
|
||||
|
||||
#endif
|
||||
|
||||
private:
|
||||
|
||||
FBPSteamWorkshopID WorkShopID;
|
||||
|
||||
int32 NumSecondsBeforeTimeout;
|
||||
|
||||
UObject* WorldContextObject;
|
||||
};
|
||||
|
@@ -27,6 +27,7 @@ void USteamRequestGroupOfficersCallbackProxy::Activate()
|
||||
{
|
||||
uint64 id = *((uint64*)GroupUniqueID.UniqueNetId->GetBytes());
|
||||
SteamAPICall_t hSteamAPICall = SteamFriends()->RequestClanOfficerList(id);
|
||||
|
||||
m_callResultGroupOfficerRequestDetails.Set(hSteamAPICall, this, &USteamRequestGroupOfficersCallbackProxy::OnRequestGroupOfficerDetails);
|
||||
return;
|
||||
}
|
||||
|
@@ -9,16 +9,14 @@
|
||||
USteamWSRequestUGCDetailsCallbackProxy::USteamWSRequestUGCDetailsCallbackProxy(const FObjectInitializer& ObjectInitializer)
|
||||
: Super(ObjectInitializer)
|
||||
{
|
||||
NumSecondsBeforeTimeout = 2.0f;
|
||||
}
|
||||
|
||||
|
||||
USteamWSRequestUGCDetailsCallbackProxy* USteamWSRequestUGCDetailsCallbackProxy::GetWorkshopItemDetails(UObject* WorldContextObject, FBPSteamWorkshopID WorkShopID, int32 NumSecondsBeforeTimeout)
|
||||
USteamWSRequestUGCDetailsCallbackProxy* USteamWSRequestUGCDetailsCallbackProxy::GetWorkshopItemDetails(UObject* WorldContextObject, FBPSteamWorkshopID WorkShopID/*, int32 NumSecondsBeforeTimeout*/)
|
||||
{
|
||||
USteamWSRequestUGCDetailsCallbackProxy* Proxy = NewObject<USteamWSRequestUGCDetailsCallbackProxy>();
|
||||
|
||||
Proxy->WorkShopID = WorkShopID;
|
||||
Proxy->NumSecondsBeforeTimeout = NumSecondsBeforeTimeout;
|
||||
return Proxy;
|
||||
}
|
||||
|
||||
@@ -26,8 +24,21 @@ void USteamWSRequestUGCDetailsCallbackProxy::Activate()
|
||||
{
|
||||
#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
|
||||
if (SteamAPI_Init())
|
||||
{
|
||||
SteamAPICall_t hSteamAPICall = SteamUGC()->RequestUGCDetails(WorkShopID.SteamWorkshopID, NumSecondsBeforeTimeout);
|
||||
{
|
||||
// #TODO: Support arrays instead in the future?
|
||||
UGCQueryHandle_t hQueryHandle = SteamUGC()->CreateQueryUGCDetailsRequest((PublishedFileId_t *)&WorkShopID.SteamWorkshopID, 1);
|
||||
// #TODO: add search settings here by calling into the handle?
|
||||
SteamAPICall_t hSteamAPICall = SteamUGC()->SendQueryUGCRequest(hQueryHandle);
|
||||
|
||||
// Need to release the query
|
||||
SteamUGC()->ReleaseQueryUGCRequest(hQueryHandle);
|
||||
|
||||
if (hSteamAPICall == k_uAPICallInvalid)
|
||||
{
|
||||
OnFailure.Broadcast(FBPSteamWorkshopItemDetails());
|
||||
return;
|
||||
}
|
||||
|
||||
m_callResultUGCRequestDetails.Set(hSteamAPICall, this, &USteamWSRequestUGCDetailsCallbackProxy::OnUGCRequestUGCDetails);
|
||||
return;
|
||||
}
|
||||
@@ -35,18 +46,24 @@ void USteamWSRequestUGCDetailsCallbackProxy::Activate()
|
||||
OnFailure.Broadcast(FBPSteamWorkshopItemDetails());
|
||||
}
|
||||
|
||||
void USteamWSRequestUGCDetailsCallbackProxy::OnUGCRequestUGCDetails(SteamUGCRequestUGCDetailsResult_t *pResult, bool bIOFailure)
|
||||
void USteamWSRequestUGCDetailsCallbackProxy::OnUGCRequestUGCDetails(SteamUGCQueryCompleted_t *pResult, bool bIOFailure)
|
||||
{
|
||||
#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX
|
||||
|
||||
if (bIOFailure || !pResult)
|
||||
if (bIOFailure || !pResult || pResult->m_unNumResultsReturned <= 0)
|
||||
{
|
||||
OnFailure.Broadcast(FBPSteamWorkshopItemDetails());
|
||||
return;
|
||||
}
|
||||
|
||||
OnSuccess.Broadcast(FBPSteamWorkshopItemDetails(pResult->m_details));
|
||||
return;
|
||||
if (SteamAPI_Init())
|
||||
{
|
||||
SteamUGCDetails_t Details;
|
||||
if (SteamUGC()->GetQueryUGCResult(pResult->m_handle, 0, &Details))
|
||||
{
|
||||
OnSuccess.Broadcast(FBPSteamWorkshopItemDetails(Details));
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
OnFailure.Broadcast(FBPSteamWorkshopItemDetails());
|
||||
|
Reference in New Issue
Block a user