diff --git a/project/addons/discord-sdk-gd/export.gd b/project/addons/discord-sdk-gd/export.gd index e01b294..302fc5e 100644 --- a/project/addons/discord-sdk-gd/export.gd +++ b/project/addons/discord-sdk-gd/export.gd @@ -1,7 +1,7 @@ @tool extends EditorExportPlugin -func _export_file(_path, _type, features): +func _export_file(_path, _type, features) -> void: if features[2] == "windows": if features[4] == "x86_64": add_shared_object("res://addons/discord-sdk-gd/bin/windows/discord_game_sdk.dll",[],"/") diff --git a/project/addons/discord-sdk-gd/nodes/core_updater.gd b/project/addons/discord-sdk-gd/nodes/core_updater.gd index a7ae363..fda168e 100644 --- a/project/addons/discord-sdk-gd/nodes/core_updater.gd +++ b/project/addons/discord-sdk-gd/nodes/core_updater.gd @@ -1,5 +1,8 @@ ## This always needs to run in the background if you want to comunicate with the discord client. extends Node +@export var is_running: bool =false + func _process(delta) -> void: discord_sdk.coreupdate() + is_running = true diff --git a/project/addons/discord-sdk-gd/nodes/debug.gd b/project/addons/discord-sdk-gd/nodes/debug.gd index 8d5d03d..0c67774 100644 --- a/project/addons/discord-sdk-gd/nodes/debug.gd +++ b/project/addons/discord-sdk-gd/nodes/debug.gd @@ -1,7 +1,6 @@ ## This is a Debug Node wich will show (only if the project runs) some usefull info and buttons/input extends Node -const DebugNodeGroup = preload("res://addons/discord-sdk-gd/nodes/Debug.tscn") - -func _ready(): +func _ready() -> void: + const DebugNodeGroup: PackedScene = preload("res://addons/discord-sdk-gd/nodes/Debug.tscn") add_child(DebugNodeGroup.instantiate()) diff --git a/project/addons/discord-sdk-gd/plugin.gd b/project/addons/discord-sdk-gd/plugin.gd index b258011..1bea3ee 100644 --- a/project/addons/discord-sdk-gd/plugin.gd +++ b/project/addons/discord-sdk-gd/plugin.gd @@ -14,14 +14,34 @@ const ExportPlugin = preload("res://addons/discord-sdk-gd/export.gd") var loaded_exportplugin = ExportPlugin.new() -func _enter_tree(): +func _enable_plugin() -> void: + print("DiscordSDK Addon got enabled") add_custom_type("DiscordSDKLoader","Node",DiscordSDKLoader,DiscordSDKLoader_icon) add_custom_type("DiscordSDKDebug","Node",DiscordSDKDebug,DiscordSDKDebug_icon) - add_autoload_singleton("DiscordSDKLoader", "res://addons/discord-sdk-gd/nodes/DiscordSDKLoader.tscn") + add_autoload_singleton("DiscordSDKLoader", "res://addons/discord-sdk-gd/nodes/core_updater.gd") add_export_plugin(loaded_exportplugin) -func disable_plugin(): + ProjectSettings.set_setting("DiscordSDK/EditorPresence/enabled",false) + + ProjectSettings.set_initial_value("DiscordSDK/EditorPresence/enabled",false) + ProjectSettings.set_restart_if_changed("DiscordSDK/EditorPresence/enabled",true) + +func _disable_plugin() -> void: + print("DiscordSDK Addon got disabled") + remove_autoload_singleton("DiscordSDKLoader") remove_custom_type("DiscordSDKLoader") remove_custom_type("DiscordSDKDebug") - remove_autoload_singleton("DiscordSDKLoader") - remove_export_plugin(loaded_exportplugin) + ProjectSettings.clear("DiscordSDK/EditorPresence/enabled") + +func _process(_delta): + if(ProjectSettings.get_setting("DiscordSDK/EditorPresence/enabled")&&!get_editor_interface().is_playing_scene()): + if(discord_sdk.app_id != 1108142249990176808): + discord_sdk.app_id = 1108142249990176808 + discord_sdk.details = ProjectSettings.get_setting("application/config/name") + discord_sdk.state = "Editing: \""+ str(get_tree().edited_scene_root.scene_file_path).replace("res://","") +"\"" + discord_sdk.large_image = "godot" + discord_sdk.large_image_text = str(Engine.get_version_info()) + discord_sdk.start_timestamp = int(Time.get_unix_time_from_system()) + discord_sdk.refresh() + if(discord_sdk.app_id == 1108142249990176808): + discord_sdk.coreupdate() diff --git a/project/main.gd b/project/main.gd index eae9e10..8354aa4 100644 --- a/project/main.gd +++ b/project/main.gd @@ -1,12 +1,13 @@ extends Node -func _ready(): +func _ready() -> void: set_activity() discord_sdk.connect("activity_join_request",_on_activity_join_request) discord_sdk.connect("activity_join",_on_activity_join) discord_sdk.connect("activity_spectate",_on_activity_spectate) -func set_activity(): +func set_activity() -> void: + discord_sdk.clear() discord_sdk.app_id = 1099618430065324082 discord_sdk.details = "A demo activity by vaporvee#1231" discord_sdk.state = "Checkpoint 23/23" @@ -19,7 +20,7 @@ func set_activity(): # It is NOT recommended to manage secrets locally! It's meant to be a payload wich the server # understands and returns the other variables like current_party_size, party_id etc. Most of the values must differ from the others. - var my_secret = str(randi_range(0,999999)) + var my_secret: String = str(randi_range(0,999999)) discord_sdk.party_id = "mylobbycanbeeverything_" + my_secret discord_sdk.current_party_size = 1 @@ -34,13 +35,13 @@ func set_activity(): #discord_sdk.register_steam(1389990) discord_sdk.refresh() -var user_request = {}; +var user_request: Dictionary; -func _on_activity_join_request(user_requesting): +func _on_activity_join_request(user_requesting) -> void: print(user_requesting) user_request = user_requesting -func _on_activity_join(secret): +func _on_activity_join(secret) -> void: if(discord_sdk.join_secret != secret): discord_sdk.current_party_size = clamp(int(secret) + 1, 0, discord_sdk.max_party_size) discord_sdk.party_id = secret.replace("j_","mylobbycanbeeverything_") @@ -49,7 +50,7 @@ func _on_activity_join(secret): discord_sdk.spectate_secret = secret.replace("j_","s_") discord_sdk.refresh() -func _on_activity_spectate(secret): +func _on_activity_spectate(secret) -> void: print(secret) func _on_toggle_sdk_toggled(button_pressed): diff --git a/project/project.godot b/project/project.godot index d28b88d..e0c93bb 100644 --- a/project/project.godot +++ b/project/project.godot @@ -20,7 +20,7 @@ config/icon="res://assets/Logo_V2.png" [autoload] -DiscordSDKLoader="*res://addons/discord-sdk-gd/nodes/DiscordSDKLoader.tscn" +DiscordSDKLoader="*res://addons/discord-sdk-gd/nodes/core_updater.gd" [display]