From feb65ea93c7894f35bf33a5d96d636f333fe215e Mon Sep 17 00:00:00 2001 From: Ted John Date: Mon, 30 May 2016 18:01:17 +0100 Subject: [PATCH] add option to log chat history --- data/language/en-GB.txt | 2 ++ src/config.c | 1 + src/config.h | 1 + src/localisation/string_ids.h | 2 ++ src/network/network.cpp | 4 ++++ src/windows/multiplayer.c | 22 ++++++++++++++-------- 6 files changed, 24 insertions(+), 8 deletions(-) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index a3e0f05f6c..83b2efd443 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -4173,6 +4173,8 @@ STR_5861 :Key verification failure. STR_5862 :Block unknown players. STR_5863 :{SMALLFONT}{BLACK}Only allow players with known keys to join. STR_5864 :This server only allows whitelisted players to connect. +STR_5865 :Log chat history +STR_5866 :{SMALLFONT}{BLACK}Logs all chat history to files in your user directory. ############# # Scenarios # diff --git a/src/config.c b/src/config.c index 96414ed507..45cd0c1b31 100644 --- a/src/config.c +++ b/src/config.c @@ -254,6 +254,7 @@ config_property_definition _networkDefinitions[] = { { offsetof(network_configuration, provider_email), "provider_email", CONFIG_VALUE_TYPE_STRING, {.value_string = NULL }, NULL }, { offsetof(network_configuration, provider_website), "provider_website", CONFIG_VALUE_TYPE_STRING, {.value_string = NULL }, NULL }, { offsetof(network_configuration, known_keys_only), "known_keys_only", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, + { offsetof(network_configuration, log_chat), "log_chat", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, }; config_property_definition _notificationsDefinitions[] = { diff --git a/src/config.h b/src/config.h index bbdccebe22..50ed7cd0eb 100644 --- a/src/config.h +++ b/src/config.h @@ -230,6 +230,7 @@ typedef struct network_configuration { utf8string provider_email; utf8string provider_website; uint8 known_keys_only; + uint8 log_chat; } network_configuration; typedef struct notification_configuration { diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index 9853314944..c8bc1a4221 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -2637,6 +2637,8 @@ enum { STR_ALLOW_KNOWN_KEYS_ONLY = 5862, STR_ALLOW_KNOWN_KEYS_ONLY_TIP = 5863, STR_MULTIPLAYER_UNKNOWN_KEY_DISALLOWED = 5864, + STR_LOG_CHAT = 5865, + STR_LOG_CHAT_TIP = 5866, // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working STR_COUNT = 32768 diff --git a/src/network/network.cpp b/src/network/network.cpp index 17551e15c9..1b6a28a6ee 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -944,6 +944,10 @@ void Network::BeginChatLog() void Network::AppendChatLog(const utf8 *text) { + if (!gConfigNetwork.log_chat) { + return; + } + const utf8 *chatLogPath = _chatLogPath.c_str(); utf8 directory[MAX_PATH]; diff --git a/src/windows/multiplayer.c b/src/windows/multiplayer.c index 4277a139a3..01a19ebfd2 100644 --- a/src/windows/multiplayer.c +++ b/src/windows/multiplayer.c @@ -50,7 +50,8 @@ enum WINDOW_MULTIPLAYER_WIDGET_IDX { WIDX_SELECTED_GROUP_DROPDOWN, WIDX_PERMISSIONS_LIST, - WIDX_KNOWN_KEYS_ONLY_CHECKBOX = 7, + WIDX_LOG_CHAT_CHECKBOX = 7, + WIDX_KNOWN_KEYS_ONLY_CHECKBOX, }; #define MAIN_MULTIPLAYER_WIDGETS \ @@ -83,7 +84,8 @@ static rct_widget window_multiplayer_groups_widgets[] = { static rct_widget window_multiplayer_options_widgets[] = { MAIN_MULTIPLAYER_WIDGETS, - { WWT_CHECKBOX, 1, 3, 297, 50, 61, STR_ALLOW_KNOWN_KEYS_ONLY, STR_ALLOW_KNOWN_KEYS_ONLY_TIP }, + { WWT_CHECKBOX, 1, 3, 297, 50, 61, STR_LOG_CHAT, STR_LOG_CHAT_TIP }, + { WWT_CHECKBOX, 1, 3, 297, 64, 75, STR_ALLOW_KNOWN_KEYS_ONLY, STR_ALLOW_KNOWN_KEYS_ONLY_TIP }, { WIDGETS_END } }; @@ -96,7 +98,7 @@ static rct_widget *window_multiplayer_page_widgets[] = { const uint64 window_multiplayer_page_enabled_widgets[] = { (1 << WIDX_CLOSE) | (1 << WIDX_TAB1) | (1 << WIDX_TAB2) | (1 << WIDX_TAB3), (1 << WIDX_CLOSE) | (1 << WIDX_TAB1) | (1 << WIDX_TAB2) | (1 << WIDX_TAB3) | (1 << WIDX_DEFAULT_GROUP) | (1 << WIDX_DEFAULT_GROUP_DROPDOWN) | (1 << WIDX_ADD_GROUP) | (1 << WIDX_REMOVE_GROUP) | (1 << WIDX_RENAME_GROUP) | (1 << WIDX_SELECTED_GROUP) | (1 << WIDX_SELECTED_GROUP_DROPDOWN), - (1 << WIDX_CLOSE) | (1 << WIDX_TAB1) | (1 << WIDX_TAB2) | (1 << WIDX_TAB3) | (1 << WIDX_KNOWN_KEYS_ONLY_CHECKBOX), + (1 << WIDX_CLOSE) | (1 << WIDX_TAB1) | (1 << WIDX_TAB2) | (1 << WIDX_TAB3) | (1 << WIDX_LOG_CHAT_CHECKBOX) | (1 << WIDX_KNOWN_KEYS_ONLY_CHECKBOX), }; static uint8 _selectedGroup = 0; @@ -264,11 +266,6 @@ static void window_multiplayer_set_page(rct_window* w, int page){ w->pressed_widgets = 0; w->widgets = window_multiplayer_page_widgets[page]; - if (network_get_mode() == NETWORK_MODE_CLIENT) { - w->widgets[WIDX_TAB3].type = WWT_EMPTY; - w->disabled_widgets |= (1 << WIDX_TAB3); - } - window_event_resize_call(w); window_event_invalidate_call(w); window_init_scroll_widgets(w); @@ -761,6 +758,10 @@ static void window_multiplayer_options_mouseup(rct_window *w, int widgetIndex) window_multiplayer_set_page(w, widgetIndex - WIDX_TAB1); } break; + case WIDX_LOG_CHAT_CHECKBOX: + gConfigNetwork.log_chat = !gConfigNetwork.log_chat; + config_save_default(); + break; case WIDX_KNOWN_KEYS_ONLY_CHECKBOX: gConfigNetwork.known_keys_only = !gConfigNetwork.known_keys_only; config_save_default(); @@ -785,6 +786,11 @@ static void window_multiplayer_options_invalidate(rct_window *w) window_multiplayer_anchor_border_widgets(w); window_align_tabs(w, WIDX_TAB1, WIDX_TAB3); + if (network_get_mode() == NETWORK_MODE_CLIENT) { + w->widgets[WIDX_KNOWN_KEYS_ONLY_CHECKBOX].type = WWT_EMPTY; + } + + widget_set_checkbox_value(w, WIDX_LOG_CHAT_CHECKBOX, gConfigNetwork.log_chat); widget_set_checkbox_value(w, WIDX_KNOWN_KEYS_ONLY_CHECKBOX, gConfigNetwork.known_keys_only); }