2023-06-20 04:33:09 +00:00
|
|
|
#ifndef _DISCORD_GAME_SDK_H_
|
|
|
|
#define _DISCORD_GAME_SDK_H_
|
|
|
|
|
2024-03-08 09:09:27 +00:00
|
|
|
#ifdef _WIN32
|
|
|
|
#include <Windows.h>
|
|
|
|
#include <dxgi.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
#ifdef _WIN64
|
|
|
|
#define DISCORD_API
|
|
|
|
#else
|
|
|
|
#define DISCORD_API __stdcall
|
|
|
|
#endif
|
|
|
|
#else
|
|
|
|
#define DISCORD_API
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define DISCORD_CALLBACK DISCORD_API
|
|
|
|
|
2023-06-20 04:33:09 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <string.h>
|
|
|
|
#ifndef __cplusplus
|
|
|
|
#include <stdbool.h>
|
|
|
|
#endif
|
|
|
|
|
2024-03-08 09:09:27 +00:00
|
|
|
#define DISCORD_VERSION 3
|
2023-06-20 04:33:09 +00:00
|
|
|
#define DISCORD_APPLICATION_MANAGER_VERSION 1
|
|
|
|
#define DISCORD_USER_MANAGER_VERSION 1
|
|
|
|
#define DISCORD_IMAGE_MANAGER_VERSION 1
|
|
|
|
#define DISCORD_ACTIVITY_MANAGER_VERSION 1
|
|
|
|
#define DISCORD_RELATIONSHIP_MANAGER_VERSION 1
|
|
|
|
#define DISCORD_LOBBY_MANAGER_VERSION 1
|
|
|
|
#define DISCORD_NETWORK_MANAGER_VERSION 1
|
2024-03-08 09:09:27 +00:00
|
|
|
#define DISCORD_OVERLAY_MANAGER_VERSION 2
|
2023-06-20 04:33:09 +00:00
|
|
|
#define DISCORD_STORAGE_MANAGER_VERSION 1
|
|
|
|
#define DISCORD_STORE_MANAGER_VERSION 1
|
2024-03-08 09:09:27 +00:00
|
|
|
#define DISCORD_VOICE_MANAGER_VERSION 1
|
|
|
|
#define DISCORD_ACHIEVEMENT_MANAGER_VERSION 1
|
2023-06-20 04:33:09 +00:00
|
|
|
|
|
|
|
enum EDiscordResult {
|
2024-03-08 09:09:27 +00:00
|
|
|
DiscordResult_Ok = 0,
|
|
|
|
DiscordResult_ServiceUnavailable = 1,
|
|
|
|
DiscordResult_InvalidVersion = 2,
|
|
|
|
DiscordResult_LockFailed = 3,
|
|
|
|
DiscordResult_InternalError = 4,
|
|
|
|
DiscordResult_InvalidPayload = 5,
|
|
|
|
DiscordResult_InvalidCommand = 6,
|
|
|
|
DiscordResult_InvalidPermissions = 7,
|
|
|
|
DiscordResult_NotFetched = 8,
|
|
|
|
DiscordResult_NotFound = 9,
|
|
|
|
DiscordResult_Conflict = 10,
|
|
|
|
DiscordResult_InvalidSecret = 11,
|
|
|
|
DiscordResult_InvalidJoinSecret = 12,
|
|
|
|
DiscordResult_NoEligibleActivity = 13,
|
|
|
|
DiscordResult_InvalidInvite = 14,
|
|
|
|
DiscordResult_NotAuthenticated = 15,
|
|
|
|
DiscordResult_InvalidAccessToken = 16,
|
|
|
|
DiscordResult_ApplicationMismatch = 17,
|
|
|
|
DiscordResult_InvalidDataUrl = 18,
|
|
|
|
DiscordResult_InvalidBase64 = 19,
|
|
|
|
DiscordResult_NotFiltered = 20,
|
|
|
|
DiscordResult_LobbyFull = 21,
|
|
|
|
DiscordResult_InvalidLobbySecret = 22,
|
|
|
|
DiscordResult_InvalidFilename = 23,
|
|
|
|
DiscordResult_InvalidFileSize = 24,
|
|
|
|
DiscordResult_InvalidEntitlement = 25,
|
|
|
|
DiscordResult_NotInstalled = 26,
|
|
|
|
DiscordResult_NotRunning = 27,
|
|
|
|
DiscordResult_InsufficientBuffer = 28,
|
|
|
|
DiscordResult_PurchaseCanceled = 29,
|
|
|
|
DiscordResult_InvalidGuild = 30,
|
|
|
|
DiscordResult_InvalidEvent = 31,
|
|
|
|
DiscordResult_InvalidChannel = 32,
|
|
|
|
DiscordResult_InvalidOrigin = 33,
|
|
|
|
DiscordResult_RateLimited = 34,
|
|
|
|
DiscordResult_OAuth2Error = 35,
|
|
|
|
DiscordResult_SelectChannelTimeout = 36,
|
|
|
|
DiscordResult_GetGuildTimeout = 37,
|
|
|
|
DiscordResult_SelectVoiceForceRequired = 38,
|
|
|
|
DiscordResult_CaptureShortcutAlreadyListening = 39,
|
|
|
|
DiscordResult_UnauthorizedForAchievement = 40,
|
|
|
|
DiscordResult_InvalidGiftCode = 41,
|
|
|
|
DiscordResult_PurchaseError = 42,
|
|
|
|
DiscordResult_TransactionAborted = 43,
|
|
|
|
DiscordResult_DrawingInitFailed = 44,
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
enum EDiscordCreateFlags {
|
|
|
|
DiscordCreateFlags_Default = 0,
|
|
|
|
DiscordCreateFlags_NoRequireDiscord = 1,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum EDiscordLogLevel {
|
|
|
|
DiscordLogLevel_Error = 1,
|
|
|
|
DiscordLogLevel_Warn,
|
|
|
|
DiscordLogLevel_Info,
|
|
|
|
DiscordLogLevel_Debug,
|
|
|
|
};
|
|
|
|
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordUserFlag {
|
|
|
|
DiscordUserFlag_Partner = 2,
|
|
|
|
DiscordUserFlag_HypeSquadEvents = 4,
|
|
|
|
DiscordUserFlag_HypeSquadHouse1 = 64,
|
|
|
|
DiscordUserFlag_HypeSquadHouse2 = 128,
|
|
|
|
DiscordUserFlag_HypeSquadHouse3 = 256,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum EDiscordPremiumType {
|
|
|
|
DiscordPremiumType_None = 0,
|
|
|
|
DiscordPremiumType_Tier1 = 1,
|
|
|
|
DiscordPremiumType_Tier2 = 2,
|
|
|
|
};
|
|
|
|
|
2023-06-20 04:33:09 +00:00
|
|
|
enum EDiscordImageType {
|
|
|
|
DiscordImageType_User,
|
|
|
|
};
|
|
|
|
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordActivityPartyPrivacy {
|
|
|
|
DiscordActivityPartyPrivacy_Private = 0,
|
|
|
|
DiscordActivityPartyPrivacy_Public = 1,
|
|
|
|
};
|
|
|
|
|
2023-06-20 04:33:09 +00:00
|
|
|
enum EDiscordActivityType {
|
|
|
|
DiscordActivityType_Playing,
|
|
|
|
DiscordActivityType_Streaming,
|
|
|
|
DiscordActivityType_Listening,
|
|
|
|
DiscordActivityType_Watching,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum EDiscordActivityActionType {
|
|
|
|
DiscordActivityActionType_Join = 1,
|
|
|
|
DiscordActivityActionType_Spectate,
|
|
|
|
};
|
|
|
|
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordActivitySupportedPlatformFlags {
|
|
|
|
DiscordActivitySupportedPlatformFlags_Desktop = 1,
|
|
|
|
DiscordActivitySupportedPlatformFlags_Android = 2,
|
|
|
|
DiscordActivitySupportedPlatformFlags_iOS = 4,
|
|
|
|
};
|
|
|
|
|
2023-06-20 04:33:09 +00:00
|
|
|
enum EDiscordActivityJoinRequestReply {
|
|
|
|
DiscordActivityJoinRequestReply_No,
|
|
|
|
DiscordActivityJoinRequestReply_Yes,
|
|
|
|
DiscordActivityJoinRequestReply_Ignore,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum EDiscordStatus {
|
|
|
|
DiscordStatus_Offline = 0,
|
|
|
|
DiscordStatus_Online = 1,
|
|
|
|
DiscordStatus_Idle = 2,
|
|
|
|
DiscordStatus_DoNotDisturb = 3,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum EDiscordRelationshipType {
|
|
|
|
DiscordRelationshipType_None,
|
|
|
|
DiscordRelationshipType_Friend,
|
|
|
|
DiscordRelationshipType_Blocked,
|
|
|
|
DiscordRelationshipType_PendingIncoming,
|
|
|
|
DiscordRelationshipType_PendingOutgoing,
|
|
|
|
DiscordRelationshipType_Implicit,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum EDiscordLobbyType {
|
|
|
|
DiscordLobbyType_Private = 1,
|
|
|
|
DiscordLobbyType_Public,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum EDiscordLobbySearchComparison {
|
|
|
|
DiscordLobbySearchComparison_LessThanOrEqual = -2,
|
|
|
|
DiscordLobbySearchComparison_LessThan,
|
|
|
|
DiscordLobbySearchComparison_Equal,
|
|
|
|
DiscordLobbySearchComparison_GreaterThan,
|
|
|
|
DiscordLobbySearchComparison_GreaterThanOrEqual,
|
|
|
|
DiscordLobbySearchComparison_NotEqual,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum EDiscordLobbySearchCast {
|
|
|
|
DiscordLobbySearchCast_String = 1,
|
|
|
|
DiscordLobbySearchCast_Number,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum EDiscordLobbySearchDistance {
|
|
|
|
DiscordLobbySearchDistance_Local,
|
|
|
|
DiscordLobbySearchDistance_Default,
|
|
|
|
DiscordLobbySearchDistance_Extended,
|
|
|
|
DiscordLobbySearchDistance_Global,
|
|
|
|
};
|
|
|
|
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordKeyVariant {
|
|
|
|
DiscordKeyVariant_Normal,
|
|
|
|
DiscordKeyVariant_Right,
|
|
|
|
DiscordKeyVariant_Left,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum EDiscordMouseButton {
|
|
|
|
DiscordMouseButton_Left,
|
|
|
|
DiscordMouseButton_Middle,
|
|
|
|
DiscordMouseButton_Right,
|
|
|
|
};
|
|
|
|
|
2023-06-20 04:33:09 +00:00
|
|
|
enum EDiscordEntitlementType {
|
|
|
|
DiscordEntitlementType_Purchase = 1,
|
|
|
|
DiscordEntitlementType_PremiumSubscription,
|
|
|
|
DiscordEntitlementType_DeveloperGift,
|
2024-03-08 09:09:27 +00:00
|
|
|
DiscordEntitlementType_TestModePurchase,
|
|
|
|
DiscordEntitlementType_FreePurchase,
|
|
|
|
DiscordEntitlementType_UserGift,
|
|
|
|
DiscordEntitlementType_PremiumPurchase,
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
enum EDiscordSkuType {
|
|
|
|
DiscordSkuType_Application = 1,
|
|
|
|
DiscordSkuType_DLC,
|
|
|
|
DiscordSkuType_Consumable,
|
|
|
|
DiscordSkuType_Bundle,
|
|
|
|
};
|
|
|
|
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordInputModeType {
|
|
|
|
DiscordInputModeType_VoiceActivity = 0,
|
|
|
|
DiscordInputModeType_PushToTalk,
|
|
|
|
};
|
|
|
|
|
2023-06-20 04:33:09 +00:00
|
|
|
typedef int64_t DiscordClientId;
|
|
|
|
typedef int32_t DiscordVersion;
|
|
|
|
typedef int64_t DiscordSnowflake;
|
|
|
|
typedef int64_t DiscordTimestamp;
|
|
|
|
typedef DiscordSnowflake DiscordUserId;
|
|
|
|
typedef char DiscordLocale[128];
|
|
|
|
typedef char DiscordBranch[4096];
|
|
|
|
typedef DiscordSnowflake DiscordLobbyId;
|
|
|
|
typedef char DiscordLobbySecret[128];
|
|
|
|
typedef char DiscordMetadataKey[256];
|
|
|
|
typedef char DiscordMetadataValue[4096];
|
|
|
|
typedef uint64_t DiscordNetworkPeerId;
|
|
|
|
typedef uint8_t DiscordNetworkChannelId;
|
2024-03-08 09:09:27 +00:00
|
|
|
#ifdef __APPLE__
|
|
|
|
typedef void IDXGISwapChain;
|
|
|
|
#endif
|
|
|
|
#ifdef __linux__
|
|
|
|
typedef void IDXGISwapChain;
|
|
|
|
#endif
|
|
|
|
#ifdef __APPLE__
|
|
|
|
typedef void MSG;
|
|
|
|
#endif
|
|
|
|
#ifdef __linux__
|
|
|
|
typedef void MSG;
|
|
|
|
#endif
|
|
|
|
typedef char DiscordPath[4096];
|
|
|
|
typedef char DiscordDateTime[64];
|
2023-06-20 04:33:09 +00:00
|
|
|
|
|
|
|
struct DiscordUser {
|
|
|
|
DiscordUserId id;
|
|
|
|
char username[256];
|
|
|
|
char discriminator[8];
|
|
|
|
char avatar[128];
|
|
|
|
bool bot;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordOAuth2Token {
|
|
|
|
char access_token[128];
|
|
|
|
char scopes[1024];
|
|
|
|
DiscordTimestamp expires;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordImageHandle {
|
|
|
|
enum EDiscordImageType type;
|
|
|
|
int64_t id;
|
|
|
|
uint32_t size;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordImageDimensions {
|
|
|
|
uint32_t width;
|
|
|
|
uint32_t height;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordActivityTimestamps {
|
|
|
|
DiscordTimestamp start;
|
|
|
|
DiscordTimestamp end;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordActivityAssets {
|
|
|
|
char large_image[128];
|
|
|
|
char large_text[128];
|
|
|
|
char small_image[128];
|
|
|
|
char small_text[128];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordPartySize {
|
|
|
|
int32_t current_size;
|
|
|
|
int32_t max_size;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordActivityParty {
|
|
|
|
char id[128];
|
|
|
|
struct DiscordPartySize size;
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordActivityPartyPrivacy privacy;
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordActivitySecrets {
|
|
|
|
char match[128];
|
|
|
|
char join[128];
|
|
|
|
char spectate[128];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordActivity {
|
|
|
|
enum EDiscordActivityType type;
|
|
|
|
int64_t application_id;
|
|
|
|
char name[128];
|
|
|
|
char state[128];
|
|
|
|
char details[128];
|
|
|
|
struct DiscordActivityTimestamps timestamps;
|
|
|
|
struct DiscordActivityAssets assets;
|
|
|
|
struct DiscordActivityParty party;
|
|
|
|
struct DiscordActivitySecrets secrets;
|
|
|
|
bool instance;
|
2024-03-08 09:09:27 +00:00
|
|
|
uint32_t supported_platforms;
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordPresence {
|
|
|
|
enum EDiscordStatus status;
|
|
|
|
struct DiscordActivity activity;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordRelationship {
|
|
|
|
enum EDiscordRelationshipType type;
|
|
|
|
struct DiscordUser user;
|
|
|
|
struct DiscordPresence presence;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordLobby {
|
|
|
|
DiscordLobbyId id;
|
|
|
|
enum EDiscordLobbyType type;
|
|
|
|
DiscordUserId owner_id;
|
|
|
|
DiscordLobbySecret secret;
|
|
|
|
uint32_t capacity;
|
|
|
|
bool locked;
|
|
|
|
};
|
|
|
|
|
2024-03-08 09:09:27 +00:00
|
|
|
struct DiscordImeUnderline {
|
|
|
|
int32_t from;
|
|
|
|
int32_t to;
|
|
|
|
uint32_t color;
|
|
|
|
uint32_t background_color;
|
|
|
|
bool thick;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordRect {
|
|
|
|
int32_t left;
|
|
|
|
int32_t top;
|
|
|
|
int32_t right;
|
|
|
|
int32_t bottom;
|
|
|
|
};
|
|
|
|
|
2023-06-20 04:33:09 +00:00
|
|
|
struct DiscordFileStat {
|
|
|
|
char filename[260];
|
|
|
|
uint64_t size;
|
|
|
|
uint64_t last_modified;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordEntitlement {
|
|
|
|
DiscordSnowflake id;
|
|
|
|
enum EDiscordEntitlementType type;
|
|
|
|
DiscordSnowflake sku_id;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordSkuPrice {
|
|
|
|
uint32_t amount;
|
|
|
|
char currency[16];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordSku {
|
|
|
|
DiscordSnowflake id;
|
|
|
|
enum EDiscordSkuType type;
|
|
|
|
char name[256];
|
|
|
|
struct DiscordSkuPrice price;
|
|
|
|
};
|
|
|
|
|
2024-03-08 09:09:27 +00:00
|
|
|
struct DiscordInputMode {
|
|
|
|
enum EDiscordInputModeType type;
|
|
|
|
char shortcut[256];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordUserAchievement {
|
|
|
|
DiscordSnowflake user_id;
|
|
|
|
DiscordSnowflake achievement_id;
|
|
|
|
uint8_t percent_complete;
|
|
|
|
DiscordDateTime unlocked_at;
|
|
|
|
};
|
|
|
|
|
2023-06-20 04:33:09 +00:00
|
|
|
struct IDiscordLobbyTransaction {
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordResult(DISCORD_API* set_type)(struct IDiscordLobbyTransaction* lobby_transaction,
|
|
|
|
enum EDiscordLobbyType type);
|
|
|
|
enum EDiscordResult(DISCORD_API* set_owner)(struct IDiscordLobbyTransaction* lobby_transaction,
|
|
|
|
DiscordUserId owner_id);
|
|
|
|
enum EDiscordResult(DISCORD_API* set_capacity)(
|
|
|
|
struct IDiscordLobbyTransaction* lobby_transaction,
|
|
|
|
uint32_t capacity);
|
|
|
|
enum EDiscordResult(DISCORD_API* set_metadata)(
|
|
|
|
struct IDiscordLobbyTransaction* lobby_transaction,
|
|
|
|
DiscordMetadataKey key,
|
|
|
|
DiscordMetadataValue value);
|
|
|
|
enum EDiscordResult(DISCORD_API* delete_metadata)(
|
|
|
|
struct IDiscordLobbyTransaction* lobby_transaction,
|
|
|
|
DiscordMetadataKey key);
|
|
|
|
enum EDiscordResult(DISCORD_API* set_locked)(struct IDiscordLobbyTransaction* lobby_transaction,
|
|
|
|
bool locked);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordLobbyMemberTransaction {
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordResult(DISCORD_API* set_metadata)(
|
2023-06-20 04:33:09 +00:00
|
|
|
struct IDiscordLobbyMemberTransaction* lobby_member_transaction,
|
|
|
|
DiscordMetadataKey key,
|
|
|
|
DiscordMetadataValue value);
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordResult(DISCORD_API* delete_metadata)(
|
2023-06-20 04:33:09 +00:00
|
|
|
struct IDiscordLobbyMemberTransaction* lobby_member_transaction,
|
|
|
|
DiscordMetadataKey key);
|
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordLobbySearchQuery {
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordResult(DISCORD_API* filter)(struct IDiscordLobbySearchQuery* lobby_search_query,
|
|
|
|
DiscordMetadataKey key,
|
|
|
|
enum EDiscordLobbySearchComparison comparison,
|
|
|
|
enum EDiscordLobbySearchCast cast,
|
|
|
|
DiscordMetadataValue value);
|
|
|
|
enum EDiscordResult(DISCORD_API* sort)(struct IDiscordLobbySearchQuery* lobby_search_query,
|
|
|
|
DiscordMetadataKey key,
|
|
|
|
enum EDiscordLobbySearchCast cast,
|
|
|
|
DiscordMetadataValue value);
|
|
|
|
enum EDiscordResult(DISCORD_API* limit)(struct IDiscordLobbySearchQuery* lobby_search_query,
|
|
|
|
uint32_t limit);
|
|
|
|
enum EDiscordResult(DISCORD_API* distance)(struct IDiscordLobbySearchQuery* lobby_search_query,
|
|
|
|
enum EDiscordLobbySearchDistance distance);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef void* IDiscordApplicationEvents;
|
|
|
|
|
|
|
|
struct IDiscordApplicationManager {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* validate_or_exit)(struct IDiscordApplicationManager* manager,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* get_current_locale)(struct IDiscordApplicationManager* manager,
|
|
|
|
DiscordLocale* locale);
|
|
|
|
void(DISCORD_API* get_current_branch)(struct IDiscordApplicationManager* manager,
|
|
|
|
DiscordBranch* branch);
|
|
|
|
void(DISCORD_API* get_oauth2_token)(
|
|
|
|
struct IDiscordApplicationManager* manager,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result,
|
|
|
|
struct DiscordOAuth2Token* oauth2_token));
|
|
|
|
void(DISCORD_API* get_ticket)(struct IDiscordApplicationManager* manager,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result,
|
|
|
|
const char* data));
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordUserEvents {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* on_current_user_update)(void* event_data);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordUserManager {
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordResult(DISCORD_API* get_current_user)(struct IDiscordUserManager* manager,
|
|
|
|
struct DiscordUser* current_user);
|
|
|
|
void(DISCORD_API* get_user)(struct IDiscordUserManager* manager,
|
|
|
|
DiscordUserId user_id,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result,
|
|
|
|
struct DiscordUser* user));
|
|
|
|
enum EDiscordResult(DISCORD_API* get_current_user_premium_type)(
|
|
|
|
struct IDiscordUserManager* manager,
|
|
|
|
enum EDiscordPremiumType* premium_type);
|
|
|
|
enum EDiscordResult(DISCORD_API* current_user_has_flag)(struct IDiscordUserManager* manager,
|
|
|
|
enum EDiscordUserFlag flag,
|
|
|
|
bool* has_flag);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef void* IDiscordImageEvents;
|
|
|
|
|
|
|
|
struct IDiscordImageManager {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* fetch)(struct IDiscordImageManager* manager,
|
|
|
|
struct DiscordImageHandle handle,
|
|
|
|
bool refresh,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result,
|
|
|
|
struct DiscordImageHandle handle_result));
|
|
|
|
enum EDiscordResult(DISCORD_API* get_dimensions)(struct IDiscordImageManager* manager,
|
|
|
|
struct DiscordImageHandle handle,
|
|
|
|
struct DiscordImageDimensions* dimensions);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_data)(struct IDiscordImageManager* manager,
|
|
|
|
struct DiscordImageHandle handle,
|
|
|
|
uint8_t* data,
|
|
|
|
uint32_t data_length);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordActivityEvents {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* on_activity_join)(void* event_data, const char* secret);
|
|
|
|
void(DISCORD_API* on_activity_spectate)(void* event_data, const char* secret);
|
|
|
|
void(DISCORD_API* on_activity_join_request)(void* event_data, struct DiscordUser* user);
|
|
|
|
void(DISCORD_API* on_activity_invite)(void* event_data,
|
|
|
|
enum EDiscordActivityActionType type,
|
|
|
|
struct DiscordUser* user,
|
|
|
|
struct DiscordActivity* activity);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordActivityManager {
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordResult(DISCORD_API* register_command)(struct IDiscordActivityManager* manager,
|
|
|
|
const char* command);
|
|
|
|
enum EDiscordResult(DISCORD_API* register_steam)(struct IDiscordActivityManager* manager,
|
|
|
|
uint32_t steam_id);
|
|
|
|
void(DISCORD_API* update_activity)(struct IDiscordActivityManager* manager,
|
|
|
|
struct DiscordActivity* activity,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* clear_activity)(struct IDiscordActivityManager* manager,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* send_request_reply)(struct IDiscordActivityManager* manager,
|
|
|
|
DiscordUserId user_id,
|
|
|
|
enum EDiscordActivityJoinRequestReply reply,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* send_invite)(struct IDiscordActivityManager* manager,
|
|
|
|
DiscordUserId user_id,
|
|
|
|
enum EDiscordActivityActionType type,
|
|
|
|
const char* content,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* accept_invite)(struct IDiscordActivityManager* manager,
|
|
|
|
DiscordUserId user_id,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordRelationshipEvents {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* on_refresh)(void* event_data);
|
|
|
|
void(DISCORD_API* on_relationship_update)(void* event_data,
|
|
|
|
struct DiscordRelationship* relationship);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordRelationshipManager {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* filter)(struct IDiscordRelationshipManager* manager,
|
|
|
|
void* filter_data,
|
|
|
|
bool(DISCORD_API* filter)(void* filter_data,
|
|
|
|
struct DiscordRelationship* relationship));
|
|
|
|
enum EDiscordResult(DISCORD_API* count)(struct IDiscordRelationshipManager* manager,
|
|
|
|
int32_t* count);
|
|
|
|
enum EDiscordResult(DISCORD_API* get)(struct IDiscordRelationshipManager* manager,
|
|
|
|
DiscordUserId user_id,
|
|
|
|
struct DiscordRelationship* relationship);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_at)(struct IDiscordRelationshipManager* manager,
|
|
|
|
uint32_t index,
|
|
|
|
struct DiscordRelationship* relationship);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordLobbyEvents {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* on_lobby_update)(void* event_data, int64_t lobby_id);
|
|
|
|
void(DISCORD_API* on_lobby_delete)(void* event_data, int64_t lobby_id, uint32_t reason);
|
|
|
|
void(DISCORD_API* on_member_connect)(void* event_data, int64_t lobby_id, int64_t user_id);
|
|
|
|
void(DISCORD_API* on_member_update)(void* event_data, int64_t lobby_id, int64_t user_id);
|
|
|
|
void(DISCORD_API* on_member_disconnect)(void* event_data, int64_t lobby_id, int64_t user_id);
|
|
|
|
void(DISCORD_API* on_lobby_message)(void* event_data,
|
|
|
|
int64_t lobby_id,
|
|
|
|
int64_t user_id,
|
|
|
|
uint8_t* data,
|
|
|
|
uint32_t data_length);
|
|
|
|
void(DISCORD_API* on_speaking)(void* event_data,
|
|
|
|
int64_t lobby_id,
|
|
|
|
int64_t user_id,
|
|
|
|
bool speaking);
|
|
|
|
void(DISCORD_API* on_network_message)(void* event_data,
|
|
|
|
int64_t lobby_id,
|
|
|
|
int64_t user_id,
|
|
|
|
uint8_t channel_id,
|
|
|
|
uint8_t* data,
|
|
|
|
uint32_t data_length);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordLobbyManager {
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordResult(DISCORD_API* get_lobby_create_transaction)(
|
2023-06-20 04:33:09 +00:00
|
|
|
struct IDiscordLobbyManager* manager,
|
|
|
|
struct IDiscordLobbyTransaction** transaction);
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordResult(DISCORD_API* get_lobby_update_transaction)(
|
2023-06-20 04:33:09 +00:00
|
|
|
struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
struct IDiscordLobbyTransaction** transaction);
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordResult(DISCORD_API* get_member_update_transaction)(
|
2023-06-20 04:33:09 +00:00
|
|
|
struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
DiscordUserId user_id,
|
|
|
|
struct IDiscordLobbyMemberTransaction** transaction);
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* create_lobby)(struct IDiscordLobbyManager* manager,
|
|
|
|
struct IDiscordLobbyTransaction* transaction,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
2023-06-20 04:33:09 +00:00
|
|
|
enum EDiscordResult result,
|
|
|
|
struct DiscordLobby* lobby));
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* update_lobby)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
struct IDiscordLobbyTransaction* transaction,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* delete_lobby)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* connect_lobby)(struct IDiscordLobbyManager* manager,
|
2023-06-20 04:33:09 +00:00
|
|
|
DiscordLobbyId lobby_id,
|
2024-03-08 09:09:27 +00:00
|
|
|
DiscordLobbySecret secret,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result,
|
|
|
|
struct DiscordLobby* lobby));
|
|
|
|
void(DISCORD_API* connect_lobby_with_activity_secret)(
|
|
|
|
struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbySecret activity_secret,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result,
|
|
|
|
struct DiscordLobby* lobby));
|
|
|
|
void(DISCORD_API* disconnect_lobby)(struct IDiscordLobbyManager* manager,
|
2023-06-20 04:33:09 +00:00
|
|
|
DiscordLobbyId lobby_id,
|
2024-03-08 09:09:27 +00:00
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
enum EDiscordResult(DISCORD_API* get_lobby)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
struct DiscordLobby* lobby);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_lobby_activity_secret)(
|
|
|
|
struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
DiscordLobbySecret* secret);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_lobby_metadata_value)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
DiscordMetadataKey key,
|
|
|
|
DiscordMetadataValue* value);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_lobby_metadata_key)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
int32_t index,
|
|
|
|
DiscordMetadataKey* key);
|
|
|
|
enum EDiscordResult(DISCORD_API* lobby_metadata_count)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
int32_t* count);
|
|
|
|
enum EDiscordResult(DISCORD_API* member_count)(struct IDiscordLobbyManager* manager,
|
2023-06-20 04:33:09 +00:00
|
|
|
DiscordLobbyId lobby_id,
|
2024-03-08 09:09:27 +00:00
|
|
|
int32_t* count);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_member_user_id)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
int32_t index,
|
|
|
|
DiscordUserId* user_id);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_member_user)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
DiscordUserId user_id,
|
|
|
|
struct DiscordUser* user);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_member_metadata_value)(
|
|
|
|
struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
DiscordUserId user_id,
|
|
|
|
DiscordMetadataKey key,
|
|
|
|
DiscordMetadataValue* value);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_member_metadata_key)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
DiscordUserId user_id,
|
|
|
|
int32_t index,
|
|
|
|
DiscordMetadataKey* key);
|
|
|
|
enum EDiscordResult(DISCORD_API* member_metadata_count)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
DiscordUserId user_id,
|
|
|
|
int32_t* count);
|
|
|
|
void(DISCORD_API* update_member)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
DiscordUserId user_id,
|
|
|
|
struct IDiscordLobbyMemberTransaction* transaction,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* send_lobby_message)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
uint8_t* data,
|
|
|
|
uint32_t data_length,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
enum EDiscordResult(DISCORD_API* get_search_query)(struct IDiscordLobbyManager* manager,
|
|
|
|
struct IDiscordLobbySearchQuery** query);
|
|
|
|
void(DISCORD_API* search)(struct IDiscordLobbyManager* manager,
|
|
|
|
struct IDiscordLobbySearchQuery* query,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* lobby_count)(struct IDiscordLobbyManager* manager, int32_t* count);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_lobby_id)(struct IDiscordLobbyManager* manager,
|
2023-06-20 04:33:09 +00:00
|
|
|
int32_t index,
|
2024-03-08 09:09:27 +00:00
|
|
|
DiscordLobbyId* lobby_id);
|
|
|
|
void(DISCORD_API* connect_voice)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* disconnect_voice)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
enum EDiscordResult(DISCORD_API* connect_network)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id);
|
|
|
|
enum EDiscordResult(DISCORD_API* disconnect_network)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id);
|
|
|
|
enum EDiscordResult(DISCORD_API* flush_network)(struct IDiscordLobbyManager* manager);
|
|
|
|
enum EDiscordResult(DISCORD_API* open_network_channel)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
uint8_t channel_id,
|
|
|
|
bool reliable);
|
|
|
|
enum EDiscordResult(DISCORD_API* send_network_message)(struct IDiscordLobbyManager* manager,
|
|
|
|
DiscordLobbyId lobby_id,
|
|
|
|
DiscordUserId user_id,
|
|
|
|
uint8_t channel_id,
|
|
|
|
uint8_t* data,
|
|
|
|
uint32_t data_length);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordNetworkEvents {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* on_message)(void* event_data,
|
|
|
|
DiscordNetworkPeerId peer_id,
|
|
|
|
DiscordNetworkChannelId channel_id,
|
|
|
|
uint8_t* data,
|
|
|
|
uint32_t data_length);
|
|
|
|
void(DISCORD_API* on_route_update)(void* event_data, const char* route_data);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordNetworkManager {
|
2024-03-08 09:09:27 +00:00
|
|
|
/**
|
|
|
|
* Get the local peer ID for this process.
|
|
|
|
*/
|
|
|
|
void(DISCORD_API* get_peer_id)(struct IDiscordNetworkManager* manager,
|
|
|
|
DiscordNetworkPeerId* peer_id);
|
|
|
|
/**
|
|
|
|
* Send pending network messages.
|
|
|
|
*/
|
|
|
|
enum EDiscordResult(DISCORD_API* flush)(struct IDiscordNetworkManager* manager);
|
|
|
|
/**
|
|
|
|
* Open a connection to a remote peer.
|
|
|
|
*/
|
|
|
|
enum EDiscordResult(DISCORD_API* open_peer)(struct IDiscordNetworkManager* manager,
|
|
|
|
DiscordNetworkPeerId peer_id,
|
|
|
|
const char* route_data);
|
|
|
|
/**
|
|
|
|
* Update the route data for a connected peer.
|
|
|
|
*/
|
|
|
|
enum EDiscordResult(DISCORD_API* update_peer)(struct IDiscordNetworkManager* manager,
|
|
|
|
DiscordNetworkPeerId peer_id,
|
|
|
|
const char* route_data);
|
|
|
|
/**
|
|
|
|
* Close the connection to a remote peer.
|
|
|
|
*/
|
|
|
|
enum EDiscordResult(DISCORD_API* close_peer)(struct IDiscordNetworkManager* manager,
|
|
|
|
DiscordNetworkPeerId peer_id);
|
|
|
|
/**
|
|
|
|
* Open a message channel to a connected peer.
|
|
|
|
*/
|
|
|
|
enum EDiscordResult(DISCORD_API* open_channel)(struct IDiscordNetworkManager* manager,
|
|
|
|
DiscordNetworkPeerId peer_id,
|
|
|
|
DiscordNetworkChannelId channel_id,
|
|
|
|
bool reliable);
|
|
|
|
/**
|
|
|
|
* Close a message channel to a connected peer.
|
|
|
|
*/
|
|
|
|
enum EDiscordResult(DISCORD_API* close_channel)(struct IDiscordNetworkManager* manager,
|
|
|
|
DiscordNetworkPeerId peer_id,
|
|
|
|
DiscordNetworkChannelId channel_id);
|
|
|
|
/**
|
|
|
|
* Send a message to a connected peer over an opened message channel.
|
|
|
|
*/
|
|
|
|
enum EDiscordResult(DISCORD_API* send_message)(struct IDiscordNetworkManager* manager,
|
|
|
|
DiscordNetworkPeerId peer_id,
|
|
|
|
DiscordNetworkChannelId channel_id,
|
|
|
|
uint8_t* data,
|
|
|
|
uint32_t data_length);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordOverlayEvents {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* on_toggle)(void* event_data, bool locked);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordOverlayManager {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* is_enabled)(struct IDiscordOverlayManager* manager, bool* enabled);
|
|
|
|
void(DISCORD_API* is_locked)(struct IDiscordOverlayManager* manager, bool* locked);
|
|
|
|
void(DISCORD_API* set_locked)(struct IDiscordOverlayManager* manager,
|
|
|
|
bool locked,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* open_activity_invite)(
|
|
|
|
struct IDiscordOverlayManager* manager,
|
|
|
|
enum EDiscordActivityActionType type,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data, enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* open_guild_invite)(struct IDiscordOverlayManager* manager,
|
|
|
|
const char* code,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* open_voice_settings)(struct IDiscordOverlayManager* manager,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
enum EDiscordResult(DISCORD_API* init_drawing_dxgi)(struct IDiscordOverlayManager* manager,
|
|
|
|
IDXGISwapChain* swapchain,
|
|
|
|
bool use_message_forwarding);
|
|
|
|
void(DISCORD_API* on_present)(struct IDiscordOverlayManager* manager);
|
|
|
|
void(DISCORD_API* forward_message)(struct IDiscordOverlayManager* manager, MSG* message);
|
|
|
|
void(DISCORD_API* key_event)(struct IDiscordOverlayManager* manager,
|
|
|
|
bool down,
|
|
|
|
const char* key_code,
|
|
|
|
enum EDiscordKeyVariant variant);
|
|
|
|
void(DISCORD_API* char_event)(struct IDiscordOverlayManager* manager, const char* character);
|
|
|
|
void(DISCORD_API* mouse_button_event)(struct IDiscordOverlayManager* manager,
|
|
|
|
uint8_t down,
|
|
|
|
int32_t click_count,
|
|
|
|
enum EDiscordMouseButton which,
|
|
|
|
int32_t x,
|
|
|
|
int32_t y);
|
|
|
|
void(DISCORD_API* mouse_motion_event)(struct IDiscordOverlayManager* manager,
|
|
|
|
int32_t x,
|
|
|
|
int32_t y);
|
|
|
|
void(DISCORD_API* ime_commit_text)(struct IDiscordOverlayManager* manager, const char* text);
|
|
|
|
void(DISCORD_API* ime_set_composition)(struct IDiscordOverlayManager* manager,
|
|
|
|
const char* text,
|
|
|
|
struct DiscordImeUnderline* underlines,
|
|
|
|
uint32_t underlines_length,
|
|
|
|
int32_t from,
|
|
|
|
int32_t to);
|
|
|
|
void(DISCORD_API* ime_cancel_composition)(struct IDiscordOverlayManager* manager);
|
|
|
|
void(DISCORD_API* set_ime_composition_range_callback)(
|
|
|
|
struct IDiscordOverlayManager* manager,
|
|
|
|
void* on_ime_composition_range_changed_data,
|
|
|
|
void(DISCORD_API* on_ime_composition_range_changed)(
|
|
|
|
void* on_ime_composition_range_changed_data,
|
|
|
|
int32_t from,
|
|
|
|
int32_t to,
|
|
|
|
struct DiscordRect* bounds,
|
|
|
|
uint32_t bounds_length));
|
|
|
|
void(DISCORD_API* set_ime_selection_bounds_callback)(
|
|
|
|
struct IDiscordOverlayManager* manager,
|
|
|
|
void* on_ime_selection_bounds_changed_data,
|
|
|
|
void(DISCORD_API* on_ime_selection_bounds_changed)(void* on_ime_selection_bounds_changed_data,
|
|
|
|
struct DiscordRect anchor,
|
|
|
|
struct DiscordRect focus,
|
|
|
|
bool is_anchor_first));
|
|
|
|
bool(DISCORD_API* is_point_inside_click_zone)(struct IDiscordOverlayManager* manager,
|
|
|
|
int32_t x,
|
|
|
|
int32_t y);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef void* IDiscordStorageEvents;
|
|
|
|
|
|
|
|
struct IDiscordStorageManager {
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordResult(DISCORD_API* read)(struct IDiscordStorageManager* manager,
|
|
|
|
const char* name,
|
|
|
|
uint8_t* data,
|
|
|
|
uint32_t data_length,
|
|
|
|
uint32_t* read);
|
|
|
|
void(DISCORD_API* read_async)(struct IDiscordStorageManager* manager,
|
2023-06-20 04:33:09 +00:00
|
|
|
const char* name,
|
2024-03-08 09:09:27 +00:00
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result,
|
|
|
|
uint8_t* data,
|
|
|
|
uint32_t data_length));
|
|
|
|
void(DISCORD_API* read_async_partial)(struct IDiscordStorageManager* manager,
|
|
|
|
const char* name,
|
|
|
|
uint64_t offset,
|
|
|
|
uint64_t length,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result,
|
|
|
|
uint8_t* data,
|
|
|
|
uint32_t data_length));
|
|
|
|
enum EDiscordResult(DISCORD_API* write)(struct IDiscordStorageManager* manager,
|
|
|
|
const char* name,
|
|
|
|
uint8_t* data,
|
|
|
|
uint32_t data_length);
|
|
|
|
void(DISCORD_API* write_async)(struct IDiscordStorageManager* manager,
|
|
|
|
const char* name,
|
|
|
|
uint8_t* data,
|
|
|
|
uint32_t data_length,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
enum EDiscordResult(DISCORD_API* delete_)(struct IDiscordStorageManager* manager,
|
|
|
|
const char* name);
|
|
|
|
enum EDiscordResult(DISCORD_API* exists)(struct IDiscordStorageManager* manager,
|
|
|
|
const char* name,
|
|
|
|
bool* exists);
|
|
|
|
void(DISCORD_API* count)(struct IDiscordStorageManager* manager, int32_t* count);
|
|
|
|
enum EDiscordResult(DISCORD_API* stat)(struct IDiscordStorageManager* manager,
|
|
|
|
const char* name,
|
|
|
|
struct DiscordFileStat* stat);
|
|
|
|
enum EDiscordResult(DISCORD_API* stat_at)(struct IDiscordStorageManager* manager,
|
|
|
|
int32_t index,
|
|
|
|
struct DiscordFileStat* stat);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_path)(struct IDiscordStorageManager* manager,
|
|
|
|
DiscordPath* path);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordStoreEvents {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* on_entitlement_create)(void* event_data,
|
|
|
|
struct DiscordEntitlement* entitlement);
|
|
|
|
void(DISCORD_API* on_entitlement_delete)(void* event_data,
|
|
|
|
struct DiscordEntitlement* entitlement);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordStoreManager {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* fetch_skus)(struct IDiscordStoreManager* manager,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* count_skus)(struct IDiscordStoreManager* manager, int32_t* count);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_sku)(struct IDiscordStoreManager* manager,
|
|
|
|
DiscordSnowflake sku_id,
|
|
|
|
struct DiscordSku* sku);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_sku_at)(struct IDiscordStoreManager* manager,
|
|
|
|
int32_t index,
|
|
|
|
struct DiscordSku* sku);
|
|
|
|
void(DISCORD_API* fetch_entitlements)(struct IDiscordStoreManager* manager,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* count_entitlements)(struct IDiscordStoreManager* manager, int32_t* count);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_entitlement)(struct IDiscordStoreManager* manager,
|
|
|
|
DiscordSnowflake entitlement_id,
|
|
|
|
struct DiscordEntitlement* entitlement);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_entitlement_at)(struct IDiscordStoreManager* manager,
|
|
|
|
int32_t index,
|
|
|
|
struct DiscordEntitlement* entitlement);
|
|
|
|
enum EDiscordResult(DISCORD_API* has_sku_entitlement)(struct IDiscordStoreManager* manager,
|
|
|
|
DiscordSnowflake sku_id,
|
|
|
|
bool* has_entitlement);
|
|
|
|
void(DISCORD_API* start_purchase)(struct IDiscordStoreManager* manager,
|
|
|
|
DiscordSnowflake sku_id,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordVoiceEvents {
|
|
|
|
void(DISCORD_API* on_settings_update)(void* event_data);
|
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordVoiceManager {
|
|
|
|
enum EDiscordResult(DISCORD_API* get_input_mode)(struct IDiscordVoiceManager* manager,
|
|
|
|
struct DiscordInputMode* input_mode);
|
|
|
|
void(DISCORD_API* set_input_mode)(struct IDiscordVoiceManager* manager,
|
|
|
|
struct DiscordInputMode input_mode,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data,
|
|
|
|
enum EDiscordResult result));
|
|
|
|
enum EDiscordResult(DISCORD_API* is_self_mute)(struct IDiscordVoiceManager* manager,
|
|
|
|
bool* mute);
|
|
|
|
enum EDiscordResult(DISCORD_API* set_self_mute)(struct IDiscordVoiceManager* manager,
|
|
|
|
bool mute);
|
|
|
|
enum EDiscordResult(DISCORD_API* is_self_deaf)(struct IDiscordVoiceManager* manager,
|
|
|
|
bool* deaf);
|
|
|
|
enum EDiscordResult(DISCORD_API* set_self_deaf)(struct IDiscordVoiceManager* manager,
|
|
|
|
bool deaf);
|
|
|
|
enum EDiscordResult(DISCORD_API* is_local_mute)(struct IDiscordVoiceManager* manager,
|
|
|
|
DiscordSnowflake user_id,
|
|
|
|
bool* mute);
|
|
|
|
enum EDiscordResult(DISCORD_API* set_local_mute)(struct IDiscordVoiceManager* manager,
|
|
|
|
DiscordSnowflake user_id,
|
|
|
|
bool mute);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_local_volume)(struct IDiscordVoiceManager* manager,
|
|
|
|
DiscordSnowflake user_id,
|
|
|
|
uint8_t* volume);
|
|
|
|
enum EDiscordResult(DISCORD_API* set_local_volume)(struct IDiscordVoiceManager* manager,
|
|
|
|
DiscordSnowflake user_id,
|
|
|
|
uint8_t volume);
|
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordAchievementEvents {
|
|
|
|
void(DISCORD_API* on_user_achievement_update)(void* event_data,
|
|
|
|
struct DiscordUserAchievement* user_achievement);
|
|
|
|
};
|
|
|
|
|
|
|
|
struct IDiscordAchievementManager {
|
|
|
|
void(DISCORD_API* set_user_achievement)(
|
|
|
|
struct IDiscordAchievementManager* manager,
|
|
|
|
DiscordSnowflake achievement_id,
|
|
|
|
uint8_t percent_complete,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data, enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* fetch_user_achievements)(
|
|
|
|
struct IDiscordAchievementManager* manager,
|
|
|
|
void* callback_data,
|
|
|
|
void(DISCORD_API* callback)(void* callback_data, enum EDiscordResult result));
|
|
|
|
void(DISCORD_API* count_user_achievements)(struct IDiscordAchievementManager* manager,
|
|
|
|
int32_t* count);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_user_achievement)(
|
|
|
|
struct IDiscordAchievementManager* manager,
|
|
|
|
DiscordSnowflake user_achievement_id,
|
|
|
|
struct DiscordUserAchievement* user_achievement);
|
|
|
|
enum EDiscordResult(DISCORD_API* get_user_achievement_at)(
|
|
|
|
struct IDiscordAchievementManager* manager,
|
|
|
|
int32_t index,
|
|
|
|
struct DiscordUserAchievement* user_achievement);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef void* IDiscordCoreEvents;
|
|
|
|
|
|
|
|
struct IDiscordCore {
|
2024-03-08 09:09:27 +00:00
|
|
|
void(DISCORD_API* destroy)(struct IDiscordCore* core);
|
|
|
|
enum EDiscordResult(DISCORD_API* run_callbacks)(struct IDiscordCore* core);
|
|
|
|
void(DISCORD_API* set_log_hook)(struct IDiscordCore* core,
|
|
|
|
enum EDiscordLogLevel min_level,
|
|
|
|
void* hook_data,
|
|
|
|
void(DISCORD_API* hook)(void* hook_data,
|
|
|
|
enum EDiscordLogLevel level,
|
|
|
|
const char* message));
|
|
|
|
struct IDiscordApplicationManager*(DISCORD_API* get_application_manager)(
|
|
|
|
struct IDiscordCore* core);
|
|
|
|
struct IDiscordUserManager*(DISCORD_API* get_user_manager)(struct IDiscordCore* core);
|
|
|
|
struct IDiscordImageManager*(DISCORD_API* get_image_manager)(struct IDiscordCore* core);
|
|
|
|
struct IDiscordActivityManager*(DISCORD_API* get_activity_manager)(struct IDiscordCore* core);
|
|
|
|
struct IDiscordRelationshipManager*(DISCORD_API* get_relationship_manager)(
|
|
|
|
struct IDiscordCore* core);
|
|
|
|
struct IDiscordLobbyManager*(DISCORD_API* get_lobby_manager)(struct IDiscordCore* core);
|
|
|
|
struct IDiscordNetworkManager*(DISCORD_API* get_network_manager)(struct IDiscordCore* core);
|
|
|
|
struct IDiscordOverlayManager*(DISCORD_API* get_overlay_manager)(struct IDiscordCore* core);
|
|
|
|
struct IDiscordStorageManager*(DISCORD_API* get_storage_manager)(struct IDiscordCore* core);
|
|
|
|
struct IDiscordStoreManager*(DISCORD_API* get_store_manager)(struct IDiscordCore* core);
|
|
|
|
struct IDiscordVoiceManager*(DISCORD_API* get_voice_manager)(struct IDiscordCore* core);
|
|
|
|
struct IDiscordAchievementManager*(DISCORD_API* get_achievement_manager)(
|
|
|
|
struct IDiscordCore* core);
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct DiscordCreateParams {
|
|
|
|
DiscordClientId client_id;
|
|
|
|
uint64_t flags;
|
|
|
|
IDiscordCoreEvents* events;
|
|
|
|
void* event_data;
|
|
|
|
IDiscordApplicationEvents* application_events;
|
|
|
|
DiscordVersion application_version;
|
|
|
|
struct IDiscordUserEvents* user_events;
|
|
|
|
DiscordVersion user_version;
|
|
|
|
IDiscordImageEvents* image_events;
|
|
|
|
DiscordVersion image_version;
|
|
|
|
struct IDiscordActivityEvents* activity_events;
|
|
|
|
DiscordVersion activity_version;
|
|
|
|
struct IDiscordRelationshipEvents* relationship_events;
|
|
|
|
DiscordVersion relationship_version;
|
|
|
|
struct IDiscordLobbyEvents* lobby_events;
|
|
|
|
DiscordVersion lobby_version;
|
|
|
|
struct IDiscordNetworkEvents* network_events;
|
|
|
|
DiscordVersion network_version;
|
|
|
|
struct IDiscordOverlayEvents* overlay_events;
|
|
|
|
DiscordVersion overlay_version;
|
|
|
|
IDiscordStorageEvents* storage_events;
|
|
|
|
DiscordVersion storage_version;
|
|
|
|
struct IDiscordStoreEvents* store_events;
|
|
|
|
DiscordVersion store_version;
|
2024-03-08 09:09:27 +00:00
|
|
|
struct IDiscordVoiceEvents* voice_events;
|
|
|
|
DiscordVersion voice_version;
|
|
|
|
struct IDiscordAchievementEvents* achievement_events;
|
|
|
|
DiscordVersion achievement_version;
|
2023-06-20 04:33:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
inline
|
|
|
|
#else
|
|
|
|
static
|
|
|
|
#endif
|
|
|
|
void
|
|
|
|
DiscordCreateParamsSetDefault(struct DiscordCreateParams* params)
|
|
|
|
{
|
|
|
|
memset(params, 0, sizeof(struct DiscordCreateParams));
|
|
|
|
params->application_version = DISCORD_APPLICATION_MANAGER_VERSION;
|
|
|
|
params->user_version = DISCORD_USER_MANAGER_VERSION;
|
|
|
|
params->image_version = DISCORD_IMAGE_MANAGER_VERSION;
|
|
|
|
params->activity_version = DISCORD_ACTIVITY_MANAGER_VERSION;
|
|
|
|
params->relationship_version = DISCORD_RELATIONSHIP_MANAGER_VERSION;
|
|
|
|
params->lobby_version = DISCORD_LOBBY_MANAGER_VERSION;
|
|
|
|
params->network_version = DISCORD_NETWORK_MANAGER_VERSION;
|
|
|
|
params->overlay_version = DISCORD_OVERLAY_MANAGER_VERSION;
|
|
|
|
params->storage_version = DISCORD_STORAGE_MANAGER_VERSION;
|
|
|
|
params->store_version = DISCORD_STORE_MANAGER_VERSION;
|
2024-03-08 09:09:27 +00:00
|
|
|
params->voice_version = DISCORD_VOICE_MANAGER_VERSION;
|
|
|
|
params->achievement_version = DISCORD_ACHIEVEMENT_MANAGER_VERSION;
|
2023-06-20 04:33:09 +00:00
|
|
|
}
|
|
|
|
|
2024-03-08 09:09:27 +00:00
|
|
|
enum EDiscordResult DISCORD_API DiscordCreate(DiscordVersion version,
|
|
|
|
struct DiscordCreateParams* params,
|
|
|
|
struct IDiscordCore** result);
|
2023-06-20 04:33:09 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2024-03-08 09:09:27 +00:00
|
|
|
#endif
|