diff options
author | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2025-07-14 14:04:32 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2025-07-14 14:04:38 +0200 |
commit | 5e36b827321aab0e89458f08531d622a85ab58f3 (patch) | |
tree | 1ab7836b592bdab4d7930c0262870f8731b35644 | |
parent | de4eec33077dcf129f6bbfc35c1444d3a86d7b16 (diff) | |
download | mana-5e36b827321aab0e89458f08531d622a85ab58f3.tar.gz mana-5e36b827321aab0e89458f08531d622a85ab58f3.tar.bz2 mana-5e36b827321aab0e89458f08531d622a85ab58f3.tar.xz mana-5e36b827321aab0e89458f08531d622a85ab58f3.zip |
Fix quests window destruction and add QuestDB::init
The init call makes sure there are no quests loaded, which is necessary
because `SettingsManager::unload` is only called on exit and not when
switching servers.
Closes #112
-rw-r--r-- | src/game.cpp | 1 | ||||
-rw-r--r-- | src/gui/questswindow.cpp | 2 | ||||
-rw-r--r-- | src/gui/questswindow.h | 1 | ||||
-rw-r--r-- | src/resources/questdb.cpp | 5 | ||||
-rw-r--r-- | src/resources/questdb.h | 1 | ||||
-rw-r--r-- | src/resources/settingsmanager.cpp | 4 | ||||
-rw-r--r-- | src/resources/settingsmanager.h | 4 |
7 files changed, 14 insertions, 4 deletions
diff --git a/src/game.cpp b/src/game.cpp index 86a943d8..7e2496a1 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -185,6 +185,7 @@ static void destroyGuiWindows() del_0(miniStatusWindow) del_0(inventoryWindow) del_0(skillDialog) + del_0(questsWindow) del_0(minimap) del_0(equipmentWindow) del_0(tradeWindow) diff --git a/src/gui/questswindow.cpp b/src/gui/questswindow.cpp index adbbdeda..c05df1de 100644 --- a/src/gui/questswindow.cpp +++ b/src/gui/questswindow.cpp @@ -173,6 +173,8 @@ QuestsWindow::QuestsWindow() loadWindowState(); } +QuestsWindow::~QuestsWindow() = default; + void QuestsWindow::action(const gcn::ActionEvent &event) { if (event.getId() == "hideCompleted") diff --git a/src/gui/questswindow.h b/src/gui/questswindow.h index 22f2a32c..a479f826 100644 --- a/src/gui/questswindow.h +++ b/src/gui/questswindow.h @@ -47,6 +47,7 @@ class QuestsWindow final : public Window, { public: QuestsWindow(); + ~QuestsWindow(); void action(const gcn::ActionEvent &event) override; diff --git a/src/resources/questdb.cpp b/src/resources/questdb.cpp index a3dda637..1424c20e 100644 --- a/src/resources/questdb.cpp +++ b/src/resources/questdb.cpp @@ -37,6 +37,11 @@ static bool contains(const Container &container, const Value &value) return std::find(container.begin(), container.end(), value) != container.end(); } +void init() +{ + unload(); +} + void readQuestVarNode(XML::Node node, const std::string &filename) { int varId = 0; diff --git a/src/resources/questdb.h b/src/resources/questdb.h index 5e943e76..43996b0b 100644 --- a/src/resources/questdb.h +++ b/src/resources/questdb.h @@ -123,6 +123,7 @@ enum class QuestChange namespace QuestDB { + void init(); void readQuestVarNode(XML::Node node, const std::string &filename); void unload(); diff --git a/src/resources/settingsmanager.cpp b/src/resources/settingsmanager.cpp index eabd63ae..3dfb5eb4 100644 --- a/src/resources/settingsmanager.cpp +++ b/src/resources/settingsmanager.cpp @@ -39,6 +39,9 @@ #include "log.h" #include "units.h" +#include <string> +#include <set> + namespace SettingsManager { static std::string mSettingsFile; @@ -54,6 +57,7 @@ namespace SettingsManager hairDB.init(); itemDb->init(); MonsterDB::init(); + QuestDB::init(); AbilityDB::init(); NPCDB::init(); EmoteDB::init(); diff --git a/src/resources/settingsmanager.h b/src/resources/settingsmanager.h index 5b70f865..d9a6994c 100644 --- a/src/resources/settingsmanager.h +++ b/src/resources/settingsmanager.h @@ -20,10 +20,6 @@ #pragma once -#include <string> -#include <list> -#include <set> - namespace SettingsManager { void load(); |