From 4b0b0474487861211585da47aca51ff462104848 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Tue, 5 Nov 2024 10:56:20 +1100 Subject: [PATCH] Update StarQuestManager.cpp --- source/game/StarQuestManager.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/source/game/StarQuestManager.cpp b/source/game/StarQuestManager.cpp index 8b85355..4e88500 100644 --- a/source/game/StarQuestManager.cpp +++ b/source/game/StarQuestManager.cpp @@ -73,10 +73,10 @@ void QuestManager::setUniverseClient(UniverseClient* client) { void QuestManager::init(World* world) { m_world = world; - for (auto& quest : m_quests) { - if (!questValidOnServer(quest.second)) + for (auto& quest : m_quests.values()) { + if (!questValidOnServer(quest)) continue; - quest.second->init(m_player, world, m_client); + quest->init(m_player, world, m_client); } m_trackOnWorldQuests = true; @@ -398,19 +398,21 @@ void QuestManager::update(float dt) { } } - for (auto& entry : m_quests) { + StringMap allQuests = quests(); + for (auto& entry : allQuests) { auto quest = entry.second; QuestState state = quest->state(); bool finished = state == QuestState::Complete || state == QuestState::Failed; if (state == QuestState::New || (finished && quest->ephemeral() && !quest->showDialog())) { quest->uninit(); + allQuests.remove(entry.first); m_quests.remove(entry.first); } } - for (auto& q : m_quests.values()) { - if (questValidOnServer(q)) - q->update(dt); + for (auto& q : allQuests) { + if (questValidOnServer(q.second)) + q.second->update(dt); } }