// 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 { 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& 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& OfferIds, const FOnQueryOnlineStoreOffersComplete& Delegate = FOnQueryOnlineStoreOffersComplete()) override; virtual void GetOffers(TArray& OutOffers) const override; virtual TSharedPtr 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& 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 FOnlineStoreEOSPlusPtr;