Files
UnrealEngine/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOSPlus/Private/OnlineStoreEOSPlus.h
2025-05-18 13:04:45 +08:00

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;