From eb2cd5f654f2757098de8b2de2e7a43f0f816ccd Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sat, 26 Jun 2021 16:22:53 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8FCreate=20QuickMessage=20struc?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/diablo.cpp | 19 +++++++++---------- Source/diablo.h | 14 ++++++++++---- Source/options.cpp | 8 ++++---- Source/options.h | 2 +- 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/Source/diablo.cpp b/Source/diablo.cpp index fc0a7f021..444d6b403 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -136,13 +136,12 @@ int arrowdebug = 0; #endif /** Specifies whether players are in non-PvP mode. */ bool gbFriendlyMode = true; -const char *const spszMsgTbl[4] = { - N_("I need help! Come Here!"), - N_("Follow me."), - N_("Here's something for you."), - N_("Now you DIE!") +QuickMessage QuickMessages[QUICK_MESSAGE_OPTIONS] = { + { "QuickMessage1", N_("I need help! Come Here!") }, + { "QuickMessage2", N_("Follow me.") }, + { "QuickMessage3", N_("Here's something for you.") }, + { "QuickMessage4", N_("Now you DIE!") } }; -const char *const spszMsgNameTbl[4] = { "QuickMessage1", "QuickMessage2", "QuickMessage3", "QuickMessage4" }; /** To know if these things have been done when we get to the diablo_deinit() function */ bool was_archives_init = false; @@ -513,11 +512,11 @@ static void diablo_init() SetApplicationVersions(); - for (size_t i = 0; i < sizeof(spszMsgTbl) / sizeof(spszMsgTbl[0]); i++) { + for (size_t i = 0; i < QUICK_MESSAGE_OPTIONS; i++) { if (strlen(sgOptions.Chat.szHotKeyMsgs[i]) != 0) { continue; } - strncpy(sgOptions.Chat.szHotKeyMsgs[i], _(spszMsgTbl[i]), MAX_SEND_STR_LEN); + strncpy(sgOptions.Chat.szHotKeyMsgs[i], _(QuickMessages[i].message), MAX_SEND_STR_LEN); } UiInitialize(); @@ -869,7 +868,7 @@ static void diablo_hotkey_msg(DWORD dwMsg) return; } - assert(dwMsg < sizeof(spszMsgTbl) / sizeof(spszMsgTbl[0])); + assert(dwMsg < QUICK_MESSAGE_OPTIONS); NetSendCmdString(0xFFFFFF, sgOptions.Chat.szHotKeyMsgs[dwMsg]); } @@ -1986,7 +1985,7 @@ void initKeymapActions() } for (int i = 0; i < 4; ++i) { keymapper.addAction({ - spszMsgNameTbl[i], + QuickMessages[i].key, DVL_VK_F9 + i, [i]() { diablo_hotkey_msg(i); }, }); diff --git a/Source/diablo.h b/Source/diablo.h index 23c667e96..e4f1c73cb 100644 --- a/Source/diablo.h +++ b/Source/diablo.h @@ -85,10 +85,16 @@ extern bool debug_mode_dollar_sign; extern bool debug_mode_key_i; extern int debug_mode_key_j; #endif -/** Default quick messages */ -extern const char *const spszMsgTbl[4]; -/** INI files variable names for quick messages */ -extern const char *const spszMsgNameTbl[4]; + +struct QuickMessage { + /** Config variable names for quick message */ + const char *const key; + /** Default quick message */ + const char *const message; +}; + +constexpr size_t QUICK_MESSAGE_OPTIONS = 4; +extern QuickMessage QuickMessages[QUICK_MESSAGE_OPTIONS]; extern bool gbFriendlyMode; } // namespace devilution diff --git a/Source/options.cpp b/Source/options.cpp index f9de86e27..a79eb77de 100644 --- a/Source/options.cpp +++ b/Source/options.cpp @@ -204,8 +204,8 @@ void LoadOptions() sgOptions.Network.nPort = getIniInt("Network", "Port", 6112); getIniValue("Network", "Previous Host", sgOptions.Network.szPreviousHost, sizeof(sgOptions.Network.szPreviousHost), ""); - for (size_t i = 0; i < sizeof(spszMsgTbl) / sizeof(spszMsgTbl[0]); i++) - getIniValue("NetMsg", spszMsgNameTbl[i], sgOptions.Chat.szHotKeyMsgs[i], MAX_SEND_STR_LEN, ""); + for (size_t i = 0; i < QUICK_MESSAGE_OPTIONS; i++) + getIniValue("NetMsg", QuickMessages[i].key, sgOptions.Chat.szHotKeyMsgs[i], MAX_SEND_STR_LEN, ""); getIniValue("Controller", "Mapping", sgOptions.Controller.szMapping, sizeof(sgOptions.Controller.szMapping), ""); sgOptions.Controller.bSwapShoulderButtonMode = getIniBool("Controller", "Swap Shoulder Button Mode", false); @@ -286,8 +286,8 @@ void SaveOptions() setIniValue("Network", "Port", sgOptions.Network.nPort); setIniValue("Network", "Previous Host", sgOptions.Network.szPreviousHost); - for (size_t i = 0; i < sizeof(spszMsgTbl) / sizeof(spszMsgTbl[0]); i++) - setIniValue("NetMsg", spszMsgNameTbl[i], sgOptions.Chat.szHotKeyMsgs[i]); + for (size_t i = 0; i < QUICK_MESSAGE_OPTIONS; i++) + setIniValue("NetMsg", QuickMessages[i].key, sgOptions.Chat.szHotKeyMsgs[i]); setIniValue("Controller", "Mapping", sgOptions.Controller.szMapping); setIniValue("Controller", "Swap Shoulder Button Mode", sgOptions.Controller.bSwapShoulderButtonMode); diff --git a/Source/options.h b/Source/options.h index 3b7217f2c..cdd0ee9aa 100644 --- a/Source/options.h +++ b/Source/options.h @@ -138,7 +138,7 @@ struct NetworkOptions { struct ChatOptions { /** @brief Quick chat messages. */ - char szHotKeyMsgs[4][MAX_SEND_STR_LEN]; + char szHotKeyMsgs[QUICK_MESSAGE_OPTIONS][MAX_SEND_STR_LEN]; }; struct LanguageOptions {