Actually hook up callbacks
This commit is contained in:
parent
432166ef1d
commit
6dc12b82c6
1 changed files with 39 additions and 3 deletions
|
@ -7,7 +7,8 @@
|
||||||
DEFINE_LOG_CATEGORY(Discord)
|
DEFINE_LOG_CATEGORY(Discord)
|
||||||
|
|
||||||
static UDiscordRpc* self = nullptr;
|
static UDiscordRpc* self = nullptr;
|
||||||
static void ReadyHandler() {
|
static void ReadyHandler()
|
||||||
|
{
|
||||||
UE_LOG(Discord, Log, TEXT("Discord connected"));
|
UE_LOG(Discord, Log, TEXT("Discord connected"));
|
||||||
if (self) {
|
if (self) {
|
||||||
self->IsConnected = true;
|
self->IsConnected = true;
|
||||||
|
@ -15,14 +16,42 @@ static void ReadyHandler() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DisconnectHandler(int errorCode, const char* message) {
|
static void DisconnectHandler(int errorCode, const char* message)
|
||||||
|
{
|
||||||
auto msg = FString(message);
|
auto msg = FString(message);
|
||||||
UE_LOG(Discord, Log, TEXT("Discord disconnected (%d): %s"), errorCode, *msg);
|
UE_LOG(Discord, Log, TEXT("Discord disconnected (%d): %s"), errorCode, *msg);
|
||||||
if (self) {
|
if (self) {
|
||||||
self->IsConnected = false;
|
self->IsConnected = false;
|
||||||
self->OnDisconnected.Broadcast(errorCode, msg);
|
self->OnDisconnected.Broadcast(errorCode, msg);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
static void ErroredHandler(int errorCode, const char* message)
|
||||||
|
{
|
||||||
|
auto msg = FString(message);
|
||||||
|
UE_LOG(Discord, Log, TEXT("Discord error (%d): %s"), errorCode, *msg);
|
||||||
|
if (self) {
|
||||||
|
self->OnErrored.Broadcast(errorCode, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void JoinGameHandler(const char* joinSecret)
|
||||||
|
{
|
||||||
|
auto secret = FString(joinSecret);
|
||||||
|
UE_LOG(Discord, Log, TEXT("Discord join %s"), *secret);
|
||||||
|
if (self) {
|
||||||
|
self->OnJoin.Broadcast(secret);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SpectateGameHandler(const char* spectateSecret)
|
||||||
|
{
|
||||||
|
auto secret = FString(spectateSecret);
|
||||||
|
UE_LOG(Discord, Log, TEXT("Discord spectate %s"), *secret);
|
||||||
|
if (self) {
|
||||||
|
self->OnSpectate.Broadcast(secret);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void UDiscordRpc::Initialize(const FString& applicationId, bool autoRegister)
|
void UDiscordRpc::Initialize(const FString& applicationId, bool autoRegister)
|
||||||
{
|
{
|
||||||
|
@ -31,6 +60,13 @@ void UDiscordRpc::Initialize(const FString& applicationId, bool autoRegister)
|
||||||
DiscordEventHandlers handlers{};
|
DiscordEventHandlers handlers{};
|
||||||
handlers.ready = ReadyHandler;
|
handlers.ready = ReadyHandler;
|
||||||
handlers.disconnected = DisconnectHandler;
|
handlers.disconnected = DisconnectHandler;
|
||||||
|
handlers.errored = ErroredHandler;
|
||||||
|
if (OnJoin.IsBound()) {
|
||||||
|
handlers.joinGame = JoinGameHandler;
|
||||||
|
}
|
||||||
|
if (OnSpectate.IsBound()) {
|
||||||
|
handlers.spectateGame = SpectateGameHandler;
|
||||||
|
}
|
||||||
auto appId = StringCast<ANSICHAR>(*applicationId);
|
auto appId = StringCast<ANSICHAR>(*applicationId);
|
||||||
Discord_Initialize((const char*)appId.Get(), &handlers, autoRegister);
|
Discord_Initialize((const char*)appId.Get(), &handlers, autoRegister);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue