activity resource and fixed connection ready signal

This commit is contained in:
2025-03-26 22:06:11 +01:00
parent b363a11b3a
commit ce0aef8dc0
8 changed files with 39 additions and 21 deletions

View File

@@ -3,11 +3,14 @@ extends DiscordConnector
func _on_user_connected(access_token: String, refresh_token: String, expires_in: int) -> void: func _on_user_connected(access_token: String, refresh_token: String, expires_in: int) -> void:
print_debug("Access token: %s \nRefresh Token: %s \nExpires in: %s" % [access_token, refresh_token, expires_in]) print_debug("Access token: %s \nRefresh Token: %s \nExpires in: %s" % [access_token, refresh_token, expires_in])
func _on_user_updated() -> void:
print_debug("USER UPDATED")
func _on_user_connection_failed(error: String) -> void: func _on_user_connection_failed(error: String) -> void:
push_error("User connection failed! Error: " + error) push_error("User connection failed! Error: " + error)
func _on_user_update_failed(error: String) -> void: func _on_user_update_failed(error: String) -> void:
push_error("User update failed! Error: " + error) push_error("User update failed! Error: " + error)
func _on_connection_ready() -> void:
print_debug("CONNECTION READY")
func _on_connection_error(error: String) -> void:
push_error(error)

View File

