mirror of
https://github.com/BeamMP/BeamMP-Launcher.git
synced 2026-04-19 23:00:21 +00:00
new discord code, vcpkg to handle the library
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user