summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <bjorn@lindeijer.nl>2025-07-14 14:04:32 +0200
committerThorbjørn Lindeijer <bjorn@lindeijer.nl>2025-07-14 14:04:38 +0200
commit5e36b827321aab0e89458f08531d622a85ab58f3 (patch)
tree1ab7836b592bdab4d7930c0262870f8731b35644
parentde4eec33077dcf129f6bbfc35c1444d3a86d7b16 (diff)
downloadmana-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.cpp1
-rw-r--r--src/gui/questswindow.cpp2
-rw-r--r--src/gui/questswindow.h1
-rw-r--r--src/resources/questdb.cpp5
-rw-r--r--src/resources/questdb.h1
-rw-r--r--src/resources/settingsmanager.cpp4
-rw-r--r--src/resources/settingsmanager.h4
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();