From 9ce43ef5ce517d8b1dc2e88fe7b1d5cd778392dd Mon Sep 17 00:00:00 2001 From: vaporvee Date: Wed, 26 Mar 2025 00:29:17 +0100 Subject: [PATCH] better classes --- src/nodes/discord_activity.cpp | 32 +-------------------- src/nodes/discord_activity.h | 22 ++++----------- src/nodes/discord_connected.cpp | 49 +++++++++++++++++++++++++++++++++ src/nodes/discord_connected.h | 36 ++++++++++++++++++++++++ src/register_types.cpp | 1 + src/register_types.h | 1 + 6 files changed, 93 insertions(+), 48 deletions(-) create mode 100644 src/nodes/discord_connected.cpp create mode 100644 src/nodes/discord_connected.h diff --git a/src/nodes/discord_activity.cpp b/src/nodes/discord_activity.cpp index 4ab46a1..332ff35 100644 --- a/src/nodes/discord_activity.cpp +++ b/src/nodes/discord_activity.cpp @@ -4,7 +4,6 @@ DiscordActivity *DiscordActivity::singleton = nullptr; void DiscordActivity::_bind_methods() { - BIND_SET_GET(DiscordActivity, root_connector, Variant::NODE_PATH, godot::PROPERTY_HINT_NODE_PATH_VALID_TYPES, "DiscordConnector"); } DiscordActivity::DiscordActivity() { @@ -17,33 +16,4 @@ DiscordActivity::~DiscordActivity() DiscordActivity *DiscordActivity::get_singleton() { return singleton; -} - -NodePath DiscordActivity::get_root_connector() -{ - return root_connector; -} - -void DiscordActivity::set_root_connector(NodePath value) -{ - root_connector = value; -} - -void DiscordActivity::_enter_tree() -{ - if (Object::cast_to(get_parent())) - { - if (root_connector.is_empty()) - { - root_connector = Object::cast_to(get_parent())->get_path(); - if (!root_connector.is_empty()) - { - connector = get_node(root_connector); - } - } - else - { - connector = get_node(root_connector); - } - } -} +} \ No newline at end of file diff --git a/src/nodes/discord_activity.h b/src/nodes/discord_activity.h index c6e6522..161af27 100644 --- a/src/nodes/discord_activity.h +++ b/src/nodes/discord_activity.h @@ -1,37 +1,25 @@ -#ifndef DISCORD_ACTIVITY_SDK_H -#define DISCORD_ACTIVITY_SDK_H +#ifndef DISCORD_ACTIVITY_H +#define DISCORD_ACTIVITY_H -#include "discord_activity.h" -#include "discord_social_sdk.h" -#include "discord_connector.h" +#include "discord_connected.h" using namespace godot; -class DiscordActivity : public DiscordSocialSDK +class DiscordActivity : public DiscordConnected { - GDCLASS(DiscordActivity, DiscordSocialSDK); + GDCLASS(DiscordActivity, DiscordConnected); static DiscordActivity *singleton; protected: static void _bind_methods(); -private: -NodePath root_connector; // Change to NodePath object - public: static DiscordActivity * get_singleton(); - - DiscordConnector *connector; - - NodePath get_root_connector(); // Adjust return type - void set_root_connector(NodePath value); // Adjust parameter type DiscordActivity(); ~DiscordActivity(); - - void _enter_tree() override; }; #endif \ No newline at end of file diff --git a/src/nodes/discord_connected.cpp b/src/nodes/discord_connected.cpp new file mode 100644 index 0000000..eeac054 --- /dev/null +++ b/src/nodes/discord_connected.cpp @@ -0,0 +1,49 @@ +#include "discord_connected.h" + +DiscordConnected *DiscordConnected::singleton = nullptr; + +void DiscordConnected::_bind_methods() +{ + BIND_SET_GET(DiscordConnected, root_connector, Variant::NODE_PATH, godot::PROPERTY_HINT_NODE_PATH_VALID_TYPES, "DiscordConnector"); +} +DiscordConnected::DiscordConnected() +{ + singleton = this; +} +DiscordConnected::~DiscordConnected() +{ + singleton = nullptr; +} +DiscordConnected *DiscordConnected::get_singleton() +{ + return singleton; +} + +NodePath DiscordConnected::get_root_connector() +{ + return root_connector; +} + +void DiscordConnected::set_root_connector(NodePath value) +{ + root_connector = value; +} + +void DiscordConnected::_enter_tree() +{ + if (cast_to(get_parent())) + { + if (root_connector.is_empty()) + { + root_connector = cast_to(get_parent())->get_path(); + if (!root_connector.is_empty()) + { + connector = get_node(root_connector); + } + } + else + { + connector = get_node(root_connector); + } + } +} diff --git a/src/nodes/discord_connected.h b/src/nodes/discord_connected.h new file mode 100644 index 0000000..55ab7e0 --- /dev/null +++ b/src/nodes/discord_connected.h @@ -0,0 +1,36 @@ +#ifndef DISCORD_CONNECTED_H +#define DISCORD_CONNECTED_H + +#include "discord_social_sdk.h" +#include "discord_connector.h" + +using namespace godot; + +class DiscordConnected : public DiscordSocialSDK +{ + GDCLASS(DiscordConnected, DiscordSocialSDK); + + static DiscordConnected *singleton; + +protected: + static void _bind_methods(); + +private: +NodePath root_connector; // Change to NodePath object + +public: + static DiscordConnected * + get_singleton(); + + DiscordConnector *connector; + + NodePath get_root_connector(); // Adjust return type + void set_root_connector(NodePath value); // Adjust parameter type + + DiscordConnected(); + ~DiscordConnected(); + + void _enter_tree() override; +}; + +#endif \ No newline at end of file diff --git a/src/register_types.cpp b/src/register_types.cpp index 13d5831..41ec93d 100644 --- a/src/register_types.cpp +++ b/src/register_types.cpp @@ -14,6 +14,7 @@ void initialize_DiscordUtil_module(ModuleInitializationLevel p_level) Engine::get_singleton()->register_singleton("DiscordUtil", DiscordUtil::get_singleton()); ClassDB::register_class(); ClassDB::register_class(); + ClassDB::register_abstract_class(); ClassDB::register_class(); } } diff --git a/src/register_types.h b/src/register_types.h index 57a4945..17c73f7 100644 --- a/src/register_types.h +++ b/src/register_types.h @@ -16,6 +16,7 @@ void uninitialize_DiscordUtil_module(); #include "nodes/discord_social_sdk.h" #include "nodes/editor_presence.h" #include "nodes/discord_connector.h" +#include "nodes/discord_connected.h" #include "nodes/discord_activity.h" #endif // REGISTER_TYPES_H \ No newline at end of file