SDKs code references for UE4
Easily embed Xsolla services with this ready-to-use libraries for UE4 applications and games.
XsollaInventorySubsystem.h
1// Copyright 2024 Xsolla Inc. All Rights Reserved.
2
3#pragma once
4
5#include "XsollaInventoryDataModel.h"
6
7#include "XsollaUtilsHttpRequestHelper.h"
8
9#include "Subsystems/GameInstanceSubsystem.h"
10#include "Subsystems/SubsystemCollection.h"
11#include "XsollaUtilsDataModel.h"
12
13#include "XsollaInventorySubsystem.generated.h"
14
15enum class EXsollaPublishingPlatform : uint8;
16class FJsonObject;
18
19DECLARE_DYNAMIC_DELEGATE(FOnInventoryRequestSuccess);
20DECLARE_DYNAMIC_DELEGATE_OneParam(FOnInventoryUpdate, const FInventoryItemsData&, InventoryData);
21DECLARE_DYNAMIC_DELEGATE_OneParam(FOnCurrencyBalanceUpdate, const FVirtualCurrencyBalanceData&, CurrencyBalanceData);
22DECLARE_DYNAMIC_DELEGATE_OneParam(FOnTimeLimitedItemsUpdate, const FTimeLimitedItemsData&, TimeLimitedItemsData);
23DECLARE_DYNAMIC_DELEGATE_OneParam(FOnCouponRewardsUpdate, FInventoryCouponRewardData, RewardsData);
24DECLARE_DYNAMIC_DELEGATE_OneParam(FOnCouponRedeemUpdate, FInventoryRedeemedCouponData, RewardData);
25
26UCLASS()
27class XSOLLAINVENTORY_API UXsollaInventorySubsystem : public UGameInstanceSubsystem
28{
29 GENERATED_BODY()
30
31public:
33
34 // Begin USubsystem
35 virtual void Initialize(FSubsystemCollectionBase& Collection) override;
36 virtual void Deinitialize() override;
37 // End USubsystem
38
44 UFUNCTION(BlueprintCallable, Category = "Xsolla|Inventory")
45 void Initialize(const FString& InProjectId);
46
59 UFUNCTION(BlueprintCallable, Category = "Xsolla|Inventory", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
60 void GetInventory(const FString& AuthToken, const EXsollaPublishingPlatform Platform,
61 const FOnInventoryUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
62
72 UFUNCTION(BlueprintCallable, Category = "Xsolla|Inventory|VirtualCurrency", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
73 void GetVirtualCurrencyBalance(const FString& AuthToken, const EXsollaPublishingPlatform Platform,
74 const FOnCurrencyBalanceUpdate& SuccessCallback, const FOnError& ErrorCallback);
75
85 UFUNCTION(BlueprintCallable, Category = "Xsolla|Inventory|TimeLimitedItems", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
86 void GetTimeLimitedItems(const FString& AuthToken, const EXsollaPublishingPlatform Platform,
87 const FOnTimeLimitedItemsUpdate& SuccessCallback, const FOnError& ErrorCallback);
88
101 UFUNCTION(BlueprintCallable, Category = "Xsolla|Inventory", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
102 void ConsumeInventoryItem(const FString& AuthToken, const FString& ItemSKU, const int32 Quantity,
103 const FString& InstanceID, const EXsollaPublishingPlatform Platform,
104 const FOnInventoryRequestSuccess& SuccessCallback, const FOnError& ErrorCallback);
105
115 UFUNCTION(BlueprintCallable, Category = "Xsolla|Inventory|Coupons", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
116 void GetCouponRewards(const FString& AuthToken, const FString& CouponCode,
117 const FOnCouponRewardsUpdate& SuccessCallback, const FOnError& ErrorCallback);
118
130 UFUNCTION(BlueprintCallable, Category = "Xsolla|Inventory|Coupons", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
131 void RedeemCoupon(const FString& AuthToken, const FString& CouponCode,
132 const FOnCouponRedeemUpdate& SuccessCallback, const FOnError& ErrorCallback);
133
135 UFUNCTION(BlueprintCallable, Category = "Xsolla|Inventory")
136 static bool IsItemInInventory(const FInventoryItemsData& Inventory, const FString& ItemSKU, FInventoryItem& FoundItem);
137
138protected:
139 void GetInventory_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
140 const bool bSucceeded, FOnInventoryUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
141 void GetVirtualCurrencyBalance_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
142 const bool bSucceeded, FOnCurrencyBalanceUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
143 void GetTimeLimitedItems_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
144 const bool bSucceeded, FOnTimeLimitedItemsUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
145
146 void ConsumeInventoryItem_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
147 const bool bSucceeded, FOnInventoryRequestSuccess SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
148
149 void UpdateCouponRewards_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
150 const bool bSucceeded, FOnCouponRewardsUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
151 void RedeemCoupon_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
152 const bool bSucceeded, FOnCouponRedeemUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
153
154private:
156 TSharedRef<IHttpRequest, ESPMode::ThreadSafe> CreateHttpRequest(const FString& Url, const EXsollaHttpRequestVerb Verb = EXsollaHttpRequestVerb::VERB_GET,
157 const FString& AuthToken = FString(), const FString& Content = FString());
158
160 FString SerializeJson(const TSharedPtr<FJsonObject> DataJson) const;
161
162 UPROPERTY()
163 UXsollaLoginSubsystem* LoginSubsystem;
164
165protected:
167 FString ProjectID;
168};
Definition: XsollaInventorySubsystem.h:28
Definition: XsollaLoginSubsystem.h:51
Definition: XsollaInventoryDataModel.h:11
Definition: XsollaInventoryDataModel.h:51