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
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():
remove_autoload_singleton("Discord")
remove_autoload_singleton("discord_coreupdater")

View File

@@ -1,6 +1,7 @@
extends Node
# Called when the node enters the scene tree for the first time.
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]
Discord="*res://addons/discord-rpc-gd/loadaddon.gd"
discord_coreupdater="*res://addons/discord-rpc-gd/discord_coreupdater.gd"
[dotnet]

View File

@@ -7,12 +7,19 @@
using namespace godot;
DiscordSDK *DiscordSDK::singleton = nullptr;
discord::Core *core{};
discord::Result result;
discord::Activity activity{};
void DiscordSDK::_bind_methods()
{
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()
@@ -34,16 +41,36 @@ DiscordSDK::~DiscordSDK()
void DiscordSDK::debug()
{
auto result = discord::Core::Create(1080224638845591692, DiscordCreateFlags_Default, &core);
discord::Activity activity{};
activity.SetState("Test from Godot!");
activity.SetDetails("I worked months on this");
discord::ActivityAssets assets = activity.GetAssets();
assets.SetLargeImage("test1");
assets.SetSmallImage("godot");
core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {});
auto debugresult = discord::Core::Create(1080224638845591692, DiscordCreateFlags_NoRequireDiscord, &core);
discord::Activity debugactivity{};
debugactivity.SetState("Test from Godot!");
debugactivity.SetDetails("I worked months on this");
discord::ActivityAssets debugassets = debugactivity.GetAssets();
debugassets.SetLargeImage("test1");
debugassets.SetSmallImage("godot");
core->ActivityManager().UpdateActivity(debugactivity, [](discord::Result debugresult) {});
}
void DiscordSDK::update()
void DiscordSDK::coreupdate()
{
::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
#define MAIN_H
#include <stdio.h>
#include <godot_cpp/classes/object.hpp>
#include <godot_cpp/core/class_db.hpp>
@@ -22,7 +23,11 @@ public:
~DiscordSDK();
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