diff --git a/examples/button-clicker/Assets/DiscordController.cs b/examples/button-clicker/Assets/DiscordController.cs index 5b13215..7319d5f 100644 --- a/examples/button-clicker/Assets/DiscordController.cs +++ b/examples/button-clicker/Assets/DiscordController.cs @@ -31,6 +31,11 @@ public class DiscordController : MonoBehaviour clickCounter++; presence.details = string.Format("Button clicked {0} times", clickCounter); + presence.joinSecret = "aSecret"; + presence.partyId = "aPartyId"; + presence.partySize = 1; + presence.partyMax = 3; + presence.partyPrivacy = DiscordRpc.PartyPrivacy.Public; DiscordRpc.UpdatePresence(presence); } diff --git a/examples/button-clicker/Assets/DiscordRpc.cs b/examples/button-clicker/Assets/DiscordRpc.cs index 92b5c6e..f3b1ee5 100644 --- a/examples/button-clicker/Assets/DiscordRpc.cs +++ b/examples/button-clicker/Assets/DiscordRpc.cs @@ -56,6 +56,7 @@ public class DiscordRpc public IntPtr partyId; /* max 128 bytes */ public int partySize; public int partyMax; + public int partyPrivacy; public IntPtr matchSecret; /* max 128 bytes */ public IntPtr joinSecret; /* max 128 bytes */ public IntPtr spectateSecret; /* max 128 bytes */ @@ -78,6 +79,12 @@ public class DiscordRpc Ignore = 2 } + public enum PartyPrivacy + { + Private = 0, + Public = 1 + } + public static void Initialize(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId) { Callbacks = handlers; @@ -137,6 +144,7 @@ public class DiscordRpc public string partyId; /* max 128 bytes */ public int partySize; public int partyMax; + public PartyPrivacy partyPrivacy; public string matchSecret; /* max 128 bytes */ public string joinSecret; /* max 128 bytes */ public string spectateSecret; /* max 128 bytes */ @@ -164,6 +172,7 @@ public class DiscordRpc _presence.partyId = StrToPtr(partyId); _presence.partySize = partySize; _presence.partyMax = partyMax; + _presence.partyPrivacy = (int)partyPrivacy; _presence.matchSecret = StrToPtr(matchSecret); _presence.joinSecret = StrToPtr(joinSecret); _presence.spectateSecret = StrToPtr(spectateSecret); diff --git a/examples/send-presence/send-presence.c b/examples/send-presence/send-presence.c index 5449cf8..1b651f2 100644 --- a/examples/send-presence/send-presence.c +++ b/examples/send-presence/send-presence.c @@ -47,6 +47,7 @@ static void updateDiscordPresence() discordPresence.partyId = "party1234"; discordPresence.partySize = 1; discordPresence.partyMax = 6; + discordPresence.partyPrivacy = DISCORD_PARTY_PUBLIC; discordPresence.matchSecret = "xyzzy"; discordPresence.joinSecret = "join"; discordPresence.spectateSecret = "look"; diff --git a/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h b/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h index 17e2f9b..5cdb432 100644 --- a/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h +++ b/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h @@ -77,6 +77,8 @@ struct FDiscordRichPresence { UPROPERTY(BlueprintReadWrite) int partyMax; UPROPERTY(BlueprintReadWrite) + int partyPrivacy; + UPROPERTY(BlueprintReadWrite) FString matchSecret; UPROPERTY(BlueprintReadWrite) FString joinSecret; diff --git a/include/discord_rpc.h b/include/discord_rpc.h index 3e1441e..9470434 100644 --- a/include/discord_rpc.h +++ b/include/discord_rpc.h @@ -35,6 +35,7 @@ typedef struct DiscordRichPresence { const char* partyId; /* max 128 bytes */ int partySize; int partyMax; + int partyPrivacy; const char* matchSecret; /* max 128 bytes */ const char* joinSecret; /* max 128 bytes */ const char* spectateSecret; /* max 128 bytes */ @@ -60,6 +61,8 @@ typedef struct DiscordEventHandlers { #define DISCORD_REPLY_NO 0 #define DISCORD_REPLY_YES 1 #define DISCORD_REPLY_IGNORE 2 +#define DISCORD_PARTY_PRIVATE 0 +#define DISCORD_PARTY_PUBLIC 1 DISCORD_EXPORT void Discord_Initialize(const char* applicationId, DiscordEventHandlers* handlers, diff --git a/src/serialization.cpp b/src/serialization.cpp index 6cc1e90..70efa63 100644 --- a/src/serialization.cpp +++ b/src/serialization.cpp @@ -134,7 +134,7 @@ size_t JsonWriteRichPresenceObj(char* dest, } if ((presence->partyId && presence->partyId[0]) || presence->partySize || - presence->partyMax) { + presence->partyMax || presence->partyPrivacy) { WriteObject party(writer, "party"); WriteOptionalString(writer, "id", presence->partyId); if (presence->partySize && presence->partyMax) { @@ -142,6 +142,11 @@ size_t JsonWriteRichPresenceObj(char* dest, writer.Int(presence->partySize); writer.Int(presence->partyMax); } + + if (presence->partyPrivacy) { + WriteKey(writer, "privacy"); + writer.Int(presence->partyPrivacy); + } } if ((presence->matchSecret && presence->matchSecret[0]) ||