@@ -1,11 +1,9 @@
[gd_scene load_steps=5 format=3 uid="uid://dyc3kseph4el7"] [gd_scene load_steps=4 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="."]
@@ -56,9 +54,9 @@ root_connector = NodePath("..")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(789, 330.5) position = Vector2(789, 330.5)
scale = Vector2(0.408203, 0.408203) scale = Vector2(0.408203, 0.408203)
sprite_frames = SubResource("SpriteFrames_h2yge")
[connection signal="connection_error" from="DiscordConnector" to="DiscordConnector" method="_on_connection_error"]
[connection signal="connection_ready" from="DiscordConnector" to="DiscordConnector" method="_on_connection_ready"]
[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"]
[connection signal="user_updated" from="DiscordConnector" to="DiscordConnector" method="_on_user_updated"]

View File

@@ -1,3 +1,4 @@
[gd_resource type="Compositor" format=3 uid="uid://cbg8e12ms0vvc"] [gd_resource type="Compositor" format=3 uid="uid://cbg8e12ms0vvc"]
[resource] [resource]
compositor_effects = Array[CompositorEffect]([null])

View File

@@ -14,3 +14,5 @@
decltype(default_value)>::type>::type>::type decltype(default_value)>::type>::type>::type
#define H_SET_GET(property_name, default_value) private: RESOLVE_TYPE(default_value) property_name = default_value; public: RESOLVE_TYPE(default_value) get_##property_name(); void set_##property_name(RESOLVE_TYPE(default_value) value); #define H_SET_GET(property_name, default_value) private: RESOLVE_TYPE(default_value) property_name = default_value; public: RESOLVE_TYPE(default_value) get_##property_name(); void set_##property_name(RESOLVE_TYPE(default_value) value);
#define MAKE_RESOURCE_TYPE_HINT(m_type) vformat("%s/%s:%s", Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE, m_type)

View File

@@ -2,7 +2,10 @@
void DiscordActivity::_bind_methods() void DiscordActivity::_bind_methods()
{ {
BIND_SET_GET(DiscordActivity, activity, Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE, "ActivityResource");
ClassDB::bind_method(D_METHOD("get_activities"), &DiscordActivity::get_activities);
ClassDB::bind_method(D_METHOD("set_activities", "value"), &DiscordActivity::set_activities);
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "activities", PROPERTY_HINT_ARRAY_TYPE, MAKE_RESOURCE_TYPE_HINT("ActivityResource")), "set_activities", "get_activities");
} }
DiscordActivity::DiscordActivity() DiscordActivity::DiscordActivity()
{ {
@@ -11,12 +14,12 @@ DiscordActivity::~DiscordActivity()
{ {
} }
Ref<ActivityResource> DiscordActivity::get_activity() TypedArray<ActivityResource> DiscordActivity::get_activities()
{ {
return activity; return activities;
} }
void DiscordActivity::set_activity(Ref<ActivityResource> value) void DiscordActivity::set_activities(TypedArray<ActivityResource> value)
{ {
activity = value; activities = value;
} }

View File

@@ -14,9 +14,9 @@ protected:
static void _bind_methods(); static void _bind_methods();
public: public:
Ref<ActivityResource> activity; TypedArray<ActivityResource> activities;
Ref<ActivityResource> get_activity(); TypedArray<ActivityResource> get_activities();
void set_activity(Ref<ActivityResource> value); void set_activities(TypedArray<ActivityResource> value);
DiscordActivity(); DiscordActivity();
~DiscordActivity(); ~DiscordActivity();

View File

@@ -12,11 +12,13 @@ void DiscordConnector::_bind_methods()
BIND_METHOD(DiscordConnector, refresh_user_token, "current_refresh_token"); BIND_METHOD(DiscordConnector, refresh_user_token, "current_refresh_token");
BIND_SIGNAL(user_connected, PropertyInfo(Variant::STRING, "access_token"), PropertyInfo(Variant::STRING, "refresh_token"), PropertyInfo(Variant::INT, "expires_in")); BIND_SIGNAL(user_connected, PropertyInfo(Variant::STRING, "access_token"), PropertyInfo(Variant::STRING, "refresh_token"), PropertyInfo(Variant::INT, "expires_in"));
BIND_SIGNAL(user_connection_failed, PropertyInfo(Variant::STRING, "error")); BIND_SIGNAL(user_connection_failed, PropertyInfo(Variant::STRING, "error"));
BIND_SIGNAL(user_updated); BIND_SIGNAL(connection_ready);
BIND_SIGNAL(connection_error, PropertyInfo(Variant::STRING, "error"));
BIND_SIGNAL(user_update_failed, PropertyInfo(Variant::STRING, "error")); BIND_SIGNAL(user_update_failed, PropertyInfo(Variant::STRING, "error"));
BIND_SIGNAL(user_token_refreshed, PropertyInfo(Variant::STRING, "access_token"), PropertyInfo(Variant::STRING, "refresh_token"), PropertyInfo(Variant::INT, "expires_in")); BIND_SIGNAL(user_token_refreshed, PropertyInfo(Variant::STRING, "access_token"), PropertyInfo(Variant::STRING, "refresh_token"), PropertyInfo(Variant::INT, "expires_in"));
BIND_SIGNAL(user_token_refresh_failed, PropertyInfo(Variant::STRING, "error")); BIND_SIGNAL(user_token_refresh_failed, PropertyInfo(Variant::STRING, "error"));
} }
DiscordConnector::DiscordConnector() DiscordConnector::DiscordConnector()
{ {
} }
@@ -28,6 +30,17 @@ void DiscordConnector::_ready()
{ {
client = std::make_shared<discordpp::Client>(); client = std::make_shared<discordpp::Client>();
client->SetStatusChangedCallback([this](discordpp::Client::Status status, discordpp::Client::Error error, int32_t errorDetail) {
if (status == discordpp::Client::Status::Ready)
{
emit_signal("connection_ready");
}
if (error != discordpp::Client::Error::None)
{
emit_signal("connection_error", String(discordpp::Client::ErrorToString(error).c_str()));
}
});
if (Engine::get_singleton()->is_editor_hint() || editor_process) if (Engine::get_singleton()->is_editor_hint() || editor_process)
return; return;
@@ -138,7 +151,6 @@ void DiscordConnector::connect_user()
int32_t expiresIn, int32_t expiresIn,
std::string scope) { std::string scope) {
if (result.Successful()) { if (result.Successful()) {
emit_signal("user_connected", accessToken.c_str(), refreshToken.c_str(), expiresIn);
if (auto_token_manage) if (auto_token_manage)
{ {
DiscordUtil::get_singleton()->save_tokens(accessToken.c_str(), refreshToken.c_str(), expiresIn, auto_encryption_key); DiscordUtil::get_singleton()->save_tokens(accessToken.c_str(), refreshToken.c_str(), expiresIn, auto_encryption_key);
@@ -158,7 +170,6 @@ void DiscordConnector::update_user_token(String access_token)
{ {
if(result.Successful()) { if(result.Successful()) {
client->Connect(); client->Connect();
emit_signal("user_updated");
} else { } else {
emit_signal("user_update_failed", result.Error().c_str()); emit_signal("user_update_failed", result.Error().c_str());
} }); } });