diff --git a/.gitmodules b/.gitmodules index e497b19..e24f81e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "src/lib/godot-cpp"] path = src/lib/godot-cpp url = https://github.com/godotengine/godot-cpp +[submodule "src/lib/discord-rpc"] + path = src/lib/discord-rpc + url = https://github.com/vaporvee/discord-rpc diff --git a/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding.dll b/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding.dll index e907059..64cfc29 100644 Binary files a/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding.dll and b/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding.dll differ diff --git a/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding_debug.dll b/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding_debug.dll index 64d0b23..26de419 100644 Binary files a/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding_debug.dll and b/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding_debug.dll differ diff --git a/project/main.gd b/project/main.gd index 0552fe1..d679de0 100644 --- a/project/main.gd +++ b/project/main.gd @@ -1,20 +1,20 @@ extends Node func _ready(): - Discord_SDK.app_id = 1099618430065324082 +# Discord_SDK.app_id = 1099618430065324082 Discord_SDK.debug() # Discord_SDK.app_id = 1099618430065324082 # Discord_SDK.details = "A demo activity by vaporvee#1231" # Discord_SDK.state = "Checkpoint 23/23" -# + # Discord_SDK.large_image = "game" # Discord_SDK.large_image_text = "Try it now!" # Discord_SDK.small_image = "boss" # Discord_SDK.small_image_text = "Fighting the end boss! D:" -# -# #Discord_SDK.start_timestamp = int(Time.get_unix_time_from_system()) + + #Discord_SDK.start_timestamp = int(Time.get_unix_time_from_system()) # Discord_SDK.end_timestamp = int(Time.get_unix_time_from_system()) + 3600 # +1 hour in unix time -# + # Discord_SDK.refresh() -# + # $Info.text = $Info.text.replace("{discordinfo}",str(Discord_SDK.get_is_discord_working())).replace("{id}",str(Discord_SDK.app_id)).replace("{details}",Discord_SDK.details).replace("{state}",Discord_SDK.state).replace("{lkey}",Discord_SDK.large_image).replace("{ltext}",Discord_SDK.large_image_text).replace("{skey}",Discord_SDK.small_image).replace("{stext}",Discord_SDK.small_image_text).replace("{stimestamp}",str(Discord_SDK.start_timestamp)).replace("{etimestamp}",str(Discord_SDK.end_timestamp)) diff --git a/src/discordgodot.cpp b/src/discordgodot.cpp index bb26904..533927d 100644 --- a/src/discordgodot.cpp +++ b/src/discordgodot.cpp @@ -1,5 +1,5 @@ #include "discordgodot.h" -#include "lib/discord_game_sdk/cpp/discord.h" +#include "lib/discord-rpc/include/discord_rpc.h" #include #include #include @@ -9,10 +9,7 @@ using namespace godot; Discord_SDK *Discord_SDK::singleton = nullptr; -discord::Core *core{}; -discord::Result result; -discord::Activity activity{}; -discord::User user{}; +DiscordRichPresence discordPresence; void Discord_SDK::_bind_methods() { @@ -75,35 +72,36 @@ Discord_SDK::~Discord_SDK() void Discord_SDK::coreupdate() { - if (result == discord::Result::Ok && app_id > 0) - { - ::core->RunCallbacks(); - } +#ifdef DISCORD_DISABLE_IO_THREAD + Discord_UpdateConnection(); +#endif + Discord_RunCallbacks(); } void Discord_SDK::debug() { - result = discord::Core::Create(1080224638845591692, DiscordCreateFlags_NoRequireDiscord, &core); - activity.SetState("Test from Godot!"); - activity.SetDetails("I worked months on this"); - activity.GetAssets().SetLargeImage("test1"); - activity.GetAssets().SetLargeText("wow test text for large image"); - activity.GetAssets().SetSmallImage("godot"); - activity.GetAssets().SetSmallText("wow test text for small image"); - activity.GetTimestamps().SetStart(1682242800); - if (result == discord::Result::Ok) - { - core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {}); - core->UserManager().OnCurrentUserUpdate.Connect([]() - { core->UserManager().GetCurrentUser(&user); }); - } - else - UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!"); + DiscordEventHandlers handlers; + Discord_Initialize("1099618430065324082", &handlers, 1, NULL); + memset(&discordPresence, 0, sizeof(discordPresence)); + discordPresence.state = "\"new\" discord rpc lib for godot"; + discordPresence.details = "Teeest"; + discordPresence.startTimestamp = 0; + discordPresence.endTimestamp = time(0) + 5 * 60; + discordPresence.largeImageKey = "example_game"; + discordPresence.smallImageKey = "fighting"; + discordPresence.partyId = "party1234"; + discordPresence.partySize = 1; + discordPresence.partyMax = 6; + discordPresence.partyPrivacy = DISCORD_PARTY_PUBLIC; + discordPresence.matchSecret = "xyzzy"; + discordPresence.joinSecret = "join"; + discordPresence.spectateSecret = "look"; + discordPresence.instance = 0; + Discord_UpdatePresence(&discordPresence); } void Discord_SDK::set_app_id(const int64_t &value) { app_id = value; - result = discord::Core::Create(value, DiscordCreateFlags_NoRequireDiscord, &core); } int64_t Discord_SDK::get_app_id() const { @@ -113,7 +111,6 @@ int64_t Discord_SDK::get_app_id() const void Discord_SDK::set_state(const String &value) { state = value; - activity.SetState(value.utf8().get_data()); } String Discord_SDK::get_state() const { @@ -122,7 +119,6 @@ String Discord_SDK::get_state() const void Discord_SDK::set_details(const String &value) { details = value; - activity.SetDetails(value.utf8().get_data()); } String Discord_SDK::get_details() const { @@ -131,20 +127,11 @@ String Discord_SDK::get_details() const void Discord_SDK::refresh() { - if (result == discord::Result::Ok && app_id > 0) - { - core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {}); - core->UserManager().OnCurrentUserUpdate.Connect([]() - { core->UserManager().GetCurrentUser(&user); }); - } - else - UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!"); } void Discord_SDK::set_large_image(const String &value) { large_image = value; - activity.GetAssets().SetLargeImage(value.utf8().get_data()); } String Discord_SDK::get_large_image() const { @@ -153,7 +140,6 @@ String Discord_SDK::get_large_image() const void Discord_SDK::set_large_image_text(const String &value) { large_image_text = value; - activity.GetAssets().SetLargeText(value.utf8().get_data()); } String Discord_SDK::get_large_image_text() const { @@ -162,7 +148,6 @@ String Discord_SDK::get_large_image_text() const void Discord_SDK::set_small_image(const String &value) { small_image = value; - activity.GetAssets().SetSmallImage(value.utf8().get_data()); } String Discord_SDK::get_small_image() const { @@ -171,7 +156,6 @@ String Discord_SDK::get_small_image() const void Discord_SDK::set_small_image_text(const String &value) { small_image_text = value; - activity.GetAssets().SetSmallText(value.utf8().get_data()); } String Discord_SDK::get_small_image_text() const { @@ -181,28 +165,26 @@ String Discord_SDK::get_small_image_text() const void Discord_SDK::set_start_timestamp(const int64_t &value) { start_timestamp = value; - activity.GetTimestamps().SetStart(value); } int64_t Discord_SDK::get_start_timestamp() const { - return activity.GetTimestamps().GetStart(); + return 0; } void Discord_SDK::set_end_timestamp(const int64_t &value) { end_timestamp = value; - activity.GetTimestamps().SetEnd(value); } int64_t Discord_SDK::get_end_timestamp() const { - return activity.GetTimestamps().GetEnd(); + return 0; } bool Discord_SDK::get_is_discord_working() const { - return result == discord::Result::Ok && app_id > 0; + return 0; } int Discord_SDK::get_result_int() const { - return static_cast(result); + return 0; } diff --git a/src/discordgodot.h b/src/discordgodot.h index 6ad12c1..1ae2a88 100644 --- a/src/discordgodot.h +++ b/src/discordgodot.h @@ -2,15 +2,14 @@ #define DISCORDGODOT_H #include -#include "lib/discord_game_sdk/cpp/discord.h" -#include +#include #include using namespace godot; -class Discord_SDK : public Object +class Discord_SDK : public RefCounted { - GDCLASS(Discord_SDK, Object); + GDCLASS(Discord_SDK, RefCounted); static Discord_SDK *singleton; diff --git a/src/lib/discord-rpc b/src/lib/discord-rpc new file mode 160000 index 0000000..3eea582 --- /dev/null +++ b/src/lib/discord-rpc @@ -0,0 +1 @@ +Subproject commit 3eea5821c566ba2b0c1d89db91e1b10c2826f6a5 diff --git a/src/lib/discord_game_sdk.zip b/src/lib/discord_game_sdk.zip deleted file mode 100644 index 10b8a51..0000000 Binary files a/src/lib/discord_game_sdk.zip and /dev/null differ