Skip to content

Commit

Permalink
Move QuickMessages to its own library
Browse files Browse the repository at this point in the history
Eliminates an options->diablo dependency.
  • Loading branch information
glebm committed Jan 11, 2025
1 parent 651c70f commit cf851f5
Show file tree
Hide file tree
Showing 8 changed files with 54 additions and 27 deletions.
6 changes: 6 additions & 0 deletions Source/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion Source/control.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down
17 changes: 3 additions & 14 deletions Source/diablo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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));
Expand Down Expand Up @@ -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 {}"),
Expand Down
9 changes: 0 additions & 9 deletions Source/diablo.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down
5 changes: 3 additions & 2 deletions Source/options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -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]);
}

Expand Down
3 changes: 2 additions & 1 deletion Source/options.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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 {
Expand Down
22 changes: 22 additions & 0 deletions Source/quick_messages.cpp
Original file line number Diff line number Diff line change
@@ -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 changes: 16 additions & 0 deletions Source/quick_messages.hpp
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit cf851f5

Please sign in to comment.