diff options
author | fearlessTobi <[email protected]> | 2018-09-16 20:05:51 +0200 |
---|---|---|
committer | fearlessTobi <[email protected]> | 2018-10-02 15:30:48 +0200 |
commit | 4d139943f2407144d5f8e3dc5a673f24850d43d0 (patch) | |
tree | be24285a32c2b72b9756b69fd614f3d45c70ff41 /src/yuzu/discord_impl.cpp | |
parent | 5f30f95e94d9d8ba4eb3d09da110b8e2f9187eb2 (diff) | |
download | yuzu-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.cpp | 52 |
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 |