fixed import errors

This commit is contained in:
2025-03-22 00:13:17 +01:00
parent bcb3cb95a0
commit 115cf4c8c0
12 changed files with 59 additions and 66 deletions

2
.gitignore vendored
View File

@@ -24,6 +24,8 @@ build/
#Clean files from setup.py #Clean files from setup.py
src/lib/discord_social_sdk/* src/lib/discord_social_sdk/*
src/lib/godot-cpp/* src/lib/godot-cpp/*
discordpp.h
cdiscord.h
*.zip *.zip
*.so *.so
*.dll *.dll

View File

@@ -7,8 +7,7 @@
"${workspaceFolder}/src/lib/godot-cpp/gen/include", "${workspaceFolder}/src/lib/godot-cpp/gen/include",
"${workspaceFolder}/src/lib/godot-cpp/include", "${workspaceFolder}/src/lib/godot-cpp/include",
"${workspaceFolder}/src/lib/godot-cpp/gdextension", "${workspaceFolder}/src/lib/godot-cpp/gdextension",
"${workspaceFolder}/src/lib/godot-cpp/gen/include", "${workspaceFolder}/src/lib/godot-cpp/gen/include"
"${workspaceFolder}/src/lib/discord_social_sdk/include"
], ],
"defines": [ "defines": [
"_DEBUG", "_DEBUG",

View File

@@ -20,14 +20,10 @@ elif env["platform"] == "windows":
if env["target"] == "template_debug": if env["target"] == "template_debug":
debugsuffix = "_debug" debugsuffix = "_debug"
folder = "debug/"
discord_library_target = discord_library.replace(".", f"{debugsuffix}.")
else: else:
debugsuffix = "" debugsuffix = ""
folder = "release/"
discord_library_target = discord_library
env.Append(LIBPATH=["src/lib/discord_social_sdk/lib/" + folder]) env.Append(LIBPATH=["src/lib/discord_social_sdk/lib/release/"])
env.Append(LIBS=["discord_partner_sdk"]) env.Append(LIBS=["discord_partner_sdk"])
env.Append(CPPDEFINES=["HOT_RELOAD_ENABLED"]) env.Append(CPPDEFINES=["HOT_RELOAD_ENABLED"])
@@ -42,8 +38,8 @@ library = env.SharedLibrary(
env.Depends( env.Depends(
library, library,
Command( Command(
"project/addons/discord-rpc-gd/bin/" + libexportfolder + discord_library_target, "project/addons/discord-rpc-gd/bin/" + libexportfolder + discord_library,
"src/lib/discord_social_sdk/lib/" + folder + discord_library, "src/lib/discord_social_sdk/lib/release/" + discord_library,
Copy("$TARGET", "$SOURCE"), Copy("$TARGET", "$SOURCE"),
), ),
) )

View File

@@ -19,11 +19,5 @@ linux.release.rv64 = "linux/libdiscord_partner_sdk_binding.so"
[dependencies] [dependencies]
macos = { "macos/libdiscord_partner_sdk.dylib": "" } macos = { "macos/libdiscord_partner_sdk.dylib": "" }
windows.debug.x86_64 = { "windows/discord_partner_sdk_debug.dll": "" } windows.x86_64 = { "windows/discord_partner_sdk.dll": "" }
windows.release.x86_64 = { "windows/discord_partner_sdk.dll": "" } linux = { "linux/libdiscord_partner_sdk.so": "" }
linux.debug.x86_64 = { "linux/libdiscord_partner_sdk_debug.so": "" }
linux.release.x86_64 = { "linux/libdiscord_partner_sdk.so": "" }
linux.debug.arm64 = { "linux/libdiscord_partner_sdk_debug.so": "" }
linux.release.arm64 = { "linux/libdiscord_partner_sdk.so": "" }
linux.debug.rv64 = { "linux/libdiscord_partner_sdk_debug.so": "" }
linux.release.rv64 = { "linux/libdiscord_partner_sdk.so": "" }

View File

@@ -48,7 +48,7 @@ Is party public: {ppublic} (needs to be activated in Discord client settings)
Is instanced: {instanced} Is instanced: {instanced}
\" \"
$Panel/Info.text = $Panel/Info.text.replace(\"{ppublic}\",str(DiscordRPC.is_public_party)).replace(\"{instanced}\",str(DiscordRPC.instanced)).replace(\"{ssecret}\",DiscordRPC.spectate_secret).replace(\"{jsecret}\",DiscordRPC.join_secret).replace(\"{msecret}\",DiscordRPC.match_secret).replace(\"{mpartysize}\",str(DiscordRPC.max_party_size)).replace(\"{cpartysize}\",str(DiscordRPC.current_party_size)).replace(\"{partyid}\",DiscordRPC.party_id).replace(\"{id}\",str(DiscordRPC.app_id)).replace(\"{details}\",DiscordRPC.details).replace(\"{state}\",DiscordRPC.state).replace(\"{lkey}\",DiscordRPC.large_image).replace(\"{ltext}\",DiscordRPC.large_image_text).replace(\"{skey}\",DiscordRPC.small_image).replace(\"{stext}\",DiscordRPC.small_image_text).replace(\"{stimestamp}\",str(DiscordRPC.start_timestamp)).replace(\"{etimestamp}\",str(DiscordRPC.end_timestamp)) #$Panel/Info.text = $Panel/Info.text.replace(\"{ppublic}\",str(DiscordRPC.is_public_party)).replace(\"{instanced}\",str(DiscordRPC.instanced)).replace(\"{ssecret}\",DiscordRPC.spectate_secret).replace(\"{jsecret}\",DiscordRPC.join_secret).replace(\"{msecret}\",DiscordRPC.match_secret).replace(\"{mpartysize}\",str(DiscordRPC.max_party_size)).replace(\"{cpartysize}\",str(DiscordRPC.current_party_size)).replace(\"{partyid}\",DiscordRPC.party_id).replace(\"{id}\",str(DiscordRPC.app_id)).replace(\"{details}\",DiscordRPC.details).replace(\"{state}\",DiscordRPC.state).replace(\"{lkey}\",DiscordRPC.large_image).replace(\"{ltext}\",DiscordRPC.large_image_text).replace(\"{skey}\",DiscordRPC.small_image).replace(\"{stext}\",DiscordRPC.small_image_text).replace(\"{stimestamp}\",str(DiscordRPC.start_timestamp)).replace(\"{etimestamp}\",str(DiscordRPC.end_timestamp))
var user_request: Dictionary = {}; var user_request: Dictionary = {};
@@ -260,7 +260,7 @@ texture = ExtResource("3_goflf")
[node name="AnimationPlayer" type="AnimationPlayer" parent="Panel/TextureRect"] [node name="AnimationPlayer" type="AnimationPlayer" parent="Panel/TextureRect"]
libraries = { libraries = {
"": SubResource("AnimationLibrary_a7ofc") &"": SubResource("AnimationLibrary_a7ofc")
} }
[connection signal="pressed" from="Panel/PrintCurrentUserOnConsole" to="." method="_on_print_current_user_on_console_pressed"] [connection signal="pressed" from="Panel/PrintCurrentUserOnConsole" to="." method="_on_print_current_user_on_console_pressed"]

View File

@@ -4,7 +4,7 @@ func _ready() -> void:
if GDExtensionManager.is_extension_loaded("res://addons/discord-rpc-gd/bin/discord-rpc-gd.gdextension"): if GDExtensionManager.is_extension_loaded("res://addons/discord-rpc-gd/bin/discord-rpc-gd.gdextension"):
set_activity() set_activity()
DiscordRPC.connect("activity_join_request",_on_activity_join_request) DiscordRPC.connect("activity_join_request",_on_activity_join_request)
DiscordRPC.connect("activity_join",_on_activity_join) #DiscordRPC.connect("activity_join",_on_activity_join)
DiscordRPC.connect("activity_spectate",_on_activity_spectate) DiscordRPC.connect("activity_spectate",_on_activity_spectate)
DiscordRPC.connect("relationships_init",_on_relationship_init) DiscordRPC.connect("relationships_init",_on_relationship_init)
DiscordRPC.connect("updated_relationship", _on_updated_relationship) DiscordRPC.connect("updated_relationship", _on_updated_relationship)
@@ -12,27 +12,27 @@ func _ready() -> void:
func set_activity() -> void: func set_activity() -> void:
DiscordRPC.clear(false) DiscordRPC.clear(false)
DiscordRPC.app_id = 1099618430065324082 DiscordRPC.app_id = 1099618430065324082
DiscordRPC.details = "A demo activity by vaporvee#1231" #DiscordRPC.details = "A demo activity by vaporvee#1231"
DiscordRPC.state = "Checkpoint 23/23" #DiscordRPC.state = "Checkpoint 23/23"
#
DiscordRPC.large_image = "example_game" #DiscordRPC.large_image = "example_game"
DiscordRPC.large_image_text = "Try it now!" #DiscordRPC.large_image_text = "Try it now!"
DiscordRPC.small_image = "boss" #DiscordRPC.small_image = "boss"
DiscordRPC.small_image_text = "Fighting the end boss! D:" #DiscordRPC.small_image_text = "Fighting the end boss! D:"
DiscordRPC.end_timestamp = int(Time.get_unix_time_from_system()) + 3600 # +1 hour in unix time #DiscordRPC.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 # 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. # 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)) var my_secret: String = str(randi_range(0,999999))
DiscordRPC.party_id = "mylobbycanbeeverything_" + my_secret #DiscordRPC.party_id = "mylobbycanbeeverything_" + my_secret
DiscordRPC.current_party_size = 1 #DiscordRPC.current_party_size = 1
DiscordRPC.max_party_size = 4 #DiscordRPC.max_party_size = 4
DiscordRPC.match_secret = "m_" + my_secret #better use seeds with 1 to 1 range instead of just chars #DiscordRPC.match_secret = "m_" + my_secret #better use seeds with 1 to 1 range instead of just chars
DiscordRPC.join_secret = "j_" + my_secret #DiscordRPC.join_secret = "j_" + my_secret
DiscordRPC.spectate_secret = "s_" + my_secret #DiscordRPC.spectate_secret = "s_" + my_secret
DiscordRPC.is_public_party = true #DiscordRPC.is_public_party = true
DiscordRPC.instanced = true #required for spectate #DiscordRPC.instanced = true #required for spectate
#DiscordRPC.start_timestamp = int(Time.get_unix_time_from_system()) #DiscordRPC.start_timestamp = int(Time.get_unix_time_from_system())
DiscordRPC.register_command("C:\\Users\\yanni\\Desktop\\demo\\DiscordRPC.exe") DiscordRPC.register_command("C:\\Users\\yanni\\Desktop\\demo\\DiscordRPC.exe")
#DiscordRPC.register_steam(1389990) #DiscordRPC.register_steam(1389990)
@@ -44,14 +44,14 @@ 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_activity_join(secret: String) -> void: #func _on_activity_join(secret: String) -> void:
if(DiscordRPC.join_secret != secret): #if(DiscordRPC.join_secret != secret):
DiscordRPC.current_party_size = clamp(int(secret) + 1, 0, DiscordRPC.max_party_size) #DiscordRPC.current_party_size = clamp(int(secret) + 1, 0, DiscordRPC.max_party_size)
DiscordRPC.party_id = secret.replace("j_","mylobbycanbeeverything_") #DiscordRPC.party_id = secret.replace("j_","mylobbycanbeeverything_")
DiscordRPC.match_secret = secret.replace("j_","m_") #DiscordRPC.match_secret = secret.replace("j_","m_")
DiscordRPC.join_secret = secret #DiscordRPC.join_secret = secret
DiscordRPC.spectate_secret = secret.replace("j_","s_") #DiscordRPC.spectate_secret = secret.replace("j_","s_")
DiscordRPC.refresh() #DiscordRPC.refresh()
func _on_activity_spectate(secret: String) -> void: func _on_activity_spectate(secret: String) -> void:
print(secret) print(secret)

View File

@@ -2,35 +2,49 @@ import zipfile
import os import os
import re import re
import shutil import shutil
import sys
import glob
EXPECTED_VERSION = "1.0.7445" EXPECTED_VERSION = "1.0.7445"
# Extract the version from the zip filename zip_files = glob.glob("src/lib/DiscordSocialSdk-*.zip")
zip_path = "src/lib/DiscordSocialSdk-1.0.7445.zip" if not zip_files:
print("Error: No zip file matching 'DiscordSocialSdk-*.zip' found.")
sys.exit(1)
zip_path = zip_files[0] # Use the first matching file
match = re.search(r"DiscordSocialSdk-(\d+\.\d+\.\d+)\.zip", zip_path) match = re.search(r"DiscordSocialSdk-(\d+\.\d+\.\d+)\.zip", zip_path)
if match: if match:
extracted_version = match.group(1) extracted_version = match.group(1)
if extracted_version != EXPECTED_VERSION: if extracted_version != EXPECTED_VERSION:
print(f"Warning: Last tested version {EXPECTED_VERSION}, but found {extracted_version} in the zip file.") print(f"Warning: Last tested version {EXPECTED_VERSION}, but found {extracted_version} in the zip file.")
print(f"Extracting {zip_path}...")
# Extract the zip file ignoring the version in the filename # Extract the zip file ignoring the version in the filename
with zipfile.ZipFile(zip_path, "r") as zip_ref: with zipfile.ZipFile(zip_path, "r") as zip_ref:
zip_ref.extractall("src/lib/") zip_ref.extractall("src/lib/")
# Copy the release DLL to the lib directory
release_dll_src = "src/lib/discord_social_sdk/bin/release/discord_partner_sdk.dll" release_dll_src = "src/lib/discord_social_sdk/bin/release/discord_partner_sdk.dll"
release_dll_dest = "src/lib/discord_social_sdk/lib/release/" release_dll_dest = "src/lib/discord_social_sdk/lib/release/"
os.makedirs(release_dll_dest, exist_ok=True) os.makedirs(release_dll_dest, exist_ok=True)
shutil.copy(release_dll_src, release_dll_dest) shutil.copy(release_dll_src, release_dll_dest)
# Copy the debug DLL to the lib/debug directory
debug_dll_src = "src/lib/discord_social_sdk/bin/debug/discord_partner_sdk.dll" debug_dll_src = "src/lib/discord_social_sdk/bin/debug/discord_partner_sdk.dll"
debug_dll_dest = "src/lib/discord_social_sdk/lib/debug/" debug_dll_dest = "src/lib/discord_social_sdk/lib/debug/"
os.makedirs(debug_dll_dest, exist_ok=True) os.makedirs(debug_dll_dest, exist_ok=True)
shutil.copy(debug_dll_src, debug_dll_dest) shutil.copy(debug_dll_src, debug_dll_dest)
# Delete the bin folder include_folder_src = "src/lib/discord_social_sdk/include"
include_folder_dest = "src"
shutil.copytree(include_folder_src, include_folder_dest, dirs_exist_ok=True)
shutil.rmtree(include_folder_src, ignore_errors=True)
bin_folder = "src/lib/discord_social_sdk/bin" bin_folder = "src/lib/discord_social_sdk/bin"
shutil.rmtree(bin_folder, ignore_errors=True) shutil.rmtree(bin_folder, ignore_errors=True)
print(f"Extracted and copied Discord Social SDK version: {extracted_version}")
print("Getting submodules...")
os.system("git submodule update --init --remote") os.system("git submodule update --init --remote")
print("Finished setup!")

View File

@@ -1,4 +1,4 @@
#include "lib/discord_social_sdk/include/discordpp.h" #include "discordpp.h"
#include "discordgodot.h" #include "discordgodot.h"
#include <godot_cpp/core/class_db.hpp> #include <godot_cpp/core/class_db.hpp>
#include <godot_cpp/variant/utility_functions.hpp> #include <godot_cpp/variant/utility_functions.hpp>
@@ -18,14 +18,10 @@
} }
DiscordRPC *DiscordRPC::singleton = nullptr; DiscordRPC *DiscordRPC::singleton = nullptr;
std::shared_ptr<discordpp::Client> client;
discordpp::Activity activity;
void DiscordRPC::_bind_methods() void DiscordRPC::_bind_methods()
{ {
BIND_SET_GET(app_id, Variant::INT); BIND_SET_GET(app_id, Variant::INT);
BIND_SET_GET(state, Variant::STRING);
BIND_SET_GET(details, Variant::STRING);
BIND_SIGNAL(activity_join, PropertyInfo(Variant::STRING, "join_secret")); BIND_SIGNAL(activity_join, PropertyInfo(Variant::STRING, "join_secret"));
BIND_SIGNAL(activity_spectate, PropertyInfo(Variant::STRING, "spectate_secret")); BIND_SIGNAL(activity_spectate, PropertyInfo(Variant::STRING, "spectate_secret"));
BIND_SIGNAL(activity_join_request, PropertyInfo(Variant::DICTIONARY, "user_requesting")); BIND_SIGNAL(activity_join_request, PropertyInfo(Variant::DICTIONARY, "user_requesting"));
@@ -51,8 +47,6 @@ void DiscordRPC::_bind_methods()
BIND_METHOD(open_voice_settings); BIND_METHOD(open_voice_settings);
BIND_METHOD(get_is_discord_working); BIND_METHOD(get_is_discord_working);
} }
SET_GET(state, activity.SetState(value.utf8().get_data()))
SET_GET(details, activity.SetDetails(value.utf8().get_data()))
DiscordRPC::DiscordRPC() DiscordRPC::DiscordRPC()
{ {
@@ -63,8 +57,6 @@ DiscordRPC::DiscordRPC()
DiscordRPC::~DiscordRPC() DiscordRPC::~DiscordRPC()
{ {
app_id = 0; app_id = 0;
client->~Client();
client = nullptr;
ERR_FAIL_COND(singleton != this); ERR_FAIL_COND(singleton != this);
singleton = nullptr; singleton = nullptr;
} }
@@ -146,8 +138,6 @@ void DiscordRPC::clear(bool reset_values = false)
if (reset_values) if (reset_values)
{ {
old_app_id = 0; old_app_id = 0;
set_state("");
set_details("");
set_is_overlay_locked(false); set_is_overlay_locked(false);
// core->ActivityManager().ClearActivity([](discordpp::Result result) {}); // core->ActivityManager().ClearActivity([](discordpp::Result result) {});
} }

View File

@@ -2,7 +2,7 @@
#define DISCORDGODOT_H #define DISCORDGODOT_H
#include <stdio.h> #include <stdio.h>
#include "lib/discord_social_sdk/include/discordpp.h" #include "discordpp.h"
#include <godot_cpp/classes/object.hpp> #include <godot_cpp/classes/object.hpp>
#include <godot_cpp/core/class_db.hpp> #include <godot_cpp/core/class_db.hpp>
@@ -37,8 +37,6 @@ public:
void set_app_id(uint64_t value); void set_app_id(uint64_t value);
uint64_t get_app_id(); uint64_t get_app_id();
uint64_t app_id = 0; // needs to be directly set to 0 or it will crash randomly uint64_t app_id = 0; // needs to be directly set to 0 or it will crash randomly
H_SET_GET(String, state)
H_SET_GET(String, details)
H_SET_GET(bool, is_overlay_locked) H_SET_GET(bool, is_overlay_locked)
void debug(); void debug();

View File

@@ -1,5 +1,5 @@
#include "editor_presence.h" #include "editor_presence.h"
#include "lib/discord_social_sdk/include/discordpp.h" #include "discordpp.h"
#include <godot_cpp/core/class_db.hpp> #include <godot_cpp/core/class_db.hpp>
#include <godot_cpp/variant/utility_functions.hpp> #include <godot_cpp/variant/utility_functions.hpp>
#include <godot_cpp/classes/scene_tree.hpp> #include <godot_cpp/classes/scene_tree.hpp>

View File

@@ -2,7 +2,7 @@
#define EDITOR_PRESENCE_H #define EDITOR_PRESENCE_H
#include <stdio.h> #include <stdio.h>
#include "lib/discord_social_sdk/include/discordpp.h" #include "discordpp.h"
#include <godot_cpp/classes/node.hpp> #include <godot_cpp/classes/node.hpp>
#include <godot_cpp/core/class_db.hpp> #include <godot_cpp/core/class_db.hpp>
#include <godot_cpp/classes/project_settings.hpp> #include <godot_cpp/classes/project_settings.hpp>

View File

@@ -6,7 +6,7 @@
#include <godot_cpp/classes/engine.hpp> #include <godot_cpp/classes/engine.hpp>
#include <godot_cpp/godot.hpp> #include <godot_cpp/godot.hpp>
#include "lib/discord_social_sdk/include/discordpp.h" #include "discordpp.h"
#include "discordgodot.h" #include "discordgodot.h"
#include "editor_presence.h" #include "editor_presence.h"
using namespace godot; using namespace godot;