From 0f2163d22db6df44f80366e3c8ab51c04194c70a Mon Sep 17 00:00:00 2001 From: Observer KRypt0n_ Date: Thu, 17 Aug 2023 12:27:58 +0200 Subject: [PATCH] feat: send DiscordRPC::Update messages each 3 seconds --- src/discord_rpc.rs | 10 ++++++++++ src/games/genshin/game.rs | 5 +++++ src/games/honkai/game.rs | 5 +++++ src/games/pgr/game.rs | 7 ++++++- src/games/star_rail/game.rs | 5 +++++ 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/discord_rpc.rs b/src/discord_rpc.rs index fe134c0..fd009e0 100644 --- a/src/discord_rpc.rs +++ b/src/discord_rpc.rs @@ -50,6 +50,9 @@ pub enum RpcUpdates { icon: String }, + /// Update RPC connection with already set activity params + Update, + /// Clear RPC activity ClearActivity } @@ -102,6 +105,13 @@ impl DiscordRpc { } } + RpcUpdates::Update => { + if connected { + client.set_activity(Self::get_activity(¶ms)) + .expect("Failed to update discord rpc activity"); + } + } + RpcUpdates::ClearActivity => { if connected { client.clear_activity().expect("Failed to clear discord rpc activity"); diff --git a/src/games/genshin/game.rs b/src/games/genshin/game.rs index f18cf15..34f8429 100644 --- a/src/games/genshin/game.rs +++ b/src/games/genshin/game.rs @@ -302,6 +302,11 @@ pub fn run() -> anyhow::Result<()> { if !output.contains("GenshinImpact.e") && !output.contains("YuanShen.exe") && !output.contains("unlocker.exe") { break; } + + #[cfg(feature = "discord-rpc")] + if let Some(rpc) = &rpc { + rpc.update(RpcUpdates::Update)?; + } } #[cfg(feature = "discord-rpc")] diff --git a/src/games/honkai/game.rs b/src/games/honkai/game.rs index 91aa573..aee3c92 100644 --- a/src/games/honkai/game.rs +++ b/src/games/honkai/game.rs @@ -246,6 +246,11 @@ pub fn run() -> anyhow::Result<()> { if !output.contains("BH3.exe") { break; } + + #[cfg(feature = "discord-rpc")] + if let Some(rpc) = &rpc { + rpc.update(RpcUpdates::Update)?; + } } #[cfg(feature = "discord-rpc")] diff --git a/src/games/pgr/game.rs b/src/games/pgr/game.rs index bc81e29..8d36568 100644 --- a/src/games/pgr/game.rs +++ b/src/games/pgr/game.rs @@ -228,9 +228,14 @@ pub fn run() -> anyhow::Result<()> { let output = Command::new("ps").arg("-A").stdout(Stdio::piped()).output()?; let output = String::from_utf8_lossy(&output.stdout); - if !output.contains("BH3.exe") { + if !output.contains("PGR.exe") { break; } + + #[cfg(feature = "discord-rpc")] + if let Some(rpc) = &rpc { + rpc.update(RpcUpdates::Update)?; + } } #[cfg(feature = "discord-rpc")] diff --git a/src/games/star_rail/game.rs b/src/games/star_rail/game.rs index 4021edc..76319ec 100644 --- a/src/games/star_rail/game.rs +++ b/src/games/star_rail/game.rs @@ -246,6 +246,11 @@ pub fn run() -> anyhow::Result<()> { if !output.contains("StarRail.exe") { break; } + + #[cfg(feature = "discord-rpc")] + if let Some(rpc) = &rpc { + rpc.update(RpcUpdates::Update)?; + } } #[cfg(feature = "discord-rpc")]