mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-21 23:18:11 +00:00

This commit delegates all Discord-related functions to DiscordManager.gd and adds a project setting bool to toggle using Discord RPC at all. Toggling off will reduce cpu and memory overhead when Discord is not needed.
64 lines
1.5 KiB
GDScript
64 lines
1.5 KiB
GDScript
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()
|