From ead4c58a48423a2b3e0fe0f3c2964d416bb1da9a Mon Sep 17 00:00:00 2001 From: Dominicentek Date: Sun, 31 May 2026 17:26:46 +0200 Subject: [PATCH] [proximity chat] force disable for public lobbies --- src/pc/audio/audio_sdl.c | 3 +++ src/pc/djui/djui_panel_host_settings.c | 8 +++++++- src/pc/network/network.c | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/pc/audio/audio_sdl.c b/src/pc/audio/audio_sdl.c index a017d4577..aa1378c76 100644 --- a/src/pc/audio/audio_sdl.c +++ b/src/pc/audio/audio_sdl.c @@ -4,6 +4,8 @@ #include "audio_api.h" +#include "pc/proximity_chat.h" + static SDL_AudioDeviceID dev; static SDL_AudioDeviceID capture_dev; static AudioCaptureCallback capture_callback; @@ -43,6 +45,7 @@ static bool audio_sdl_init(void) { .callback = audio_sdl_capture_callback }, NULL, 0); if (capture_dev == 0) { + proxchat_error[0] = PROXCHAT_ERR_NO_MICROPHONE; fprintf(stderr, "SDL_OpenAudio capture error: %s\n", SDL_GetError()); return false; } diff --git a/src/pc/djui/djui_panel_host_settings.c b/src/pc/djui/djui_panel_host_settings.c index 18f7debaa..36306db19 100644 --- a/src/pc/djui/djui_panel_host_settings.c +++ b/src/pc/djui/djui_panel_host_settings.c @@ -45,6 +45,10 @@ static void djui_panel_host_player_text_change(struct DjuiBase* caller) { configAmountOfPlayers = atoi(sPlayerAmount->buffer); } +static bool is_public_coopnet_lobby() { + return configNetworkSystem == NS_COOPNET && configPassword[0] == 0; +} + void djui_panel_host_settings_create(struct DjuiBase* caller) { struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(HOST_SETTINGS, SETTINGS), false); struct DjuiBase* body = djui_three_panel_get_body(panel); @@ -75,7 +79,9 @@ void djui_panel_host_settings_create(struct DjuiBase* caller) { struct DjuiCheckbox* chkDevMode = djui_checkbox_create(body, DLANG(HOST_SETTINGS, MOD_DEV_MODE), (configNetworkSystem == NS_SOCKET) ? &configModDevMode : &sFalse, NULL); djui_base_set_enabled(&chkDevMode->base, configNetworkSystem == NS_SOCKET); - djui_checkbox_create(body, DLANG(HOST_SETTINGS, PROXIMITY_CHAT), &configProximityChat, NULL); + if (is_public_coopnet_lobby()) configProximityChat = false; + struct DjuiCheckbox* chkProxchat = djui_checkbox_create(body, DLANG(HOST_SETTINGS, PROXIMITY_CHAT), &configProximityChat, NULL); + djui_base_set_enabled(&chkProxchat->base, !is_public_coopnet_lobby()); struct DjuiRect* rect1 = djui_rect_container_create(body, 32); { diff --git a/src/pc/network/network.c b/src/pc/network/network.c index 7609c6c06..c5b6128da 100644 --- a/src/pc/network/network.c +++ b/src/pc/network/network.c @@ -135,7 +135,7 @@ bool network_init(enum NetworkType inNetworkType, bool reconnecting) { gServerSettings.enablePlayersInLevelDisplay = TRUE; gServerSettings.enablePlayerList = TRUE; gServerSettings.nametags = configNametags; - gServerSettings.proximityChat = configProximityChat; + gServerSettings.proximityChat = configProximityChat && !(configNetworkSystem == NS_COOPNET && configPassword[0] == 0); gServerSettings.maxPlayers = configAmountOfPlayers; gServerSettings.pauseAnywhere = configPauseAnywhere; gServerSettings.pvpType = configPvpType;