Add custom activity structure type to GDScript

This commit is contained in:
Yannik
2023-05-05 16:10:05 +02:00
parent c0d4d3f2c0
commit f5df1cb82a
3 changed files with 48 additions and 28 deletions

View File

@@ -1,5 +1,4 @@
#include "discordgodot.h"
#include "lib/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 sdkactivity{};
discord::User user{};
void Discord_SDK::_bind_methods()
{
ClassDB::bind_method(D_METHOD("debug"), &Discord_SDK::debug);
@@ -22,15 +16,12 @@ 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");
<<<<<<< HEAD
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")
== == == =
>>>>>>> 3047e47 (constructed custom activity struct)
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_is_discord_working"), &Discord_SDK::get_is_discord_working);
ClassDB::bind_method(D_METHOD("get_result_int"), &Discord_SDK::get_result_int);
@@ -91,9 +82,17 @@ int64_t Discord_SDK::get_app_id() const
return app_id;
}
void Discord_SDK::set_activity(const activitystruct &value)
{
activity = value;
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;*/
sdkactivity.SetState(activity.state.utf8().get_data());
sdkactivity.SetDetails(activity.details.utf8().get_data());
sdkactivity.GetAssets().SetLargeImage(activity.large_image.utf8().get_data());
@@ -103,7 +102,7 @@ void Discord_SDK::set_activity(const activitystruct &value)
sdkactivity.GetTimestamps().SetStart(activity.start_timestamp);
sdkactivity.GetTimestamps().SetEnd(activity.end_timestamp);
}
Discord_SDK::activitystruct Discord_SDK::get_activity() const
Object Discord_SDK::get_activity() const
{
return activity;
}

View File

@@ -3,15 +3,20 @@
#include <stdio.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,8 +25,27 @@ protected:
private:
int64_t app_id;
struct activitystruct
public:
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;
@@ -35,13 +59,6 @@ private:
};
activitystruct activity;
public:
static Discord_SDK *
get_singleton();
Discord_SDK();
~Discord_SDK();
void debug();
void coreupdate();
void refresh();
@@ -49,8 +66,8 @@ public:
int64_t get_app_id() const;
void set_app_id(const int64_t &value);
void set_activity(const activitystruct &value);
activitystruct get_activity() const;
void set_activity(const Object &value);
Object get_activity() const;
bool get_is_discord_working() const;
int get_result_int() const;

View File

@@ -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);
}
}