Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ FLootLockerServerEndPoint ULootLockerServerEndpoints::DeleteLeaderboardSchedule
// Assets
FLootLockerServerEndPoint ULootLockerServerEndpoints::GetAssets = InitEndpoint("assets", ELootLockerServerHTTPMethod::GET);
FLootLockerServerEndPoint ULootLockerServerEndpoints::ListAssets = InitEndpoint("assets/artful-alpaca/v1", ELootLockerServerHTTPMethod::POST);
FLootLockerServerEndPoint ULootLockerServerEndpoints::ListContexts = InitEndpoint("contexts", ELootLockerServerHTTPMethod::GET);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
FLootLockerServerEndPoint ULootLockerServerEndpoints::ListContexts = InitEndpoint("contexts", ELootLockerServerHTTPMethod::GET);
FLootLockerServerEndPoint ULootLockerServerEndpoints::ListContexts = InitEndpoint("contexts/v1", ELootLockerServerHTTPMethod::GET);

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit 8eb9289. Updated endpoint to contexts/v1.


// Asset Instances
FLootLockerServerEndPoint ULootLockerServerEndpoints::GetAssetInstanceKeyValuePairs = InitEndpoint("player/{0}/assets/instances/{1}/storage", ELootLockerServerHTTPMethod::GET);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,8 @@ void ULootLockerServerAssetRequest::ListAssets(const FLootLockerServerListAssets
ULootLockerServerHttpClient::SendRequest<FLootLockerServerListAssetsResponse>(Request, ULootLockerServerEndpoints::ListAssets, {}, QueryParams, OnCompletedRequestBP, OnCompletedRequest);
}

void ULootLockerServerAssetRequest::ListContexts(const FLootLockerServerListContextsResponseBP& OnCompletedRequestBP, const FLootLockerServerListContextsResponseDelegate& OnCompletedRequest)
{
ULootLockerServerHttpClient::SendRequest<FLootLockerServerListContextsResponse>(FLootLockerServerEmptyRequest{}, ULootLockerServerEndpoints::ListContexts, {}, {}, OnCompletedRequestBP, OnCompletedRequest);
}

Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ class LOOTLOCKERSERVERSDK_API ULootLockerServerEndpoints : public UObject
// Assets
static FLootLockerServerEndPoint GetAssets;
static FLootLockerServerEndPoint ListAssets;
static FLootLockerServerEndPoint ListContexts;

// Asset Instances
static FLootLockerServerEndPoint GetAssetInstanceKeyValuePairs;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -604,6 +604,59 @@ struct FLootLockerServerSimpleAsset
TArray<FLootLockerServerMetadataEntry> metadata;
};

/**
* Represents a context for organizing assets and inventory
*/
USTRUCT(BlueprintType)
struct FLootLockerServerContext
{
GENERATED_BODY()
/**
* The unique identifier of the context
*/
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "LootLockerServer")
int Id = 0;
/**
* The UUID of the context
*/
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "LootLockerServer")
FString Uuid = "";
/**
* The name of the context
*/
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "LootLockerServer")
FString Name = "";
/**
* The human-friendly name of the context
*/
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "LootLockerServer")
FString Friendly_name = "";
/**
* Whether assets in this context can be detached
*/
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "LootLockerServer")
bool Detachable = false;
/**
* Whether this context is visible to players
*/
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "LootLockerServer")
bool User_facing = false;
/**
* Optional: The ID of a parent asset if this context is nested
*
* This variable is optional meaning it may or may not exist, which is why it's a string. To get the value from it you should first check if it is valid (for example using .IsNumeric() and then get the value from it (for example using FCString::Atoi)
*/
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "LootLockerServer")
FString Dependent_asset_id = "";
/**
* Optional: Maximum number of assets that can be equipped in this context
*
* This variable is optional meaning it may or may not exist, which is why it's a string. To get the value from it you should first check if it is valid (for example using .IsNumeric() and then get the value from it (for example using FCString::Atoi)
*/
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "LootLockerServer")
FString Max_equip = "";
};

