diff --git a/Scripts/Classes/Editor/LevelEditor.gd b/Scripts/Classes/Editor/LevelEditor.gd index c8549c4..e3efb80 100644 --- a/Scripts/Classes/Editor/LevelEditor.gd +++ b/Scripts/Classes/Editor/LevelEditor.gd @@ -105,7 +105,7 @@ var undo_redo = UndoRedo.new() func _ready() -> void: $TileMenu.hide() - Global.set_discord_status("In The Level Editor...") + DiscordManager.set_discord_status("In The Level Editor...") Global.level_editor = self playing_level = false menu_open = $TileMenu.visible diff --git a/Scripts/Classes/Singletons/DiscordManager.gd b/Scripts/Classes/Singletons/DiscordManager.gd new file mode 100644 index 0000000..f09eec5 --- /dev/null +++ b/Scripts/Classes/Singletons/DiscordManager.gd @@ -0,0 +1,63 @@ +extends Node + +var enabled: bool = ProjectSettings.get_setting("application/use_discord", false) and not (OS.has_feature("linux") and OS.has_feature("arm64")) +var rpc = null + +class DiscordRPCStub: + var app_id + var start_timestamp + var details + var state + var large_image + var small_image + + func start(): pass + func refresh(): pass + func get_is_discord_working() -> bool: return false + func shutdown(): pass + +func _ready() -> void: + if enabled: + rpc = Engine.get_singleton("DiscordRPC") + else: + rpc = DiscordRPCStub.new() + setup_discord_rpc() + +func _process(_delta: float) -> void: + if enabled: + rpc.run_callbacks() + +func setup_discord_rpc() -> void: + if not enabled: + return + rpc.app_id = 1331261692381757562 + rpc.start_timestamp = int(Time.get_unix_time_from_system()) + rpc.details = "In Title Screen.." + if rpc.get_is_discord_working(): + rpc.refresh() + +func set_discord_status(details: String = "") -> void: + if not enabled: + return + rpc.details = details + if rpc.get_is_discord_working(): + rpc.refresh() + +func update_discord_status(details: String) -> void: + if not enabled: + return + rpc.details = details + rpc.state = details + rpc.large_image = (Global.level_theme + Global.theme_time).to_lower() + rpc.small_image = Global.current_campaign.to_lower() + if rpc.get_is_discord_working(): + rpc.refresh() + +func refresh_discord_rpc() -> void: + if not enabled: + return + if not rpc.get_is_discord_working(): + return + Global.update_game_status() + update_discord_status("") + rpc.refresh() diff --git a/Scripts/Classes/Singletons/DiscordManager.gd.uid b/Scripts/Classes/Singletons/DiscordManager.gd.uid new file mode 100644 index 0000000..bfac6a0 --- /dev/null +++ b/Scripts/Classes/Singletons/DiscordManager.gd.uid @@ -0,0 +1 @@ +uid://yx2impqs0lo5 diff --git a/Scripts/Classes/Singletons/Global.gd b/Scripts/Classes/Singletons/Global.gd index eef9154..dc946f5 100644 --- a/Scripts/Classes/Singletons/Global.gd +++ b/Scripts/Classes/Singletons/Global.gd @@ -169,7 +169,6 @@ func _ready() -> void: get_server_version() if OS.is_debug_build(): debug_mode = false - setup_discord_rpc() check_for_rom() func check_for_rom() -> void: @@ -333,32 +332,11 @@ func close_freeze() -> void: var recording_dir = "user://marathon_recordings/" -func setup_discord_rpc() -> void: - DiscordRPC.app_id = 1331261692381757562 - DiscordRPC.start_timestamp = int(Time.get_unix_time_from_system()) - DiscordRPC.details = "In Title Screen.." - if DiscordRPC.get_is_discord_working(): - DiscordRPC.refresh() - -func set_discord_status(details := "") -> void: - DiscordRPC.details = details - if DiscordRPC.get_is_discord_working(): - DiscordRPC.refresh() - func update_game_status() -> void: var lives_str := str(Global.lives) if Settings.file.difficulty.inf_lives == 1: lives_str = "∞" var string := "Coins = " + str(Global.coins) + " Lives = " + lives_str - DiscordRPC.large_image = (Global.level_theme + Global.theme_time).to_lower() - DiscordRPC.small_image = Global.current_campaign.to_lower() - DiscordRPC.state = string - -func refresh_discord_rpc() -> void: - if DiscordRPC.get_is_discord_working() == false: - return - update_game_status() - DiscordRPC.refresh() func open_marathon_results() -> void: get_node("GameHUD/MarathonResults").open() diff --git a/Scripts/Parts/LevelTransition.gd b/Scripts/Parts/LevelTransition.gd index 9ebbd70..26f22cd 100644 --- a/Scripts/Parts/LevelTransition.gd +++ b/Scripts/Parts/LevelTransition.gd @@ -75,7 +75,7 @@ func _ready() -> void: if Global.current_game_mode == Global.GameMode.CAMPAIGN: SaveManager.write_save(Global.current_campaign) - Global.set_discord_status("Playing " + Global.current_campaign + ": " + str(world_num) + "-" + str(Global.level_num)) + DiscordManager.set_discord_status("Playing " + Global.current_campaign + ": " + str(world_num) + "-" + str(Global.level_num)) $BG/Control/WorldNum.text = str(world_num) +"-" + str(Global.level_num) if Settings.file.difficulty.inf_lives: $BG/Control/LivesCount.text = "* ∞" diff --git a/addons/discord-rpc-gd/bin/discord-rpc-gd.gdextension b/addons/discord-rpc-gd/bin/discord-rpc-gd.gdextension index 27e2845..6d61020 100755 --- a/addons/discord-rpc-gd/bin/discord-rpc-gd.gdextension +++ b/addons/discord-rpc-gd/bin/discord-rpc-gd.gdextension @@ -11,8 +11,8 @@ windows.debug.x86_64 = "windows/discord_game_sdk_binding_debug.dll" windows.release.x86_64 = "windows/discord_game_sdk_binding.dll" linux.debug.x86_64 = "linux/libdiscord_game_sdk_binding_debug.so" linux.release.x86_64 = "linux/libdiscord_game_sdk_binding.so" -linux.debug.arm64 = "linux/libdiscord_game_sdk_binding_debug.so" -linux.release.arm64 = "linux/libdiscord_game_sdk_binding.so" +;linux.debug.arm64 = "linux/libdiscord_game_sdk_binding_debug.so" +;linux.release.arm64 = "linux/libdiscord_game_sdk_binding.so" linux.debug.rv64 = "linux/libdiscord_game_sdk_binding_debug.so" linux.release.rv64 = "linux/libdiscord_game_sdk_binding.so" @@ -23,7 +23,7 @@ windows.debug.x86_64 = { "windows/discord_game_sdk.dll": "" } windows.release.x86_64 = { "windows/discord_game_sdk.dll": "" } linux.debug.x86_64 = { "linux/libdiscord_game_sdk.so": "" } linux.release.x86_64 = { "linux/libdiscord_game_sdk.so": "" } -linux.debug.arm64 = { "linux/libdiscord_game_sdk.so": "" } -linux.release.arm64 = { "linux/libdiscord_game_sdk.so": "" } +;linux.debug.arm64 = { "linux/libdiscord_game_sdk.so": "" } +;linux.release.arm64 = { "linux/libdiscord_game_sdk.so": "" } linux.debug.rv64 = { "linux/libdiscord_game_sdk.so": "" } linux.release.rv64 = { "linux/libdiscord_game_sdk.so": "" } diff --git a/godotgif/bin/libgodotgif.linux.template_debug.arm64.so b/godotgif/bin/libgodotgif.linux.template_debug.arm64.so new file mode 100644 index 0000000..9007a54 Binary files /dev/null and b/godotgif/bin/libgodotgif.linux.template_debug.arm64.so differ diff --git a/godotgif/bin/libgodotgif.linux.template_release.arm64.so b/godotgif/bin/libgodotgif.linux.template_release.arm64.so new file mode 100644 index 0000000..b802de5 Binary files /dev/null and b/godotgif/bin/libgodotgif.linux.template_release.arm64.so differ diff --git a/project.godot b/project.godot index 094030a..25de832 100644 --- a/project.godot +++ b/project.godot @@ -24,6 +24,7 @@ boot_splash/show_image=false boot_splash/fullsize=false boot_splash/use_filter=false config/icon="res://icon.png" +use_discord=true [autoload] @@ -32,8 +33,8 @@ ModLoader="*res://addons/mod_loader/mod_loader.gd" Global="*res://Scenes/Prefabs/Global.tscn" Settings="*res://Scenes/Prefabs/Autoload/Settings.tscn" SaveManager="*res://Scripts/Classes/Singletons/SaveManager.gd" +DiscordManager="*res://Scripts/Classes/Singletons/DiscordManager.gd" AudioManager="*res://Scenes/Prefabs/Autoload/AudioManager.tscn" -DiscordRPCLoader="*res://addons/discord-rpc-gd/nodes/discord_autoload.gd" BetterTerrain="*res://addons/better-terrain/BetterTerrain.gd" GameBanana="*res://Scripts/Classes/Singletons/GameBananaManager.gd" SpeedrunHandler="*res://Scripts/Classes/Singletons/SpeedrunHandler.gd"