more gdscript bindings

This commit is contained in:
Yannik
2023-04-20 16:17:59 +02:00
parent d867881678
commit 9c15f3413e
8 changed files with 55 additions and 28 deletions

View File

@@ -0,0 +1,4 @@
extends Node
func _process(delta):
DiscordSDK.coreupdate()

View File

@@ -1,11 +0,0 @@
extends Node
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
DiscordSDK.update()

View File

@@ -2,7 +2,8 @@
extends EditorPlugin extends EditorPlugin
func _enter_tree(): func _enter_tree():
add_autoload_singleton("Discord", "res://addons/discord-rpc-gd/loadaddon.gd") add_autoload_singleton("discord_coreupdater", "res://addons/discord-rpc-gd/discord_coreupdater.gd")
func disable_plugin(): func disable_plugin():
remove_autoload_singleton("Discord") remove_autoload_singleton("discord_coreupdater")

View File

@@ -1,6 +1,7 @@
extends Node extends Node
# Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
DiscordSDK.debug() DiscordSDK.set_app_id(918857075105349632)
DiscordSDK.set_details("Made with GDExtension")
DiscordSDK.set_state("This is a test from GDScript in Godot 4") #TODO:Change functions to variables if possible
DiscordSDK.refresh_activity()

View File

@@ -19,7 +19,7 @@ config/icon="res://assets/Logo_V2.png"
[autoload] [autoload]
Discord="*res://addons/discord-rpc-gd/loadaddon.gd" discord_coreupdater="*res://addons/discord-rpc-gd/discord_coreupdater.gd"
[dotnet] [dotnet]

View File

@@ -7,12 +7,19 @@
using namespace godot; using namespace godot;
DiscordSDK *DiscordSDK::singleton = nullptr; DiscordSDK *DiscordSDK::singleton = nullptr;
discord::Core *core{}; discord::Core *core{};
discord::Result result;
discord::Activity activity{};
void DiscordSDK::_bind_methods() void DiscordSDK::_bind_methods()
{ {
ClassDB::bind_method(D_METHOD("debug"), &DiscordSDK::debug); ClassDB::bind_method(D_METHOD("debug"), &DiscordSDK::debug);
ClassDB::bind_method(D_METHOD("update"), &DiscordSDK::update); ClassDB::bind_method(D_METHOD("coreupdate"), &DiscordSDK::coreupdate);
ClassDB::bind_method(D_METHOD("set_app_id"), &DiscordSDK::set_app_id);
ClassDB::bind_method(D_METHOD("set_state"), &DiscordSDK::set_state);
ClassDB::bind_method(D_METHOD("set_details"), &DiscordSDK::set_details);
ClassDB::bind_method(D_METHOD("refresh_activity"), &DiscordSDK::refresh_activity);
} }
DiscordSDK *DiscordSDK::get_singleton() DiscordSDK *DiscordSDK::get_singleton()
@@ -34,16 +41,36 @@ DiscordSDK::~DiscordSDK()
void DiscordSDK::debug() void DiscordSDK::debug()
{ {
auto result = discord::Core::Create(1080224638845591692, DiscordCreateFlags_Default, &core); auto debugresult = discord::Core::Create(1080224638845591692, DiscordCreateFlags_NoRequireDiscord, &core);
discord::Activity activity{}; discord::Activity debugactivity{};
activity.SetState("Test from Godot!"); debugactivity.SetState("Test from Godot!");
activity.SetDetails("I worked months on this"); debugactivity.SetDetails("I worked months on this");
discord::ActivityAssets assets = activity.GetAssets(); discord::ActivityAssets debugassets = debugactivity.GetAssets();
assets.SetLargeImage("test1"); debugassets.SetLargeImage("test1");
assets.SetSmallImage("godot"); debugassets.SetSmallImage("godot");
core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {}); core->ActivityManager().UpdateActivity(debugactivity, [](discord::Result debugresult) {});
} }
void DiscordSDK::update()
void DiscordSDK::coreupdate()
{ {
::core->RunCallbacks(); ::core->RunCallbacks();
}
void DiscordSDK::set_app_id(int64_t appid)
{
result = discord::Core::Create(appid, DiscordCreateFlags_NoRequireDiscord, &core);
}
void DiscordSDK::set_state(String state)
{
activity.SetState(state.utf8().get_data());
}
void DiscordSDK::set_details(String details)
{
activity.SetDetails(details.utf8().get_data());
}
void DiscordSDK::refresh_activity()
{
core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {});
} }

View File

@@ -1,6 +1,7 @@
#ifndef MAIN_H #ifndef MAIN_H
#define MAIN_H #define MAIN_H
#include <stdio.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>
@@ -22,7 +23,11 @@ public:
~DiscordSDK(); ~DiscordSDK();
void debug(); void debug();
void update(); void coreupdate();
void refresh_activity();
void set_app_id(int64_t appid);
void set_state(String state);
void set_details(String details);
}; };
#endif #endif