mirror of
				https://github.com/RetroDECK/Duckstation.git
				synced 2025-04-10 19:15:14 +00:00 
			
		
		
		
	
		
			
	
	
		
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #pragma once
 | ||
|  | #include <stdint.h>
 | ||
|  | 
 | ||
|  | // clang-format off
 | ||
|  | 
 | ||
|  | #if defined(DISCORD_DYNAMIC_LIB)
 | ||
|  | #  if defined(_WIN32)
 | ||
|  | #    if defined(DISCORD_BUILDING_SDK)
 | ||
|  | #      define DISCORD_EXPORT __declspec(dllexport)
 | ||
|  | #    else
 | ||
|  | #      define DISCORD_EXPORT __declspec(dllimport)
 | ||
|  | #    endif
 | ||
|  | #  else
 | ||
|  | #    define DISCORD_EXPORT __attribute__((visibility("default")))
 | ||
|  | #  endif
 | ||
|  | #else
 | ||
|  | #  define DISCORD_EXPORT
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | // clang-format on
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | typedef struct DiscordRichPresence { | ||
|  |     const char* state;   /* max 128 bytes */ | ||
|  |     const char* details; /* max 128 bytes */ | ||
|  |     int64_t startTimestamp; | ||
|  |     int64_t endTimestamp; | ||
|  |     const char* largeImageKey;  /* max 32 bytes */ | ||
|  |     const char* largeImageText; /* max 128 bytes */ | ||
|  |     const char* smallImageKey;  /* max 32 bytes */ | ||
|  |     const char* smallImageText; /* max 128 bytes */ | ||
|  |     const char* partyId;        /* max 128 bytes */ | ||
|  |     int partySize; | ||
|  |     int partyMax; | ||
|  |     const char* matchSecret;    /* max 128 bytes */ | ||
|  |     const char* joinSecret;     /* max 128 bytes */ | ||
|  |     const char* spectateSecret; /* max 128 bytes */ | ||
|  |     int8_t instance; | ||
|  | } DiscordRichPresence; | ||
|  | 
 | ||
|  | typedef struct DiscordUser { | ||
|  |     const char* userId; | ||
|  |     const char* username; | ||
|  |     const char* discriminator; | ||
|  |     const char* avatar; | ||
|  | } DiscordUser; | ||
|  | 
 | ||
|  | typedef struct DiscordEventHandlers { | ||
|  |     void (*ready)(const DiscordUser* request); | ||
|  |     void (*disconnected)(int errorCode, const char* message); | ||
|  |     void (*errored)(int errorCode, const char* message); | ||
|  |     void (*joinGame)(const char* joinSecret); | ||
|  |     void (*spectateGame)(const char* spectateSecret); | ||
|  |     void (*joinRequest)(const DiscordUser* request); | ||
|  | } DiscordEventHandlers; | ||
|  | 
 | ||
|  | #define DISCORD_REPLY_NO 0
 | ||
|  | #define DISCORD_REPLY_YES 1
 | ||
|  | #define DISCORD_REPLY_IGNORE 2
 | ||
|  | 
 | ||
|  | DISCORD_EXPORT void Discord_Initialize(const char* applicationId, | ||
|  |                                        DiscordEventHandlers* handlers, | ||
|  |                                        int autoRegister, | ||
|  |                                        const char* optionalSteamId); | ||
|  | DISCORD_EXPORT void Discord_Shutdown(void); | ||
|  | 
 | ||
|  | /* checks for incoming messages, dispatches callbacks */ | ||
|  | DISCORD_EXPORT void Discord_RunCallbacks(void); | ||
|  | 
 | ||
|  | /* If you disable the lib starting its own io thread, you'll need to call this from your own */ | ||
|  | #ifdef DISCORD_DISABLE_IO_THREAD
 | ||
|  | DISCORD_EXPORT void Discord_UpdateConnection(void); | ||
|  | #endif
 | ||
|  | 
 | ||
|  | DISCORD_EXPORT void Discord_UpdatePresence(const DiscordRichPresence* presence); | ||
|  | DISCORD_EXPORT void Discord_ClearPresence(void); | ||
|  | 
 | ||
|  | DISCORD_EXPORT void Discord_Respond(const char* userid, /* DISCORD_REPLY_ */ int reply); | ||
|  | 
 | ||
|  | DISCORD_EXPORT void Discord_UpdateHandlers(DiscordEventHandlers* handlers); | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } /* extern "C" */ | ||
|  | #endif
 |