diff --git a/rare/__init__.py b/rare/__init__.py index e8c05130..26729965 100644 --- a/rare/__init__.py +++ b/rare/__init__.py @@ -1,5 +1,5 @@ import os -__version__ = "1.0.0" +__version__ = "1.1.0" style_path = os.path.join(os.path.dirname(__file__), "styles/") lang_path = os.path.join(os.path.dirname(__file__), "languages/") diff --git a/rare/components/main_window.py b/rare/components/main_window.py index dc15da8f..79375088 100644 --- a/rare/components/main_window.py +++ b/rare/components/main_window.py @@ -27,9 +27,9 @@ class MainWindow(QMainWindow): # Discord RPC on game launch self.tab_widget.games_tab.default_widget.game_list.game_started.connect( - lambda: self.rpc.set_discord_rpc(self.tab_widget.games_tab.default_widget.game_list.running_games)) + lambda: self.rpc.set_discord_rpc(self.tab_widget.games_tab.default_widget.game_list.running_games[0])) # Remove RPC - self.tab_widget.delete_presence.connect(self.rpc.remove_rpc) + self.tab_widget.delete_presence.connect(self.rpc.set_discord_rpc) # Show RPC on changed rare_settings self.tab_widget.settings.rare_settings.rpc.update_settings.connect(lambda: self.rpc.changed_settings(self.tab_widget.games_tab.default_widget.game_list.running_games)) diff --git a/rare/components/tab_widget.py b/rare/components/tab_widget.py index e18331bc..3d94d314 100644 --- a/rare/components/tab_widget.py +++ b/rare/components/tab_widget.py @@ -20,6 +20,7 @@ class TabWidget(QTabWidget): def __init__(self, core: LegendaryCore): super(TabWidget, self).__init__() disabled_tab = 3 + self.core = core self.setTabBar(TabBar(disabled_tab)) # Generate Tabs @@ -82,7 +83,8 @@ class TabWidget(QTabWidget): # Sync game and delete dc rpc def game_finished(self, app_name): self.delete_presence.emit() - self.cloud_saves.sync_game(app_name, True) + if self.core.get_game(app_name).supports_cloud_saves: + self.cloud_saves.sync_game(app_name, True) # Update gamelist and set text of Downlaods to "Downloads" def dl_finished(self, update_list): diff --git a/rare/components/tabs/games/game_list.py b/rare/components/tabs/games/game_list.py index 7ad4d471..0b84a653 100644 --- a/rare/components/tabs/games/game_list.py +++ b/rare/components/tabs/games/game_list.py @@ -207,14 +207,14 @@ class GameList(QStackedWidget): logger.info("Auto saves disabled") return - self.game_exited.emit(app_name) self.widgets[app_name][0].info_text = self.tr("Sync CLoud saves") self.widgets[app_name][0].info_label.setText(self.tr("Sync CLoud saves")) self.widgets[app_name][1].info_label.setText(self.tr("Sync CLoud saves")) + self.game_exited.emit(app_name) def launch(self, app_name): - self.game_started.emit(app_name) self.running_games.append(app_name) + self.game_started.emit(app_name) self.widgets[app_name][0].info_text = self.tr("Game running") self.widgets[app_name][0].info_label.setText(self.tr("Game running")) self.widgets[app_name][1].launch_button.setDisabled(True) diff --git a/rare/utils/rpc.py b/rare/utils/rpc.py index c9d4ee4b..bc1258c4 100644 --- a/rare/utils/rpc.py +++ b/rare/utils/rpc.py @@ -1,12 +1,15 @@ import platform import time +from logging import getLogger from PyQt5.QtCore import QObject, QSettings +from PyQt5.QtWidgets import QMessageBox from pypresence import Presence from custom_legendary.core import LegendaryCore client_id = "830732538225360908" +logger = getLogger("RPC") class DiscordRPC(QObject): @@ -25,8 +28,10 @@ class DiscordRPC(QObject): if value == 2: self.remove_rpc() return - if not game_running: + if not game_running and value == 0: self.remove_rpc() + elif not game_running: + self.set_discord_rpc() else: self.set_discord_rpc(game_running[0]) @@ -34,9 +39,13 @@ class DiscordRPC(QObject): if self.settings.value("rpc_enable", 0, int) != 1: if not self.RPC: return - self.RPC.close() + try: + self.RPC.close() + except Exception: + logger.warning("Already closed") del self.RPC self.RPC = None + logger.info("Remove RPC") self.state = 2 else: self.state = 1 @@ -44,12 +53,16 @@ class DiscordRPC(QObject): def set_discord_rpc(self, app_name=None): if not self.RPC: - self.RPC = Presence("830732538225360908") # Rare app: https://discord.com/developers/applications - self.RPC.connect() + try: + self.RPC = Presence("830732538225360908") # Rare app: https://discord.com/developers/applications + self.RPC.connect() + except ConnectionRefusedError as e: + logger.warning("Discord is not active\n" + str(e)) + return self.update_rpc(app_name) def update_rpc(self, app_name=None): - if self.settings.value("rpc_enable", 0, int) == 2: + if self.settings.value("rpc_enable", 0, int) == 2 or (app_name is None and self.settings.value("rpc_enable", 0) == 0): self.remove_rpc() return title = None