From b363a11b3a63f174e464ea1cf82b6c0b6ca188b7 Mon Sep 17 00:00:00 2001 From: vaporvee Date: Wed, 26 Mar 2025 19:48:49 +0100 Subject: [PATCH] a lot of changes --- SConstruct | 4 +- project/main.tscn | 9 ++- project/new_activity_resource.tres | 3 + project/new_compositor.tres | 3 + src/nodes/discord_activity.cpp | 17 +++-- src/nodes/discord_activity.h | 8 +- src/nodes/discord_connected.cpp | 8 -- src/nodes/discord_connected.h | 5 -- src/nodes/discord_connector.cpp | 8 -- src/nodes/discord_connector.h | 5 -- src/nodes/discord_social_sdk.cpp | 7 -- src/nodes/discord_social_sdk.h | 4 - src/nodes/editor_presence.cpp | 8 -- src/nodes/editor_presence.h | 5 -- src/register_types.cpp | 1 + src/register_types.h | 1 + src/resources/activity.cpp | 116 +++++++++++++++++++++++++++++ src/resources/activity.h | 47 ++++++++++++ 18 files changed, 195 insertions(+), 64 deletions(-) create mode 100644 project/new_activity_resource.tres create mode 100644 project/new_compositor.tres create mode 100644 src/resources/activity.cpp create mode 100644 src/resources/activity.h diff --git a/SConstruct b/SConstruct index 8cde58a..c6133eb 100644 --- a/SConstruct +++ b/SConstruct @@ -3,8 +3,8 @@ import os env = SConscript("src/lib/godot-cpp/SConstruct") -env.Append(CPPPATH=["src/","src/nodes/", "src/lib/discord_social_sdk/include/"]) -sources = [Glob("src/*.cpp"), Glob("src/nodes/*.cpp")] +env.Append(CPPPATH=["src/","src/nodes/", "src/resources/", "src/lib/discord_social_sdk/include/"]) +sources = [Glob("src/*.cpp"), Glob("src/nodes/*.cpp"), Glob("src/resources/*.cpp")] if env["target"] in ["editor", "template_debug"]: try: diff --git a/project/main.tscn b/project/main.tscn index 563aedb..bd7055b 100644 --- a/project/main.tscn +++ b/project/main.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=4 format=3 uid="uid://dyc3kseph4el7"] +[gd_scene load_steps=5 format=3 uid="uid://dyc3kseph4el7"] [ext_resource type="Texture2D" uid="uid://b3qm246m7pnsx" path="res://assets/Logo_V2.png" id="2_gd222"] [ext_resource type="Script" uid="uid://kmubk5a6i385" path="res://discord_connector.gd" id="3_h2yge"] [ext_resource type="Script" uid="uid://46tue7u6crd6" path="res://addons/discord-rpc-gd/nodes/debug.gd" id="6_ujijw"] +[sub_resource type="SpriteFrames" id="SpriteFrames_h2yge"] + [node name="Node" type="Node"] [node name="ColorRect" type="ColorRect" parent="."] @@ -51,6 +53,11 @@ script = ExtResource("3_h2yge") [node name="DiscordActivity" type="DiscordActivity" parent="DiscordConnector"] root_connector = NodePath("..") +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +position = Vector2(789, 330.5) +scale = Vector2(0.408203, 0.408203) +sprite_frames = SubResource("SpriteFrames_h2yge") + [connection signal="user_connected" from="DiscordConnector" to="DiscordConnector" method="_on_user_connected"] [connection signal="user_connection_failed" from="DiscordConnector" to="DiscordConnector" method="_on_user_connection_failed"] [connection signal="user_update_failed" from="DiscordConnector" to="DiscordConnector" method="_on_user_update_failed"] diff --git a/project/new_activity_resource.tres b/project/new_activity_resource.tres new file mode 100644 index 0000000..b664dad --- /dev/null +++ b/project/new_activity_resource.tres @@ -0,0 +1,3 @@ +[gd_resource type="ActivityResource" format=3 uid="uid://coryo3jlwiadb"] + +[resource] diff --git a/project/new_compositor.tres b/project/new_compositor.tres new file mode 100644 index 0000000..314762f --- /dev/null +++ b/project/new_compositor.tres @@ -0,0 +1,3 @@ +[gd_resource type="Compositor" format=3 uid="uid://cbg8e12ms0vvc"] + +[resource] diff --git a/src/nodes/discord_activity.cpp b/src/nodes/discord_activity.cpp index 332ff35..3da06d6 100644 --- a/src/nodes/discord_activity.cpp +++ b/src/nodes/discord_activity.cpp @@ -1,19 +1,22 @@ #include "discord_activity.h" -DiscordActivity *DiscordActivity::singleton = nullptr; - void DiscordActivity::_bind_methods() { + BIND_SET_GET(DiscordActivity, activity, Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE, "ActivityResource"); } DiscordActivity::DiscordActivity() { - singleton = this; } DiscordActivity::~DiscordActivity() { - singleton = nullptr; } -DiscordActivity *DiscordActivity::get_singleton() + +Ref DiscordActivity::get_activity() { - return singleton; -} \ No newline at end of file + return activity; +} + +void DiscordActivity::set_activity(Ref value) +{ + activity = value; +} diff --git a/src/nodes/discord_activity.h b/src/nodes/discord_activity.h index 161af27..d333fae 100644 --- a/src/nodes/discord_activity.h +++ b/src/nodes/discord_activity.h @@ -2,6 +2,7 @@ #define DISCORD_ACTIVITY_H #include "discord_connected.h" +#include "../resources/activity.h" using namespace godot; @@ -9,14 +10,13 @@ class DiscordActivity : public DiscordConnected { GDCLASS(DiscordActivity, DiscordConnected); - static DiscordActivity *singleton; - protected: static void _bind_methods(); public: - static DiscordActivity * - get_singleton(); + Ref activity; + Ref get_activity(); + void set_activity(Ref value); DiscordActivity(); ~DiscordActivity(); diff --git a/src/nodes/discord_connected.cpp b/src/nodes/discord_connected.cpp index fbc7661..dff207a 100644 --- a/src/nodes/discord_connected.cpp +++ b/src/nodes/discord_connected.cpp @@ -1,22 +1,14 @@ #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() diff --git a/src/nodes/discord_connected.h b/src/nodes/discord_connected.h index 55ab7e0..ee37442 100644 --- a/src/nodes/discord_connected.h +++ b/src/nodes/discord_connected.h @@ -10,8 +10,6 @@ class DiscordConnected : public DiscordSocialSDK { GDCLASS(DiscordConnected, DiscordSocialSDK); - static DiscordConnected *singleton; - protected: static void _bind_methods(); @@ -19,9 +17,6 @@ private: NodePath root_connector; // Change to NodePath object public: - static DiscordConnected * - get_singleton(); - DiscordConnector *connector; NodePath get_root_connector(); // Adjust return type diff --git a/src/nodes/discord_connector.cpp b/src/nodes/discord_connector.cpp index 22ab191..3f61027 100644 --- a/src/nodes/discord_connector.cpp +++ b/src/nodes/discord_connector.cpp @@ -1,7 +1,5 @@ #include "discord_connector.h" -DiscordConnector *DiscordConnector::singleton = nullptr; - void DiscordConnector::_bind_methods() { BIND_SET_GET(DiscordConnector, app_id, Variant::STRING, godot::PROPERTY_HINT_RANGE, "-99999,99999,or_less,or_greater,hide_slider"); @@ -21,15 +19,9 @@ void DiscordConnector::_bind_methods() } DiscordConnector::DiscordConnector() { - singleton = this; } DiscordConnector::~DiscordConnector() { - singleton = nullptr; -} -DiscordConnector *DiscordConnector::get_singleton() -{ - return singleton; } void DiscordConnector::_ready() diff --git a/src/nodes/discord_connector.h b/src/nodes/discord_connector.h index 1680257..5370143 100644 --- a/src/nodes/discord_connector.h +++ b/src/nodes/discord_connector.h @@ -10,15 +10,10 @@ class DiscordConnector : public DiscordSocialSDK { GDCLASS(DiscordConnector, DiscordSocialSDK); - static DiscordConnector *singleton; - protected: static void _bind_methods(); public: - static DiscordConnector * - get_singleton(); - bool editor_process = false; std::shared_ptr client; diff --git a/src/nodes/discord_social_sdk.cpp b/src/nodes/discord_social_sdk.cpp index 5235861..783873d 100644 --- a/src/nodes/discord_social_sdk.cpp +++ b/src/nodes/discord_social_sdk.cpp @@ -1,19 +1,12 @@ #include "discord_social_sdk.h" -DiscordSocialSDK *DiscordSocialSDK::singleton = nullptr; void DiscordSocialSDK::_bind_methods() { } DiscordSocialSDK::DiscordSocialSDK() { - singleton = this; } DiscordSocialSDK::~DiscordSocialSDK() { - singleton = nullptr; -} -DiscordSocialSDK *DiscordSocialSDK::get_singleton() -{ - return singleton; } \ No newline at end of file diff --git a/src/nodes/discord_social_sdk.h b/src/nodes/discord_social_sdk.h index 63a6815..fa3a144 100644 --- a/src/nodes/discord_social_sdk.h +++ b/src/nodes/discord_social_sdk.h @@ -21,14 +21,10 @@ class DiscordSocialSDK : public Node { GDCLASS(DiscordSocialSDK, Node); - static DiscordSocialSDK *singleton; - protected: static void _bind_methods(); public: - static DiscordSocialSDK * - get_singleton(); DiscordSocialSDK(); ~DiscordSocialSDK(); diff --git a/src/nodes/editor_presence.cpp b/src/nodes/editor_presence.cpp index 513fe92..9691672 100644 --- a/src/nodes/editor_presence.cpp +++ b/src/nodes/editor_presence.cpp @@ -1,21 +1,13 @@ #include "editor_presence.h" -EditorPresence *EditorPresence::singleton = nullptr; - void EditorPresence::_bind_methods() { } EditorPresence::EditorPresence() { - singleton = this; } EditorPresence::~EditorPresence() { - singleton = nullptr; -} -EditorPresence *EditorPresence::get_singleton() -{ - return singleton; } void EditorPresence::_ready() diff --git a/src/nodes/editor_presence.h b/src/nodes/editor_presence.h index 9898f83..a2245ef 100644 --- a/src/nodes/editor_presence.h +++ b/src/nodes/editor_presence.h @@ -9,15 +9,10 @@ class EditorPresence : public DiscordSocialSDK { GDCLASS(EditorPresence, DiscordSocialSDK); - static EditorPresence *singleton; - protected: static void _bind_methods(); public: - static EditorPresence * - get_singleton(); - godot::Engine *engine = godot::Engine::get_singleton(); godot::ProjectSettings *project_settings = godot::ProjectSettings::get_singleton(); godot::Time *time = godot::Time::get_singleton(); diff --git a/src/register_types.cpp b/src/register_types.cpp index 41ec93d..3a00227 100644 --- a/src/register_types.cpp +++ b/src/register_types.cpp @@ -16,6 +16,7 @@ void initialize_DiscordUtil_module(ModuleInitializationLevel p_level) ClassDB::register_class(); ClassDB::register_abstract_class(); ClassDB::register_class(); + ClassDB::register_class(); } } diff --git a/src/register_types.h b/src/register_types.h index 17c73f7..fc75432 100644 --- a/src/register_types.h +++ b/src/register_types.h @@ -18,5 +18,6 @@ void uninitialize_DiscordUtil_module(); #include "nodes/discord_connector.h" #include "nodes/discord_connected.h" #include "nodes/discord_activity.h" +#include "resources/activity.h" #endif // REGISTER_TYPES_H \ No newline at end of file diff --git a/src/resources/activity.cpp b/src/resources/activity.cpp new file mode 100644 index 0000000..d2d4402 --- /dev/null +++ b/src/resources/activity.cpp @@ -0,0 +1,116 @@ +#include "activity.h" + +void ActivityResource::_bind_methods() +{ + BIND_SET_GET(ActivityResource, type, Variant::INT, PROPERTY_HINT_ENUM, "Playing,Streaming,Listening,Watching,Custom Status,Competing,Hang Status"); + BIND_SET_GET(ActivityResource, state, Variant::STRING); + BIND_SET_GET(ActivityResource, details, Variant::STRING); + BIND_SET_GET(ActivityResource, large_image, Variant::STRING); + BIND_SET_GET(ActivityResource, large_text, Variant::STRING); + BIND_SET_GET(ActivityResource, small_image, Variant::STRING); + BIND_SET_GET(ActivityResource, small_text, Variant::STRING); + BIND_SET_GET(ActivityResource, timestamps_start, Variant::INT); + BIND_SET_GET(ActivityResource, timestamps_end, Variant::INT); + + BIND_ENUM_CONSTANT(TYPE_PLAYING); + BIND_ENUM_CONSTANT(TYPE_STREAMING); + BIND_ENUM_CONSTANT(TYPE_LISTENING); + BIND_ENUM_CONSTANT(TYPE_WATCHING); + BIND_ENUM_CONSTANT(TYPE_CUSTOM_STATUS); + BIND_ENUM_CONSTANT(TYPE_COMPETING); + BIND_ENUM_CONSTANT(TYPE_HANG_STATUS); +} + +ActivityResource::ActivityResource() +{ +} + +void ActivityResource::set_type(ActivityType p_type) +{ + type = p_type; +} + +ActivityResource::ActivityType ActivityResource::get_type() +{ + return type; +} + +void ActivityResource::set_state(String p_state) +{ + state = p_state; +} + +String ActivityResource::get_state() +{ + return state; +} + +void ActivityResource::set_details(String value) +{ + details = value; +} + +String ActivityResource::get_details() +{ + return details; +} + +void ActivityResource::set_large_image(String value) +{ + large_image = value; +} + +String ActivityResource::get_large_image() +{ + return large_image; +} + +void ActivityResource::set_large_text(String value) +{ + large_text = value; +} + +String ActivityResource::get_large_text() +{ + return large_text; +} + +void ActivityResource::set_small_image(String value) +{ + small_image = value; +} + +String ActivityResource::get_small_image() +{ + return small_image; +} + +void ActivityResource::set_small_text(String value) +{ + small_text = value; +} + +String ActivityResource::get_small_text() +{ + return small_text; +} + +void ActivityResource::set_timestamps_start(int64_t value) +{ + timestamps_start = value; +} + +int64_t ActivityResource::get_timestamps_start() +{ + return timestamps_start; +} + +void ActivityResource::set_timestamps_end(int64_t value) +{ + timestamps_end = value; +} + +int64_t ActivityResource::get_timestamps_end() +{ + return timestamps_end; +} \ No newline at end of file diff --git a/src/resources/activity.h b/src/resources/activity.h new file mode 100644 index 0000000..9852f6f --- /dev/null +++ b/src/resources/activity.h @@ -0,0 +1,47 @@ +#ifndef ACTIVITY_H +#define ACTIVITY_H + +#include +#include +#include +#include +#include "../util.h" + +using namespace godot; + +class ActivityResource : public Resource { + GDCLASS(ActivityResource, Resource); + +protected: + static void _bind_methods(); + +public: + enum ActivityType { + TYPE_PLAYING = 0, + TYPE_STREAMING = 1, + TYPE_LISTENING = 2, + TYPE_WATCHING = 3, + TYPE_CUSTOM_STATUS = 4, + TYPE_COMPETING = 5, + TYPE_HANG_STATUS = 6, + }; + + ActivityType type = TYPE_PLAYING; + ActivityType get_type(); + void set_type(ActivityType p_type); + + H_SET_GET(state, "") + H_SET_GET(details, "") + H_SET_GET(large_image, "") + H_SET_GET(large_text, "") + H_SET_GET(small_image, "") + H_SET_GET(small_text, "") + H_SET_GET(timestamps_start, 0) + H_SET_GET(timestamps_end, 0) + + ActivityResource(); +}; + +VARIANT_ENUM_CAST(ActivityResource::ActivityType); + +#endif \ No newline at end of file