diff --git a/EOSBasic/Content/Blueprints/BP_PlayerController.uasset b/EOSBasic/Content/Blueprints/BP_PlayerController.uasset index d91296b..6a81bd9 100644 Binary files a/EOSBasic/Content/Blueprints/BP_PlayerController.uasset and b/EOSBasic/Content/Blueprints/BP_PlayerController.uasset differ diff --git a/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/EOSBlueprintLibrary.cpp b/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/EOSBlueprintLibrary.cpp new file mode 100644 index 0000000..be8f8c5 --- /dev/null +++ b/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/EOSBlueprintLibrary.cpp @@ -0,0 +1,32 @@ +// Copyright (C) 2019-2020, Gaslight Games Ltd + + +#include "EOSBlueprintLibrary.h" + +// Engine Includes +#include "OnlineSubsystem.h" +#include "Interfaces/OnlineIdentityInterface.h" + +// EOS Plugin Includes +#include "OnlineSubsystemEOS.h" +#include "OnlineSubsystemEOSCommon.h" + + +bool UEOSBlueprintLibrary::RequestLoginByType(FString Id, FString Token, EEOSLoginType Type) +{ + IOnlineSubsystem* SubSystem = IOnlineSubsystem::Get(EOS_SUBSYSTEM); + + if (SubSystem != nullptr) + { + IOnlineIdentityPtr OnlineIdentity = SubSystem->GetIdentityInterface(); + + if (OnlineIdentity != nullptr) + { + FString TypeAsString = UEOSCommon::EEOSLoginTypeToString(Type); + FOnlineAccountCredentials Credentials(TypeAsString, Id, Token); + return OnlineIdentity->Login(0, Credentials); + } + } + + return false; +} diff --git a/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/OnlineIdentityInterfaceEOS.cpp b/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/OnlineIdentityInterfaceEOS.cpp index 11d5a02..6aa76c7 100644 --- a/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/OnlineIdentityInterfaceEOS.cpp +++ b/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/OnlineIdentityInterfaceEOS.cpp @@ -41,9 +41,19 @@ bool FOnlineIdentityEOS::Login( int32 LocalUserNum, const FOnlineAccountCredenti FString MessageText = FString::Printf( TEXT( "Logging In with Dev Auth Tool | ID: %s | Token: %s." ), *AccountCredentials.Id, *AccountCredentials.Token ); UE_LOG_ONLINE_IDENTITY( Warning, TEXT( "%s" ), *MessageText ); - Credentials.Id = TCHAR_TO_UTF8( *AccountCredentials.Id ); - Credentials.Token = TCHAR_TO_UTF8( *AccountCredentials.Token ); - Credentials.Type = EOS_ELoginCredentialType::EOS_LCT_Developer; + EEOSLoginType LoginType = UEOSCommon::EEOSLoginTypeFromString(AccountCredentials.Type); + + switch (LoginType) { + case EEOSLoginType::LT_DeveloperTool: + Credentials.Id = TCHAR_TO_UTF8(*AccountCredentials.Id); + Credentials.Token = TCHAR_TO_UTF8(*AccountCredentials.Token); + Credentials.Type = EOS_ELoginCredentialType::EOS_LCT_Developer; + break; + case EEOSLoginType::LT_EpicPortal: + Credentials.Type = EOS_ELoginCredentialType::EOS_LCT_AccountPortal; + break; + } + LoginOptions.Credentials = &Credentials; diff --git a/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/EOSBlueprintLibrary.h b/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/EOSBlueprintLibrary.h new file mode 100644 index 0000000..1b28b29 --- /dev/null +++ b/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/EOSBlueprintLibrary.h @@ -0,0 +1,21 @@ +// Copyright (C) 2019-2020, Gaslight Games Ltd + +#pragma once + +#include "CoreMinimal.h" +#include "Kismet/BlueprintFunctionLibrary.h" +#include "OnlineSubsystemEOSCommon.h" +#include "EOSBlueprintLibrary.generated.h" + +/** + * + */ +UCLASS() +class ONLINESUBSYSTEMEOS_API UEOSBlueprintLibrary : public UBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, Category = "EOS Basic", meta = (DisplayName = "Request Login")) + static bool RequestLoginByType(FString Id, FString Token, EEOSLoginType Type); +}; diff --git a/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/OnlineSubsystemEOSCommon.cpp b/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/OnlineSubsystemEOSCommon.cpp index 8a7a0fa..1565b56 100644 --- a/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/OnlineSubsystemEOSCommon.cpp +++ b/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/OnlineSubsystemEOSCommon.cpp @@ -489,3 +489,31 @@ FString UEOSCommon::EOSResultToString( EOS_EResult Result ) return "Unknown"; } + +FString UEOSCommon::EEOSLoginTypeToString(EEOSLoginType LoginType) { + + switch (LoginType) + { + + case EEOSLoginType::LT_DeveloperTool: + return "Dev"; + case EEOSLoginType::LT_EpicPortal: + return "EpicPortal"; + } + + return "Unknown"; +} + +EEOSLoginType UEOSCommon::EEOSLoginTypeFromString(FString EEOSLoginType) { + if( EEOSLoginType.Equals("Dev") ) + { + return EEOSLoginType::LT_DeveloperTool; + } + else if( EEOSLoginType.Equals("EpicPortal") ) + { + return EEOSLoginType::LT_EpicPortal; + } + + //TODO: What do I do for a default? + return EEOSLoginType::LT_DeveloperTool; +} \ No newline at end of file diff --git a/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/OnlineSubsystemEOSCommon.h b/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/OnlineSubsystemEOSCommon.h index 9ca9600..fbd738b 100644 --- a/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/OnlineSubsystemEOSCommon.h +++ b/EOSBasic/Plugins/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/OnlineSubsystemEOSCommon.h @@ -85,6 +85,12 @@ enum class EEOSEcom : uint8 EE_UnknownError UMETA( DisplayName = "Unknown Error" ) }; +UENUM(BlueprintType) +enum class EEOSLoginType : uint8 +{ + LT_DeveloperTool UMETA( DisplayName = "Developer Tool" ), + LT_EpicPortal UMETA( DisplayName = "Epic Portal" ) +}; class UEOSCommon { @@ -131,4 +137,8 @@ class UEOSCommon * @return FString result of the conversion. */ static FString EOSResultToString( EOS_EResult Result ); + + static FString EEOSLoginTypeToString( EEOSLoginType LoginType ); + + static EEOSLoginType EEOSLoginTypeFromString( FString EEOSLoginType ); }; diff --git a/EOSBasic/Source/EOSBasic/Player/BasicPlayerController.cpp b/EOSBasic/Source/EOSBasic/Player/BasicPlayerController.cpp index 712084e..a6e099d 100644 --- a/EOSBasic/Source/EOSBasic/Player/BasicPlayerController.cpp +++ b/EOSBasic/Source/EOSBasic/Player/BasicPlayerController.cpp @@ -10,6 +10,8 @@ // EOS Plugin Includes #include "OnlineSubsystemEOS.h" +//TODO: why can't this be a .h? Isn't the static method defined there? +#include "OnlineSubsystemEOSCommon.cpp" bool ABasicPlayerController::RequestLogin( FString Id, FString Token, FString Type ) @@ -28,4 +30,4 @@ bool ABasicPlayerController::RequestLogin( FString Id, FString Token, FString Ty } return false; -} \ No newline at end of file +} diff --git a/EOSBasic/Source/EOSBasic/Player/BasicPlayerController.h b/EOSBasic/Source/EOSBasic/Player/BasicPlayerController.h index a65f461..3f638bd 100644 --- a/EOSBasic/Source/EOSBasic/Player/BasicPlayerController.h +++ b/EOSBasic/Source/EOSBasic/Player/BasicPlayerController.h @@ -4,6 +4,7 @@ #include "CoreMinimal.h" #include "GameFramework/PlayerController.h" +#include "OnlineSubsystemEOSCommon.h" #include "BasicPlayerController.generated.h" /**