Browse Source

Move QuickMessages to its own library

Eliminates an options->diablo dependency.
pull/7645/head
Gleb Mazovetskiy 1 year ago
parent
commit
bbcda12792
  1. 6
      Source/CMakeLists.txt
  2. 3
      Source/control.cpp
  3. 17
      Source/diablo.cpp
  4. 9
      Source/diablo.h
  5. 5
      Source/options.cpp
  6. 3
      Source/options.h
  7. 22
      Source/quick_messages.cpp
  8. 16
      Source/quick_messages.hpp

6
Source/CMakeLists.txt

@ -413,6 +413,7 @@ target_link_dependencies(libdevilutionx_options PUBLIC
sol2::sol2
libdevilutionx_game_mode
libdevilutionx_logged_fstream
libdevilutionx_quick_messages
libdevilutionx_strings
libdevilutionx_ini
)
@ -464,6 +465,10 @@ add_devilutionx_object_library(libdevilutionx_random
engine/random.cpp
)
add_devilutionx_object_library(libdevilutionx_quick_messages
quick_messages.cpp
)
add_devilutionx_object_library(libdevilutionx_spells
spelldat.cpp
spells.cpp
@ -654,6 +659,7 @@ target_link_dependencies(libdevilutionx PUBLIC
libdevilutionx_pkware_encrypt
libdevilutionx_player
libdevilutionx_quests
libdevilutionx_quick_messages
libdevilutionx_random
libdevilutionx_sound
libdevilutionx_spells

3
Source/control.cpp

@ -46,6 +46,7 @@
#include "playerdat.hpp"
#include "qol/stash.h"
#include "qol/xpbar.h"
#include "quick_messages.hpp"
#include "stores.h"
#include "towners.h"
#include "utils/algorithm/container.hpp"
@ -1690,7 +1691,7 @@ void DiabloHotkeyMsg(uint32_t dwMsg)
return;
}
assert(dwMsg < QUICK_MESSAGE_OPTIONS);
assert(dwMsg < QuickMessages.size());
for (const std::string &msg : sgOptions.Chat.szHotKeyMsgs[dwMsg]) {
#ifdef _DEBUG

17
Source/diablo.cpp

@ -81,6 +81,7 @@
#include "qol/monhealthbar.h"
#include "qol/stash.h"
#include "qol/xpbar.h"
#include "quick_messages.hpp"
#include "restrict.h"
#include "stores.h"
#include "storm/storm_net.hpp"
@ -134,18 +135,6 @@ bool DebugDisableNetworkTimeout = false;
std::vector<std::string> DebugCmdsFromCommandLine;
#endif
GameLogicStep gGameLogicStep = GameLogicStep::None;
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!") },
{ "QuickMessage5", N_("Heal yourself!") },
{ "QuickMessage6", N_("Watch out!") },
{ "QuickMessage7", N_("Thanks.") },
{ "QuickMessage8", N_("Retreat!") },
{ "QuickMessage9", N_("Sorry.") },
{ "QuickMessage10", N_("I'm waiting.") },
};
/** This and the following mouse variables are for handling in-game click-and-hold actions */
MouseActionType LastMouseButtonAction = MouseActionType::None;
@ -1186,7 +1175,7 @@ void DiabloInit()
gbIsHellfireSaveGame = gbIsHellfire;
for (size_t i = 0; i < QUICK_MESSAGE_OPTIONS; i++) {
for (size_t i = 0; i < QuickMessages.size(); i++) {
auto &messages = sgOptions.Chat.szHotKeyMsgs[i];
if (messages.empty()) {
messages.emplace_back(_(QuickMessages[i].message));
@ -1856,7 +1845,7 @@ void InitKeymapActions()
SpellBookKeyPressed,
nullptr,
CanPlayerTakeAction);
for (uint32_t i = 0; i < QUICK_MESSAGE_OPTIONS; ++i) {
for (uint32_t i = 0; i < QuickMessages.size(); ++i) {
sgOptions.Keymapper.AddAction(
"QuickMessage{}",
N_("Quick Message {}"),

9
Source/diablo.h

@ -110,15 +110,6 @@ void diablo_color_cyc_logic();
extern bool DebugDisableNetworkTimeout;
#endif
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 = 10;
extern QuickMessage QuickMessages[QUICK_MESSAGE_OPTIONS];
/**
* @brief Specifies what game logic step is currently executed
*/

5
Source/options.cpp

@ -29,6 +29,7 @@
#include "platform/locale.hpp"
#include "qol/monhealthbar.h"
#include "qol/xpbar.h"
#include "quick_messages.hpp"
#include "utils/algorithm/container.hpp"
#include "utils/display.h"
#include "utils/file_util.h"
@ -252,7 +253,7 @@ void LoadOptions()
ini->getUtf8Buf("Network", "Previous Game ID", sgOptions.Network.szPreviousZTGame, sizeof(sgOptions.Network.szPreviousZTGame));
ini->getUtf8Buf("Network", "Previous Host", sgOptions.Network.szPreviousHost, sizeof(sgOptions.Network.szPreviousHost));
for (size_t i = 0; i < QUICK_MESSAGE_OPTIONS; i++) {
for (size_t i = 0; i < QuickMessages.size(); i++) {
std::span<const Ini::Value> values = ini->get("NetMsg", QuickMessages[i].key);
std::vector<std::string> &result = sgOptions.Chat.szHotKeyMsgs[i];
result.clear();
@ -289,7 +290,7 @@ void SaveOptions()
ini->set("Network", "Previous Game ID", sgOptions.Network.szPreviousZTGame);
ini->set("Network", "Previous Host", sgOptions.Network.szPreviousHost);
for (size_t i = 0; i < QUICK_MESSAGE_OPTIONS; i++) {
for (size_t i = 0; i < QuickMessages.size(); i++) {
ini->set("NetMsg", QuickMessages[i].key, sgOptions.Chat.szHotKeyMsgs[i]);
}

3
Source/options.h

@ -15,6 +15,7 @@
#include "controls/game_controls.h"
#include "engine/sound_defs.hpp"
#include "pack.h"
#include "quick_messages.hpp"
#include "utils/enum_traits.h"
#include "utils/string_view_hash.hpp"
@ -647,7 +648,7 @@ struct ChatOptions : OptionCategoryBase {
std::vector<OptionEntryBase *> GetEntries() override;
/** @brief Quick chat messages. */
std::vector<std::string> szHotKeyMsgs[QUICK_MESSAGE_OPTIONS];
std::vector<std::string> szHotKeyMsgs[QuickMessages.size()];
};
struct LanguageOptions : OptionCategoryBase {

22
Source/quick_messages.cpp

@ -0,0 +1,22 @@
#include "quick_messages.hpp"
#include <array>
#include "utils/language.h"
namespace devilution {
std::array<QuickMessage, 10> QuickMessages = {
QuickMessage { "QuickMessage1", N_("I need help! Come here!") },
QuickMessage { "QuickMessage2", N_("Follow me.") },
QuickMessage { "QuickMessage3", N_("Here's something for you.") },
QuickMessage { "QuickMessage4", N_("Now you DIE!") },
QuickMessage { "QuickMessage5", N_("Heal yourself!") },
QuickMessage { "QuickMessage6", N_("Watch out!") },
QuickMessage { "QuickMessage7", N_("Thanks.") },
QuickMessage { "QuickMessage8", N_("Retreat!") },
QuickMessage { "QuickMessage9", N_("Sorry.") },
QuickMessage { "QuickMessage10", N_("I'm waiting.") },
};
} // namespace devilution

16
Source/quick_messages.hpp

@ -0,0 +1,16 @@
#pragma once
#include <array>
namespace devilution {
struct QuickMessage {
/** Config variable names for quick message */
const char *const key;
/** Default quick message */
const char *const message;
};
extern std::array<QuickMessage, 10> QuickMessages;
} // namespace devilution
Loading…
Cancel
Save