aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/yuzu/discord_impl.cpp
diff options
context:
space:
mode:
authorfearlessTobi <[email protected]>2018-09-16 20:05:51 +0200
committerfearlessTobi <[email protected]>2018-10-02 15:30:48 +0200
commit4d139943f2407144d5f8e3dc5a673f24850d43d0 (patch)
treebe24285a32c2b72b9756b69fd614f3d45c70ff41 /src/yuzu/discord_impl.cpp
parent5f30f95e94d9d8ba4eb3d09da110b8e2f9187eb2 (diff)
downloadyuzu-android-4d139943f2407144d5f8e3dc5a673f24850d43d0.tar.gz
yuzu-android-4d139943f2407144d5f8e3dc5a673f24850d43d0.zip
Port web_service from Citra
Diffstat (limited to 'src/yuzu/discord_impl.cpp')
-rw-r--r--src/yuzu/discord_impl.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/yuzu/discord_impl.cpp b/src/yuzu/discord_impl.cpp
new file mode 100644
index 000000000..9d87a41eb
--- /dev/null
+++ b/src/yuzu/discord_impl.cpp
@@ -0,0 +1,52 @@
+// Copyright 2018 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include <chrono>
+#include <string>
+#include <discord_rpc.h>
+#include "common/common_types.h"
+#include "core/core.h"
+#include "core/loader/loader.h"
+#include "yuzu/discord_impl.h"
+#include "yuzu/ui_settings.h"
+
+namespace DiscordRPC {
+
+DiscordImpl::DiscordImpl() {
+ DiscordEventHandlers handlers{};
+
+ // The number is the client ID for yuzu, it's used for images and the
+ // application name
+ Discord_Initialize("471872241299226636", &handlers, 1, nullptr);
+}
+
+DiscordImpl::~DiscordImpl() {
+ Discord_ClearPresence();
+ Discord_Shutdown();
+}
+
+void DiscordImpl::Pause() {
+ Discord_ClearPresence();
+}
+
+void DiscordImpl::Update() {
+ s64 start_time = std::chrono::duration_cast<std::chrono::seconds>(
+ std::chrono::system_clock::now().time_since_epoch())
+ .count();
+ std::string title;
+ if (Core::System::GetInstance().IsPoweredOn())
+ Core::System::GetInstance().GetAppLoader().ReadTitle(title);
+ DiscordRichPresence presence{};
+ presence.largeImageKey = "yuzu_logo";
+ presence.largeImageText = "yuzu is an emulator for the Nintendo Switch";
+ if (Core::System::GetInstance().IsPoweredOn()) {
+ presence.state = title.c_str();
+ presence.details = "Currently in game";
+ } else {
+ presence.details = "Not in game";
+ }
+ presence.startTimestamp = start_time;
+ Discord_UpdatePresence(&presence);
+}
+} // namespace DiscordRPC