Add custom activity structure type to GDScript
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
#include "discordgodot.h"
|
#include "discordgodot.h"
|
||||||
#include "lib/discord_game_sdk/cpp/discord.h"
|
|
||||||
#include <godot_cpp/core/class_db.hpp>
|
#include <godot_cpp/core/class_db.hpp>
|
||||||
#include <godot_cpp/classes/editor_plugin.hpp>
|
#include <godot_cpp/classes/editor_plugin.hpp>
|
||||||
#include <godot_cpp/variant/utility_functions.hpp>
|
#include <godot_cpp/variant/utility_functions.hpp>
|
||||||
@@ -9,11 +8,6 @@ using namespace godot;
|
|||||||
|
|
||||||
Discord_SDK *Discord_SDK::singleton = nullptr;
|
Discord_SDK *Discord_SDK::singleton = nullptr;
|
||||||
|
|
||||||
discord::Core *core{};
|
|
||||||
discord::Result result;
|
|
||||||
discord::Activity sdkactivity{};
|
|
||||||
discord::User user{};
|
|
||||||
|
|
||||||
void Discord_SDK::_bind_methods()
|
void Discord_SDK::_bind_methods()
|
||||||
{
|
{
|
||||||
ClassDB::bind_method(D_METHOD("debug"), &Discord_SDK::debug);
|
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("get_app_id"), &Discord_SDK::get_app_id);
|
||||||
ClassDB::bind_method(D_METHOD("set_app_id", "app_id"), &Discord_SDK::set_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");
|
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("get_activity"), &Discord_SDK::get_activity);
|
||||||
ClassDB::bind_method(D_METHOD("set_activity", "activity"), &Discord_SDK::set_activity);
|
ClassDB::bind_method(D_METHOD("set_activity", "activity"), &Discord_SDK::set_activity);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "activity"), "set_activity", "get_activity")
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "activity"), "set_activity", "get_activity");
|
||||||
== == == =
|
|
||||||
>>>>>>> 3047e47 (constructed custom activity struct)
|
|
||||||
|
|
||||||
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);
|
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;
|
return app_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Discord_SDK::set_activity(const activitystruct &value)
|
void Discord_SDK::set_activity(const Object &value)
|
||||||
{
|
{ /*
|
||||||
activity = 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.SetState(activity.state.utf8().get_data());
|
||||||
sdkactivity.SetDetails(activity.details.utf8().get_data());
|
sdkactivity.SetDetails(activity.details.utf8().get_data());
|
||||||
sdkactivity.GetAssets().SetLargeImage(activity.large_image.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().SetStart(activity.start_timestamp);
|
||||||
sdkactivity.GetTimestamps().SetEnd(activity.end_timestamp);
|
sdkactivity.GetTimestamps().SetEnd(activity.end_timestamp);
|
||||||
}
|
}
|
||||||
Discord_SDK::activitystruct Discord_SDK::get_activity() const
|
Object Discord_SDK::get_activity() const
|
||||||
{
|
{
|
||||||
return activity;
|
return activity;
|
||||||
}
|
}
|
||||||
|
@@ -3,15 +3,20 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "lib/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/classes/object.hpp>
|
||||||
#include <godot_cpp/core/class_db.hpp>
|
#include <godot_cpp/core/class_db.hpp>
|
||||||
|
|
||||||
using namespace godot;
|
using namespace godot;
|
||||||
|
|
||||||
class Discord_SDK : public Object
|
discord::Core *core{};
|
||||||
{
|
discord::Result result;
|
||||||
GDCLASS(Discord_SDK, Object);
|
discord::Activity sdkactivity{};
|
||||||
|
discord::User user{};
|
||||||
|
|
||||||
|
class Discord_SDK : public RefCounted
|
||||||
|
{
|
||||||
|
GDCLASS(Discord_SDK, RefCounted);
|
||||||
static Discord_SDK *singleton;
|
static Discord_SDK *singleton;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -20,8 +25,27 @@ protected:
|
|||||||
private:
|
private:
|
||||||
int64_t app_id;
|
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 state;
|
||||||
String details;
|
String details;
|
||||||
|
|
||||||
@@ -35,13 +59,6 @@ private:
|
|||||||
};
|
};
|
||||||
activitystruct activity;
|
activitystruct activity;
|
||||||
|
|
||||||
public:
|
|
||||||
static Discord_SDK *
|
|
||||||
get_singleton();
|
|
||||||
|
|
||||||
Discord_SDK();
|
|
||||||
~Discord_SDK();
|
|
||||||
|
|
||||||
void debug();
|
void debug();
|
||||||
void coreupdate();
|
void coreupdate();
|
||||||
void refresh();
|
void refresh();
|
||||||
@@ -49,8 +66,8 @@ public:
|
|||||||
int64_t get_app_id() const;
|
int64_t get_app_id() const;
|
||||||
void set_app_id(const int64_t &value);
|
void set_app_id(const int64_t &value);
|
||||||
|
|
||||||
void set_activity(const activitystruct &value);
|
void set_activity(const Object &value);
|
||||||
activitystruct get_activity() const;
|
Object get_activity() const;
|
||||||
|
|
||||||
bool get_is_discord_working() const;
|
bool get_is_discord_working() const;
|
||||||
int get_result_int() const;
|
int get_result_int() const;
|
||||||
|
@@ -10,13 +10,16 @@
|
|||||||
using namespace godot;
|
using namespace godot;
|
||||||
|
|
||||||
static Discord_SDK *discordsdk;
|
static Discord_SDK *discordsdk;
|
||||||
|
static Discord_SDK::activitystruct *discordsdkactivity;
|
||||||
|
|
||||||
void gdextension_initialize(ModuleInitializationLevel p_level)
|
void gdextension_initialize(ModuleInitializationLevel p_level)
|
||||||
{
|
{
|
||||||
if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE)
|
if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE)
|
||||||
{
|
{
|
||||||
ClassDB::register_class<Discord_SDK>();
|
ClassDB::register_class<Discord_SDK>();
|
||||||
|
ClassDB::register_class<Discord_SDK::activitystruct>();
|
||||||
discordsdk = memnew(Discord_SDK);
|
discordsdk = memnew(Discord_SDK);
|
||||||
|
discordsdkactivity = memnew(Discord_SDK::activitystruct);
|
||||||
Engine::get_singleton()->register_singleton("Discord_SDK", Discord_SDK::get_singleton());
|
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");
|
Engine::get_singleton()->unregister_singleton("Discord_SDK");
|
||||||
memdelete(discordsdk);
|
memdelete(discordsdk);
|
||||||
|
memdelete(discordsdkactivity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user