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
|
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")
|
||||||
|
@@ -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()
|
||||||
|
@@ -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]
|
||||||
|
|
||||||
|
47
src/main.cpp
47
src/main.cpp
@@ -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) {});
|
||||||
}
|
}
|
@@ -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
|
Reference in New Issue
Block a user