//==================================================
// Request Definitions
//==================================================
Expand Down Expand Up @@ -734,6 +787,20 @@ struct FLootLockerServerListAssetsResponse : public FLootLockerServerResponse
FLootLockerServerExtendedIndexBasedPagination pagination;
};

/**
* Response payload for listing contexts
*/
USTRUCT(BlueprintType)
struct FLootLockerServerListContextsResponse : public FLootLockerServerResponse
{
GENERATED_BODY()
/*
List of contexts returned for this request
*/
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "LootLockerServer")
TArray<FLootLockerServerContext> Contexts;
};

//==================================================
// Blueprint Delegate Definitions
//==================================================
Expand All @@ -754,6 +821,10 @@ DECLARE_DYNAMIC_DELEGATE_OneParam(FLootLockerServerAssetInstanceKeyValuePairItem
Blueprint response delegate for listing simple assets
*/
DECLARE_DYNAMIC_DELEGATE_OneParam(FLootLockerServerListAssetsResponseBP, FLootLockerServerListAssetsResponse, Response);
/*
Blueprint response delegate for listing contexts
*/
DECLARE_DYNAMIC_DELEGATE_OneParam(FLootLockerServerListContextsResponseBP, FLootLockerServerListContextsResponse, Response);

//==================================================
// C++ Delegate Definitions
Expand All @@ -775,6 +846,10 @@ DECLARE_DELEGATE_OneParam(FLootLockerServerAssetInstanceKeyValuePairItemResponse
Blueprint response delegate for listing simple assets
*/
DECLARE_DELEGATE_OneParam(FLootLockerServerListAssetsResponseDelegate, FLootLockerServerListAssetsResponse);
/*
C++ response delegate for listing contexts
*/
DECLARE_DELEGATE_OneParam(FLootLockerServerListContextsResponseDelegate, FLootLockerServerListContextsResponse);

/**
*
Expand All @@ -795,4 +870,5 @@ class LOOTLOCKERSERVERSDK_API ULootLockerServerAssetRequest : public UObject
static void UpdateKeyValuePairOnAssetInstanceById(int PlayerID, int AssetInstanceID, int KeyValuePairID, const FString Key, FString Value, const FLootLockerServerAssetInstanceKeyValuePairItemResponseBP& OnCompletedRequestBP = FLootLockerServerAssetInstanceKeyValuePairItemResponseBP(), const FLootLockerServerAssetInstanceKeyValuePairItemResponseDelegate& OnCompletedRequest = FLootLockerServerAssetInstanceKeyValuePairItemResponseDelegate());
static void DeleteKeyValuePairFromAssetInstanceById(int PlayerID, int AssetInstanceID, int KeyValuePairID, const FLootLockerServerAssetInstanceKeyValuePairsListResponseBP& OnCompletedRequestBP = FLootLockerServerAssetInstanceKeyValuePairsListResponseBP(), const FLootLockerServerAssetInstanceKeyValuePairsListResponseDelegate& OnCompletedRequest = FLootLockerServerAssetInstanceKeyValuePairsListResponseDelegate());
static void ListAssets(const FLootLockerServerListAssetsRequest& Request, int PerPage = 0, int Page = 0, const FLootLockerServerListAssetsResponseBP& OnCompletedRequestBP = FLootLockerServerListAssetsResponseBP(), const FLootLockerServerListAssetsResponseDelegate& OnCompletedRequest = FLootLockerServerListAssetsResponseDelegate());
static void ListContexts(const FLootLockerServerListContextsResponseBP& OnCompletedRequestBP = FLootLockerServerListContextsResponseBP(), const FLootLockerServerListContextsResponseDelegate& OnCompletedRequest = FLootLockerServerListContextsResponseDelegate());
};