From 869b0b95c81f17f2a4cfca97c1bae1c010f49a8c Mon Sep 17 00:00:00 2001 From: Yannik <80621863+vaporvee@users.noreply.github.com> Date: Thu, 4 May 2023 15:01:42 +0200 Subject: [PATCH] Add custom activity structure type to GDScript --- src/discordgodot.cpp | 161 +++++++++++-------------------------------- src/discordgodot.h | 43 +++++------- 2 files changed, 58 insertions(+), 146 deletions(-) diff --git a/src/discordgodot.cpp b/src/discordgodot.cpp index 057c835..07fafff 100644 --- a/src/discordgodot.cpp +++ b/src/discordgodot.cpp @@ -11,7 +11,7 @@ Discord_SDK *Discord_SDK::singleton = nullptr; discord::Core *core{}; discord::Result result; -discord::Activity activity{}; +discord::Activity sdkactivity{}; discord::User user{}; void Discord_SDK::_bind_methods() @@ -22,38 +22,19 @@ void Discord_SDK::_bind_methods() ClassDB::bind_method(D_METHOD("get_app_id"), &Discord_SDK::get_app_id); ClassDB::bind_method(D_METHOD("set_app_id", "app_id"), &Discord_SDK::set_app_id); ADD_PROPERTY(PropertyInfo(Variant::INT, "app_id"), "set_app_id", "get_app_id"); - ClassDB::bind_method(D_METHOD("get_state"), &Discord_SDK::get_state); - ClassDB::bind_method(D_METHOD("set_state", "state"), &Discord_SDK::set_state); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "state"), "set_state", "get_state"); - ClassDB::bind_method(D_METHOD("get_details"), &Discord_SDK::get_details); - ClassDB::bind_method(D_METHOD("set_details", "details"), &Discord_SDK::set_details); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "details"), "set_details", "get_details"); +<<<<<<< HEAD - ClassDB::bind_method(D_METHOD("get_large_image"), &Discord_SDK::get_large_image); - ClassDB::bind_method(D_METHOD("set_large_image", "large_image"), &Discord_SDK::set_large_image); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "large_image"), "set_large_image", "get_large_image"); - ClassDB::bind_method(D_METHOD("get_large_image_text"), &Discord_SDK::get_large_image_text); - ClassDB::bind_method(D_METHOD("set_large_image_text", "large_image_text"), &Discord_SDK::set_large_image_text); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "large_image_text"), "set_large_image_text", "get_large_image_text"); - ClassDB::bind_method(D_METHOD("get_small_image"), &Discord_SDK::get_small_image); - ClassDB::bind_method(D_METHOD("set_small_image", "small_image"), &Discord_SDK::set_small_image); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "small_image"), "set_small_image", "get_small_image"); - ClassDB::bind_method(D_METHOD("get_small_image_text"), &Discord_SDK::get_small_image_text); - ClassDB::bind_method(D_METHOD("set_small_image_text", "large_small_text"), &Discord_SDK::set_small_image_text); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "small_image_text"), "set_small_image_text", "get_small_image_text"); + ClassDB::bind_method(D_METHOD("get_activity"), &Discord_SDK::get_activity); + ClassDB::bind_method(D_METHOD("set_activity", "activity"), &Discord_SDK::set_activity); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "activity"), "set_activity", "get_activity") + == == == = +>>>>>>> 3047e47 (constructed custom activity struct) - ClassDB::bind_method(D_METHOD("get_start_timestamp"), &Discord_SDK::get_start_timestamp); - ClassDB::bind_method(D_METHOD("set_start_timestamp", "start_timestamp"), &Discord_SDK::set_start_timestamp); - ADD_PROPERTY(PropertyInfo(Variant::INT, "start_timestamp"), "set_start_timestamp", "get_start_timestamp"); - ClassDB::bind_method(D_METHOD("get_end_timestamp"), &Discord_SDK::get_end_timestamp); - ClassDB::bind_method(D_METHOD("set_end_timestamp", "end_timestamp"), &Discord_SDK::set_end_timestamp); - ADD_PROPERTY(PropertyInfo(Variant::INT, "end_timestamp"), "set_end_timestamp", "get_end_timestamp"); - - ClassDB::bind_method(D_METHOD("refresh"), &Discord_SDK::refresh); - - ClassDB::bind_method(D_METHOD("get_is_discord_working"), &Discord_SDK::get_is_discord_working); + ClassDB::bind_method(D_METHOD("get_is_discord_working"), &Discord_SDK::get_is_discord_working); ClassDB::bind_method(D_METHOD("get_result_int"), &Discord_SDK::get_result_int); + + ClassDB::bind_method(D_METHOD("refresh"), &Discord_SDK::refresh); } Discord_SDK *Discord_SDK::get_singleton() @@ -83,16 +64,16 @@ void Discord_SDK::coreupdate() 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); + sdkactivity.SetState("Test from Godot!"); + sdkactivity.SetDetails("I worked months on this"); + sdkactivity.GetAssets().SetLargeImage("test1"); + sdkactivity.GetAssets().SetLargeText("wow test text for large image"); + sdkactivity.GetAssets().SetSmallImage("godot"); + sdkactivity.GetAssets().SetSmallText("wow test text for small image"); + sdkactivity.GetTimestamps().SetStart(1682242800); if (result == discord::Result::Ok) { - core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {}); + core->ActivityManager().UpdateActivity(sdkactivity, [](discord::Result result) {}); core->UserManager().OnCurrentUserUpdate.Connect([]() { core->UserManager().GetCurrentUser(&user); }); } @@ -110,91 +91,21 @@ int64_t Discord_SDK::get_app_id() const return app_id; } -void Discord_SDK::set_state(const String &value) +void Discord_SDK::set_activity(const activitystruct &value) { - state = value; - activity.SetState(value.utf8().get_data()); + activity = value; + sdkactivity.SetState(activity.state.utf8().get_data()); + sdkactivity.SetDetails(activity.details.utf8().get_data()); + sdkactivity.GetAssets().SetLargeImage(activity.large_image.utf8().get_data()); + sdkactivity.GetAssets().SetLargeText(activity.large_image_text.utf8().get_data()); + sdkactivity.GetAssets().SetSmallImage(activity.small_image.utf8().get_data()); + sdkactivity.GetAssets().SetSmallText(activity.small_image_text.utf8().get_data()); + sdkactivity.GetTimestamps().SetStart(activity.start_timestamp); + sdkactivity.GetTimestamps().SetEnd(activity.end_timestamp); } -String Discord_SDK::get_state() const +Discord_SDK::activitystruct Discord_SDK::get_activity() const { - return state; -} -void Discord_SDK::set_details(const String &value) -{ - details = value; - activity.SetDetails(value.utf8().get_data()); -} -String Discord_SDK::get_details() const -{ - return details; -} - -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 -{ - return large_image; -} -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 -{ - return large_image_text; -} -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 -{ - return small_image; -} -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 -{ - return small_image_text; -} - -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(); -} -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 activity; } bool Discord_SDK::get_is_discord_working() const @@ -206,3 +117,15 @@ int Discord_SDK::get_result_int() const { return static_cast(result); } + +void Discord_SDK::refresh() +{ + if (result == discord::Result::Ok && app_id > 0) + { + core->ActivityManager().UpdateActivity(sdkactivity, [](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!"); +} \ No newline at end of file diff --git a/src/discordgodot.h b/src/discordgodot.h index fd8557b..18b50c2 100644 --- a/src/discordgodot.h +++ b/src/discordgodot.h @@ -20,19 +20,24 @@ protected: private: int64_t app_id; - String state; - String details; + struct activitystruct + { + String state; + String details; - String large_image; - String large_image_text; - String small_image; - String small_image_text; + String large_image; + String large_image_text; + String small_image; + String small_image_text; - int64_t start_timestamp; - int64_t end_timestamp; + int64_t start_timestamp; + int64_t end_timestamp; + }; + activitystruct activity; public: - static Discord_SDK *get_singleton(); + static Discord_SDK * + get_singleton(); Discord_SDK(); ~Discord_SDK(); @@ -42,26 +47,10 @@ public: void refresh(); int64_t get_app_id() const; - void set_app_id(const int64_t &value); - String get_state() const; - void set_state(const String &value); - String get_details() const; - void set_details(const String &value); - String get_large_image() const; - void set_large_image(const String &value); - String get_large_image_text() const; - void set_large_image_text(const String &value); - String get_small_image() const; - void set_small_image(const String &value); - String get_small_image_text() const; - void set_small_image_text(const String &value); - - int64_t get_start_timestamp() const; - void set_start_timestamp(const int64_t &value); - int64_t get_end_timestamp() const; - void set_end_timestamp(const int64_t &value); + void set_activity(const activitystruct &value); + activitystruct get_activity() const; bool get_is_discord_working() const; int get_result_int() const;