new discord code, vcpkg to handle the library

This commit is contained in:
Anonymous275
2022-01-20 03:13:42 +02:00
parent a6cb175eb4
commit 06073727de
8 changed files with 53 additions and 25 deletions

View File

@@ -3,23 +3,50 @@
/// Copyright (c) 2021-present Anonymous275 read the LICENSE file for more info.
///
#include <discord_rpc.h>
#include "Launcher.h"
#include "Logger.h"
#include <ctime>
void handleReady(const DiscordUser* u) {}
void handleDisconnected(int errcode, const char* message) {}
void handleError(int errcode, const char* message) {
LOG(ERROR) << "Discord error: " << message;
}
void Launcher::UpdatePresence() {
auto currentTime = std::time(nullptr);
DiscordRichPresence discordPresence;
memset(&discordPresence, 0, sizeof(discordPresence));
discordPresence.state = DiscordMessage.c_str();
discordPresence.largeImageKey = "mainlogo";
discordPresence.startTimestamp = currentTime - (currentTime - DiscordTime);
discordPresence.endTimestamp = 0;
DiscordTime = currentTime;
Discord_UpdatePresence(&discordPresence);
}
void Launcher::setDiscordMessage(const std::string& message) {
DiscordMessage = message;
UpdatePresence();
}
void Launcher::RichPresence() {
/*Discord_Initialize("629743237988352010", nullptr, 1, nullptr);
DiscordEventHandlers handlers;
memset(&handlers, 0, sizeof(handlers));
handlers.ready = handleReady;
handlers.errored = handleError;
handlers.disconnected = handleDisconnected;
Discord_Initialize("629743237988352010", &handlers, 1, nullptr);
UpdatePresence();
while(!Shutdown.load()) {
DiscordRichPresence discordPresence;
memset(&discordPresence, 0, sizeof(discordPresence));
discordPresence.state = DiscordMessage.c_str();
discordPresence.startTimestamp = DiscordTime;
discordPresence.largeImageKey = "mainlogo";
Discord_UpdatePresence(&discordPresence);
Discord_RunCallbacks();
std::this_thread::sleep_for(std::chrono::seconds(1));
}
Discord_ClearPresence();*/
Discord_ClearPresence();
Discord_Shutdown();
}
void Launcher::RunDiscordRPC() {
//DiscordRPC = std::thread(&Launcher::RichPresence, this);
}
DiscordRPC = std::thread(&Launcher::RichPresence, this);
}

View File

@@ -20,6 +20,7 @@ LONG WINAPI CrashHandler(EXCEPTION_POINTERS* p) {
std::atomic<bool> Launcher::Shutdown{false}, Launcher::Exit{false};
Launcher::Launcher(int argc, char* argv[]) : CurrentPath(std::filesystem::path(argv[0])), DiscordMessage("Just launched") {
Launcher::StaticAbort(this);
DiscordTime = std::time(nullptr);
Log::Init();
WindowsInit();
SetUnhandledExceptionFilter(CrashHandler);
@@ -111,6 +112,7 @@ void Launcher::WaitForGame() {
throw ShutdownException("Fatal Error");
}
LOG(INFO) << "Game found! PID " << GamePID;
setDiscordMessage("In menus");
//TODO: Inject then start IPC
while(!Shutdown.load() && BeamNG::GetProcessID() != 0) {
std::this_thread::sleep_for(std::chrono::seconds(2));
@@ -193,10 +195,10 @@ bool Launcher::Terminated() noexcept {
return Shutdown.load();
}
bool Launcher::getExit() {
bool Launcher::getExit() noexcept {
return Exit.load();
}
void Launcher::setExit(bool exit) {
void Launcher::setExit(bool exit) noexcept {
Exit.store(exit);
}