iw5-mod/src/module/discord.cpp

52 lines
1.2 KiB
C++
Raw Normal View History

2019-09-24 10:30:08 +02:00
#include <std_include.hpp>
2022-03-23 13:48:13 +00:00
#include <loader/module_loader.hpp>
2019-09-24 10:30:08 +02:00
#include "game/game.hpp"
2022-03-23 13:48:13 +00:00
#include "scheduler.hpp"
2023-01-27 14:21:54 +00:00
#include "console.hpp"
#include <discord_rpc.h>
2019-09-24 10:30:08 +02:00
class discord final : public module
{
public:
void post_load() override
{
DiscordEventHandlers handlers;
ZeroMemory(&handlers, sizeof(handlers));
handlers.ready = ready;
handlers.errored = errored;
handlers.disconnected = errored;
handlers.joinGame = nullptr;
handlers.spectateGame = nullptr;
handlers.joinRequest = nullptr;
Discord_Initialize("531526691319971880", &handlers, 1, nullptr);
scheduler::loop(Discord_RunCallbacks, scheduler::pipeline::main);
2019-09-24 10:30:08 +02:00
}
void pre_destroy() override
{
Discord_Shutdown();
}
private:
static void ready(const DiscordUser* request)
{
DiscordRichPresence discord_presence;
ZeroMemory(&discord_presence, sizeof(discord_presence));
discord_presence.state = game::is_mp() ? "Multiplayer" : "Singleplayer";
discord_presence.instance = 1;
Discord_UpdatePresence(&discord_presence);
}
static void errored(const int error_code, const char* message)
{
2023-01-27 14:21:54 +00:00
console::error("Discord: (%i) %s", error_code, message);
2019-09-24 10:30:08 +02:00
}
};
2019-09-25 12:15:19 +02:00
REGISTER_MODULE(discord)