more gdscript bindings
This commit is contained in:
Binary file not shown.
4
project/addons/discord-rpc-gd/discord_coreupdater.gd
Normal file
4
project/addons/discord-rpc-gd/discord_coreupdater.gd
Normal file
@@ -0,0 +1,4 @@
|
||||
extends Node
|
||||
|
||||
func _process(delta):
|
||||
DiscordSDK.coreupdate()
|
@@ -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()
|
@@ -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")
|
||||
|
@@ -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()
|
||||
|
@@ -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]
|
||||
|
||||
|
47
src/main.cpp
47
src/main.cpp
@@ -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) {});
|
||||
}
|
@@ -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
|
Reference in New Issue
Block a user