added signal and cleaned up old code
This commit is contained in:
@@ -14,7 +14,7 @@ func _ready():
|
|||||||
DiscordUtil.connect(\"activity_join_request\",_on_activity_join_request)
|
DiscordUtil.connect(\"activity_join_request\",_on_activity_join_request)
|
||||||
|
|
||||||
func _process(_delta) -> void:
|
func _process(_delta) -> void:
|
||||||
if(DiscordUtil.get_is_discord_working()):
|
if(false):
|
||||||
$Panel/TextureRect.self_modulate = Color(\"#3eff8d\")
|
$Panel/TextureRect.self_modulate = Color(\"#3eff8d\")
|
||||||
if !animation_player.is_playing():
|
if !animation_player.is_playing():
|
||||||
animation_player.play(\"pulsate\")
|
animation_player.play(\"pulsate\")
|
||||||
@@ -55,28 +55,6 @@ var user_request: Dictionary = {};
|
|||||||
func _on_activity_join_request(user_requesting: Dictionary) -> void:
|
func _on_activity_join_request(user_requesting: Dictionary) -> void:
|
||||||
print(user_requesting)
|
print(user_requesting)
|
||||||
user_request = user_requesting
|
user_request = user_requesting
|
||||||
|
|
||||||
func _on_accept_join_request_pressed() -> void:
|
|
||||||
if(!user_request.is_empty()):
|
|
||||||
DiscordUtil.accept_join_request(user_request.id)
|
|
||||||
|
|
||||||
func _on_invite_with_user_id_text_submitted(new_text: String) -> void:
|
|
||||||
DiscordUtil.send_invite(int(new_text),true,\"this is a test invite sent from godot\")
|
|
||||||
|
|
||||||
func _on_accept_with_user_id_text_submitted(new_text: String) -> void:
|
|
||||||
DiscordUtil.accept_invite(int(new_text))
|
|
||||||
|
|
||||||
func _on_print_current_user_on_console_pressed() -> void:
|
|
||||||
print(DiscordUtil.get_current_user())
|
|
||||||
|
|
||||||
func _on_toggle_sdk_toggled(button_pressed: bool) -> void:
|
|
||||||
if(button_pressed):
|
|
||||||
DiscordUtil.unclear()
|
|
||||||
else:
|
|
||||||
DiscordUtil.clear(false)
|
|
||||||
|
|
||||||
func _on_print_friends_pressed() -> void:
|
|
||||||
print(DiscordUtil.get_all_relationships())
|
|
||||||
"
|
"
|
||||||
|
|
||||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8abo6"]
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8abo6"]
|
||||||
|
4
project/discord_connector.gd
Normal file
4
project/discord_connector.gd
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
extends DiscordConnector
|
||||||
|
|
||||||
|
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])
|
1
project/discord_connector.gd.uid
Normal file
1
project/discord_connector.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://kmubk5a6i385
|
@@ -1,76 +1,10 @@
|
|||||||
[gd_scene load_steps=4 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://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="GDScript" id="GDScript_0xm2m"]
|
|
||||||
script/source = "extends Node
|
|
||||||
|
|
||||||
func _ready() -> void:
|
|
||||||
if GDExtensionManager.is_extension_loaded(\"res://addons/discord-rpc-gd/bin/discord-rpc-gd.gdextension\"):
|
|
||||||
set_activity()
|
|
||||||
DiscordUtil.connect(\"activity_join_request\",_on_activity_join_request)
|
|
||||||
#DiscordUtil.connect(\"activity_join\",_on_activity_join)
|
|
||||||
DiscordUtil.connect(\"activity_spectate\",_on_activity_spectate)
|
|
||||||
DiscordUtil.connect(\"relationships_init\",_on_relationship_init)
|
|
||||||
DiscordUtil.connect(\"updated_relationship\", _on_updated_relationship)
|
|
||||||
|
|
||||||
func set_activity() -> void:
|
|
||||||
#DiscordUtil.clear(false)
|
|
||||||
DiscordUtil.app_id = 1099618430065324082
|
|
||||||
#DiscordUtil.details = \"A demo activity by vaporvee#1231\"
|
|
||||||
#DiscordUtil.state = \"Checkpoint 23/23\"
|
|
||||||
#
|
|
||||||
#DiscordUtil.large_image = \"example_game\"
|
|
||||||
#DiscordUtil.large_image_text = \"Try it now!\"
|
|
||||||
#DiscordUtil.small_image = \"boss\"
|
|
||||||
#DiscordUtil.small_image_text = \"Fighting the end boss! D:\"
|
|
||||||
#DiscordUtil.end_timestamp = int(Time.get_unix_time_from_system()) + 3600 # +1 hour in unix time
|
|
||||||
|
|
||||||
# It is NOT recommended to manage secrets locally! It's meant to be a payload wich the server understands and
|
|
||||||
# returns the other variables like current_party_size, party_id etc. Most of the values must differ from the others.
|
|
||||||
#var my_secret: String = str(randi_range(0,999999))
|
|
||||||
|
|
||||||
#DiscordUtil.party_id = \"mylobbycanbeeverything_\" + my_secret
|
|
||||||
#DiscordUtil.current_party_size = 1
|
|
||||||
#DiscordUtil.max_party_size = 4
|
|
||||||
#DiscordUtil.match_secret = \"m_\" + my_secret #better use seeds with 1 to 1 range instead of just chars
|
|
||||||
#DiscordUtil.join_secret = \"j_\" + my_secret
|
|
||||||
#DiscordUtil.spectate_secret = \"s_\" + my_secret
|
|
||||||
#DiscordUtil.is_public_party = true
|
|
||||||
#DiscordUtil.instanced = true #required for spectate
|
|
||||||
#DiscordUtil.start_timestamp = int(Time.get_unix_time_from_system())
|
|
||||||
DiscordUtil.register_command(\"C:\\\\Users\\\\yanni\\\\Desktop\\\\demo\\\\DiscordUtil.exe\")
|
|
||||||
#DiscordUtil.register_steam(1389990)
|
|
||||||
DiscordUtil.refresh()
|
|
||||||
|
|
||||||
var user_request: Dictionary;
|
|
||||||
|
|
||||||
func _on_activity_join_request(user_requesting: Dictionary) -> void:
|
|
||||||
print(user_requesting)
|
|
||||||
user_request = user_requesting
|
|
||||||
|
|
||||||
#func _on_activity_join(secret: String) -> void:
|
|
||||||
#if(DiscordUtil.join_secret != secret):
|
|
||||||
#DiscordUtil.current_party_size = clamp(int(secret) + 1, 0, DiscordUtil.max_party_size)
|
|
||||||
#DiscordUtil.party_id = secret.replace(\"j_\",\"mylobbycanbeeverything_\")
|
|
||||||
#DiscordUtil.match_secret = secret.replace(\"j_\",\"m_\")
|
|
||||||
#DiscordUtil.join_secret = secret
|
|
||||||
#DiscordUtil.spectate_secret = secret.replace(\"j_\",\"s_\")
|
|
||||||
#DiscordUtil.refresh()
|
|
||||||
|
|
||||||
func _on_activity_spectate(secret: String) -> void:
|
|
||||||
print(secret)
|
|
||||||
|
|
||||||
func _on_relationship_init() -> void:
|
|
||||||
print(\"initialized\")
|
|
||||||
|
|
||||||
func _on_updated_relationship(relationship: Dictionary) -> void:
|
|
||||||
print(relationship)
|
|
||||||
"
|
|
||||||
|
|
||||||
[node name="Node" type="Node"]
|
[node name="Node" type="Node"]
|
||||||
script = SubResource("GDScript_0xm2m")
|
|
||||||
|
|
||||||
[node name="ColorRect" type="ColorRect" parent="."]
|
[node name="ColorRect" type="ColorRect" parent="."]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
@@ -111,3 +45,6 @@ script = ExtResource("6_ujijw")
|
|||||||
[node name="DiscordConnector" type="DiscordConnector" parent="."]
|
[node name="DiscordConnector" type="DiscordConnector" parent="."]
|
||||||
app_id = 1099618430065324082
|
app_id = 1099618430065324082
|
||||||
auto_connect = true
|
auto_connect = true
|
||||||
|
script = ExtResource("3_h2yge")
|
||||||
|
|
||||||
|
[connection signal="user_connected" from="DiscordConnector" to="DiscordConnector" method="_on_user_connected"]
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
godot::ClassDB::bind_method(D_METHOD("get_" #property_name), &class_name::get_##property_name); \
|
godot::ClassDB::bind_method(D_METHOD("get_" #property_name), &class_name::get_##property_name); \
|
||||||
godot::ClassDB::bind_method(D_METHOD("set_" #property_name, #variant_type), &class_name::set_##property_name); \
|
godot::ClassDB::bind_method(D_METHOD("set_" #property_name, #variant_type), &class_name::set_##property_name); \
|
||||||
godot::ClassDB::add_property(class_name::get_class_static(), PropertyInfo(variant_type, #property_name, ##__VA_ARGS__), "set_" #property_name, "get_" #property_name)
|
godot::ClassDB::add_property(class_name::get_class_static(), PropertyInfo(variant_type, #property_name, ##__VA_ARGS__), "set_" #property_name, "get_" #property_name)
|
||||||
#define BIND_SIGNAL(class_name, signal_name, ...) godot::ClassDB::add_signal(class_name::get_class_static(), MethodInfo(#signal_name, ##__VA_ARGS__))
|
#define BIND_SIGNAL(signal_name, ...) ADD_SIGNAL(MethodInfo(#signal_name, ##__VA_ARGS__))
|
||||||
// getter isn't mandatory for this project
|
// getter isn't mandatory for this project
|
||||||
#define SET_GET(class_name, variable, setter, ...) decltype(class_name::variable) class_name::get_##variable() { return variable; } void class_name::set_##variable(decltype(class_name::variable) value) { variable = value; setter; }
|
#define SET_GET(class_name, variable, setter, ...) decltype(class_name::variable) class_name::get_##variable() { return variable; } void class_name::set_##variable(decltype(class_name::variable) value) { variable = value; setter; }
|
||||||
|
|
||||||
|
@@ -8,6 +8,7 @@ void DiscordConnector::_bind_methods()
|
|||||||
BIND_SET_GET(DiscordConnector, auto_connect, Variant::BOOL);
|
BIND_SET_GET(DiscordConnector, auto_connect, Variant::BOOL);
|
||||||
BIND_SET_GET(DiscordConnector, token_auto_manage, Variant::BOOL);
|
BIND_SET_GET(DiscordConnector, token_auto_manage, Variant::BOOL);
|
||||||
BIND_METHOD(DiscordConnector, connect);
|
BIND_METHOD(DiscordConnector, connect);
|
||||||
|
BIND_SIGNAL(user_connected, PropertyInfo(Variant::STRING, "access_token"), PropertyInfo(Variant::STRING, "refresh_token"), PropertyInfo(Variant::INT, "expires_in"));
|
||||||
}
|
}
|
||||||
DiscordConnector::DiscordConnector()
|
DiscordConnector::DiscordConnector()
|
||||||
{
|
{
|
||||||
@@ -28,7 +29,7 @@ void DiscordConnector::_ready()
|
|||||||
if (!Engine::get_singleton()->is_editor_hint() && !editor_process)
|
if (!Engine::get_singleton()->is_editor_hint() && !editor_process)
|
||||||
{
|
{
|
||||||
if (auto_connect)
|
if (auto_connect)
|
||||||
connect();
|
connect_user();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,7 +71,7 @@ bool DiscordConnector::get_auto_connect()
|
|||||||
return auto_connect;
|
return auto_connect;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiscordConnector::connect()
|
void DiscordConnector::connect_user()
|
||||||
{
|
{
|
||||||
auto codeVerifier = client->CreateAuthorizationCodeVerifier();
|
auto codeVerifier = client->CreateAuthorizationCodeVerifier();
|
||||||
|
|
||||||
@@ -88,15 +89,20 @@ void DiscordConnector::connect()
|
|||||||
} else {
|
} else {
|
||||||
client->GetToken(app_id, code, codeVerifier.Verifier(), redirectUri,
|
client->GetToken(app_id, code, codeVerifier.Verifier(), redirectUri,
|
||||||
[this](discordpp::ClientResult result,
|
[this](discordpp::ClientResult result,
|
||||||
std::string accessToken, // needs to be stored securely
|
std::string accessToken,
|
||||||
std::string refreshToken, // needs to be stored securely
|
std::string refreshToken,
|
||||||
discordpp::AuthorizationTokenType tokenType,
|
discordpp::AuthorizationTokenType tokenType,
|
||||||
int32_t expiresIn,
|
int32_t expiresIn,
|
||||||
std::string scope) {
|
std::string scope) {
|
||||||
|
if (result.Successful()) {
|
||||||
|
DiscordConnector::get_singleton()->emit_signal("user_connected", accessToken.c_str(), refreshToken.c_str(), expiresIn);
|
||||||
|
} else {
|
||||||
|
UtilityFunctions::push_error("Access token error: " + String(result.Error().c_str()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
client->UpdateToken(discordpp::AuthorizationTokenType::Bearer, accessToken, [this](discordpp::ClientResult result) {
|
client->UpdateToken(discordpp::AuthorizationTokenType::Bearer, accessToken, [this](discordpp::ClientResult result) {
|
||||||
if(result.Successful()) {
|
if(result.Successful()) {
|
||||||
client->Connect();
|
client->Connect();
|
||||||
UtilityFunctions::print("TODO: connection success signal");
|
|
||||||
} else {
|
} else {
|
||||||
UtilityFunctions::push_error("Token update error: " + String(result.Error().c_str()));
|
UtilityFunctions::push_error("Token update error: " + String(result.Error().c_str()));
|
||||||
}
|
}
|
||||||
|
@@ -26,7 +26,7 @@ public:
|
|||||||
H_SET_GET(token_auto_manage, true)
|
H_SET_GET(token_auto_manage, true)
|
||||||
H_SET_GET(auto_connect, false)
|
H_SET_GET(auto_connect, false)
|
||||||
|
|
||||||
void connect();
|
void connect_user();
|
||||||
|
|
||||||
DiscordConnector();
|
DiscordConnector();
|
||||||
~DiscordConnector();
|
~DiscordConnector();
|
||||||
|
231
src/util.cpp
231
src/util.cpp
@@ -4,31 +4,8 @@ DiscordUtil *DiscordUtil::singleton = nullptr;
|
|||||||
|
|
||||||
void DiscordUtil::_bind_methods()
|
void DiscordUtil::_bind_methods()
|
||||||
{
|
{
|
||||||
BIND_SET_GET(DiscordUtil, app_id, Variant::INT);
|
|
||||||
BIND_SIGNAL(DiscordUtil, activity_join, PropertyInfo(Variant::STRING, "join_secret"));
|
|
||||||
BIND_SIGNAL(DiscordUtil, activity_spectate, PropertyInfo(Variant::STRING, "spectate_secret"));
|
|
||||||
BIND_SIGNAL(DiscordUtil, activity_join_request, PropertyInfo(Variant::DICTIONARY, "user_requesting"));
|
|
||||||
BIND_SIGNAL(DiscordUtil, updated_relationship, PropertyInfo(Variant::DICTIONARY, "relationship"));
|
|
||||||
BIND_SIGNAL(DiscordUtil, overlay_toggle, PropertyInfo(Variant::BOOL, "is_locked"));
|
|
||||||
BIND_SIGNAL(DiscordUtil, relationships_init);
|
|
||||||
BIND_METHOD(DiscordUtil, debug);
|
BIND_METHOD(DiscordUtil, debug);
|
||||||
BIND_METHOD(DiscordUtil, run_callbacks);
|
BIND_METHOD(DiscordUtil, run_callbacks);
|
||||||
BIND_METHOD(DiscordUtil, refresh);
|
|
||||||
ClassDB::bind_method(D_METHOD("clear", "reset_values"), &DiscordUtil::clear, DEFVAL(false));
|
|
||||||
BIND_METHOD(DiscordUtil, unclear);
|
|
||||||
BIND_METHOD(DiscordUtil, register_command, "command");
|
|
||||||
BIND_METHOD(DiscordUtil, register_steam, "steam_id");
|
|
||||||
BIND_METHOD(DiscordUtil, accept_join_request, "user_id");
|
|
||||||
BIND_METHOD(DiscordUtil, send_invite, "user_id", "is_spectate", "message_content");
|
|
||||||
BIND_METHOD(DiscordUtil, accept_invite, "user_id");
|
|
||||||
BIND_METHOD(DiscordUtil, get_current_user);
|
|
||||||
BIND_METHOD(DiscordUtil, get_all_relationships);
|
|
||||||
BIND_METHOD(DiscordUtil, get_is_overlay_enabled);
|
|
||||||
BIND_METHOD(DiscordUtil, get_is_overlay_locked);
|
|
||||||
BIND_METHOD(DiscordUtil, open_invite_overlay, "is_spectate");
|
|
||||||
BIND_METHOD(DiscordUtil, open_server_invite_overlay, "invite_code");
|
|
||||||
BIND_METHOD(DiscordUtil, open_voice_settings);
|
|
||||||
BIND_METHOD(DiscordUtil, get_is_discord_working);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DiscordUtil::DiscordUtil()
|
DiscordUtil::DiscordUtil()
|
||||||
@@ -39,7 +16,6 @@ DiscordUtil::DiscordUtil()
|
|||||||
|
|
||||||
DiscordUtil::~DiscordUtil()
|
DiscordUtil::~DiscordUtil()
|
||||||
{
|
{
|
||||||
app_id = 0;
|
|
||||||
ERR_FAIL_COND(singleton != this);
|
ERR_FAIL_COND(singleton != this);
|
||||||
singleton = nullptr;
|
singleton = nullptr;
|
||||||
}
|
}
|
||||||
@@ -131,208 +107,6 @@ void DiscordUtil::debug()
|
|||||||
} });
|
} });
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiscordUtil::set_app_id(int64_t value)
|
|
||||||
{
|
|
||||||
app_id = value;
|
|
||||||
if (app_id > 0)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
result = discordpp::Core::Create(value, DiscordCreateFlags_NoRequireDiscord, &core); // after setting app_ID it initializes everything
|
|
||||||
if (result == discordpp::Result::Ok)
|
|
||||||
{
|
|
||||||
// initialize currentuser
|
|
||||||
core->UserManager().OnCurrentUserUpdate.Connect([]()
|
|
||||||
{discordpp::User user{};
|
|
||||||
core->UserManager().GetCurrentUser(&user); });
|
|
||||||
// signals
|
|
||||||
core->ActivityManager().OnActivityJoin.Connect([](const char *secret)
|
|
||||||
{ DiscordUtil::get_singleton()
|
|
||||||
->emit_signal("activity_join", secret); });
|
|
||||||
core->ActivityManager().OnActivitySpectate.Connect([](const char *secret)
|
|
||||||
{ DiscordUtil::get_singleton()
|
|
||||||
->emit_signal("activity_spectate", secret); });
|
|
||||||
core->ActivityManager().OnActivityJoinRequest.Connect([this](discordpp::User const &user)
|
|
||||||
{ DiscordUtil::get_singleton()
|
|
||||||
->emit_signal("activity_join_request", user2dict(user)); });
|
|
||||||
core->OverlayManager().OnToggle.Connect([](bool is_locked)
|
|
||||||
{ DiscordUtil::get_singleton()
|
|
||||||
->emit_signal("overlay_toggle", is_locked); });
|
|
||||||
core->RelationshipManager().OnRefresh.Connect([&]()
|
|
||||||
{ DiscordUtil::get_singleton()
|
|
||||||
->emit_signal("relationships_init"); });
|
|
||||||
core->RelationshipManager().OnRelationshipUpdate.Connect([&](discordpp::Relationship const &relationship)
|
|
||||||
{ DiscordUtil::get_singleton()
|
|
||||||
->emit_signal("updated_relationship", relationship2dict(relationship)); });
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int64_t DiscordUtil::get_app_id()
|
|
||||||
{
|
|
||||||
if (app_id != 0)
|
|
||||||
return app_id;
|
|
||||||
return old_app_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DiscordUtil::refresh()
|
|
||||||
{
|
|
||||||
if (get_is_discord_working())
|
|
||||||
{
|
|
||||||
/*activity.GetParty().SetPrivacy(discordpp::ActivityPartyPrivacy::Public);
|
|
||||||
activity.SetType(discordpp::ActivityType::Playing);
|
|
||||||
core->ActivityManager().UpdateActivity(activity, [](discordpp::Result result) {});*/
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!");
|
|
||||||
}
|
|
||||||
|
|
||||||
void DiscordUtil::clear(bool reset_values = false)
|
|
||||||
{
|
|
||||||
if (get_is_discord_working())
|
|
||||||
{
|
|
||||||
if (reset_values)
|
|
||||||
{
|
|
||||||
old_app_id = 0;
|
|
||||||
set_is_overlay_locked(false);
|
|
||||||
// core->ActivityManager().ClearActivity([](discordpp::Result result) {});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
old_app_id = app_id;
|
|
||||||
app_id = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DiscordUtil::unclear()
|
|
||||||
{
|
|
||||||
if (old_app_id > 0)
|
|
||||||
{
|
|
||||||
set_app_id(old_app_id);
|
|
||||||
refresh();
|
|
||||||
old_app_id = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
UtilityFunctions::push_warning("Discord Activity couldn't be uncleared. Maybe it didn't get cleared before?");
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DiscordUtil::get_is_overlay_enabled()
|
|
||||||
{
|
|
||||||
bool ie;
|
|
||||||
if (get_is_discord_working())
|
|
||||||
{
|
|
||||||
// core->OverlayManager().IsEnabled(&ie);
|
|
||||||
return ie;
|
|
||||||
}
|
|
||||||
return ie;
|
|
||||||
}
|
|
||||||
bool DiscordUtil::get_is_overlay_locked()
|
|
||||||
{
|
|
||||||
bool il;
|
|
||||||
if (get_is_discord_working())
|
|
||||||
{
|
|
||||||
// core->OverlayManager().IsLocked(&il);
|
|
||||||
return il;
|
|
||||||
}
|
|
||||||
return il;
|
|
||||||
}
|
|
||||||
void DiscordUtil::set_is_overlay_locked(bool value)
|
|
||||||
{
|
|
||||||
is_overlay_locked = value;
|
|
||||||
if (get_is_discord_working())
|
|
||||||
// core->OverlayManager().SetLocked(value, {});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
void DiscordUtil::open_invite_overlay(bool is_spectate)
|
|
||||||
{
|
|
||||||
if (get_is_discord_working())
|
|
||||||
// core->OverlayManager().OpenActivityInvite(static_cast<discordpp::ActivityActionType>(is_spectate + 1), {});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
void DiscordUtil::open_server_invite_overlay(String invite_code)
|
|
||||||
{
|
|
||||||
if (get_is_discord_working())
|
|
||||||
// core->OverlayManager().OpenGuildInvite(invite_code.utf8().get_data(), {});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
void DiscordUtil::open_voice_settings()
|
|
||||||
{
|
|
||||||
if (get_is_discord_working())
|
|
||||||
// core->OverlayManager().OpenVoiceSettings({});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DiscordUtil::accept_join_request(int64_t user_id)
|
|
||||||
{
|
|
||||||
if (get_is_discord_working())
|
|
||||||
// core->ActivityManager().SendRequestReply(user_id, static_cast<discordpp::ActivityJoinRequestReply>(1), {});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
void DiscordUtil::send_invite(int64_t user_id, bool is_spectate = false, String message_content = "")
|
|
||||||
{
|
|
||||||
if (get_is_discord_working())
|
|
||||||
// core->ActivityManager().SendInvite(user_id, static_cast<discordpp::ActivityActionType>(is_spectate + 1), message_content.utf8().get_data(), {});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
void DiscordUtil::accept_invite(int64_t user_id)
|
|
||||||
{
|
|
||||||
if (get_is_discord_working())
|
|
||||||
// core->ActivityManager().AcceptInvite(user_id, {});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DiscordUtil::register_command(String value)
|
|
||||||
{
|
|
||||||
if (get_is_discord_working())
|
|
||||||
// core->ActivityManager().RegisterCommand(value.utf8().get_data());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
void DiscordUtil::register_steam(int32_t value)
|
|
||||||
{
|
|
||||||
if (get_is_discord_working())
|
|
||||||
// core->ActivityManager().RegisterSteam(value);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Dictionary DiscordUtil::get_current_user()
|
|
||||||
{
|
|
||||||
Dictionary userdict;
|
|
||||||
if (get_is_discord_working())
|
|
||||||
{
|
|
||||||
// discordpp::User user{};
|
|
||||||
// core->UserManager().GetCurrentUser(&user);
|
|
||||||
return userdict; // user2dict(user)
|
|
||||||
}
|
|
||||||
return userdict;
|
|
||||||
}
|
|
||||||
|
|
||||||
Dictionary DiscordUtil::get_relationship(int64_t user_id)
|
|
||||||
{
|
|
||||||
Dictionary dict;
|
|
||||||
if (get_is_discord_working())
|
|
||||||
{
|
|
||||||
// discordpp::Relationship relationship{};
|
|
||||||
// core->RelationshipManager().Get(user_id, &relationship);
|
|
||||||
return dict /*relationship2dict(relationship)*/;
|
|
||||||
}
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
|
|
||||||
Array DiscordUtil::get_all_relationships()
|
|
||||||
{
|
|
||||||
Array all_relationships;
|
|
||||||
/*core->RelationshipManager().Filter(
|
|
||||||
[](discordpp::Relationship const &relationship) -> bool
|
|
||||||
{ return true; });*/
|
|
||||||
uint32_t friendcount{0};
|
|
||||||
// core->RelationshipManager().Count(&friendcount);
|
|
||||||
/*for (int i = 0; i < friendcount; i++)
|
|
||||||
{
|
|
||||||
discordpp::Relationship relationship{};
|
|
||||||
core->RelationshipManager().GetAt(i, &relationship);
|
|
||||||
all_relationships.append(relationship2dict(relationship));
|
|
||||||
}*/
|
|
||||||
return all_relationships;
|
|
||||||
}
|
|
||||||
|
|
||||||
Dictionary DiscordUtil::user2dict(discordpp::UserHandle user)
|
Dictionary DiscordUtil::user2dict(discordpp::UserHandle user)
|
||||||
{
|
{
|
||||||
Dictionary userdict;
|
Dictionary userdict;
|
||||||
@@ -419,9 +193,4 @@ Dictionary DiscordUtil::relationship2dict(discordpp::RelationshipHandle relation
|
|||||||
dict_relationship["presence"] = presence;
|
dict_relationship["presence"] = presence;
|
||||||
dict_relationship.make_read_only();*/
|
dict_relationship.make_read_only();*/
|
||||||
return dict_relationship;
|
return dict_relationship;
|
||||||
}
|
|
||||||
|
|
||||||
bool DiscordUtil::get_is_discord_working()
|
|
||||||
{
|
|
||||||
return app_id > 0; /*result.Successful() &&*/
|
|
||||||
}
|
}
|
23
src/util.h
23
src/util.h
@@ -27,34 +27,11 @@ public:
|
|||||||
DiscordUtil();
|
DiscordUtil();
|
||||||
~DiscordUtil();
|
~DiscordUtil();
|
||||||
|
|
||||||
// INTERBNAL
|
|
||||||
int64_t old_app_id;
|
|
||||||
Dictionary relationship2dict(discordpp::RelationshipHandle relationship);
|
Dictionary relationship2dict(discordpp::RelationshipHandle relationship);
|
||||||
Dictionary user2dict(discordpp::UserHandle user);
|
Dictionary user2dict(discordpp::UserHandle user);
|
||||||
///
|
|
||||||
void set_app_id(int64_t value);
|
|
||||||
int64_t get_app_id();
|
|
||||||
int64_t app_id = 0; // needs to be directly set to 0 or it will crash randomly
|
|
||||||
H_SET_GET(is_overlay_locked, false)
|
|
||||||
|
|
||||||
void debug();
|
void debug();
|
||||||
void run_callbacks();
|
void run_callbacks();
|
||||||
void refresh();
|
|
||||||
void clear(bool reset_values);
|
|
||||||
void unclear();
|
|
||||||
bool get_is_overlay_enabled();
|
|
||||||
void open_invite_overlay(bool is_spectate);
|
|
||||||
void open_server_invite_overlay(String invite_code);
|
|
||||||
void open_voice_settings();
|
|
||||||
void accept_join_request(int64_t user_id);
|
|
||||||
void send_invite(int64_t user_id, bool is_spectate, String message_content);
|
|
||||||
void accept_invite(int64_t user_id);
|
|
||||||
void register_command(String value);
|
|
||||||
void register_steam(int32_t value);
|
|
||||||
Dictionary get_current_user();
|
|
||||||
Dictionary get_relationship(int64_t user_id);
|
|
||||||
Array get_all_relationships();
|
|
||||||
bool get_is_discord_working();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
Reference in New Issue
Block a user