mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2025-01-08 18:09:45 +01:00
Add Discord Network support.
This commit is contained in:
parent
d4e472db1b
commit
eb21260221
10 changed files with 850 additions and 9 deletions
|
@ -11,6 +11,7 @@ option(BUNDLE_DEPENDENCIES "Use bundled TinyXML-2, PhysicsFS, and FAudio (if dis
|
|||
|
||||
option(STEAM "Use the Steam API" OFF)
|
||||
option(GOG "Use the GOG API" OFF)
|
||||
option(DISCORD "Use the Discord API" OFF)
|
||||
|
||||
option(OFFICIAL_BUILD "Compile an official build of the game" OFF)
|
||||
|
||||
|
@ -19,6 +20,7 @@ option(MAKEANDPLAY "Compile a version of the game without the main campaign (pro
|
|||
if(OFFICIAL_BUILD AND NOT MAKEANDPLAY)
|
||||
set(STEAM ON)
|
||||
set(GOG ON)
|
||||
set(DISCORD ON)
|
||||
endif()
|
||||
|
||||
option(REMOVE_ABSOLUTE_PATHS "If supported by the compiler, replace all absolute paths to source directories compiled into the binary (if any) with relative paths" ON)
|
||||
|
@ -133,6 +135,9 @@ endif()
|
|||
if(GOG)
|
||||
list(APPEND VVV_C_SRC src/GOGNetwork.c)
|
||||
endif()
|
||||
if(DISCORD)
|
||||
list(APPEND VVV_C_SRC src/DiscordNetwork.c)
|
||||
endif()
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
||||
list(APPEND VVV_C_SRC src/SDL_uikit_main.c)
|
||||
endif()
|
||||
|
@ -210,6 +215,9 @@ endif()
|
|||
if(GOG)
|
||||
target_compile_definitions(VVVVVV PRIVATE -DGOG_NETWORK)
|
||||
endif()
|
||||
if(DISCORD)
|
||||
target_compile_definitions(VVVVVV PRIVATE -DDISCORD_NETWORK)
|
||||
endif()
|
||||
|
||||
set(XML2_SRC
|
||||
../third_party/tinyxml2/tinyxml2.cpp
|
||||
|
@ -352,6 +360,10 @@ add_library(c-hashmap-static STATIC ${CHM_SRC})
|
|||
|
||||
add_library(sheenbidi-static STATIC ${SBIDI_SRC})
|
||||
|
||||
# Link after we did all of the other initialisation
|
||||
if(DISCORD)
|
||||
target_link_options(VVVVVV PRIVATE ../../third_party/libdiscord_game_sdk.so)
|
||||
endif()
|
||||
target_compile_definitions(sheenbidi-static PRIVATE
|
||||
-DSB_CONFIG_UNITY
|
||||
)
|
||||
|
|
85
desktop_version/src/DiscordNetwork.c
Normal file
85
desktop_version/src/DiscordNetwork.c
Normal file
|
@ -0,0 +1,85 @@
|
|||
#include "MakeAndPlay.h"
|
||||
|
||||
#ifndef MAKEANDPLAY
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#ifdef _WIN32
|
||||
#include <Windows.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
// Library includes
|
||||
#include <SDL.h>
|
||||
#include "discord_game_sdk.h" // DISCORD HEADERS REQUIRE LINKING AT RUNTIME!!!!!
|
||||
|
||||
#define DISCORD_REQUIRE(x) assert(x == DiscordResult_Ok)
|
||||
|
||||
struct Application {
|
||||
struct IDiscordCore* core;
|
||||
struct IDiscordActivityManager* activityMan;
|
||||
};
|
||||
|
||||
struct DiscordActivity activity;
|
||||
struct Application app;
|
||||
|
||||
|
||||
|
||||
int32_t DISCORD_init(void)
|
||||
{
|
||||
memset(&app, 0, sizeof(app));
|
||||
|
||||
struct DiscordCreateParams params;
|
||||
params.client_id = 1315544357532729447;
|
||||
params.flags = DiscordCreateFlags_Default;
|
||||
|
||||
if(!DiscordCreate(DISCORD_VERSION, ¶ms, &app.core))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
strncpy(activity.state, "On the Main Menu", 128);
|
||||
//strncpy(activity.details, "I'm Sorry", 128);
|
||||
strncpy(activity.assets.large_image, "vvvvvv", 128);
|
||||
strncpy(activity.assets.large_text, "Dimension VVVVVV", 128);
|
||||
|
||||
app.activityMan = app.core->get_activity_manager(app.core);
|
||||
app.activityMan->update_activity(app.activityMan, &activity, NULL, NULL);
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void DISCORD_update(const char *level, const char *name)
|
||||
{
|
||||
if(app.activityMan == NULL)
|
||||
{
|
||||
app.activityMan = app.core->get_activity_manager(app.core);
|
||||
}
|
||||
strncpy(activity.state, name, 127);
|
||||
strncpy(activity.assets.large_image, "vvvvvv", 127);
|
||||
strncpy(activity.assets.large_text, level, 127);
|
||||
activity.state[127] = '\0';
|
||||
activity.assets.large_image[127] = '\0';
|
||||
activity.assets.large_text[127] = '\0';
|
||||
|
||||
app.activityMan->update_activity(app.activityMan, &activity, NULL, NULL);
|
||||
|
||||
DISCORD_REQUIRE(app.core->run_callbacks(app.core));
|
||||
}
|
||||
void DISCORD_unlockAchievement(const char *name)
|
||||
{
|
||||
// No "achivements" in Discord
|
||||
}
|
||||
|
||||
void DISCORD_shutdown(void)
|
||||
{
|
||||
// ???
|
||||
}
|
||||
|
||||
#endif // MakeAndPlay
|
|
@ -15,7 +15,7 @@ void GOG_shutdown(void)
|
|||
{
|
||||
}
|
||||
|
||||
void GOG_update(void)
|
||||
void GOG_update(const char *level, const char *name)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "MakeAndPlay.h"
|
||||
#include "Unused.h"
|
||||
|
@ -10,6 +11,9 @@
|
|||
#ifdef GOG_NETWORK
|
||||
#undef GOG_NETWORK
|
||||
#endif
|
||||
#ifdef DISCORD_NETWORK
|
||||
#undef DISCORD_NETWORK
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef STEAM_NETWORK
|
||||
|
@ -22,12 +26,17 @@
|
|||
#else
|
||||
#define GOG_NUM 0
|
||||
#endif
|
||||
#ifdef DISCORD_NETWORK
|
||||
#define DISCORD_NUM 1
|
||||
#else
|
||||
#define DISCORD_NUM 0
|
||||
#endif
|
||||
|
||||
#define NUM_BACKENDS (STEAM_NUM+GOG_NUM)
|
||||
#define NUM_BACKENDS (STEAM_NUM+GOG_NUM+DISCORD_NUM)
|
||||
#define DECLARE_BACKEND(name) \
|
||||
int32_t name##_init(void); \
|
||||
void name##_shutdown(void); \
|
||||
void name##_update(void); \
|
||||
void name##_update(const char *level, const char *name); \
|
||||
void name##_unlockAchievement(const char *name);
|
||||
#ifdef STEAM_NETWORK
|
||||
DECLARE_BACKEND(STEAM)
|
||||
|
@ -35,6 +44,9 @@ DECLARE_BACKEND(STEAM)
|
|||
#ifdef GOG_NETWORK
|
||||
DECLARE_BACKEND(GOG)
|
||||
#endif
|
||||
#ifdef DISCORD_NETWORK
|
||||
DECLARE_BACKEND(DISCORD)
|
||||
#endif
|
||||
#undef DECLARE_BACKEND
|
||||
|
||||
typedef struct NetworkBackend
|
||||
|
@ -42,7 +54,7 @@ typedef struct NetworkBackend
|
|||
int32_t IsInit;
|
||||
int32_t (*Init)(void);
|
||||
void (*Shutdown)(void);
|
||||
void (*Update)(void);
|
||||
void (*Update)(const char*, const char*);
|
||||
void (*UnlockAchievement)(const char*);
|
||||
} NetworkBackend;
|
||||
|
||||
|
@ -64,6 +76,9 @@ int NETWORK_init(void)
|
|||
#ifdef GOG_NETWORK
|
||||
ASSIGN_BACKEND(GOG, STEAM_NUM)
|
||||
#endif
|
||||
#ifdef DISCORD_NETWORK
|
||||
ASSIGN_BACKEND(DISCORD, STEAM_NUM+GOG_NUM)
|
||||
#endif
|
||||
#undef ASSIGN_BACKEND
|
||||
#if NUM_BACKENDS > 0
|
||||
for (i = 0; i < NUM_BACKENDS; i += 1)
|
||||
|
@ -89,14 +104,14 @@ void NETWORK_shutdown(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
void NETWORK_update(void)
|
||||
void NETWORK_update(const char *level, const char *name)
|
||||
{
|
||||
#if NUM_BACKENDS > 0
|
||||
int32_t i;
|
||||
for (i = 0; i < NUM_BACKENDS; i += 1)
|
||||
if (backends[i].IsInit)
|
||||
{
|
||||
backends[i].Update();
|
||||
backends[i].Update(level, name);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ int32_t NETWORK_init(void);
|
|||
|
||||
void NETWORK_shutdown(void);
|
||||
|
||||
void NETWORK_update(void);
|
||||
void NETWORK_update(const char *level, const char *name);
|
||||
|
||||
void NETWORK_unlockAchievement(const char *name);
|
||||
|
||||
|
|
|
@ -234,7 +234,7 @@ void STEAM_shutdown(void)
|
|||
}
|
||||
}
|
||||
|
||||
void STEAM_update(void)
|
||||
void STEAM_update(const char *level, const char *name)
|
||||
{
|
||||
if (!libHandle)
|
||||
{
|
||||
|
|
729
desktop_version/src/discord_game_sdk.h
Normal file
729
desktop_version/src/discord_game_sdk.h
Normal file
|
@ -0,0 +1,729 @@
|
|||
#ifndef _DISCORD_GAME_SDK_H_
|
||||
#define _DISCORD_GAME_SDK_H_
|
||||
|
||||
#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
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#ifndef __cplusplus
|
||||
#include <stdbool.h>
|
||||
#endif
|
||||
|
||||
#define DISCORD_VERSION 3
|
||||
#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
|
||||
#define DISCORD_OVERLAY_MANAGER_VERSION 2
|
||||
#define DISCORD_STORAGE_MANAGER_VERSION 1
|
||||
#define DISCORD_STORE_MANAGER_VERSION 1
|
||||
#define DISCORD_VOICE_MANAGER_VERSION 1
|
||||
#define DISCORD_ACHIEVEMENT_MANAGER_VERSION 1
|
||||
|
||||
enum EDiscordResult {
|
||||
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,
|
||||
};
|
||||
|
||||
enum EDiscordCreateFlags {
|
||||
DiscordCreateFlags_Default = 0,
|
||||
DiscordCreateFlags_NoRequireDiscord = 1,
|
||||
};
|
||||
|
||||
enum EDiscordLogLevel {
|
||||
DiscordLogLevel_Error = 1,
|
||||
DiscordLogLevel_Warn,
|
||||
DiscordLogLevel_Info,
|
||||
DiscordLogLevel_Debug,
|
||||
};
|
||||
|
||||
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,
|
||||
};
|
||||
|
||||
enum EDiscordImageType {
|
||||
DiscordImageType_User,
|
||||
};
|
||||
|
||||
enum EDiscordActivityPartyPrivacy {
|
||||
DiscordActivityPartyPrivacy_Private = 0,
|
||||
DiscordActivityPartyPrivacy_Public = 1,
|
||||
};
|
||||
|
||||
enum EDiscordActivityType {
|
||||
DiscordActivityType_Playing,
|
||||
DiscordActivityType_Streaming,
|
||||
DiscordActivityType_Listening,
|
||||
DiscordActivityType_Watching,
|
||||
};
|
||||
|
||||
enum EDiscordActivityActionType {
|
||||
DiscordActivityActionType_Join = 1,
|
||||
DiscordActivityActionType_Spectate,
|
||||
};
|
||||
|
||||
enum EDiscordActivitySupportedPlatformFlags {
|
||||
DiscordActivitySupportedPlatformFlags_Desktop = 1,
|
||||
DiscordActivitySupportedPlatformFlags_Android = 2,
|
||||
DiscordActivitySupportedPlatformFlags_iOS = 4,
|
||||
};
|
||||
|
||||
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,
|
||||
};
|
||||
|
||||
enum EDiscordKeyVariant {
|
||||
DiscordKeyVariant_Normal,
|
||||
DiscordKeyVariant_Right,
|
||||
DiscordKeyVariant_Left,
|
||||
};
|
||||
|
||||
enum EDiscordMouseButton {
|
||||
DiscordMouseButton_Left,
|
||||
DiscordMouseButton_Middle,
|
||||
DiscordMouseButton_Right,
|
||||
};
|
||||
|
||||
enum EDiscordEntitlementType {
|
||||
DiscordEntitlementType_Purchase = 1,
|
||||
DiscordEntitlementType_PremiumSubscription,
|
||||
DiscordEntitlementType_DeveloperGift,
|
||||
DiscordEntitlementType_TestModePurchase,
|
||||
DiscordEntitlementType_FreePurchase,
|
||||
DiscordEntitlementType_UserGift,
|
||||
DiscordEntitlementType_PremiumPurchase,
|
||||
};
|
||||
|
||||
enum EDiscordSkuType {
|
||||
DiscordSkuType_Application = 1,
|
||||
DiscordSkuType_DLC,
|
||||
DiscordSkuType_Consumable,
|
||||
DiscordSkuType_Bundle,
|
||||
};
|
||||
|
||||
enum EDiscordInputModeType {
|
||||
DiscordInputModeType_VoiceActivity = 0,
|
||||
DiscordInputModeType_PushToTalk,
|
||||
};
|
||||
|
||||
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;
|
||||
#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];
|
||||
|
||||
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;
|
||||
enum EDiscordActivityPartyPrivacy privacy;
|
||||
};
|
||||
|
||||
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;
|
||||
uint32_t supported_platforms;
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
struct DiscordInputMode {
|
||||
enum EDiscordInputModeType type;
|
||||
char shortcut[256];
|
||||
};
|
||||
|
||||
struct DiscordUserAchievement {
|
||||
DiscordSnowflake user_id;
|
||||
DiscordSnowflake achievement_id;
|
||||
uint8_t percent_complete;
|
||||
DiscordDateTime unlocked_at;
|
||||
};
|
||||
|
||||
struct IDiscordLobbyTransaction {
|
||||
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);
|
||||
};
|
||||
|
||||
struct IDiscordLobbyMemberTransaction {
|
||||
enum EDiscordResult (DISCORD_API *set_metadata)(struct IDiscordLobbyMemberTransaction* lobby_member_transaction, DiscordMetadataKey key, DiscordMetadataValue value);
|
||||
enum EDiscordResult (DISCORD_API *delete_metadata)(struct IDiscordLobbyMemberTransaction* lobby_member_transaction, DiscordMetadataKey key);
|
||||
};
|
||||
|
||||
struct IDiscordLobbySearchQuery {
|
||||
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);
|
||||
};
|
||||
|
||||
typedef void* IDiscordApplicationEvents;
|
||||
|
||||
struct IDiscordApplicationManager {
|
||||
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));
|
||||
};
|
||||
|
||||
struct IDiscordUserEvents {
|
||||
void (DISCORD_API *on_current_user_update)(void* event_data);
|
||||
};
|
||||
|
||||
struct IDiscordUserManager {
|
||||
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);
|
||||
};
|
||||
|
||||
typedef void* IDiscordImageEvents;
|
||||
|
||||
struct IDiscordImageManager {
|
||||
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);
|
||||
};
|
||||
|
||||
struct IDiscordActivityEvents {
|
||||
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);
|
||||
};
|
||||
|
||||
struct IDiscordActivityManager {
|
||||
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));
|
||||
};
|
||||
|
||||
struct IDiscordRelationshipEvents {
|
||||
void (DISCORD_API *on_refresh)(void* event_data);
|
||||
void (DISCORD_API *on_relationship_update)(void* event_data, struct DiscordRelationship* relationship);
|
||||
};
|
||||
|
||||
struct IDiscordRelationshipManager {
|
||||
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);
|
||||
};
|
||||
|
||||
struct IDiscordLobbyEvents {
|
||||
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);
|
||||
};
|
||||
|
||||
struct IDiscordLobbyManager {
|
||||
enum EDiscordResult (DISCORD_API *get_lobby_create_transaction)(struct IDiscordLobbyManager* manager, struct IDiscordLobbyTransaction** transaction);
|
||||
enum EDiscordResult (DISCORD_API *get_lobby_update_transaction)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, struct IDiscordLobbyTransaction** transaction);
|
||||
enum EDiscordResult (DISCORD_API *get_member_update_transaction)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, DiscordUserId user_id, struct IDiscordLobbyMemberTransaction** transaction);
|
||||
void (DISCORD_API *create_lobby)(struct IDiscordLobbyManager* manager, struct IDiscordLobbyTransaction* transaction, void* callback_data, void (DISCORD_API *callback)(void* callback_data, enum EDiscordResult result, struct DiscordLobby* lobby));
|
||||
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, DiscordLobbyId lobby_id, 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, DiscordLobbyId lobby_id, 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, DiscordLobbyId lobby_id, 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, int32_t index, 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);
|
||||
};
|
||||
|
||||
struct IDiscordNetworkEvents {
|
||||
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);
|
||||
};
|
||||
|
||||
struct IDiscordNetworkManager {
|
||||
/**
|
||||
* 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);
|
||||
};
|
||||
|
||||
struct IDiscordOverlayEvents {
|
||||
void (DISCORD_API *on_toggle)(void* event_data, bool locked);
|
||||
};
|
||||
|
||||
struct IDiscordOverlayManager {
|
||||
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);
|
||||
};
|
||||
|
||||
typedef void* IDiscordStorageEvents;
|
||||
|
||||
struct IDiscordStorageManager {
|
||||
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, const char* name, 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);
|
||||
};
|
||||
|
||||
struct IDiscordStoreEvents {
|
||||
void (DISCORD_API *on_entitlement_create)(void* event_data, struct DiscordEntitlement* entitlement);
|
||||
void (DISCORD_API *on_entitlement_delete)(void* event_data, struct DiscordEntitlement* entitlement);
|
||||
};
|
||||
|
||||
struct IDiscordStoreManager {
|
||||
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);
|
||||
};
|
||||
|
||||
typedef void* IDiscordCoreEvents;
|
||||
|
||||
struct IDiscordCore {
|
||||
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);
|
||||
};
|
||||
|
||||
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;
|
||||
struct IDiscordVoiceEvents* voice_events;
|
||||
DiscordVersion voice_version;
|
||||
struct IDiscordAchievementEvents* achievement_events;
|
||||
DiscordVersion achievement_version;
|
||||
};
|
||||
|
||||
#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;
|
||||
params->voice_version = DISCORD_VOICE_MANAGER_VERSION;
|
||||
params->achievement_version = DISCORD_ACHIEVEMENT_MANAGER_VERSION;
|
||||
}
|
||||
|
||||
enum EDiscordResult DISCORD_API DiscordCreate(DiscordVersion version, struct DiscordCreateParams* params, struct IDiscordCore** result);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
BIN
desktop_version/src/libdiscord_game_sdk.so
Normal file
BIN
desktop_version/src/libdiscord_game_sdk.so
Normal file
Binary file not shown.
|
@ -979,7 +979,7 @@ static enum LoopCode loop_begin(void)
|
|||
}
|
||||
|
||||
// Update network per frame.
|
||||
NETWORK_update();
|
||||
NETWORK_update(map.currentarea(game.roomx, game.roomy), loc::gettext_roomname(map.custommode, game.roomx, game.roomy, map.roomname, map.roomname_special));
|
||||
|
||||
return Loop_continue;
|
||||
}
|
||||
|
|
BIN
third_party/libdiscord_game_sdk.so
vendored
Normal file
BIN
third_party/libdiscord_game_sdk.so
vendored
Normal file
Binary file not shown.
Loading…
Reference in a new issue