better classes

This commit is contained in:
2025-03-26 00:29:17 +01:00
parent d78f2ca856
commit 9ce43ef5ce
6 changed files with 93 additions and 48 deletions

View File

@@ -4,7 +4,6 @@ DiscordActivity *DiscordActivity::singleton = nullptr;
void DiscordActivity::_bind_methods() void DiscordActivity::_bind_methods()
{ {
BIND_SET_GET(DiscordActivity, root_connector, Variant::NODE_PATH, godot::PROPERTY_HINT_NODE_PATH_VALID_TYPES, "DiscordConnector");
} }
DiscordActivity::DiscordActivity() DiscordActivity::DiscordActivity()
{ {
@@ -17,33 +16,4 @@ DiscordActivity::~DiscordActivity()
DiscordActivity *DiscordActivity::get_singleton() DiscordActivity *DiscordActivity::get_singleton()
{ {
return 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<DiscordConnector>(get_parent()))
{
if (root_connector.is_empty())
{
root_connector = Object::cast_to<DiscordConnector>(get_parent())->get_path();
if (!root_connector.is_empty())
{
connector = get_node<DiscordConnector>(root_connector);
}
}
else
{
connector = get_node<DiscordConnector>(root_connector);
}
}
}

View File

@@ -1,37 +1,25 @@
#ifndef DISCORD_ACTIVITY_SDK_H #ifndef DISCORD_ACTIVITY_H
#define DISCORD_ACTIVITY_SDK_H #define DISCORD_ACTIVITY_H
#include "discord_activity.h" #include "discord_connected.h"
#include "discord_social_sdk.h"
#include "discord_connector.h"
using namespace godot; using namespace godot;
class DiscordActivity : public DiscordSocialSDK class DiscordActivity : public DiscordConnected
{ {
GDCLASS(DiscordActivity, DiscordSocialSDK); GDCLASS(DiscordActivity, DiscordConnected);
static DiscordActivity *singleton; static DiscordActivity *singleton;
protected: protected:
static void _bind_methods(); static void _bind_methods();
private:
NodePath root_connector; // Change to NodePath object
public: public:
static DiscordActivity * static DiscordActivity *
get_singleton(); get_singleton();
DiscordConnector *connector;
NodePath get_root_connector(); // Adjust return type
void set_root_connector(NodePath value); // Adjust parameter type
DiscordActivity(); DiscordActivity();
~DiscordActivity(); ~DiscordActivity();
void _enter_tree() override;
}; };
#endif #endif

View File

@@ -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<DiscordConnector>(get_parent()))
{
if (root_connector.is_empty())
{
root_connector = cast_to<DiscordConnector>(get_parent())->get_path();
if (!root_connector.is_empty())
{
connector = get_node<DiscordConnector>(root_connector);
}
}
else
{
connector = get_node<DiscordConnector>(root_connector);
}
}
}

View File

@@ -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

View File

@@ -14,6 +14,7 @@ void initialize_DiscordUtil_module(ModuleInitializationLevel p_level)
Engine::get_singleton()->register_singleton("DiscordUtil", DiscordUtil::get_singleton()); Engine::get_singleton()->register_singleton("DiscordUtil", DiscordUtil::get_singleton());
ClassDB::register_class<EditorPresence>(); ClassDB::register_class<EditorPresence>();
ClassDB::register_class<DiscordConnector>(); ClassDB::register_class<DiscordConnector>();
ClassDB::register_abstract_class<DiscordConnected>();
ClassDB::register_class<DiscordActivity>(); ClassDB::register_class<DiscordActivity>();
} }
} }

View File

@@ -16,6 +16,7 @@ void uninitialize_DiscordUtil_module();
#include "nodes/discord_social_sdk.h" #include "nodes/discord_social_sdk.h"
#include "nodes/editor_presence.h" #include "nodes/editor_presence.h"
#include "nodes/discord_connector.h" #include "nodes/discord_connector.h"
#include "nodes/discord_connected.h"
#include "nodes/discord_activity.h" #include "nodes/discord_activity.h"
#endif // REGISTER_TYPES_H #endif // REGISTER_TYPES_H