added invite signals
This commit is contained in:
59
.vscode/settings.json
vendored
59
.vscode/settings.json
vendored
@@ -4,7 +4,64 @@
|
|||||||
"${workspaceFolder}/src/lib/godot-cpp/include"
|
"${workspaceFolder}/src/lib/godot-cpp/include"
|
||||||
],
|
],
|
||||||
"files.associations": {
|
"files.associations": {
|
||||||
"xlocbuf": "cpp"
|
"xlocbuf": "cpp",
|
||||||
|
"algorithm": "cpp",
|
||||||
|
"array": "cpp",
|
||||||
|
"atomic": "cpp",
|
||||||
|
"bit": "cpp",
|
||||||
|
"cctype": "cpp",
|
||||||
|
"clocale": "cpp",
|
||||||
|
"cmath": "cpp",
|
||||||
|
"compare": "cpp",
|
||||||
|
"concepts": "cpp",
|
||||||
|
"csignal": "cpp",
|
||||||
|
"cstddef": "cpp",
|
||||||
|
"cstdint": "cpp",
|
||||||
|
"cstdio": "cpp",
|
||||||
|
"cstdlib": "cpp",
|
||||||
|
"cstring": "cpp",
|
||||||
|
"ctime": "cpp",
|
||||||
|
"cwchar": "cpp",
|
||||||
|
"exception": "cpp",
|
||||||
|
"functional": "cpp",
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"ios": "cpp",
|
||||||
|
"iosfwd": "cpp",
|
||||||
|
"iostream": "cpp",
|
||||||
|
"istream": "cpp",
|
||||||
|
"iterator": "cpp",
|
||||||
|
"limits": "cpp",
|
||||||
|
"list": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"new": "cpp",
|
||||||
|
"optional": "cpp",
|
||||||
|
"ostream": "cpp",
|
||||||
|
"ratio": "cpp",
|
||||||
|
"set": "cpp",
|
||||||
|
"stdexcept": "cpp",
|
||||||
|
"stop_token": "cpp",
|
||||||
|
"streambuf": "cpp",
|
||||||
|
"string": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"thread": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"typeinfo": "cpp",
|
||||||
|
"unordered_map": "cpp",
|
||||||
|
"utility": "cpp",
|
||||||
|
"vector": "cpp",
|
||||||
|
"xfacet": "cpp",
|
||||||
|
"xhash": "cpp",
|
||||||
|
"xiosbase": "cpp",
|
||||||
|
"xlocale": "cpp",
|
||||||
|
"xlocinfo": "cpp",
|
||||||
|
"xlocnum": "cpp",
|
||||||
|
"xmemory": "cpp",
|
||||||
|
"xstddef": "cpp",
|
||||||
|
"xstring": "cpp",
|
||||||
|
"xtr1common": "cpp",
|
||||||
|
"xtree": "cpp",
|
||||||
|
"xutility": "cpp"
|
||||||
},
|
},
|
||||||
"[python]": {
|
"[python]": {
|
||||||
"editor.defaultFormatter": "ms-python.black-formatter"
|
"editor.defaultFormatter": "ms-python.black-formatter"
|
||||||
|
BIN
discord_addon_export_beta.zip
Normal file
BIN
discord_addon_export_beta.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -4,11 +4,11 @@ extends EditorExportPlugin
|
|||||||
func _export_file(path, type, features):
|
func _export_file(path, type, features):
|
||||||
if features[2] == "windows":
|
if features[2] == "windows":
|
||||||
if features[4] == "x86_64":
|
if features[4] == "x86_64":
|
||||||
add_shared_object("bin/windows/discord_game_sdk.dll",[],"/")
|
add_shared_object("res://addons/discord-sdk-gd/bin/windows/discord_game_sdk.dll",[],"/")
|
||||||
elif features[4] == "x86":
|
elif features[4] == "x86":
|
||||||
add_shared_object("bin/windows/discord_game_sdk_x86.dll",[],"/")
|
add_shared_object("res://addons/discord-sdk-gd/bin/windows/discord_game_sdk_x86.dll",[],"/")
|
||||||
elif features[2] == "linux":
|
elif features[2] == "linux":
|
||||||
add_shared_object("bin/linux/libdiscord_game_sdk.so",[],"/")
|
add_shared_object("res://addons/discord-sdk-gd/bin/linux/libdiscord_game_sdk.so",[],"/")
|
||||||
elif features[2] == "macos":
|
elif features[2] == "macos":
|
||||||
add_shared_object("bin/macos/libdiscord_game_sdk.dylib",[],"/")
|
add_shared_object("res://addons/discord-sdk-gd/bin/macos/libdiscord_game_sdk.dylib",[],"/")
|
||||||
add_shared_object("bin/macos/libdiscord_game_sdk_aarch64.dylib",[],"/")
|
add_shared_object("res://addons/discord-sdk-gd/bin/macos/libdiscord_game_sdk_aarch64.dylib",[],"/")
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta) -> void:
|
||||||
discord_sdk.coreupdate()
|
discord_sdk.coreupdate()
|
||||||
|
@@ -9,18 +9,39 @@ func _ready():
|
|||||||
discord_sdk.large_image_text = "Try it now!"
|
discord_sdk.large_image_text = "Try it now!"
|
||||||
discord_sdk.small_image = "boss"
|
discord_sdk.small_image = "boss"
|
||||||
discord_sdk.small_image_text = "Fighting the end boss! D:"
|
discord_sdk.small_image_text = "Fighting the end boss! D:"
|
||||||
|
|
||||||
discord_sdk.party_id = "my-random-id-can-be-everything"
|
|
||||||
discord_sdk.current_party_size = 1
|
|
||||||
discord_sdk.max_party_size = 4
|
|
||||||
discord_sdk.match_secret = "my-random-match-secret"
|
|
||||||
discord_sdk.join_secret = "my-random-join-secret"
|
|
||||||
discord_sdk.spectate_secret = "my-random-spectate-secret"
|
|
||||||
#discord_sdk.start_timestamp = int(Time.get_unix_time_from_system())
|
|
||||||
discord_sdk.end_timestamp = int(Time.get_unix_time_from_system()) + 3600 # +1 hour in unix time
|
discord_sdk.end_timestamp = int(Time.get_unix_time_from_system()) + 3600 # +1 hour in unix time
|
||||||
|
|
||||||
discord_sdk.register_steam(1389990)
|
var my_secret = str(randi_range(0,999999))
|
||||||
|
|
||||||
|
discord_sdk.party_id = "mylobbycanbeeverything_" + my_secret
|
||||||
|
discord_sdk.current_party_size = 1
|
||||||
|
discord_sdk.max_party_size = 4
|
||||||
|
discord_sdk.match_secret = "m_" + my_secret + ",discord_sdk.current_party_size" #better use seeds with 1 to 1 range instead of just chars
|
||||||
|
discord_sdk.join_secret = "j_" + my_secret + ",discord_sdk.current_party_size"
|
||||||
|
discord_sdk.spectate_secret = "s_" + my_secret
|
||||||
|
#discord_sdk.start_timestamp = int(Time.get_unix_time_from_system())
|
||||||
|
#discord_sdk.register_command("steam://rungameid/1389990")
|
||||||
|
#discord_sdk.register_steam(1389990)
|
||||||
discord_sdk.refresh()
|
discord_sdk.refresh()
|
||||||
|
|
||||||
$Info.text = $Info.text.replace("{discordinfo}",str(discord_sdk.get_is_discord_working())).replace("{id}",str(discord_sdk.app_id)).replace("{details}",discord_sdk.details).replace("{state}",discord_sdk.state).replace("{lkey}",discord_sdk.large_image).replace("{ltext}",discord_sdk.large_image_text).replace("{skey}",discord_sdk.small_image).replace("{stext}",discord_sdk.small_image_text).replace("{stimestamp}",str(discord_sdk.start_timestamp)).replace("{etimestamp}",str(discord_sdk.end_timestamp))
|
func debug_text_update():
|
||||||
|
$Info.text = $Info.text.replace("{ssecret}",discord_sdk.spectate_secret).replace("{jsecret}",discord_sdk.join_secret).replace("{msecret}",discord_sdk.match_secret).replace("{mpartysize}",str(discord_sdk.max_party_size)).replace("{cpartysize}",str(discord_sdk.current_party_size)).replace("{partyid}",discord_sdk.party_id).replace("{discordinfo}",str(discord_sdk.get_is_discord_working())).replace("{id}",str(discord_sdk.app_id)).replace("{details}",discord_sdk.details).replace("{state}",discord_sdk.state).replace("{lkey}",discord_sdk.large_image).replace("{ltext}",discord_sdk.large_image_text).replace("{skey}",discord_sdk.small_image).replace("{stext}",discord_sdk.small_image_text).replace("{stimestamp}",str(discord_sdk.start_timestamp)).replace("{etimestamp}",str(discord_sdk.end_timestamp))
|
||||||
|
|
||||||
|
func _on_activity_join_request(user_requesting):
|
||||||
|
print(user_requesting)
|
||||||
|
|
||||||
|
func _on_activity_join(secret):
|
||||||
|
if(discord_sdk.join_secret != secret):
|
||||||
|
discord_sdk.current_party_size = clamp(int(secret.split(",")[1]) + 1, 0, discord_sdk.max_party_size)
|
||||||
|
discord_sdk.party_id = secret.split(",")[0].replace("j_","mylobbycanbeeverything_")
|
||||||
|
discord_sdk.match_secret = secret.split(",")[0].replace("j_","m_")
|
||||||
|
discord_sdk.join_secret = secret.split(",")[0]
|
||||||
|
discord_sdk.spectate_secret = secret.split(",")[0].replace("j_","s_")
|
||||||
|
discord_sdk.refresh()
|
||||||
|
$Info.text = $Info.text.replace("{ssecret}",discord_sdk.spectate_secret).replace("{jsecret}",discord_sdk.join_secret).replace("{msecret}",discord_sdk.match_secret).replace("{mpartysize}",str(discord_sdk.max_party_size)).replace("{cpartysize}",str(discord_sdk.current_party_size)).replace("{partyid}",discord_sdk.party_id).replace("{discordinfo}",str(discord_sdk.get_is_discord_working())).replace("{id}",str(discord_sdk.app_id)).replace("{details}",discord_sdk.details).replace("{state}",discord_sdk.state).replace("{lkey}",discord_sdk.large_image).replace("{ltext}",discord_sdk.large_image_text).replace("{skey}",discord_sdk.small_image).replace("{stext}",discord_sdk.small_image_text).replace("{stimestamp}",str(discord_sdk.start_timestamp)).replace("{etimestamp}",str(discord_sdk.end_timestamp))
|
||||||
|
print(secret)
|
||||||
|
print(discord_sdk.get_current_party_size())
|
||||||
|
print(discord_sdk.get_join_secret())
|
||||||
|
|
||||||
|
func _on_activity_spectate(secret):
|
||||||
|
print(secret)
|
||||||
|
@@ -58,5 +58,12 @@ Small image key: {skey}
|
|||||||
Small image text: {stext}
|
Small image text: {stext}
|
||||||
|
|
||||||
Start timestamp: {stimestamp}
|
Start timestamp: {stimestamp}
|
||||||
End timestamp: {etimestamp}"
|
End timestamp: {etimestamp}
|
||||||
|
|
||||||
|
Party ID: {partyid}
|
||||||
|
Current party size: {cpartysize}
|
||||||
|
Max party size: {mpartysize}
|
||||||
|
Match secret: {msecret}
|
||||||
|
Join secret: {jsecret}
|
||||||
|
Spectate secret: {ssecret}"
|
||||||
scroll_active = false
|
scroll_active = false
|
||||||
|
@@ -71,7 +71,16 @@ void discord_sdk::_bind_methods()
|
|||||||
ClassDB::bind_method(D_METHOD("set_spectate_secret", "spectate_secret"), &discord_sdk::set_spectate_secret);
|
ClassDB::bind_method(D_METHOD("set_spectate_secret", "spectate_secret"), &discord_sdk::set_spectate_secret);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "spectate_secret"), "set_spectate_secret", "get_spectate_secret");
|
ADD_PROPERTY(PropertyInfo(Variant::STRING, "spectate_secret"), "set_spectate_secret", "get_spectate_secret");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_instanced"), &discord_sdk::get_instanced);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_instanced", "instanced"), &discord_sdk::set_instanced);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "instanced"), "set_instanced", "get_instanced");
|
||||||
|
|
||||||
|
ADD_SIGNAL(MethodInfo("activity_join", PropertyInfo(Variant::STRING, "join_secret")));
|
||||||
|
ADD_SIGNAL(MethodInfo("activity_spectate", PropertyInfo(Variant::STRING, "spectate_secret")));
|
||||||
|
ADD_SIGNAL(MethodInfo("activity_join_request", PropertyInfo(Variant::DICTIONARY, "user_requesting")));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("refresh"), &discord_sdk::refresh);
|
ClassDB::bind_method(D_METHOD("refresh"), &discord_sdk::refresh);
|
||||||
|
ClassDB::bind_method(D_METHOD("clear"), &discord_sdk::clear);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("register_command"), &discord_sdk::register_command);
|
ClassDB::bind_method(D_METHOD("register_command"), &discord_sdk::register_command);
|
||||||
ClassDB::bind_method(D_METHOD("register_steam"), &discord_sdk::register_steam);
|
ClassDB::bind_method(D_METHOD("register_steam"), &discord_sdk::register_steam);
|
||||||
@@ -118,8 +127,6 @@ void discord_sdk::debug()
|
|||||||
if (result == discord::Result::Ok)
|
if (result == discord::Result::Ok)
|
||||||
{
|
{
|
||||||
core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {});
|
core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {});
|
||||||
core->UserManager().OnCurrentUserUpdate.Connect([]()
|
|
||||||
{ core->UserManager().GetCurrentUser(&user); });
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!");
|
UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!");
|
||||||
@@ -128,7 +135,25 @@ void discord_sdk::debug()
|
|||||||
void discord_sdk::set_app_id(int64_t value)
|
void discord_sdk::set_app_id(int64_t value)
|
||||||
{
|
{
|
||||||
app_id = value;
|
app_id = value;
|
||||||
result = discord::Core::Create(value, DiscordCreateFlags_NoRequireDiscord, &core);
|
result = discord::Core::Create(value, DiscordCreateFlags_NoRequireDiscord, &core); // after setting app_ID it initializes everything
|
||||||
|
// signals
|
||||||
|
core->ActivityManager().OnActivityJoin.Connect([](const char *secret)
|
||||||
|
{ discord_sdk::get_singleton()
|
||||||
|
->emit_signal("activity_join", secret); });
|
||||||
|
core->ActivityManager().OnActivitySpectate.Connect([](const char *secret)
|
||||||
|
{ discord_sdk::get_singleton()
|
||||||
|
->emit_signal("activity_spectate", secret); });
|
||||||
|
core->ActivityManager().OnActivityJoinRequest.Connect([this](discord::User const &user)
|
||||||
|
{ Dictionary user_requesting;
|
||||||
|
user_requesting["avatar"] = user.GetAvatar(); //can be empty when user has no avatar
|
||||||
|
user_requesting["is_bot"] = user.GetBot();
|
||||||
|
user_requesting["discriminator"] = user.GetDiscriminator();
|
||||||
|
user_requesting["id"] = user.GetId();
|
||||||
|
user_requesting["username"] = user.GetUsername();
|
||||||
|
user_requesting.make_read_only();
|
||||||
|
discord_sdk::get_singleton()
|
||||||
|
->emit_signal("activity_join_request",user_requesting); });
|
||||||
|
activity.GetParty().SetPrivacy(discord::ActivityPartyPrivacy(DiscordActivityPartyPrivacy_Public));
|
||||||
}
|
}
|
||||||
int64_t discord_sdk::get_app_id()
|
int64_t discord_sdk::get_app_id()
|
||||||
{
|
{
|
||||||
@@ -158,14 +183,21 @@ void discord_sdk::refresh()
|
|||||||
{
|
{
|
||||||
if (result == discord::Result::Ok && app_id > 0)
|
if (result == discord::Result::Ok && app_id > 0)
|
||||||
{
|
{
|
||||||
|
activity.GetParty().SetPrivacy(discord::ActivityPartyPrivacy::Public);
|
||||||
|
activity.SetType(discord::ActivityType::Playing);
|
||||||
core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {});
|
core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {});
|
||||||
core->UserManager().OnCurrentUserUpdate.Connect([]()
|
|
||||||
{ core->UserManager().GetCurrentUser(&user); });
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!");
|
UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void discord_sdk::clear()
|
||||||
|
{
|
||||||
|
if (result == discord::Result::Ok /*should it be only at ok?*/ && app_id > 0)
|
||||||
|
//
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
void discord_sdk::set_large_image(String value)
|
void discord_sdk::set_large_image(String value)
|
||||||
{
|
{
|
||||||
large_image = value;
|
large_image = value;
|
||||||
@@ -279,6 +311,16 @@ String discord_sdk::get_spectate_secret()
|
|||||||
return spectate_secret;
|
return spectate_secret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void discord_sdk::set_instanced(bool value)
|
||||||
|
{
|
||||||
|
instanced = value;
|
||||||
|
activity.SetInstance(value);
|
||||||
|
}
|
||||||
|
bool discord_sdk::get_instanced()
|
||||||
|
{
|
||||||
|
return instanced;
|
||||||
|
}
|
||||||
|
|
||||||
void discord_sdk::register_command(String value)
|
void discord_sdk::register_command(String value)
|
||||||
{
|
{
|
||||||
if (result == discord::Result::Ok && app_id > 0)
|
if (result == discord::Result::Ok && app_id > 0)
|
||||||
|
@@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
#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/object.hpp>
|
#include <godot_cpp/classes/ref_counted.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
|
class discord_sdk : public RefCounted
|
||||||
{
|
{
|
||||||
GDCLASS(discord_sdk, Object);
|
GDCLASS(discord_sdk, Object);
|
||||||
|
|
||||||
@@ -38,6 +38,8 @@ private:
|
|||||||
String join_secret;
|
String join_secret;
|
||||||
String spectate_secret;
|
String spectate_secret;
|
||||||
|
|
||||||
|
bool instanced;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static discord_sdk *
|
static discord_sdk *
|
||||||
get_singleton();
|
get_singleton();
|
||||||
@@ -48,6 +50,7 @@ public:
|
|||||||
void debug();
|
void debug();
|
||||||
void coreupdate();
|
void coreupdate();
|
||||||
void refresh();
|
void refresh();
|
||||||
|
void clear();
|
||||||
|
|
||||||
int64_t get_app_id();
|
int64_t get_app_id();
|
||||||
void set_app_id(int64_t value);
|
void set_app_id(int64_t value);
|
||||||
@@ -84,6 +87,9 @@ public:
|
|||||||
String get_spectate_secret();
|
String get_spectate_secret();
|
||||||
void set_spectate_secret(String value);
|
void set_spectate_secret(String value);
|
||||||
|
|
||||||
|
bool get_instanced();
|
||||||
|
void set_instanced(bool value);
|
||||||
|
|
||||||
void register_command(String value);
|
void register_command(String value);
|
||||||
void register_steam(int32_t value);
|
void register_steam(int32_t value);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user