1 module discord.rpc; 2 3 import core.stdc.inttypes : int8_t, int64_t; 4 import discord.register; 5 6 extern (C): 7 8 struct DiscordRichPresence 9 { 10 /++ max 128 bytes +/ 11 const(char)* state; 12 13 /++ max 128 bytes +/ 14 const(char)* details; 15 16 int64_t startTimestamp; 17 18 int64_t endTimestamp; 19 20 /++ max 32 bytes +/ 21 const(char)* largeImageKey; 22 23 /++ max 128 bytes +/ 24 const(char)* largeImageText; 25 26 /++ max 32 bytes +/ 27 const(char)* smallImageKey; 28 29 /++ max 128 bytes +/ 30 const(char)* smallImageText; 31 32 /++ max 128 bytes +/ 33 const(char)* partyId; 34 35 int partySize; 36 37 int partyMax; 38 39 /++ max 128 bytes +/ 40 const(char)* matchSecret; 41 42 /++ max 128 bytes +/ 43 const(char)* joinSecret; 44 45 /++ max 128 bytes +/ 46 const(char)* spectateSecret; 47 48 int8_t instance; 49 } 50 51 struct DiscordUser 52 { 53 const(char)* userId; 54 const(char)* username; 55 const(char)* discriminator; 56 const(char)* avatar; 57 } 58 59 struct DiscordEventHandlers 60 { 61 private 62 { 63 alias ReadyCallback = extern (C) void function(const(DiscordUser)* request); 64 alias DisconnectedCallback = extern (C) void function(int errorCode, const(char)* message); 65 alias ErroredCallback = extern (C) void function(int errorCode, const(char)* message); 66 alias JoinGameCallback = extern (C) void function(const(char)* joinSecret); 67 alias SpectateGameCallback = extern (C) void function(const(char)* spectateSecret); 68 alias JoinRequestCallback = extern (C) void function(const(DiscordUser)* request); 69 } 70 71 ReadyCallback ready; 72 DisconnectedCallback disconnected; 73 ErroredCallback errored; 74 JoinGameCallback joinGame; 75 SpectateGameCallback spectateGame; 76 JoinRequestCallback joinRequest; 77 } 78 79 enum DISCORD_REPLY_NO = 0; 80 enum DISCORD_REPLY_YES = 1; 81 enum DISCORD_REPLY_IGNORE = 2; 82 83 mixin(DISCORD_EXPORT!("void Discord_Initialize( 84 const(char)* applicationId, 85 DiscordEventHandlers* handlers, 86 int autoRegister, 87 const(char)* optionalSteamId)") 88 ); 89 90 mixin(DISCORD_EXPORT!("void Discord_Shutdown()")); 91 92 /++ checks for incoming messages, dispatches callbacks +/ 93 mixin(DISCORD_EXPORT!("void Discord_RunCallbacks()")); 94 95 version (DISCORD_DISABLE_IO_THREAD) 96 { 97 pragma(msg, "[i]\tDISCORD_DISABLE_IO_THREAD"); 98 99 /++ If you disable the lib starting its own io thread, you'll need to call this from your own +/ 100 mixin(DISCORD_EXPORT!("void Discord_UpdateConnection()")); 101 } 102 103 mixin(DISCORD_EXPORT!("void Discord_UpdatePresence(const(DiscordRichPresence)* presence)")); 104 105 mixin(DISCORD_EXPORT!("void Discord_ClearPresence()")); 106 107 mixin(DISCORD_EXPORT!("void Discord_Respond(const(char)* userid, int reply)")); 108 109 mixin(DISCORD_EXPORT!("void Discord_UpdateHandlers(DiscordEventHandlers* handlers)"));