コード例 #1
0
	virtual int32 GetFriendList(TArray< TSharedPtr<FFriendViewModel> >& OutFriendsList) override
	{
		TArray< TSharedPtr< IFriendItem > > FriendItemList = FriendsAndChatManager.Pin()->GetRecentPlayerList();
		FriendItemList.Sort(FCompareGroupByName());
		for(const auto& FriendItem : FriendItemList)
		{
			OutFriendsList.Add(FriendViewModelFactory->Create(FriendItem.ToSharedRef()));
		}
		return 0;
	}
コード例 #2
0
	virtual int32 GetFriendList(TArray< TSharedPtr<FFriendViewModel> >& OutFriendsList) override
	{
		TArray< TSharedPtr< IFriendItem > > FriendItemList;
		FFriendsAndChatManager::Get()->GetFilteredFriendsList(FriendItemList);
		TArray< TSharedPtr< IFriendItem > > OnlineFriendsList;
		TArray< TSharedPtr< IFriendItem > > OfflineFriendsList;

		int32 OnlineCount = 0;
		for( const auto& FriendItem : FriendItemList)
		{
			switch (ListType)
			{
				case EFriendsDisplayLists::DefaultDisplay :
				{
					if(FriendItem->GetInviteStatus() == EInviteStatus::Accepted)
					{
						if(FriendItem->IsOnline())
						{
							OnlineFriendsList.Add(FriendItem);
							OnlineCount++;
						}
						else
						{
							OfflineFriendsList.Add(FriendItem);
						}
					}
				}
				break;
				case EFriendsDisplayLists::FriendRequestsDisplay :
				{
					if( FriendItem->GetInviteStatus() == EInviteStatus::PendingInbound)
					{
						OfflineFriendsList.Add(FriendItem.ToSharedRef());
					}
				}
				break;
				case EFriendsDisplayLists::OutgoingFriendInvitesDisplay :
				{
					if( FriendItem->GetInviteStatus() == EInviteStatus::PendingOutbound)
					{
						OfflineFriendsList.Add(FriendItem.ToSharedRef());
					}
				}
				break;
			}
		}

		OnlineFriendsList.Sort(FCompareGroupByName());
		OfflineFriendsList.Sort(FCompareGroupByName());

		for(const auto& FriendItem : OnlineFriendsList)
		{
			OutFriendsList.Add(FFriendViewModelFactory::Create(FriendItem.ToSharedRef()));
		}
		for(const auto& FriendItem : OfflineFriendsList)
		{
			OutFriendsList.Add(FFriendViewModelFactory::Create(FriendItem.ToSharedRef()));
		}

		return OnlineCount;
	}