Maybe this one will compile
This commit is contained in:
parent
c70acbe7d1
commit
5b495f507d
@ -49,7 +49,7 @@ typedef struct DiscordJoinRequest {
|
|||||||
} DiscordJoinRequest;
|
} DiscordJoinRequest;
|
||||||
|
|
||||||
typedef struct DiscordEventHandlers {
|
typedef struct DiscordEventHandlers {
|
||||||
void (*ready)(void);
|
void (*ready)(const DiscordJoinRequest* request);
|
||||||
void (*disconnected)(int errorCode, const char* message);
|
void (*disconnected)(int errorCode, const char* message);
|
||||||
void (*errored)(int errorCode, const char* message);
|
void (*errored)(int errorCode, const char* message);
|
||||||
void (*joinGame)(const char* joinSecret);
|
void (*joinGame)(const char* joinSecret);
|
||||||
|
@ -64,6 +64,7 @@ static std::mutex HandlerMutex;
|
|||||||
static QueuedMessage QueuedPresence{};
|
static QueuedMessage QueuedPresence{};
|
||||||
static MsgQueue<QueuedMessage, MessageQueueSize> SendQueue;
|
static MsgQueue<QueuedMessage, MessageQueueSize> SendQueue;
|
||||||
static MsgQueue<JoinRequest, JoinQueueSize> JoinAskQueue;
|
static MsgQueue<JoinRequest, JoinQueueSize> JoinAskQueue;
|
||||||
|
static JoinRequest connectedUser;
|
||||||
|
|
||||||
// We want to auto connect, and retry on failure, but not as fast as possible. This does expoential
|
// We want to auto connect, and retry on failure, but not as fast as possible. This does expoential
|
||||||
// backoff from 0.5 seconds to 1 minute
|
// backoff from 0.5 seconds to 1 minute
|
||||||
@ -207,6 +208,27 @@ static void Discord_UpdateConnection(void)
|
|||||||
JoinAskQueue.CommitAdd();
|
JoinAskQueue.CommitAdd();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (strcmp(evtName, "READY") == 0) {
|
||||||
|
auto user = GetObjMember(data, "user");
|
||||||
|
auto userId = GetStrMember(user, "id");
|
||||||
|
auto username = GetStrMember(user, "username");
|
||||||
|
auto avatar = GetStrMember(user, "avatar");
|
||||||
|
if (userId && username) {
|
||||||
|
StringCopy(connectedUser.userId, userId);
|
||||||
|
StringCopy(connectedUser.username, username);
|
||||||
|
auto discriminator = GetStrMember(user, "discriminator");
|
||||||
|
if (discriminator) {
|
||||||
|
StringCopy(connectedUser.discriminator, discriminator);
|
||||||
|
}
|
||||||
|
if (avatar) {
|
||||||
|
StringCopy(connectedUser.avatar, avatar);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
connectedUser.avatar[0] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -327,7 +349,7 @@ extern "C" DISCORD_EXPORT void Discord_UpdatePresence(const DiscordRichPresence*
|
|||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> guard(PresenceMutex);
|
std::lock_guard<std::mutex> guard(PresenceMutex);
|
||||||
QueuedPresence.length = JsonWriteRichPresenceObj(
|
QueuedPresence.length = JsonWriteRichPresenceObj(
|
||||||
QueuedPresence.buffer, sizeof(QueuedPresence.buffer), Nonce++, Pid, presence);
|
QueuedPresence.buffer, sizeof(QueuedPresence.buffer), Nonce++, Pid, presence);
|
||||||
}
|
}
|
||||||
SignalIOActivity();
|
SignalIOActivity();
|
||||||
}
|
}
|
||||||
@ -376,7 +398,11 @@ extern "C" DISCORD_EXPORT void Discord_RunCallbacks(void)
|
|||||||
if (WasJustConnected.exchange(false)) {
|
if (WasJustConnected.exchange(false)) {
|
||||||
std::lock_guard<std::mutex> guard(HandlerMutex);
|
std::lock_guard<std::mutex> guard(HandlerMutex);
|
||||||
if (Handlers.ready) {
|
if (Handlers.ready) {
|
||||||
Handlers.ready();
|
DiscordJoinRequest djr{connectedUser.userId,
|
||||||
|
connectedUser.username,
|
||||||
|
connectedUser.discriminator,
|
||||||
|
connectedUser.avatar};
|
||||||
|
Handlers.ready(&djr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -430,14 +456,13 @@ extern "C" DISCORD_EXPORT void Discord_RunCallbacks(void)
|
|||||||
extern "C" DISCORD_EXPORT void Discord_UpdateHandlers(DiscordEventHandlers* newHandlers)
|
extern "C" DISCORD_EXPORT void Discord_UpdateHandlers(DiscordEventHandlers* newHandlers)
|
||||||
{
|
{
|
||||||
if (newHandlers) {
|
if (newHandlers) {
|
||||||
|
#define HANDLE_EVENT_REGISTRATION(handler_name, event) \
|
||||||
#define HANDLE_EVENT_REGISTRATION(handler_name, event) \
|
if (!Handlers.handler_name && newHandlers->handler_name) { \
|
||||||
if (!Handlers.handler_name && newHandlers->handler_name) { \
|
RegisterForEvent(event); \
|
||||||
RegisterForEvent(event); \
|
} \
|
||||||
} \
|
else if (Handlers.handler_name && !newHandlers->handler_name) { \
|
||||||
else if (Handlers.handler_name && !newHandlers->handler_name) { \
|
DeregisterForEvent(event); \
|
||||||
DeregisterForEvent(event); \
|
}
|
||||||
}
|
|
||||||
|
|
||||||
std::lock_guard<std::mutex> guard(HandlerMutex);
|
std::lock_guard<std::mutex> guard(HandlerMutex);
|
||||||
HANDLE_EVENT_REGISTRATION(joinGame, "ACTIVITY_JOIN")
|
HANDLE_EVENT_REGISTRATION(joinGame, "ACTIVITY_JOIN")
|
||||||
@ -448,8 +473,7 @@ extern "C" DISCORD_EXPORT void Discord_UpdateHandlers(DiscordEventHandlers* newH
|
|||||||
|
|
||||||
Handlers = *newHandlers;
|
Handlers = *newHandlers;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
std::lock_guard<std::mutex> guard(HandlerMutex);
|
std::lock_guard<std::mutex> guard(HandlerMutex);
|
||||||
Handlers = {};
|
Handlers = {};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user