[WIP] Add custom activity structure type to GDScript #6
4
.gitignore
vendored
4
.gitignore
vendored
@@ -19,6 +19,4 @@ build/
|
||||
*.lib
|
||||
|
||||
#Clean files from the Game SDK
|
||||
src/discord-game-sdk-cpp/*.cpp
|
||||
src/discord-game-sdk-cpp/*.h
|
||||
src/discord-game-sdk-cpp/*.md
|
||||
src/lib/discord_game_sdk/
|
4
.gitmodules
vendored
4
.gitmodules
vendored
@@ -1,3 +1,3 @@
|
||||
[submodule "lib/godot-cpp"]
|
||||
path = lib/godot-cpp
|
||||
[submodule "src/lib/godot-cpp"]
|
||||
path = src/lib/godot-cpp
|
||||
url = https://github.com/godotengine/godot-cpp
|
||||
|
21
.vscode/c_cpp_properties.json
vendored
Normal file
21
.vscode/c_cpp_properties.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Win32",
|
||||
"includePath": [
|
||||
"${default}"
|
||||
],
|
||||
"defines": [
|
||||
"_DEBUG",
|
||||
"UNICODE",
|
||||
"_UNICODE"
|
||||
],
|
||||
"windowsSdkVersion": "10.0.22621.0",
|
||||
"compilerPath": "cl.exe",
|
||||
"cStandard": "c17",
|
||||
"cppStandard": "c++17",
|
||||
"intelliSenseMode": "windows-msvc-x64"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
12
.vscode/settings.json
vendored
12
.vscode/settings.json
vendored
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"C_Cpp.default.includePath": [
|
||||
"lib/godot-cpp/include",
|
||||
"lib/godot-cpp/gen/include",
|
||||
"lib/godot-cpp/gdextension"
|
||||
"src/lib/godot-cpp/include",
|
||||
"src/lib/godot-cpp/gen/include",
|
||||
"src/lib/godot-cpp/gdextension"
|
||||
],
|
||||
"files.associations": {
|
||||
"xlocbuf": "cpp"
|
||||
}
|
||||
},
|
||||
"[python]": {
|
||||
"editor.defaultFormatter": "ms-python.black-formatter"
|
||||
},
|
||||
"python.formatting.provider": "none"
|
||||
}
|
@@ -45,8 +45,8 @@ func _ready():
|
||||
<br />
|
||||
|
||||
### Credit
|
||||
[@Pukimaa](https://github.com/pukimaa) - Designer
|
||||
|
||||
[@Pukimaa](https://github.com/pukimaa) - Designer<br>
|
||||
[@koyuawsmbrtn](https://github.com/koyuawsmbrtn) - Getting it to work on MacOS (shes giving her best)
|
||||
<br />
|
||||
|
||||
*This project is not endorsed or affiliated with Discord Inc. or the Godot Foundation.*
|
||||
|
56
SConstruct
56
SConstruct
@@ -2,40 +2,62 @@
|
||||
import os
|
||||
|
||||
# Gets the standard flags CC, CCX, etc.
|
||||
env = SConscript("lib/godot-cpp/SConstruct")
|
||||
env = SConscript("src/lib/godot-cpp/SConstruct")
|
||||
|
||||
# Check our platform specifics
|
||||
if env['platform'] == "macos":
|
||||
discord_library = 'libdiscord_game_sdk.dylib'
|
||||
if env["platform"] == "macos":
|
||||
discord_library = "libdiscord_game_sdk.dylib"
|
||||
discord_library_second = "libdiscord_game_sdk_aarch64.dylib"
|
||||
libexportfolder = "/macos/"
|
||||
|
||||
elif env['platform'] in ('linuxbsd', 'linux'):
|
||||
discord_library = 'libdiscord_game_sdk.so'
|
||||
elif env["platform"] in ("linuxbsd", "linux"):
|
||||
discord_library = "libdiscord_game_sdk.so"
|
||||
discord_library_second = ""
|
||||
libexportfolder = "/linux/"
|
||||
|
||||
elif env['platform'] == "windows":
|
||||
discord_library = 'discord_game_sdk.dll'
|
||||
elif env["platform"] == "windows":
|
||||
discord_library = "discord_game_sdk.dll"
|
||||
discord_library_second = "discord_game_sdk_x86.dll"
|
||||
libexportfolder = "/windows/"
|
||||
|
||||
if env['target'] == "template_debug":
|
||||
if env["target"] == "template_debug":
|
||||
debugsuffix = "_debug"
|
||||
else:
|
||||
debugsuffix = ""
|
||||
|
||||
# make sure our binding library is properly includes
|
||||
env.Append(LIBPATH=["lib/discord-game-sdk/"])
|
||||
sources = Glob('src/discord-game-sdk-cpp/*.cpp')
|
||||
env.Append(CPPPATH=['src/discord-game-sdk-cpp'])
|
||||
env.Append(LIBPATH=["src/lib/discord_game_sdk/bin/"])
|
||||
sources = Glob("src/lib/discord_game_sdk/cpp/*.cpp")
|
||||
env.Append(CPPPATH=["src/lib/discord_game_sdk/cpp/"])
|
||||
env.Append(LIBS=["discord_game_sdk"])
|
||||
|
||||
# tweak this if you want to use different folders, or more folders, to store your source code in.
|
||||
env.Append(CPPPATH=['src/'])
|
||||
sources += Glob('src/*.cpp')
|
||||
env.Append(CPPPATH=["src/"])
|
||||
sources += Glob("src/*.cpp")
|
||||
|
||||
# The finished exports
|
||||
library = env.SharedLibrary(target="project/addons/discord-sdk-gd/bin/" +
|
||||
libexportfolder + "discord_game_sdk_binding" + debugsuffix, source=sources)
|
||||
env.Depends(library, Command("project/addons/discord-sdk-gd/bin/" + libexportfolder +
|
||||
discord_library, "lib/discord-game-sdk/" + discord_library, Copy("$TARGET", "$SOURCE")))
|
||||
library = env.SharedLibrary(
|
||||
target="project/addons/discord-sdk-gd/bin/"
|
||||
+ libexportfolder
|
||||
+ "discord_game_sdk_binding"
|
||||
+ debugsuffix,
|
||||
source=sources,
|
||||
)
|
||||
env.Depends(
|
||||
library,
|
||||
Command(
|
||||
"project/addons/discord-sdk-gd/bin/" + libexportfolder + discord_library,
|
||||
"src/lib/discord_game_sdk/bin/" + discord_library,
|
||||
Copy("$TARGET", "$SOURCE"),
|
||||
),
|
||||
)
|
||||
env.Depends(
|
||||
library,
|
||||
Command(
|
||||
"project/addons/discord-sdk-gd/bin/" + libexportfolder + discord_library_second,
|
||||
"src/lib/discord_game_sdk/bin/" + discord_library_second,
|
||||
Copy("$TARGET", "$SOURCE"),
|
||||
),
|
||||
)
|
||||
|
||||
Default(library)
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Submodule lib/godot-cpp deleted from feaba551b5
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -3,8 +3,12 @@ extends EditorExportPlugin
|
||||
|
||||
func _export_file(path, type, features):
|
||||
if features[2] == "windows":
|
||||
add_shared_object("res://addons/discord-sdk-gd/bin/windows/discord_game_sdk.dll",[],"/")
|
||||
if features[4] == "x86_64":
|
||||
add_shared_object("res://addons/discord-sdk-gd/bin/windows/discord_game_sdk.dll",[],"/")
|
||||
elif features[4] == "x86":
|
||||
add_shared_object("res://addons/discord-sdk-gd/bin/windows/discord_game_sdk_x86.dll",[],"/")
|
||||
elif features[2] == "linux":
|
||||
add_shared_object("res://addons/discord-sdk-gd/bin/linux/libdiscord_game_sdk.so",[],"/")
|
||||
elif features[2] == "macos":
|
||||
add_shared_object("res://addons/discord-sdk-gd/bin/macos/libdiscord_game_sdk.dylib",[],"/")
|
||||
add_shared_object("res://addons/discord-sdk-gd/bin/macos/libdiscord_game_sdk_aarch64.dylib",[],"/")
|
||||
|
43
setup.py
43
setup.py
@@ -3,15 +3,42 @@ from distutils.dir_util import copy_tree
|
||||
import shutil
|
||||
import os
|
||||
|
||||
with zipfile.ZipFile("src/discord-game-sdk-cpp/discord_game_sdk.zip", "r") as zip_ref:
|
||||
zip_ref.extractall("src/discord-game-sdk-cpp")
|
||||
with zipfile.ZipFile("src/lib/discord_game_sdk.zip", "r") as zip_ref:
|
||||
zip_ref.extractall("src/lib/discord_game_sdk/")
|
||||
|
||||
copy_tree("src/discord-game-sdk-cpp/cpp", "src/discord-game-sdk-cpp/")
|
||||
copy_tree("src/lib/discord_game_sdk/lib/", "src/lib/discord_game_sdk/bin/")
|
||||
os.rename(
|
||||
"src/lib/discord_game_sdk/bin/aarch64/discord_game_sdk.dylib",
|
||||
"src/lib/discord_game_sdk/bin/aarch64/libdiscord_game_sdk_aarch64.dylib",
|
||||
)
|
||||
os.rename(
|
||||
"src/lib/discord_game_sdk/bin/x86_64/discord_game_sdk.dylib",
|
||||
"src/lib/discord_game_sdk/bin/x86_64/libdiscord_game_sdk.dylib",
|
||||
)
|
||||
os.rename(
|
||||
"src/lib/discord_game_sdk/bin/x86_64/discord_game_sdk.so",
|
||||
"src/lib/discord_game_sdk/bin/x86_64/libdiscord_game_sdk.so",
|
||||
)
|
||||
os.rename(
|
||||
"src/lib/discord_game_sdk/bin/x86/discord_game_sdk.dll",
|
||||
"src/lib/discord_game_sdk/bin/x86/discord_game_sdk_x86.dll",
|
||||
)
|
||||
|
||||
shutil.rmtree("src/discord-game-sdk-cpp/c/", ignore_errors=True)
|
||||
shutil.rmtree("src/discord-game-sdk-cpp/cpp/", ignore_errors=True)
|
||||
shutil.rmtree("src/discord-game-sdk-cpp/csharp/", ignore_errors=True)
|
||||
shutil.rmtree("src/discord-game-sdk-cpp/examples/", ignore_errors=True)
|
||||
shutil.rmtree("src/discord-game-sdk-cpp/lib/", ignore_errors=True)
|
||||
os.rename(
|
||||
"src/lib/discord_game_sdk/bin/x86_64/discord_game_sdk.dll.lib",
|
||||
"src/lib/discord_game_sdk/bin/x86_64/discord_game_sdk.lib",
|
||||
)
|
||||
copy_tree("src/lib/discord_game_sdk/bin/aarch64/", "src/lib/discord_game_sdk/bin/")
|
||||
copy_tree("src/lib/discord_game_sdk/bin/x86/", "src/lib/discord_game_sdk/bin/")
|
||||
copy_tree("src/lib/discord_game_sdk/bin/x86_64/", "src/lib/discord_game_sdk/bin/")
|
||||
|
||||
shutil.rmtree("src/lib/discord_game_sdk/c/", ignore_errors=True)
|
||||
shutil.rmtree("src/lib/discord_game_sdk/csharp/", ignore_errors=True)
|
||||
shutil.rmtree("src/lib/discord_game_sdk/examples/", ignore_errors=True)
|
||||
shutil.rmtree("src/lib/discord_game_sdk/lib/", ignore_errors=True)
|
||||
shutil.rmtree("src/lib/discord_game_sdk/bin/aarch64/", ignore_errors=True)
|
||||
shutil.rmtree("src/lib/discord_game_sdk/bin/x86/", ignore_errors=True)
|
||||
shutil.rmtree("src/lib/discord_game_sdk/bin/x86_64/", ignore_errors=True)
|
||||
os.remove("src/lib/discord_game_sdk/README.md")
|
||||
|
||||
os.system("git submodule update --init")
|
||||
|
@@ -1,5 +1,4 @@
|
||||
#include "discordgodot.h"
|
||||
#include "./discord-game-sdk-cpp/discord.h"
|
||||
#include <godot_cpp/core/class_db.hpp>
|
||||
#include <godot_cpp/classes/editor_plugin.hpp>
|
||||
#include <godot_cpp/variant/utility_functions.hpp>
|
||||
@@ -9,11 +8,6 @@ using namespace godot;
|
||||
|
||||
Discord_SDK *Discord_SDK::singleton = nullptr;
|
||||
|
||||
discord::Core *core{};
|
||||
discord::Result result;
|
||||
discord::Activity activity{};
|
||||
discord::User user{};
|
||||
|
||||
void Discord_SDK::_bind_methods()
|
||||
{
|
||||
ClassDB::bind_method(D_METHOD("debug"), &Discord_SDK::debug);
|
||||
@@ -22,38 +16,16 @@ void Discord_SDK::_bind_methods()
|
||||
ClassDB::bind_method(D_METHOD("get_app_id"), &Discord_SDK::get_app_id);
|
||||
ClassDB::bind_method(D_METHOD("set_app_id", "app_id"), &Discord_SDK::set_app_id);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "app_id"), "set_app_id", "get_app_id");
|
||||
ClassDB::bind_method(D_METHOD("get_state"), &Discord_SDK::get_state);
|
||||
ClassDB::bind_method(D_METHOD("set_state", "state"), &Discord_SDK::set_state);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "state"), "set_state", "get_state");
|
||||
ClassDB::bind_method(D_METHOD("get_details"), &Discord_SDK::get_details);
|
||||
ClassDB::bind_method(D_METHOD("set_details", "details"), &Discord_SDK::set_details);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "details"), "set_details", "get_details");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_large_image"), &Discord_SDK::get_large_image);
|
||||
ClassDB::bind_method(D_METHOD("set_large_image", "large_image"), &Discord_SDK::set_large_image);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "large_image"), "set_large_image", "get_large_image");
|
||||
ClassDB::bind_method(D_METHOD("get_large_image_text"), &Discord_SDK::get_large_image_text);
|
||||
ClassDB::bind_method(D_METHOD("set_large_image_text", "large_image_text"), &Discord_SDK::set_large_image_text);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "large_image_text"), "set_large_image_text", "get_large_image_text");
|
||||
ClassDB::bind_method(D_METHOD("get_small_image"), &Discord_SDK::get_small_image);
|
||||
ClassDB::bind_method(D_METHOD("set_small_image", "small_image"), &Discord_SDK::set_small_image);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "small_image"), "set_small_image", "get_small_image");
|
||||
ClassDB::bind_method(D_METHOD("get_small_image_text"), &Discord_SDK::get_small_image_text);
|
||||
ClassDB::bind_method(D_METHOD("set_small_image_text", "large_small_text"), &Discord_SDK::set_small_image_text);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "small_image_text"), "set_small_image_text", "get_small_image_text");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_start_timestamp"), &Discord_SDK::get_start_timestamp);
|
||||
ClassDB::bind_method(D_METHOD("set_start_timestamp", "start_timestamp"), &Discord_SDK::set_start_timestamp);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "start_timestamp"), "set_start_timestamp", "get_start_timestamp");
|
||||
ClassDB::bind_method(D_METHOD("get_end_timestamp"), &Discord_SDK::get_end_timestamp);
|
||||
ClassDB::bind_method(D_METHOD("set_end_timestamp", "end_timestamp"), &Discord_SDK::set_end_timestamp);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "end_timestamp"), "set_end_timestamp", "get_end_timestamp");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("refresh"), &Discord_SDK::refresh);
|
||||
ClassDB::bind_method(D_METHOD("get_activity"), &Discord_SDK::get_activity);
|
||||
ClassDB::bind_method(D_METHOD("set_activity", "activity"), &Discord_SDK::set_activity);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "activity"), "set_activity", "get_activity");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_is_discord_working"), &Discord_SDK::get_is_discord_working);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_result_int"), &Discord_SDK::get_result_int);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("refresh"), &Discord_SDK::refresh);
|
||||
}
|
||||
|
||||
Discord_SDK *Discord_SDK::get_singleton()
|
||||
@@ -83,16 +55,16 @@ void Discord_SDK::coreupdate()
|
||||
void Discord_SDK::debug()
|
||||
{
|
||||
result = discord::Core::Create(1080224638845591692, DiscordCreateFlags_NoRequireDiscord, &core);
|
||||
activity.SetState("Test from Godot!");
|
||||
activity.SetDetails("I worked months on this");
|
||||
activity.GetAssets().SetLargeImage("test1");
|
||||
activity.GetAssets().SetLargeText("wow test text for large image");
|
||||
activity.GetAssets().SetSmallImage("godot");
|
||||
activity.GetAssets().SetSmallText("wow test text for small image");
|
||||
activity.GetTimestamps().SetStart(1682242800);
|
||||
sdkactivity.SetState("Test from Godot!");
|
||||
sdkactivity.SetDetails("I worked months on this");
|
||||
sdkactivity.GetAssets().SetLargeImage("test1");
|
||||
sdkactivity.GetAssets().SetLargeText("wow test text for large image");
|
||||
sdkactivity.GetAssets().SetSmallImage("godot");
|
||||
sdkactivity.GetAssets().SetSmallText("wow test text for small image");
|
||||
sdkactivity.GetTimestamps().SetStart(1682242800);
|
||||
if (result == discord::Result::Ok)
|
||||
{
|
||||
core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {});
|
||||
core->ActivityManager().UpdateActivity(sdkactivity, [](discord::Result result) {});
|
||||
core->UserManager().OnCurrentUserUpdate.Connect([]()
|
||||
{ core->UserManager().GetCurrentUser(&user); });
|
||||
}
|
||||
@@ -110,91 +82,29 @@ int64_t Discord_SDK::get_app_id() const
|
||||
return app_id;
|
||||
}
|
||||
|
||||
void Discord_SDK::set_state(const String &value)
|
||||
{
|
||||
state = value;
|
||||
activity.SetState(value.utf8().get_data());
|
||||
}
|
||||
String Discord_SDK::get_state() const
|
||||
{
|
||||
return state;
|
||||
}
|
||||
void Discord_SDK::set_details(const String &value)
|
||||
{
|
||||
details = value;
|
||||
activity.SetDetails(value.utf8().get_data());
|
||||
}
|
||||
String Discord_SDK::get_details() const
|
||||
{
|
||||
return details;
|
||||
}
|
||||
void Discord_SDK::set_activity(const Object &value)
|
||||
{ /*
|
||||
activity.state = value.state;
|
||||
activity.details = value.details;
|
||||
activity.large_image = value.large_image;
|
||||
activity.large_image = value.large_image_text;
|
||||
activity.large_image = value.small_image;
|
||||
activity.large_image = value.small_image_text;
|
||||
activity.start_timestamp = value.start_timestamp;
|
||||
activity.end_timestamp = value.end_timestamp;*/
|
||||
|
||||
void Discord_SDK::refresh()
|
||||
{
|
||||
if (result == discord::Result::Ok && app_id > 0)
|
||||
{
|
||||
core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {});
|
||||
core->UserManager().OnCurrentUserUpdate.Connect([]()
|
||||
{ core->UserManager().GetCurrentUser(&user); });
|
||||
}
|
||||
else
|
||||
UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!");
|
||||
sdkactivity.SetState(activity.state.utf8().get_data());
|
||||
sdkactivity.SetDetails(activity.details.utf8().get_data());
|
||||
sdkactivity.GetAssets().SetLargeImage(activity.large_image.utf8().get_data());
|
||||
sdkactivity.GetAssets().SetLargeText(activity.large_image_text.utf8().get_data());
|
||||
sdkactivity.GetAssets().SetSmallImage(activity.small_image.utf8().get_data());
|
||||
sdkactivity.GetAssets().SetSmallText(activity.small_image_text.utf8().get_data());
|
||||
sdkactivity.GetTimestamps().SetStart(activity.start_timestamp);
|
||||
sdkactivity.GetTimestamps().SetEnd(activity.end_timestamp);
|
||||
}
|
||||
|
||||
void Discord_SDK::set_large_image(const String &value)
|
||||
Object Discord_SDK::get_activity() const
|
||||
{
|
||||
large_image = value;
|
||||
activity.GetAssets().SetLargeImage(value.utf8().get_data());
|
||||
}
|
||||
String Discord_SDK::get_large_image() const
|
||||
{
|
||||
return large_image;
|
||||
}
|
||||
void Discord_SDK::set_large_image_text(const String &value)
|
||||
{
|
||||
large_image_text = value;
|
||||
activity.GetAssets().SetLargeText(value.utf8().get_data());
|
||||
}
|
||||
String Discord_SDK::get_large_image_text() const
|
||||
{
|
||||
return large_image_text;
|
||||
}
|
||||
void Discord_SDK::set_small_image(const String &value)
|
||||
{
|
||||
small_image = value;
|
||||
activity.GetAssets().SetSmallImage(value.utf8().get_data());
|
||||
}
|
||||
String Discord_SDK::get_small_image() const
|
||||
{
|
||||
return small_image;
|
||||
}
|
||||
void Discord_SDK::set_small_image_text(const String &value)
|
||||
{
|
||||
small_image_text = value;
|
||||
activity.GetAssets().SetSmallText(value.utf8().get_data());
|
||||
}
|
||||
String Discord_SDK::get_small_image_text() const
|
||||
{
|
||||
return small_image_text;
|
||||
}
|
||||
|
||||
void Discord_SDK::set_start_timestamp(const int64_t &value)
|
||||
{
|
||||
start_timestamp = value;
|
||||
activity.GetTimestamps().SetStart(value);
|
||||
}
|
||||
int64_t Discord_SDK::get_start_timestamp() const
|
||||
{
|
||||
return activity.GetTimestamps().GetStart();
|
||||
}
|
||||
void Discord_SDK::set_end_timestamp(const int64_t &value)
|
||||
{
|
||||
end_timestamp = value;
|
||||
activity.GetTimestamps().SetEnd(value);
|
||||
}
|
||||
int64_t Discord_SDK::get_end_timestamp() const
|
||||
{
|
||||
return activity.GetTimestamps().GetEnd();
|
||||
return activity;
|
||||
}
|
||||
|
||||
bool Discord_SDK::get_is_discord_working() const
|
||||
@@ -206,3 +116,15 @@ int Discord_SDK::get_result_int() const
|
||||
{
|
||||
return static_cast<int>(result);
|
||||
}
|
||||
|
||||
void Discord_SDK::refresh()
|
||||
{
|
||||
if (result == discord::Result::Ok && app_id > 0)
|
||||
{
|
||||
core->ActivityManager().UpdateActivity(sdkactivity, [](discord::Result result) {});
|
||||
core->UserManager().OnCurrentUserUpdate.Connect([]()
|
||||
{ core->UserManager().GetCurrentUser(&user); });
|
||||
}
|
||||
else
|
||||
UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!");
|
||||
}
|
@@ -2,16 +2,21 @@
|
||||
#define DISCORDGODOT_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include "discord-game-sdk-cpp/discord.h"
|
||||
#include "lib/discord_game_sdk/cpp/discord.h"
|
||||
#include <godot_cpp/classes/ref_counted.hpp>
|
||||
#include <godot_cpp/classes/object.hpp>
|
||||
#include <godot_cpp/core/class_db.hpp>
|
||||
|
||||
using namespace godot;
|
||||
|
||||
class Discord_SDK : public Object
|
||||
{
|
||||
GDCLASS(Discord_SDK, Object);
|
||||
discord::Core *core{};
|
||||
discord::Result result;
|
||||
discord::Activity sdkactivity{};
|
||||
discord::User user{};
|
||||
|
||||
class Discord_SDK : public RefCounted
|
||||
{
|
||||
GDCLASS(Discord_SDK, RefCounted);
|
||||
static Discord_SDK *singleton;
|
||||
|
||||
protected:
|
||||
@@ -20,48 +25,49 @@ protected:
|
||||
private:
|
||||
int64_t app_id;
|
||||
|
||||
String state;
|
||||
String details;
|
||||
|
||||
String large_image;
|
||||
String large_image_text;
|
||||
String small_image;
|
||||
String small_image_text;
|
||||
|
||||
int64_t start_timestamp;
|
||||
int64_t end_timestamp;
|
||||
|
||||
public:
|
||||
static Discord_SDK *get_singleton();
|
||||
static Discord_SDK *
|
||||
get_singleton();
|
||||
|
||||
Discord_SDK();
|
||||
~Discord_SDK();
|
||||
|
||||
class activitystruct : public Object
|
||||
{
|
||||
GDCLASS(activitystruct, Object);
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
static activitystruct *
|
||||
get_singleton();
|
||||
|
||||
activitystruct();
|
||||
~activitystruct();
|
||||
|
||||
String state;
|
||||
String details;
|
||||
|
||||
String large_image;
|
||||
String large_image_text;
|
||||
String small_image;
|
||||
String small_image_text;
|
||||
|
||||
int64_t start_timestamp;
|
||||
int64_t end_timestamp;
|
||||
};
|
||||
activitystruct activity;
|
||||
|
||||
void debug();
|
||||
void coreupdate();
|
||||
void refresh();
|
||||
|
||||
int64_t get_app_id() const;
|
||||
|
||||
void set_app_id(const int64_t &value);
|
||||
String get_state() const;
|
||||
void set_state(const String &value);
|
||||
String get_details() const;
|
||||
void set_details(const String &value);
|
||||
|
||||
String get_large_image() const;
|
||||
void set_large_image(const String &value);
|
||||
String get_large_image_text() const;
|
||||
void set_large_image_text(const String &value);
|
||||
String get_small_image() const;
|
||||
void set_small_image(const String &value);
|
||||
String get_small_image_text() const;
|
||||
void set_small_image_text(const String &value);
|
||||
|
||||
int64_t get_start_timestamp() const;
|
||||
void set_start_timestamp(const int64_t &value);
|
||||
int64_t get_end_timestamp() const;
|
||||
void set_end_timestamp(const int64_t &value);
|
||||
void set_activity(const Object &value);
|
||||
Object get_activity() const;
|
||||
|
||||
bool get_is_discord_working() const;
|
||||
int get_result_int() const;
|
||||
|
Binary file not shown.
@@ -10,13 +10,16 @@
|
||||
using namespace godot;
|
||||
|
||||
static Discord_SDK *discordsdk;
|
||||
static Discord_SDK::activitystruct *discordsdkactivity;
|
||||
|
||||
void gdextension_initialize(ModuleInitializationLevel p_level)
|
||||
{
|
||||
if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE)
|
||||
{
|
||||
ClassDB::register_class<Discord_SDK>();
|
||||
ClassDB::register_class<Discord_SDK::activitystruct>();
|
||||
discordsdk = memnew(Discord_SDK);
|
||||
discordsdkactivity = memnew(Discord_SDK::activitystruct);
|
||||
Engine::get_singleton()->register_singleton("Discord_SDK", Discord_SDK::get_singleton());
|
||||
}
|
||||
}
|
||||
@@ -27,6 +30,7 @@ void gdextension_terminate(ModuleInitializationLevel p_level)
|
||||
{
|
||||
Engine::get_singleton()->unregister_singleton("Discord_SDK");
|
||||
memdelete(discordsdk);
|
||||
memdelete(discordsdkactivity);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user