Add custom activity structure type to GDScript
This commit is contained in:
@@ -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,13 +16,10 @@ 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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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