diff --git a/project/addons/discord-rpc-gd/bin/windows/discord_game_sdk_binding_debug.dll b/project/addons/discord-rpc-gd/bin/windows/discord_game_sdk_binding_debug.dll index cd80cb9..cf493b1 100644 Binary files a/project/addons/discord-rpc-gd/bin/windows/discord_game_sdk_binding_debug.dll and b/project/addons/discord-rpc-gd/bin/windows/discord_game_sdk_binding_debug.dll differ diff --git a/project/addons/discord-rpc-gd/discord_coreupdater.gd b/project/addons/discord-rpc-gd/discord_coreupdater.gd new file mode 100644 index 0000000..2b4fe6e --- /dev/null +++ b/project/addons/discord-rpc-gd/discord_coreupdater.gd @@ -0,0 +1,4 @@ +extends Node + +func _process(delta): + DiscordSDK.coreupdate() diff --git a/project/addons/discord-rpc-gd/loadaddon.gd b/project/addons/discord-rpc-gd/loadaddon.gd deleted file mode 100644 index 9d3b941..0000000 --- a/project/addons/discord-rpc-gd/loadaddon.gd +++ /dev/null @@ -1,11 +0,0 @@ -extends Node - - -# Called when the node enters the scene tree for the first time. -func _ready(): - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - DiscordSDK.update() diff --git a/project/addons/discord-rpc-gd/plugin.gd b/project/addons/discord-rpc-gd/plugin.gd index 4a95998..7741951 100644 --- a/project/addons/discord-rpc-gd/plugin.gd +++ b/project/addons/discord-rpc-gd/plugin.gd @@ -2,7 +2,8 @@ extends EditorPlugin func _enter_tree(): - add_autoload_singleton("Discord", "res://addons/discord-rpc-gd/loadaddon.gd") + add_autoload_singleton("discord_coreupdater", "res://addons/discord-rpc-gd/discord_coreupdater.gd") + func disable_plugin(): - remove_autoload_singleton("Discord") + remove_autoload_singleton("discord_coreupdater") diff --git a/project/main.gd b/project/main.gd index 0302425..ac457b7 100644 --- a/project/main.gd +++ b/project/main.gd @@ -1,6 +1,7 @@ extends Node - -# Called when the node enters the scene tree for the first time. func _ready(): - DiscordSDK.debug() + DiscordSDK.set_app_id(918857075105349632) + DiscordSDK.set_details("Made with GDExtension") + DiscordSDK.set_state("This is a test from GDScript in Godot 4") #TODO:Change functions to variables if possible + DiscordSDK.refresh_activity() diff --git a/project/project.godot b/project/project.godot index 75a1301..081098f 100644 --- a/project/project.godot +++ b/project/project.godot @@ -19,7 +19,7 @@ config/icon="res://assets/Logo_V2.png" [autoload] -Discord="*res://addons/discord-rpc-gd/loadaddon.gd" +discord_coreupdater="*res://addons/discord-rpc-gd/discord_coreupdater.gd" [dotnet] diff --git a/src/main.cpp b/src/main.cpp index 388a708..e33609e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,12 +7,19 @@ using namespace godot; DiscordSDK *DiscordSDK::singleton = nullptr; + discord::Core *core{}; +discord::Result result; +discord::Activity activity{}; void DiscordSDK::_bind_methods() { ClassDB::bind_method(D_METHOD("debug"), &DiscordSDK::debug); - ClassDB::bind_method(D_METHOD("update"), &DiscordSDK::update); + ClassDB::bind_method(D_METHOD("coreupdate"), &DiscordSDK::coreupdate); + ClassDB::bind_method(D_METHOD("set_app_id"), &DiscordSDK::set_app_id); + ClassDB::bind_method(D_METHOD("set_state"), &DiscordSDK::set_state); + ClassDB::bind_method(D_METHOD("set_details"), &DiscordSDK::set_details); + ClassDB::bind_method(D_METHOD("refresh_activity"), &DiscordSDK::refresh_activity); } DiscordSDK *DiscordSDK::get_singleton() @@ -34,16 +41,36 @@ DiscordSDK::~DiscordSDK() void DiscordSDK::debug() { - auto result = discord::Core::Create(1080224638845591692, DiscordCreateFlags_Default, &core); - discord::Activity activity{}; - activity.SetState("Test from Godot!"); - activity.SetDetails("I worked months on this"); - discord::ActivityAssets assets = activity.GetAssets(); - assets.SetLargeImage("test1"); - assets.SetSmallImage("godot"); - core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {}); + auto debugresult = discord::Core::Create(1080224638845591692, DiscordCreateFlags_NoRequireDiscord, &core); + discord::Activity debugactivity{}; + debugactivity.SetState("Test from Godot!"); + debugactivity.SetDetails("I worked months on this"); + discord::ActivityAssets debugassets = debugactivity.GetAssets(); + debugassets.SetLargeImage("test1"); + debugassets.SetSmallImage("godot"); + core->ActivityManager().UpdateActivity(debugactivity, [](discord::Result debugresult) {}); } -void DiscordSDK::update() + +void DiscordSDK::coreupdate() { ::core->RunCallbacks(); +} + +void DiscordSDK::set_app_id(int64_t appid) +{ + result = discord::Core::Create(appid, DiscordCreateFlags_NoRequireDiscord, &core); +} + +void DiscordSDK::set_state(String state) +{ + activity.SetState(state.utf8().get_data()); +} +void DiscordSDK::set_details(String details) +{ + activity.SetDetails(details.utf8().get_data()); +} + +void DiscordSDK::refresh_activity() +{ + core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {}); } \ No newline at end of file diff --git a/src/main.h b/src/main.h index 271cd25..cc50eff 100644 --- a/src/main.h +++ b/src/main.h @@ -1,6 +1,7 @@ #ifndef MAIN_H #define MAIN_H +#include #include #include @@ -22,7 +23,11 @@ public: ~DiscordSDK(); void debug(); - void update(); + void coreupdate(); + void refresh_activity(); + void set_app_id(int64_t appid); + void set_state(String state); + void set_details(String details); }; #endif \ No newline at end of file