// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. #pragma once #include "OnlineSessionInterface.h" #include "OnlineSubSystemHeader.h" #include "FindSessionsCallbackProxy.h" #include "FindSessionsCallbackProxyAdvanced.generated.h" UCLASS(MinimalAPI) class UFindSessionsCallbackProxyAdvanced : public UOnlineBlueprintCallProxyBase { GENERATED_UCLASS_BODY() // Called when there is a successful query UPROPERTY(BlueprintAssignable) FBlueprintFindSessionsResultDelegate OnSuccess; // Called when there is an unsuccessful query UPROPERTY(BlueprintAssignable) FBlueprintFindSessionsResultDelegate OnFailure; // Searches for advertised sessions with the default online subsystem and includes an array of filters UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", WorldContext = "WorldContextObject", AutoCreateRefTerm="Filters"), Category = "Online|AdvancedSessions") static UFindSessionsCallbackProxyAdvanced* FindSessionsAdvanced(UObject* WorldContextObject, class APlayerController* PlayerController, int32 MaxResults, bool bUseLAN, bool bSearchDedicated, const TArray &Filters); static bool CompareVariants(const FVariantData &A, const FVariantData &B, EOnlineComparisonOpRedux::Type Comparator); // Filters an array of session results by the given search parameters, returns a new array with the filtered results UFUNCTION(BluePrintCallable, meta = (Category = "Online|AdvancedSessions")) static void FilterSessionResults(const TArray &SessionResults, const TArray &Filters, TArray &FilteredResults); // Removed, the default built in versions work fine in the normal FindSessionsCallbackProxy /*UFUNCTION(BlueprintPure, Category = "Online|Session") static int32 GetPingInMs(const FBlueprintSessionResult& Result); UFUNCTION(BlueprintPure, Category = "Online|Session") static FString GetServerName(const FBlueprintSessionResult& Result); UFUNCTION(BlueprintPure, Category = "Online|Session") static int32 GetCurrentPlayers(const FBlueprintSessionResult& Result); UFUNCTION(BlueprintPure, Category = "Online|Session") static int32 GetMaxPlayers(const FBlueprintSessionResult& Result);*/ // UOnlineBlueprintCallProxyBase interface virtual void Activate() override; // End of UOnlineBlueprintCallProxyBase interface private: // Internal callback when the session search completes, calls out to the public success/failure callbacks void OnCompleted(bool bSuccess); private: // The player controller triggering things TWeakObjectPtr PlayerControllerWeakPtr; // The delegate executed by the online subsystem FOnFindSessionsCompleteDelegate Delegate; // Handle to the registered OnFindSessionsComplete delegate FDelegateHandle DelegateHandle; // Object to track search results TSharedPtr SearchObject; // Whether or not to search LAN bool bUseLAN; // Whether or not to search for dedicated servers bool bUseDedicated; // Maximum number of results to return int MaxResults; // Store extra settings TArray SearchSettings; // The world context object in which this call is taking place UObject* WorldContextObject; };