From 3988b7797ebddc08898a610b50f74e973ab7180a Mon Sep 17 00:00:00 2001 From: Ted John Date: Sun, 11 Jun 2017 18:19:15 +0100 Subject: [PATCH] Fix display of chat shortcut on network games (#5593) --- src/openrct2-ui/WindowManager.cpp | 7 +++++++ src/openrct2/network/network.cpp | 15 ++++++++++----- src/openrct2/ui/DummyWindowManager.cpp | 1 + src/openrct2/ui/WindowManager.h | 2 ++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/openrct2-ui/WindowManager.cpp b/src/openrct2-ui/WindowManager.cpp index 041502635e..ec1b625f96 100644 --- a/src/openrct2-ui/WindowManager.cpp +++ b/src/openrct2-ui/WindowManager.cpp @@ -49,6 +49,13 @@ public: { get_keyboard_map_scroll(keysState, x, y); } + + std::string GetKeyboardShortcutString(sint32 shortcut) override + { + utf8 buffer[256]; + keyboard_shortcuts_format_string(buffer, sizeof(buffer), shortcut); + return std::string(buffer); + } }; IWindowManager * OpenRCT2::Ui::CreateWindowManager() diff --git a/src/openrct2/network/network.cpp b/src/openrct2/network/network.cpp index a7bcb1eb18..dc32c2c993 100644 --- a/src/openrct2/network/network.cpp +++ b/src/openrct2/network/network.cpp @@ -14,9 +14,12 @@ *****************************************************************************/ #pragma endregion +#include "../Context.h" #include "../core/Guard.hpp" #include "../OpenRCT2.h" #include "../PlatformEnvironment.h" +#include "../ui/UiContext.h" +#include "../ui/WindowManager.h" extern "C" { #include "../platform/platform.h" @@ -2361,14 +2364,16 @@ const char* network_get_group_name(uint32 index) void network_chat_show_connected_message() { - char templateBuffer[128]; - char *templateString = templateBuffer; - // keyboard_shortcuts_format_string(templateBuffer, sizeof(templateBuffer), SHORTCUT_OPEN_CHAT_WINDOW); + auto windowManager = GetContext()->GetUiContext()->GetWindowManager(); + std::string s = windowManager->GetKeyboardShortcutString(41 /* SHORTCUT_OPEN_CHAT_WINDOW */); + const char * sptr = s.c_str(); + utf8 buffer[256]; + format_string(buffer, sizeof(buffer), STR_MULTIPLAYER_CONNECTED_CHAT_HINT, &sptr); + NetworkPlayer server; server.Name = "Server"; - format_string(buffer, 256, STR_MULTIPLAYER_CONNECTED_CHAT_HINT, &templateString); - const char *formatted = Network::FormatChat(&server, buffer); + const char * formatted = Network::FormatChat(&server, buffer); chat_history_add(formatted); } diff --git a/src/openrct2/ui/DummyWindowManager.cpp b/src/openrct2/ui/DummyWindowManager.cpp index 8d3102fc54..3f6d8bfcf7 100644 --- a/src/openrct2/ui/DummyWindowManager.cpp +++ b/src/openrct2/ui/DummyWindowManager.cpp @@ -23,6 +23,7 @@ namespace OpenRCT2 { namespace Ui rct_window * OpenWindow(rct_windowclass wc) override { return nullptr; } void HandleKeyboardShortcut(sint32 key) override { } void GetKeyboardMapScroll(const uint8 * keysState, sint32 * x, sint32 * y) override { } + std::string GetKeyboardShortcutString(sint32 shortcut) override { return std::string(); } }; IWindowManager * CreateDummyWindowManager() diff --git a/src/openrct2/ui/WindowManager.h b/src/openrct2/ui/WindowManager.h index 12bbb6aef9..d0984165b4 100644 --- a/src/openrct2/ui/WindowManager.h +++ b/src/openrct2/ui/WindowManager.h @@ -16,6 +16,7 @@ #pragma once +#include #include "../common.h" extern "C" @@ -37,6 +38,7 @@ namespace OpenRCT2 virtual void HandleKeyboardShortcut(sint32 key) abstract; virtual void GetKeyboardMapScroll(const uint8 * keysState, sint32 * x, sint32 * y) abstract; + virtual std::string GetKeyboardShortcutString(sint32 shortcut) abstract; }; IWindowManager * CreateDummyWindowManager();