mirror of
				https://github.com/LouisRaverdy/DiscordRPC.git
				synced 2025-10-26 01:44:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			170 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include "CoreMinimal.h"
 | |
| #include "Engine.h"
 | |
| #include "DiscordRpcBlueprint.generated.h"
 | |
| 
 | |
| // unreal's header tool hates clang-format
 | |
| // clang-format off
 | |
| 
 | |
| /**
 | |
| * Ask to join callback data
 | |
| */
 | |
| USTRUCT(BlueprintType)
 | |
| struct FDiscordUserData {
 | |
|     GENERATED_USTRUCT_BODY()
 | |
| 
 | |
|     UPROPERTY(BlueprintReadOnly)
 | |
|     FString userId;
 | |
|     UPROPERTY(BlueprintReadOnly)
 | |
|     FString username;
 | |
|     UPROPERTY(BlueprintReadOnly)
 | |
|     FString discriminator;
 | |
|     UPROPERTY(BlueprintReadOnly)
 | |
|     FString avatar;
 | |
| };
 | |
| 
 | |
| /**
 | |
| * Valid response codes for Respond function
 | |
| */
 | |
| UENUM(BlueprintType)
 | |
| enum class EDiscordJoinResponseCodes : uint8
 | |
| {
 | |
| 	DISCORD_REPLY_NO		UMETA(DisplayName="No"),
 | |
| 	DISCORD_REPLY_YES		UMETA(DisplayName="Yes"),
 | |
| 	DISCORD_REPLY_IGNORE	UMETA(DisplayName="Ignore")
 | |
| };
 | |
| 
 | |
| DECLARE_LOG_CATEGORY_EXTERN(Discord, Log, All);
 | |
| 
 | |
| DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordConnected, const FDiscordUserData&, joinRequest);
 | |
| DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FDiscordDisconnected, int, errorCode, const FString&, errorMessage);
 | |
| DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FDiscordErrored, int, errorCode, const FString&, errorMessage);
 | |
| DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordJoin, const FString&, joinSecret);
 | |
| DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordSpectate, const FString&, spectateSecret);
 | |
| DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordJoinRequest, const FDiscordUserData&, joinRequest);
 | |
| 
 | |
| // clang-format on
 | |
| 
 | |
| /**
 | |
|  * Rich presence data
 | |
|  */
 | |
| USTRUCT(BlueprintType)
 | |
| struct FDiscordRichPresence {
 | |
|     GENERATED_USTRUCT_BODY()
 | |
| 
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     FString state;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     FString details;
 | |
|     // todo, timestamps are 64bit, does that even matter?
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     int startTimestamp = 0;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     int endTimestamp = 0;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     FString largeImageKey;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     FString largeImageText;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     FString smallImageKey;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     FString smallImageText;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     FString partyId;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     int partySize = 0;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     int partyMax = 0;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     FString matchSecret;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     FString joinSecret;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     FString spectateSecret;
 | |
|     UPROPERTY(BlueprintReadWrite)
 | |
|     bool instance = false;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  */
 | |
| UCLASS(BlueprintType, meta = (DisplayName = "Discord RPC"), Category = "Discord")
 | |
| class DISCORDRPC_API UDiscordRpc : public UObject {
 | |
|     GENERATED_BODY()
 | |
| 
 | |
| public:
 | |
|     UFUNCTION(BlueprintCallable,
 | |
|               meta = (DisplayName = "Initialize connection", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     void Initialize(const FString& applicationId,
 | |
|                     bool autoRegister,
 | |
|                     const FString& optionalSteamId);
 | |
| 
 | |
|     UFUNCTION(BlueprintCallable,
 | |
|               meta = (DisplayName = "Shut down connection", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     void Shutdown();
 | |
| 
 | |
|     UFUNCTION(BlueprintCallable,
 | |
|               meta = (DisplayName = "Check for callbacks", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     void RunCallbacks();
 | |
| 
 | |
|     UFUNCTION(BlueprintCallable,
 | |
|               meta = (DisplayName = "Send presence", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     void UpdatePresence();
 | |
| 
 | |
|     UFUNCTION(BlueprintCallable,
 | |
|               meta = (DisplayName = "Clear presence", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     void ClearPresence();
 | |
| 
 | |
|     UFUNCTION(BlueprintCallable,
 | |
|               meta = (DisplayName = "Respond to join request", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     void Respond(const FString& userId, int reply);
 | |
| 
 | |
|     UPROPERTY(BlueprintReadOnly,
 | |
|               meta = (DisplayName = "Is Discord connected", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     bool IsConnected;
 | |
| 
 | |
|     UPROPERTY(BlueprintAssignable,
 | |
|               meta = (DisplayName = "On connection", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     FDiscordConnected OnConnected;
 | |
| 
 | |
|     UPROPERTY(BlueprintAssignable,
 | |
|               meta = (DisplayName = "On disconnection", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     FDiscordDisconnected OnDisconnected;
 | |
| 
 | |
|     UPROPERTY(BlueprintAssignable,
 | |
|               meta = (DisplayName = "On error message", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     FDiscordErrored OnErrored;
 | |
| 
 | |
|     UPROPERTY(BlueprintAssignable,
 | |
|               meta = (DisplayName = "When Discord user presses join", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     FDiscordJoin OnJoin;
 | |
| 
 | |
|     UPROPERTY(BlueprintAssignable,
 | |
|               meta = (DisplayName = "When Discord user presses spectate", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     FDiscordSpectate OnSpectate;
 | |
| 
 | |
|     UPROPERTY(BlueprintAssignable,
 | |
|               meta = (DisplayName = "When Discord another user sends a join request",
 | |
|                       Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     FDiscordJoinRequest OnJoinRequest;
 | |
| 
 | |
|     UPROPERTY(BlueprintReadWrite,
 | |
|               meta = (DisplayName = "Rich presence info", Keywords = "Discord rpc"),
 | |
|               Category = "Discord")
 | |
|     FDiscordRichPresence RichPresence;
 | |
| };
 | 
