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
 | 
