diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-11-05 15:42:32 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-11-05 15:42:32 +1100 |
commit | 9502b05ea4587f2c060608718486d5c8d5bc3ac5 (patch) | |
tree | 59a35f85a54a6e62a8ffff1bbeaa7fe757805920 /source/game/StarQuestManager.cpp | |
parent | 7151c0cd9ebfc5180bfc663ddfbe5a670b42f195 (diff) |
Update StarQuestManager.cpp
Diffstat (limited to 'source/game/StarQuestManager.cpp')
-rw-r--r-- | source/game/StarQuestManager.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/source/game/StarQuestManager.cpp b/source/game/StarQuestManager.cpp index 4e88500..4dbc652 100644 --- a/source/game/StarQuestManager.cpp +++ b/source/game/StarQuestManager.cpp @@ -398,19 +398,21 @@ void QuestManager::update(float dt) { } } - StringMap<QuestPtr> allQuests = quests(); - for (auto& entry : allQuests) { + List<String> expiredQuests; + for (auto& entry : m_quests) { 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); + expiredQuests.append(entry.first); } } - for (auto& q : allQuests) { + for (auto& questId : expiredQuests) + m_quests.remove(questId); + + for (auto& q : m_quests) { if (questValidOnServer(q.second)) q.second->update(dt); } |