a lot of changes

This commit is contained in:
2025-03-26 19:48:49 +01:00
parent 295601c7f6
commit b363a11b3a
18 changed files with 195 additions and 64 deletions

View File

@@ -3,8 +3,8 @@ import os
env = SConscript("src/lib/godot-cpp/SConstruct") env = SConscript("src/lib/godot-cpp/SConstruct")
env.Append(CPPPATH=["src/","src/nodes/", "src/lib/discord_social_sdk/include/"]) env.Append(CPPPATH=["src/","src/nodes/", "src/resources/", "src/lib/discord_social_sdk/include/"])
sources = [Glob("src/*.cpp"), Glob("src/nodes/*.cpp")] sources = [Glob("src/*.cpp"), Glob("src/nodes/*.cpp"), Glob("src/resources/*.cpp")]
if env["target"] in ["editor", "template_debug"]: if env["target"] in ["editor", "template_debug"]:
try: try:

View File

@@ -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="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://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"] [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="Node" type="Node"]
[node name="ColorRect" type="ColorRect" parent="."] [node name="ColorRect" type="ColorRect" parent="."]
@@ -51,6 +53,11 @@ script = ExtResource("3_h2yge")
[node name="DiscordActivity" type="DiscordActivity" parent="DiscordConnector"] [node name="DiscordActivity" type="DiscordActivity" parent="DiscordConnector"]
root_connector = NodePath("..") 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_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_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"] [connection signal="user_update_failed" from="DiscordConnector" to="DiscordConnector" method="_on_user_update_failed"]

View File

@@ -0,0 +1,3 @@
[gd_resource type="ActivityResource" format=3 uid="uid://coryo3jlwiadb"]
[resource]

View File

@@ -0,0 +1,3 @@
[gd_resource type="Compositor" format=3 uid="uid://cbg8e12ms0vvc"]
[resource]

View File

@@ -1,19 +1,22 @@
#include "discord_activity.h" #include "discord_activity.h"
DiscordActivity *DiscordActivity::singleton = nullptr;
void DiscordActivity::_bind_methods() void DiscordActivity::_bind_methods()
{ {
BIND_SET_GET(DiscordActivity, activity, Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE, "ActivityResource");
} }
DiscordActivity::DiscordActivity() DiscordActivity::DiscordActivity()
{ {
singleton = this;
} }
DiscordActivity::~DiscordActivity() DiscordActivity::~DiscordActivity()
{ {
singleton = nullptr;
} }
DiscordActivity *DiscordActivity::get_singleton()
Ref<ActivityResource> DiscordActivity::get_activity()
{ {
return singleton; return activity;
} }
void DiscordActivity::set_activity(Ref<ActivityResource> value)
{
activity = value;
}

View File

