Friends System¶
The GameFuse Friends System allows you to implement social features in your game, such as sending friend requests, accepting or declining requests, and managing a friends list.
Getting Started with Friends¶
To use the GameFuse Friends system, you'll need to access the UGameFuseFriends
subsystem:
Sending Friend Requests¶
You can send a friend request to another user by their username:
void UMyGameMode::SendFriendRequest(const FString& Username)
{
UGameFuseFriends* FriendsSystem = GetGameInstance()->GetSubsystem<UGameFuseFriends>();
// Create typed callback
FGFFriendRequestCallback OnSendFriendRequest;
OnSendFriendRequest.BindLambda([this](const FGFFriendRequest& Request) {
// Use Request data (friendshipId, otherUser, etc.)
});
// Send the friend request
FriendsSystem->SendFriendRequest(Username, OnSendFriendRequest);
}
For Blueprint usage, you can use the BP_ prefixed version with the generic callback:
void UMyGameMode::SendFriendRequestBP(const FString& Username)
{
UGameFuseFriends* FriendsSystem = GetGameInstance()->GetSubsystem<UGameFuseFriends>();
// Create callback
FBP_GFApiCallback Callback;
Callback.BindDynamic(this, &UMyGameMode::OnFriendRequestSent);
// Send the friend request
FriendsSystem->BP_SendFriendRequest(Username, Callback);
}
void UMyGameMode::OnFriendRequestSent(bool bSuccess, const FString& Response)
{
if (bSuccess)
{
// Parse Response JSON and use request data
}
else
{
// Handle error
}
}
Accepting Friend Requests¶
When someone sends you a friend request, you can accept it:
void UMyGameMode::AcceptFriendRequest(int32 FriendshipId)
{
UGameFuseFriends* FriendsSystem = GetGameInstance()->GetSubsystem<UGameFuseFriends>();
// Create typed callback
FGFFriendActionCallback OnAcceptFriendRequest;
OnAcceptFriendRequest.BindLambda([this, FriendshipId](bool bSuccess) {
// Handle success or failure of accepting friend request
});
// Accept the friend request
FriendsSystem->AcceptFriendRequest(FriendshipId, OnAcceptFriendRequest);
}
Declining Friend Requests¶
You can also decline a friend request:
void UMyGameMode::DeclineFriendRequest(int32 FriendshipId)
{
UGameFuseFriends* FriendsSystem = GetGameInstance()->GetSubsystem<UGameFuseFriends>();
// Create typed callback
FGFFriendActionCallback OnDeclineFriendRequest;
OnDeclineFriendRequest.BindLambda([this, FriendshipId](bool bSuccess) {
// Handle success or failure of declining friend request
});
// Decline the friend request
FriendsSystem->DeclineFriendRequest(FriendshipId, OnDeclineFriendRequest);
}
Canceling Friend Requests¶
If you've sent a friend request and want to cancel it:
void UMyGameMode::CancelFriendRequest(int32 FriendshipId)
{
UGameFuseFriends* FriendsSystem = GetGameInstance()->GetSubsystem<UGameFuseFriends>();
// Create typed callback
FGFFriendActionCallback OnCancelFriendRequest;
OnCancelFriendRequest.BindLambda([this, FriendshipId](bool bSuccess) {
// Handle success or failure of canceling friend request
});
// Cancel the friend request
FriendsSystem->CancelFriendRequest(FriendshipId, OnCancelFriendRequest);
}
Unfriending Players¶
You can remove a user from your friends list:
void UMyGameMode::UnfriendPlayer(int32 UserId)
{
UGameFuseFriends* FriendsSystem = GetGameInstance()->GetSubsystem<UGameFuseFriends>();
// Create typed callback
FGFFriendActionCallback OnUnfriendPlayer;
OnUnfriendPlayer.BindLambda([this, UserId](bool bSuccess) {
// Handle success or failure of unfriending player
});
// Unfriend the player
FriendsSystem->UnfriendPlayer(UserId, OnUnfriendPlayer);
}
Fetching Friendship Data¶
You can fetch all friendship data for the current user:
void UMyGameMode::FetchFriendshipData()
{
UGameFuseFriends* FriendsSystem = GetGameInstance()->GetSubsystem<UGameFuseFriends>();
// Create typed callback
FGFFriendshipDataCallback OnFetchFriendshipData;
OnFetchFriendshipData.BindLambda([this](const TArray<FGFUserData>& FriendsList,
const TArray<FGFFriendRequest>& OutgoingRequests,
const TArray<FGFFriendRequest>& IncomingRequests) {
// Use FriendsList, OutgoingRequests, and IncomingRequests data
});
// Fetch friendship data
FriendsSystem->FetchFriendshipData(OnFetchFriendshipData);
}
Fetching Friends List¶
You can fetch just the friends list:
void UMyGameMode::FetchFriendsList()
{
UGameFuseFriends* FriendsSystem = GetGameInstance()->GetSubsystem<UGameFuseFriends>();
// Create typed callback
FGFFriendsCallback OnFetchFriendsList;
OnFetchFriendsList.BindLambda([this](const TArray<FGFUserData>& Friends) {
// Process array of friends for display
});
// Fetch friends list
FriendsSystem->FetchFriendsList(OnFetchFriendsList);
}
Fetching Friend Requests¶
You can fetch outgoing friend requests:
void UMyGameMode::FetchOutgoingFriendRequests()
{
UGameFuseFriends* FriendsSystem = GetGameInstance()->GetSubsystem<UGameFuseFriends>();
// Create typed callback
FGFFriendRequestsCallback OnFetchOutgoingRequests;
OnFetchOutgoingRequests.BindLambda([this](const TArray<FGFFriendRequest>& Requests) {
// Process array of outgoing requests for display
});
// Fetch outgoing friend requests
FriendsSystem->FetchOutgoingFriendRequests(OnFetchOutgoingRequests);
}
And incoming friend requests:
void UMyGameMode::FetchIncomingFriendRequests()
{
UGameFuseFriends* FriendsSystem = GetGameInstance()->GetSubsystem<UGameFuseFriends>();
// Create typed callback
FGFFriendRequestsCallback OnFetchIncomingRequests;
OnFetchIncomingRequests.BindLambda([this](const TArray<FGFFriendRequest>& Requests) {
// Process array of incoming requests for display
});
// Fetch incoming friend requests
FriendsSystem->FetchIncomingFriendRequests(OnFetchIncomingRequests);
}