void UUpdateManager::StartPlatformEnvironmentCheck() { IOnlineSubsystem* OnlineSubConsole = IOnlineSubsystem::GetByPlatform(); if (!bPlatformEnvironmentDetected && OnlineSubConsole != nullptr && OnlineSubConsole->GetIdentityInterface().IsValid()) { SetUpdateState(EUpdateState::DetectingPlatformEnvironment); ULocalPlayer* LP = GetGameInstance()->GetFirstGamePlayer(); if (LP != nullptr) { const int32 ControllerId = LP->GetControllerId(); OnLoginConsoleCompleteHandle = OnlineSubConsole->GetIdentityInterface()->AddOnLoginCompleteDelegate_Handle( ControllerId, FOnLoginCompleteDelegate::CreateUObject(this, &ThisClass::PlatformEnvironmentCheck_OnLoginConsoleComplete) ); OnlineSubConsole->GetIdentityInterface()->Login(ControllerId, FOnlineAccountCredentials()); } } else { StartHotfixCheck(); } }
bool FOnlineIdentityNull::AutoLogin(int32 LocalUserNum) { FString LoginStr; FString PasswordStr; FString TypeStr; FParse::Value(FCommandLine::Get(), TEXT("AUTH_LOGIN="******"AUTH_PASSWORD="******"AUTH_TYPE="), TypeStr); if (!LoginStr.IsEmpty()) { if (!PasswordStr.IsEmpty()) { if (!TypeStr.IsEmpty()) { return Login(0, FOnlineAccountCredentials(TypeStr, LoginStr, PasswordStr)); } else { UE_LOG_ONLINE(Warning, TEXT("AutoLogin missing AUTH_TYPE=<type>.")); } } else { UE_LOG_ONLINE(Warning, TEXT("AutoLogin missing AUTH_PASSWORD=<password>.")); } } else { UE_LOG_ONLINE(Warning, TEXT("AutoLogin missing AUTH_LOGIN=<login id>.")); } return false; }
// Called when the game starts or when spawned void ATitleFileSubsystemTestActor::BeginPlay() { Super::BeginPlay(); //#pragma warning(suppress: 4996) //BrainCloudClient::getInstance()->enableLogging(true); _subsystem = IOnlineSubsystem::Get(); if (_subsystem) { _identity = _subsystem->GetIdentityInterface(); _titleFile = _subsystem->GetTitleFileInterface(); } if (!_subsystem) { UE_LOG(LogTemp, Log, TEXT("Subsystem null in ATitleFileSubsystemTestActor")); return; } _identity->OnLoginCompleteDelegates->AddUObject(this, &ATitleFileSubsystemTestActor::LoginCallback); //TODO Jon _titleFile->OnEnumerateFilesCompleteDelegates.AddUObject(this, &ATitleFileSubsystemTestActor::OnEnumerateFilesCompleteCallback); _titleFile->OnReadFileCompleteDelegates.AddUObject(this, &ATitleFileSubsystemTestActor::OnReadFileCompleteCallback); _identity->Login(0, FOnlineAccountCredentials("BrainCloud", "UnrealUser2", "UnrealUser2")); }
FOnlineIdentityIOS::FOnlineIdentityIOS() : UniqueNetId( NULL ) { UE_LOG(LogOnline, Verbose, TEXT("FOnlineIdentityIOS::FOnlineIdentityIOS()")); Login( 0, FOnlineAccountCredentials() ); }
// Called when the game starts or when spawned void AMessageSubsystemTestActor::BeginPlay() { Super::BeginPlay(); //#pragma warning(suppress: 4996) //BrainCloudClient::getInstance()->enableLogging(true); _identity->OnLoginCompleteDelegates->AddUObject(this, &AMessageSubsystemTestActor::LoginCallback); _message->OnSendMessageCompleteDelegates->AddUObject(this, &AMessageSubsystemTestActor::SendMessageCallback); _message->OnEnumerateMessagesCompleteDelegates->AddUObject(this, &AMessageSubsystemTestActor::EumerateMessagesCallback); _message->OnReadMessageCompleteDelegates->AddUObject(this, &AMessageSubsystemTestActor::ReadMessageCallback); _message->OnDeleteMessageCompleteDelegates->AddUObject(this, &AMessageSubsystemTestActor::DeleteMessageCallback); _identity->Login(0, FOnlineAccountCredentials("BrainCloud", "UnrealUser2", "UnrealUser2")); }
FOnlineIdentityNull::FOnlineIdentityNull(class FOnlineSubsystemNull* InSubsystem) { // autologin the 0-th player Login(0, FOnlineAccountCredentials(TEXT("DummyType"), TEXT("DummyUser"), TEXT("DummyId")) ); }
bool FOnlineIdentityGooglePlay::AutoLogin(int32 LocalUserNum) { return Login(LocalUserNum, FOnlineAccountCredentials()); }
bool FOnlineIdentityGameCircle::AutoLogin(int32 LocalUserNum) { return Login(LocalUserNum, FOnlineAccountCredentials()); }
/** * Exec handler that routes online specific execs to the proper subsystem * * @param InWorld World context * @param Cmd the exec command being executed * @param Ar the archive to log results to * * @return true if the handler consumed the input, false to continue searching handlers */ static bool OnlineExec( UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar ) { bool bWasHandled = false; // Ignore any execs that don't start with ONLINE if (FParse::Command(&Cmd, TEXT("ONLINE"))) { FString SubName; FParse::Value(Cmd, TEXT("Sub="), SubName); // Allow for either Sub=<platform> or Subsystem=<platform> if (SubName.Len() > 0) { Cmd += FCString::Strlen(TEXT("Sub=")) + SubName.Len(); } else { FParse::Value(Cmd, TEXT("Subsystem="), SubName); if (SubName.Len() > 0) { Cmd += FCString::Strlen(TEXT("Subsystem=")) + SubName.Len(); } } IOnlineSubsystem* OnlineSub = NULL; // If the exec requested a specific subsystem, the grab that one for routing if (SubName.Len()) { OnlineSub = Online::GetSubsystem(InWorld, *SubName); } // Otherwise use the default subsystem and route to that else { OnlineSub = Online::GetSubsystem(InWorld); } if (OnlineSub != NULL) { bWasHandled = OnlineSub->Exec(InWorld, Cmd, Ar); // If this wasn't handled, see if this is a testing request if (!bWasHandled) { if (FParse::Command(&Cmd, TEXT("TEST"))) { if (FParse::Command(&Cmd, TEXT("FRIENDS"))) { TArray<FString> Invites; for (FString FriendId=FParse::Token(Cmd, false); !FriendId.IsEmpty(); FriendId=FParse::Token(Cmd, false)) { Invites.Add(FriendId); } // This class deletes itself once done (new FTestFriendsInterface(SubName))->Test(InWorld, Invites); bWasHandled = true; } // Spawn the object that will exercise all of the session methods as host else if (FParse::Command(&Cmd, TEXT("SESSIONHOST"))) { bool bTestLAN = FParse::Command(&Cmd, TEXT("LAN")) ? true : false; bool bTestPresence = FParse::Command(&Cmd, TEXT("PRESENCE")) ? true : false; // This class deletes itself once done (new FTestSessionInterface(SubName, true))->Test(InWorld, bTestLAN, bTestPresence); bWasHandled = true; } // Spawn the object that will exercise all of the session methods as client else if (FParse::Command(&Cmd, TEXT("SESSIONCLIENT"))) { bool bTestLAN = FParse::Command(&Cmd, TEXT("LAN")) ? true : false; bool bTestPresence = FParse::Command(&Cmd, TEXT("PRESENCE")) ? true : false; // This class deletes itself once done (new FTestSessionInterface(SubName, false))->Test(InWorld, bTestLAN, bTestPresence); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("CLOUD"))) { // This class deletes itself once done (new FTestCloudInterface(SubName))->Test(InWorld); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("LEADERBOARDS"))) { // This class deletes itself once done (new FTestLeaderboardInterface(SubName))->Test(InWorld); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("VOICE"))) { // This class deletes itself once done (new FTestVoice())->Test(); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("TIME"))) { // This class deletes itself once done (new FTestTimeInterface(SubName))->Test(InWorld); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("IDENTITY"))) { FString Id = FParse::Token(Cmd, false); FString Auth = FParse::Token(Cmd, false); FString Type = FParse::Token(Cmd, false); bool bLogout = Id.Equals(TEXT("logout"), ESearchCase::IgnoreCase); // This class deletes itself once done (new FTestIdentityInterface(SubName))->Test(InWorld, FOnlineAccountCredentials(Type, Id, Auth), bLogout); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("UNIQUEIDREPL"))) { extern void TestUniqueIdRepl(class UWorld* InWorld); TestUniqueIdRepl(InWorld); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("KEYVALUEPAIR"))) { extern void TestKeyValuePairs(); TestKeyValuePairs(); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("TITLEFILE"))) { // This class deletes itself once done (new FTestTitleFileInterface(SubName))->Test(InWorld); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("ENTITLEMENTS"))) { // This class also deletes itself once done (new FTestEntitlementsInterface(SubName))->Test(InWorld); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("ACHIEVEMENTS"))) { // This class also deletes itself once done (new FTestAchievementsInterface(SubName))->Test(InWorld); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("SHARING"))) { bool bTestWithImage = FParse::Command(&Cmd, TEXT("IMG")); // This class also deletes itself once done (new FTestSharingInterface(SubName))->Test(InWorld, bTestWithImage); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("USER"))) { TArray<FString> UserIds; for (FString Id=FParse::Token(Cmd, false); !Id.IsEmpty(); Id=FParse::Token(Cmd, false)) { UserIds.Add(Id); } // This class also deletes itself once done (new FTestUserInterface(SubName))->Test(InWorld, UserIds); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("MESSAGE"))) { TArray<FString> RecipientIds; for (FString UserId=FParse::Token(Cmd, false); !UserId.IsEmpty(); UserId=FParse::Token(Cmd, false)) { RecipientIds.Add(UserId); } // This class also deletes itself once done (new FTestMessageInterface(SubName))->Test(InWorld, RecipientIds); bWasHandled = true; } else if (FParse::Command(&Cmd, TEXT("EXTERNALUI"))) { // Full command usage: EXTERNALUI ACHIEVEMENTS FRIENDS INVITE LOGIN PROFILE WEBURL // Example for one test: EXTERNALUI WEBURL // Note that tests are enabled in alphabetical order bool bTestAchievementsUI = FParse::Command(&Cmd, TEXT("ACHIEVEMENTS")) ? true : false; bool bTestFriendsUI = FParse::Command(&Cmd, TEXT("FRIENDS")) ? true : false; bool bTestInviteUI = FParse::Command(&Cmd, TEXT("INVITE")) ? true : false; bool bTestLoginUI = FParse::Command(&Cmd, TEXT("LOGIN")) ? true : false; bool bTestProfileUI = FParse::Command(&Cmd, TEXT("PROFILE")) ? true : false; bool bTestWebURL = FParse::Command(&Cmd, TEXT("WEBURL")) ? true : false; // This class also deletes itself once done (new FTestExternalUIInterface(SubName, bTestLoginUI, bTestFriendsUI, bTestInviteUI, bTestAchievementsUI, bTestWebURL, bTestProfileUI))->Test(); bWasHandled = true; } } } } } return bWasHandled; }