@@ -2,6 +2,7 @@
#define DISCORD_ACTIVITY_H #define DISCORD_ACTIVITY_H
#include "discord_connected.h" #include "discord_connected.h"
#include "../resources/activity.h"
using namespace godot; using namespace godot;
@@ -9,14 +10,13 @@ class DiscordActivity : public DiscordConnected
{ {
GDCLASS(DiscordActivity, DiscordConnected); GDCLASS(DiscordActivity, DiscordConnected);
static DiscordActivity *singleton;
protected: protected:
static void _bind_methods(); static void _bind_methods();
public: public:
static DiscordActivity * Ref<ActivityResource> activity;
get_singleton(); Ref<ActivityResource> get_activity();
void set_activity(Ref<ActivityResource> value);
DiscordActivity(); DiscordActivity();
~DiscordActivity(); ~DiscordActivity();

View File

@@ -1,22 +1,14 @@
#include "discord_connected.h" #include "discord_connected.h"
DiscordConnected *DiscordConnected::singleton = nullptr;
void DiscordConnected::_bind_methods() void DiscordConnected::_bind_methods()
{ {
BIND_SET_GET(DiscordConnected, root_connector, Variant::NODE_PATH, godot::PROPERTY_HINT_NODE_PATH_VALID_TYPES, "DiscordConnector"); BIND_SET_GET(DiscordConnected, root_connector, Variant::NODE_PATH, godot::PROPERTY_HINT_NODE_PATH_VALID_TYPES, "DiscordConnector");
} }
DiscordConnected::DiscordConnected() DiscordConnected::DiscordConnected()
{ {
singleton = this;
} }
DiscordConnected::~DiscordConnected() DiscordConnected::~DiscordConnected()
{ {
singleton = nullptr;
}
DiscordConnected *DiscordConnected::get_singleton()
{
return singleton;
} }
NodePath DiscordConnected::get_root_connector() NodePath DiscordConnected::get_root_connector()

View File

@@ -10,8 +10,6 @@ class DiscordConnected : public DiscordSocialSDK
{ {
GDCLASS(DiscordConnected, DiscordSocialSDK); GDCLASS(DiscordConnected, DiscordSocialSDK);
static DiscordConnected *singleton;
protected: protected:
static void _bind_methods(); static void _bind_methods();
@@ -19,9 +17,6 @@ private:
NodePath root_connector; // Change to NodePath object NodePath root_connector; // Change to NodePath object
public: public:
static DiscordConnected *
get_singleton();
DiscordConnector *connector; DiscordConnector *connector;
NodePath get_root_connector(); // Adjust return type NodePath get_root_connector(); // Adjust return type

View File

@@ -1,7 +1,5 @@
#include "discord_connector.h" #include "discord_connector.h"
DiscordConnector *DiscordConnector::singleton = nullptr;
void DiscordConnector::_bind_methods() void DiscordConnector::_bind_methods()
{ {
BIND_SET_GET(DiscordConnector, app_id, Variant::STRING, godot::PROPERTY_HINT_RANGE, "-99999,99999,or_less,or_greater,hide_slider"); 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() DiscordConnector::DiscordConnector()
{ {
singleton = this;
} }
DiscordConnector::~DiscordConnector() DiscordConnector::~DiscordConnector()
{ {
singleton = nullptr;
}
DiscordConnector *DiscordConnector::get_singleton()
{
return singleton;
} }
void DiscordConnector::_ready() void DiscordConnector::_ready()

View File

@@ -10,15 +10,10 @@ class DiscordConnector : public DiscordSocialSDK
{ {
GDCLASS(DiscordConnector, DiscordSocialSDK); GDCLASS(DiscordConnector, DiscordSocialSDK);
static DiscordConnector *singleton;
protected: protected:
static void _bind_methods(); static void _bind_methods();
public: public:
static DiscordConnector *
get_singleton();
bool editor_process = false; bool editor_process = false;
std::shared_ptr<discordpp::Client> client; std::shared_ptr<discordpp::Client> client;

View File

@@ -1,19 +1,12 @@
#include "discord_social_sdk.h" #include "discord_social_sdk.h"
DiscordSocialSDK *DiscordSocialSDK::singleton = nullptr;
void DiscordSocialSDK::_bind_methods() void DiscordSocialSDK::_bind_methods()
{ {
} }
DiscordSocialSDK::DiscordSocialSDK() DiscordSocialSDK::DiscordSocialSDK()
{ {
singleton = this;
} }
DiscordSocialSDK::~DiscordSocialSDK() DiscordSocialSDK::~DiscordSocialSDK()
{ {
singleton = nullptr;
}
DiscordSocialSDK *DiscordSocialSDK::get_singleton()
{
return singleton;
} }

View File

@@ -21,14 +21,10 @@ class DiscordSocialSDK : public Node
{ {
GDCLASS(DiscordSocialSDK, Node); GDCLASS(DiscordSocialSDK, Node);
static DiscordSocialSDK *singleton;
protected: protected:
static void _bind_methods(); static void _bind_methods();
public: public:
static DiscordSocialSDK *
get_singleton();
DiscordSocialSDK(); DiscordSocialSDK();
~DiscordSocialSDK(); ~DiscordSocialSDK();

View File

@@ -1,21 +1,13 @@
#include "editor_presence.h" #include "editor_presence.h"
EditorPresence *EditorPresence::singleton = nullptr;
void EditorPresence::_bind_methods() void EditorPresence::_bind_methods()
{ {
} }
EditorPresence::EditorPresence() EditorPresence::EditorPresence()
{ {
singleton = this;
} }
EditorPresence::~EditorPresence() EditorPresence::~EditorPresence()
{ {
singleton = nullptr;
}
EditorPresence *EditorPresence::get_singleton()
{
return singleton;
} }
void EditorPresence::_ready() void EditorPresence::_ready()

View File

@@ -9,15 +9,10 @@ class EditorPresence : public DiscordSocialSDK
{ {
GDCLASS(EditorPresence, DiscordSocialSDK); GDCLASS(EditorPresence, DiscordSocialSDK);
static EditorPresence *singleton;
protected: protected:
static void _bind_methods(); static void _bind_methods();
public: public:
static EditorPresence *
get_singleton();
godot::Engine *engine = godot::Engine::get_singleton(); godot::Engine *engine = godot::Engine::get_singleton();
godot::ProjectSettings *project_settings = godot::ProjectSettings::get_singleton(); godot::ProjectSettings *project_settings = godot::ProjectSettings::get_singleton();
godot::Time *time = godot::Time::get_singleton(); godot::Time *time = godot::Time::get_singleton();

View File

@@ -16,6 +16,7 @@ void initialize_DiscordUtil_module(ModuleInitializationLevel p_level)
ClassDB::register_class<DiscordConnector>(); ClassDB::register_class<DiscordConnector>();
ClassDB::register_abstract_class<DiscordConnected>(); ClassDB::register_abstract_class<DiscordConnected>();
ClassDB::register_class<DiscordActivity>(); ClassDB::register_class<DiscordActivity>();
ClassDB::register_class<ActivityResource>();
} }
} }

View File

@@ -18,5 +18,6 @@ void uninitialize_DiscordUtil_module();
#include "nodes/discord_connector.h" #include "nodes/discord_connector.h"
#include "nodes/discord_connected.h" #include "nodes/discord_connected.h"
#include "nodes/discord_activity.h" #include "nodes/discord_activity.h"
#include "resources/activity.h"
#endif // REGISTER_TYPES_H #endif // REGISTER_TYPES_H

116
src/resources/activity.cpp Normal file
View File

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

47
src/resources/activity.h Normal file
View File

@@ -0,0 +1,47 @@
#ifndef ACTIVITY_H
#define ACTIVITY_H
#include <godot_cpp/core/class_db.hpp>
#include <godot_cpp/core/defs.hpp>
#include <godot_cpp/godot.hpp>
#include <godot_cpp/classes/resource.hpp>
#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