Files
UnrealEngine/Engine/Plugins/Online/IOS/OnlineSubsystemIOS/Source/Private/OnlineFriendsInterfaceIOS.cpp
2025-05-18 13:04:45 +08:00

194 lines
6.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "OnlineFriendsInterfaceIOS.h"
#include "OnlineSubsystemIOS.h"
#include "OnlineError.h"
// FOnlineFriendIOS
FUniqueNetIdRef FOnlineFriendIOS::GetUserId() const
{
return UserId;
}
FString FOnlineFriendIOS::GetRealName() const
{
FString Result;
GetAccountData(TEXT("nickname"), Result);
return Result;
}
FString FOnlineFriendIOS::GetDisplayName(const FString& Platform) const
{
FString Result;
GetAccountData(TEXT("nickname"), Result);
return Result;
}
bool FOnlineFriendIOS::GetUserAttribute(const FString& AttrName, FString& OutAttrValue) const
{
return GetAccountData(AttrName, OutAttrValue);
}
EInviteStatus::Type FOnlineFriendIOS::GetInviteStatus() const
{
return EInviteStatus::Accepted;
}
const FOnlineUserPresence& FOnlineFriendIOS::GetPresence() const
{
return Presence;
}
// FOnlineFriendsIOS
FOnlineFriendsIOS::FOnlineFriendsIOS(FOnlineSubsystemIOS* InSubsystem):IOSSubsystem(InSubsystem)
{
UE_LOG_ONLINE_FRIEND(Verbose, TEXT("FOnlineFriendsIOS::FOnlineFriendsIOS()"));
check(IOSSubsystem);
IdentityInterface = (FOnlineIdentityIOS*)InSubsystem->GetIdentityInterface().Get();
}
bool FOnlineFriendsIOS::ReadFriendsList(int32 LocalUserNum, const FString& ListName, const FOnReadFriendsListComplete& Delegate /*= FOnReadFriendsListComplete()*/)
{
UE_LOG_ONLINE_FRIEND(Verbose, TEXT("FOnlineFriendsIOS::ReadFriendsList()"));
Delegate.ExecuteIfBound(LocalUserNum, false, ListName, FString(TEXT("ReadFriendsList() is not supported as of UE 4.21")));
return false;
}
bool FOnlineFriendsIOS::DeleteFriendsList(int32 LocalUserNum, const FString& ListName, const FOnDeleteFriendsListComplete& Delegate /*= FOnDeleteFriendsListComplete()*/)
{
Delegate.ExecuteIfBound(LocalUserNum, false, ListName, FString(TEXT("DeleteFriendsList() is not supported")));
return false;
}
bool FOnlineFriendsIOS::SendInvite(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName, const FOnSendInviteComplete& Delegate /*= FOnSendInviteComplete()*/)
{
Delegate.ExecuteIfBound(LocalUserNum, false, FriendId, ListName, FString(TEXT("SendInvite() is not supported")));
return false;
}
bool FOnlineFriendsIOS::AcceptInvite(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName, const FOnAcceptInviteComplete& Delegate /*= FOnAcceptInviteComplete()*/)
{
Delegate.ExecuteIfBound(LocalUserNum, false, FriendId, ListName, FString(TEXT("AcceptInvite() is not supported")));
return false;
}
bool FOnlineFriendsIOS::RejectInvite(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName)
{
TriggerOnRejectInviteCompleteDelegates(LocalUserNum, false, FriendId, ListName, FString(TEXT("RejectInvite() is not supported")));
return false;
}
void FOnlineFriendsIOS::SetFriendAlias(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName, const FString& Alias, const FOnSetFriendAliasComplete& Delegate /*= FOnSetFriendAliasComplete()*/)
{
FUniqueNetIdRef FriendIdRef = FriendId.AsShared();
IOSSubsystem->ExecuteNextTick([LocalUserNum, FriendIdRef, ListName, Delegate]()
{
UE_LOG_ONLINE_FRIEND(Warning, TEXT("FOnlineFriendsIOS::SetFriendAlias is currently not supported"));
Delegate.ExecuteIfBound(LocalUserNum, *FriendIdRef, ListName, FOnlineError(EOnlineErrorResult::NotImplemented));
});
}
void FOnlineFriendsIOS::DeleteFriendAlias(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName, const FOnDeleteFriendAliasComplete& Delegate)
{
FUniqueNetIdRef FriendIdRef = FriendId.AsShared();
IOSSubsystem->ExecuteNextTick([LocalUserNum, FriendIdRef, ListName, Delegate]()
{
UE_LOG_ONLINE_FRIEND(Warning, TEXT("FOnlineFriendsIOS::DeleteFriendAlias is currently not supported"));
Delegate.ExecuteIfBound(LocalUserNum, *FriendIdRef, ListName, FOnlineError(EOnlineErrorResult::NotImplemented));
});
}
bool FOnlineFriendsIOS::DeleteFriend(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName)
{
TriggerOnDeleteFriendCompleteDelegates(LocalUserNum, false, FriendId, ListName, FString(TEXT("DeleteFriend() is not supported")));
return false;
}
bool FOnlineFriendsIOS::GetFriendsList(int32 LocalUserNum, const FString& ListName, TArray< TSharedRef<FOnlineFriend> >& OutFriends)
{
UE_LOG_ONLINE_FRIEND(Verbose, TEXT("FOnlineFriendsIOS::GetFriendsList()"));
for (int32 Idx=0; Idx < CachedFriends.Num(); Idx++)
{
OutFriends.Add(CachedFriends[Idx]);
}
return true;
}
TSharedPtr<FOnlineFriend> FOnlineFriendsIOS::GetFriend(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName)
{
TSharedPtr<FOnlineFriend> Result;
UE_LOG_ONLINE_FRIEND(Verbose, TEXT("FOnlineFriendsIOS::GetFriend()"));
for (int32 Idx=0; Idx < CachedFriends.Num(); Idx++)
{
if (*(CachedFriends[Idx]->GetUserId()) == FriendId)
{
Result = CachedFriends[Idx];
break;
}
}
return Result;
}
bool FOnlineFriendsIOS::IsFriend(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName)
{
UE_LOG_ONLINE_FRIEND(Verbose, TEXT("FOnlineFriendsIOS::IsFriend()"));
TSharedPtr<FOnlineFriend> Friend = GetFriend(LocalUserNum,FriendId,ListName);
if (Friend.IsValid() &&
Friend->GetInviteStatus() == EInviteStatus::Accepted)
{
return true;
}
return false;
}
bool FOnlineFriendsIOS::QueryRecentPlayers(const FUniqueNetId& UserId, const FString& Namespace)
{
UE_LOG_ONLINE_FRIEND(Verbose, TEXT("FOnlineFriendsIOS::QueryRecentPlayers()"));
TriggerOnQueryRecentPlayersCompleteDelegates(UserId, Namespace, false, TEXT("not implemented"));
return false;
}
bool FOnlineFriendsIOS::GetRecentPlayers(const FUniqueNetId& UserId, const FString& Namespace, TArray< TSharedRef<FOnlineRecentPlayer> >& OutRecentPlayers)
{
return false;
}
void FOnlineFriendsIOS::DumpRecentPlayers() const
{
}
bool FOnlineFriendsIOS::BlockPlayer(int32 LocalUserNum, const FUniqueNetId& PlayerId)
{
return false;
}
bool FOnlineFriendsIOS::UnblockPlayer(int32 LocalUserNum, const FUniqueNetId& PlayerId)
{
return false;
}
bool FOnlineFriendsIOS::QueryBlockedPlayers(const FUniqueNetId& UserId)
{
return false;
}
bool FOnlineFriendsIOS::GetBlockedPlayers(const FUniqueNetId& UserId, TArray< TSharedRef<FOnlineBlockedPlayer> >& OutBlockedPlayers)
{
return false;
}
void FOnlineFriendsIOS::DumpBlockedPlayers() const
{
}