66 lines
3.2 KiB
C++
66 lines
3.2 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Online/CoreOnline.h"
|
|
#include "OnlineSubsystem.h"
|
|
#include "Interfaces/OnlineStoreInterfaceV2.h"
|
|
#include "Interfaces/OnlinePurchaseInterface.h"
|
|
#include "OnlineUserEOSPlus.h"
|
|
|
|
class FOnlineSubsystemEOSPlus;
|
|
|
|
/**
|
|
* Interface for encapsulating the platform store interface
|
|
*/
|
|
class FOnlineStoreEOSPlus :
|
|
public IOnlineStoreV2,
|
|
public IOnlinePurchase,
|
|
public TSharedFromThis<FOnlineStoreEOSPlus, ESPMode::ThreadSafe>
|
|
{
|
|
public:
|
|
FOnlineStoreEOSPlus() = delete;
|
|
virtual ~FOnlineStoreEOSPlus();
|
|
|
|
void Initialize();
|
|
|
|
//~ Begin IOnlineStoreV2 Interface
|
|
virtual void QueryCategories(const FUniqueNetId& UserId, const FOnQueryOnlineStoreCategoriesComplete& Delegate = FOnQueryOnlineStoreCategoriesComplete()) override;
|
|
virtual void GetCategories(TArray<FOnlineStoreCategory>& OutCategories) const override;
|
|
virtual void QueryOffersByFilter(const FUniqueNetId& UserId, const FOnlineStoreFilter& Filter, const FOnQueryOnlineStoreOffersComplete& Delegate = FOnQueryOnlineStoreOffersComplete()) override;
|
|
virtual void QueryOffersById(const FUniqueNetId& UserId, const TArray<FUniqueOfferId>& OfferIds, const FOnQueryOnlineStoreOffersComplete& Delegate = FOnQueryOnlineStoreOffersComplete()) override;
|
|
virtual void GetOffers(TArray<FOnlineStoreOfferRef>& OutOffers) const override;
|
|
virtual TSharedPtr<FOnlineStoreOffer> GetOffer(const FUniqueOfferId& OfferId) const override;
|
|
//~ End IOnlineStoreV2 Interface
|
|
|
|
//~ Begin IOnlinePurchase Interface
|
|
virtual bool IsAllowedToPurchase(const FUniqueNetId& UserId) override;
|
|
virtual void Checkout(const FUniqueNetId& UserId, const FPurchaseCheckoutRequest& CheckoutRequest, const FOnPurchaseCheckoutComplete& Delegate) override;
|
|
virtual void Checkout(const FUniqueNetId& UserId, const FPurchaseCheckoutRequest& CheckoutRequest, const FOnPurchaseReceiptlessCheckoutComplete& Delegate) override;
|
|
virtual void FinalizePurchase(const FUniqueNetId& UserId, const FString& ReceiptId) override;
|
|
virtual void RedeemCode(const FUniqueNetId& UserId, const FRedeemCodeRequest& RedeemCodeRequest, const FOnPurchaseRedeemCodeComplete& Delegate) override;
|
|
virtual void QueryReceipts(const FUniqueNetId& UserId, bool bRestoreReceipts, const FOnQueryReceiptsComplete& Delegate) override;
|
|
virtual void GetReceipts(const FUniqueNetId& UserId, TArray<FPurchaseReceipt>& OutReceipts) const override;
|
|
virtual void FinalizeReceiptValidationInfo(const FUniqueNetId& UserId, FString& InReceiptValidationInfo, const FOnFinalizeReceiptValidationInfoComplete& Delegate) override;
|
|
//~ End IOnlinePurchase Interface
|
|
|
|
PACKAGE_SCOPE:
|
|
FOnlineStoreEOSPlus(FOnlineSubsystemEOSPlus* InSubsystem);
|
|
|
|
void OnQueryForAvailablePurchasesCompleteBase(bool bWasSuccessful);
|
|
void OnUnexpectedPurchaseReceiptBase(const FUniqueNetId& UserId);
|
|
|
|
private:
|
|
FUniqueNetIdEOSPlusPtr GetNetIdPlus(const FString& SourceId) const;
|
|
|
|
/** Reference to the owning EOS plus subsystem */
|
|
FOnlineSubsystemEOSPlus* EOSPlus;
|
|
|
|
// We don't support EOS mirroring yet
|
|
IOnlineStoreV2Ptr BaseStoreInterface;
|
|
IOnlinePurchasePtr BasePurchaseInterface;
|
|
};
|
|
|
|
typedef TSharedPtr<FOnlineStoreEOSPlus, ESPMode::ThreadSafe> FOnlineStoreEOSPlusPtr;
|