Exemplo n.º 1
0
void UShooterLocalPlayer::LoadSaveGame()
{
	auto SlotName = GetNickname();
	auto UserIndex = GetControllerId();

//#if PLATFORM_WOLF
//	FPlatformMisc::GetUniqueStringNameForControllerId(UserIdex, SaveGameName);
//#endif

	if (nullptr != SaveGame)
	{
		if (SaveGame->GetUserIndex() != UserIndex || SaveGame->GetSlotName() != SlotName)
		{
			SaveGame->SaveIfDirty();
			SaveGame = nullptr;
		}
	}

	if (nullptr == SaveGame)
	{
		const auto IdentityInterface = Online::GetIdentityInterface();
		if (IdentityInterface.IsValid() && GetPreferredUniqueNetId().IsValid())
		{
			UserIndex = IdentityInterface->GetPlatformUserIdFromUniqueNetId(*GetPreferredUniqueNetId());
		}

		SaveGame = UShooterSaveGame::Load(SlotName, UserIndex);
	}
}
void UShooterLocalPlayer::LoadPersistentUser()
{
    // if we changed controllerid / user, then we need to load the appropriate persistent user.
    if (PersistentUser != nullptr && ( GetControllerId() != PersistentUser->GetUserIndex() || GetNickname() != PersistentUser->GetName() ) )
    {
        PersistentUser->SaveIfDirty();
        PersistentUser = nullptr;
    }

    if (PersistentUser == NULL)
    {
        // Use the platform id here to be resilient in the face of controller swapping and similar situations.
        FPlatformUserId PlatformId = GetControllerId();

        auto Identity = Online::GetIdentityInterface();
        if (Identity.IsValid() && GetPreferredUniqueNetId().IsValid())
        {
            PlatformId = Identity->GetPlatformUserIdFromUniqueNetId(*GetPreferredUniqueNetId());
        }

        PersistentUser = UShooterPersistentUser::LoadPersistentUser( GetNickname(), PlatformId );
    }
}