bool FFriendItem::IsGameJoinable() const { if (OnlineFriend.IsValid()) { const FOnlineUserPresence& FriendPresence = OnlineFriend->GetPresence(); const bool bIsOnline = FriendPresence.Status.State != EOnlinePresenceState::Offline; const bool bIsJoinable = FriendPresence.bIsJoinable && !GetGameSessionId().IsEmpty() && GetGameSessionId() != FFriendsAndChatManager::Get()->GetGameSessionId(); return bIsOnline && bIsJoinable; } return false; }
virtual bool IsFriendInSameSession(const TSharedPtr< const IFriendItem >& FriendItem) const override { TSharedPtr<const FUniqueNetId> MySessionId = GetGameSessionId(); bool bMySessionValid = MySessionId.IsValid() && MySessionId->IsValid(); TSharedPtr<const FUniqueNetId> FriendSessionId = FriendItem->GetGameSessionId(); bool bFriendSessionValid = FriendSessionId.IsValid() && FriendSessionId->IsValid(); return (bMySessionValid && bFriendSessionValid && (*FriendSessionId == *MySessionId)); }
bool FFriendGameInviteItem::IsGameJoinable() const { FString SessionId = GetGameSessionId(); if (!SessionId.IsEmpty()) { if (SessionId != FFriendsAndChatManager::Get()->GetGameSessionId()) { return true; } } return false; }