Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 56 additions & 56 deletions src/framework/discord/discord.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,60 +20,60 @@
* THE SOFTWARE.
*/

#include "discord.h"

#if ENABLE_DISCORD_RPC == 1
#include <client/game.h>
#include <client/localplayer.h>
#include <framework/core/eventdispatcher.h>
#include <time.h>

const static int64_t EP_TIME = std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch()).count();

Discord g_discord;

void Discord::init()
{
DiscordEventHandlers Handle;
memset(&Handle, 0, sizeof(Handle));
Discord_Initialize(RPC_API_KEY, &Handle, 1, NULL);
update();
}

void Discord::update()
{
std::string info;
if (g_game.isOnline()) {
#if SHOW_CHARACTER_NAME_RPC == 1
info = "Name: " + g_game.getCharacterName();
#endif

#if SHOW_CHARACTER_LEVEL_RPC == 1
const auto& level = std::to_string(g_game.getLocalPlayer()->getLevel());
info += info.empty() ? "Level: " + level : "[" + level + "]";
#endif

#if SHOW_CHARACTER_WORLD_RPC == 1
if (!info.empty()) info += "\n";
info += "World: " + g_game.getWorldName();
#ifndef ANDROID
#if ENABLE_DISCORD_RPC == 1
#include "discord.h"
#include <client/game.h>
#include <client/localplayer.h>
#include <framework/core/eventdispatcher.h>
#include <time.h>

const static int64_t EP_TIME = std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch()).count();

Discord g_discord;

void Discord::init()
{
DiscordEventHandlers Handle;
memset(&Handle, 0, sizeof(Handle));
Discord_Initialize(RPC_API_KEY, &Handle, 1, NULL);
update();
}

void Discord::update()
{
std::string info;
if (g_game.isOnline()) {
#if SHOW_CHARACTER_NAME_RPC == 1
info = "Name: " + g_game.getCharacterName();
#endif

#if SHOW_CHARACTER_LEVEL_RPC == 1
const auto& level = std::to_string(g_game.getLocalPlayer()->getLevel());
info += info.empty() ? "Level: " + level : "[" + level + "]";
#endif

#if SHOW_CHARACTER_WORLD_RPC == 1
if (!info.empty()) info += "\n";
info += "World: " + g_game.getWorldName();
#endif
} else {
info = std::string{ OFFLINE_RPC_TEXT };
}

if (info.empty())
info = "Adjust in config.h";

DiscordRichPresence discordPresence;
memset(&discordPresence, 0, sizeof(discordPresence));
discordPresence.state = STATE_RPC_TEXT;
discordPresence.details = info.c_str();
discordPresence.startTimestamp = EP_TIME;
discordPresence.endTimestamp = 0;
discordPresence.largeImageKey = RPC_LARGE_IMAGE;
discordPresence.largeImageText = RPC_LARGE_TEXT;
Discord_UpdatePresence(&discordPresence);
g_dispatcher.scheduleEvent([this] { update(); }, 30000);
}
#endif
#endif
} else {
info = std::string{ OFFLINE_RPC_TEXT };
}

if (info.empty())
info = "Adjust in config.h";

DiscordRichPresence discordPresence;
memset(&discordPresence, 0, sizeof(discordPresence));
discordPresence.state = STATE_RPC_TEXT;
discordPresence.details = info.c_str();
discordPresence.startTimestamp = EP_TIME;
discordPresence.endTimestamp = 0;
discordPresence.largeImageKey = RPC_LARGE_IMAGE;
discordPresence.largeImageText = RPC_LARGE_TEXT;
Discord_UpdatePresence(&discordPresence);
g_dispatcher.scheduleEvent([this] { update(); }, 30000);
}

#endif
35 changes: 17 additions & 18 deletions src/framework/discord/discord.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,20 @@
#pragma once

#include <framework/config.h>

#if ENABLE_DISCORD_RPC == 1

#include <discord_register.h>
#include <discord_rpc.h>

class Discord
{
public:
void init();

private:
void update();
};

extern Discord g_discord;

#endif
#ifndef ANDROID
#if ENABLE_DISCORD_RPC == 1
#include <discord_register.h>
#include <discord_rpc.h>

class Discord
{
public:
void init();

private:
void update();
};

extern Discord g_discord;
#endif
#endif
14 changes: 9 additions & 5 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@
#include <framework/core/resourcemanager.h>
#include <framework/luaengine/luainterface.h>

#if ENABLE_DISCORD_RPC == 1
#include <framework/discord/discord.h>
#ifndef ANDROID
#if ENABLE_DISCORD_RPC == 1
#include <framework/discord/discord.h>
#endif
#endif

#ifdef FRAMEWORK_NET
Expand Down Expand Up @@ -69,8 +71,10 @@ int main(int argc, const char* argv[])
if (!g_resources.discoverWorkDir("init.lua"))
g_logger.fatal("Unable to find work directory, the application cannot be initialized.");

#if ENABLE_DISCORD_RPC == 1
g_discord.init();
#ifndef ANDROID
#if ENABLE_DISCORD_RPC == 1
g_discord.init();
#endif
#endif

// initialize application framework and otclient
Expand All @@ -96,4 +100,4 @@ int main(int argc, const char* argv[])
g_http.terminate();
#endif
return 0;
}
}