diff --git a/.vscode/settings.json b/.vscode/settings.json index 200b833..6b7b3f0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,5 +3,8 @@ "godot-cpp/include", "godot-cpp/gen/include", "godot-cpp/gdextension", - ] + ], + "files.associations": { + "xlocbuf": "cpp" + } } \ No newline at end of file diff --git a/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding.dll b/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding.dll index 92f73f6..e4080e0 100644 Binary files a/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding.dll and b/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding.dll differ diff --git a/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding_debug.dll b/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding_debug.dll index 3abb1c7..0982252 100644 Binary files a/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding_debug.dll and b/project/addons/discord-sdk-gd/bin/windows/discord_game_sdk_binding_debug.dll differ diff --git a/project/main.gd b/project/main.gd index 023dc66..63bbd8e 100644 --- a/project/main.gd +++ b/project/main.gd @@ -15,4 +15,6 @@ func _ready(): Discord_Activity.refresh() + print(Discord_User.get_name()) + $Info.text = $Info.text.replace("{isdiscordworking}",str(Discord_Activity.get_is_discord_working())).replace("{id}",str(Discord_Activity.app_id)).replace("{details}",Discord_Activity.details).replace("{state}",Discord_Activity.state).replace("{lkey}",Discord_Activity.large_image).replace("{ltext}",Discord_Activity.large_image_text).replace("{skey}",Discord_Activity.small_image).replace("{stext}",Discord_Activity.small_image_text).replace("{stimestamp}",str(Discord_Activity.start_timestamp)).replace("{etimestamp}",str(Discord_Activity.end_timestamp)) diff --git a/src/register_types.cpp b/src/register_types.cpp index 1fc0ea5..bb567dd 100644 --- a/src/register_types.cpp +++ b/src/register_types.cpp @@ -7,17 +7,22 @@ #include #include "activity.h" +#include "user.h" using namespace godot; static Discord_Activity *discordactivity; +static Discord_User *discorduser; void gdextension_initialize(ModuleInitializationLevel p_level) { if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE) { ClassDB::register_class(); + ClassDB::register_class(); discordactivity = memnew(Discord_Activity); + discorduser = memnew(Discord_User); Engine::get_singleton()->register_singleton("Discord_Activity", Discord_Activity::get_singleton()); + Engine::get_singleton()->register_singleton("Discord_User", Discord_User::get_singleton()); } } @@ -26,7 +31,9 @@ void gdextension_terminate(ModuleInitializationLevel p_level) if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE) { Engine::get_singleton()->unregister_singleton("Discord_Activity"); + Engine::get_singleton()->unregister_singleton("Discord_User"); memdelete(discordactivity); + memdelete(discorduser); } } diff --git a/src/user.cpp b/src/user.cpp new file mode 100644 index 0000000..ec159e9 --- /dev/null +++ b/src/user.cpp @@ -0,0 +1,39 @@ +#include "user.h" +#include +#include "./discord-game-sdk-cpp/discord.h" +#include +#include +#include +#include + +using namespace godot; + +Discord_User *Discord_User::singleton = nullptr; + +void Discord_User::_bind_methods() +{ + ClassDB::bind_method(D_METHOD("get_name"), &Discord_User::get_name); +} + +Discord_User *Discord_User::get_singleton() +{ + return singleton; +} + +Discord_User::Discord_User() +{ + ERR_FAIL_COND(singleton != nullptr); + singleton = this; +} + +Discord_User::~Discord_User() +{ + ERR_FAIL_COND(singleton != this); + singleton = nullptr; +} + +String Discord_User::get_name() const +{ + discord::User user; + return user.GetUsername(); +} \ No newline at end of file diff --git a/src/user.h b/src/user.h new file mode 100644 index 0000000..1b472be --- /dev/null +++ b/src/user.h @@ -0,0 +1,28 @@ +#ifndef USER_H +#define USER_H + +#include +#include +#include + +using namespace godot; + +class Discord_User : public Object +{ + GDCLASS(Discord_User, Object); + + static Discord_User *singleton; + +protected: + static void _bind_methods(); + +public: + static Discord_User *get_singleton(); + + Discord_User(); + ~Discord_User(); + + String get_name() const; +}; + +#endif \ No newline at end of file