From d3735ef0973812c6db03b8be44d0ccb831b47d81 Mon Sep 17 00:00:00 2001 From: MysterD Date: Wed, 14 Oct 2020 21:17:28 -0700 Subject: [PATCH] Prevent people from hosting a discord game when discord fails --- src/menu/custom_menu.c | 8 +++++++- src/pc/network/discord/discord.c | 7 ++++++- src/pc/network/discord/discord.h | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/menu/custom_menu.c b/src/menu/custom_menu.c index e51fda71..98892b3e 100644 --- a/src/menu/custom_menu.c +++ b/src/menu/custom_menu.c @@ -19,6 +19,7 @@ #include "audio/external.h" #include "config.h" #include "pc/network/version.h" +#include "pc/network/discord/discord.h" #define MAIN_MENU_HEADER_TEXT "SM64 COOP" @@ -82,7 +83,12 @@ static void host_menu_draw_strings(void) { char warning[128]; snprintf(warning, 127, "You must forward port '%d' in your router or use Hamachi.", configHostPort); print_generic_ascii_string(0, 15, warning); - + } else if ((configNetworkSystem == 0) && gDiscordFailed) { + f32 red = (f32)fabs(sin(gGlobalTimer / 20.0f)); + gDPSetEnvColor(gDisplayListHead++, 222, 222 * red, 222 * red, gMenuStringAlpha); + char warning[128]; + snprintf(warning, 127, "Discord failed to initialize."); + print_generic_ascii_string(0, 15, warning); } } diff --git a/src/pc/network/discord/discord.c b/src/pc/network/discord/discord.c index 0ac13348..000a0daf 100644 --- a/src/pc/network/discord/discord.c +++ b/src/pc/network/discord/discord.c @@ -19,6 +19,7 @@ static int64_t applicationId = 752700005210390568; struct DiscordApplication app = { 0 }; bool gDiscordInitialized = false; +bool gDiscordFailed = false; void discord_fatal(int rc) { #if defined(_WIN32) || defined(_WIN64) @@ -139,9 +140,13 @@ static bool ns_discord_initialize(enum NetworkType networkType) { params.lobby_events = discord_lobby_initialize(); int rc = DiscordCreate(DISCORD_VERSION, ¶ms, &app.core); - if (rc) { + gDiscordFailed = false; + if (networkType != NT_NONE) { + DISCORD_REQUIRE(rc); + } else if (rc) { LOG_ERROR("DiscordCreate failed: %d", rc); custom_menu_error("Could not detect Discord.\n\nTry closing the game,\nrestarting Discord,\nand opening the game again."); + gDiscordFailed = true; return false; } diff --git a/src/pc/network/discord/discord.h b/src/pc/network/discord/discord.h index f8701ed6..aaa6ec39 100644 --- a/src/pc/network/discord/discord.h +++ b/src/pc/network/discord/discord.h @@ -26,6 +26,7 @@ void discord_fatal(int rc); extern struct NetworkSystem gNetworkSystemDiscord; extern bool gDiscordInitialized; +extern bool gDiscordFailed; struct DiscordApplication { struct IDiscordCore* core;