MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / update

Method update

source/game/StarQuestManager.cpp:372–419  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

370}
371
372void QuestManager::update(float dt) {
373 startInitialQuests();
374
375 if (m_trackedQuestId && !isActive(*m_trackedQuestId))
376 m_trackedQuestId = {};
377
378 if (m_onWorldQuestId) {
379 auto active = isActive(*m_onWorldQuestId);
380 if (active) {
381 auto worldId = getQuest(*m_onWorldQuestId)->worldId();
382 if (!worldId || m_player->clientContext()->playerWorldId() != *worldId)
383 active = false;
384 }
385 if (!active)
386 m_onWorldQuestId = {};
387 } else if (m_trackOnWorldQuests) {
388 auto playerWorldId = m_client->clientContext()->playerWorldId();
389 auto trackedWorld = currentQuest().sequence([](QuestPtr q) { return q->worldId(); });
390 if (!trackedWorld || playerWorldId != *trackedWorld) {
391 // the currently tracked quest is not on this world, track another quest on this world
392 for (auto quest : listActiveQuests()) {
393 if (auto questWorld = quest->worldId()) {
394 if (playerWorldId == *questWorld)
395 m_onWorldQuestId = quest->questId();
396 }
397 }
398 }
399 }
400
401 List<String> expiredQuests;
402 for (auto& entry : m_quests) {
403 auto quest = entry.second;
404 QuestState state = quest->state();
405 bool finished = state == QuestState::Complete || state == QuestState::Failed;
406 if (state == QuestState::New || (finished && quest->ephemeral() && !quest->showDialog())) {
407 quest->uninit();
408 expiredQuests.append(entry.first);
409 }
410 }
411
412 for (auto& questId : expiredQuests)
413 m_quests.remove(questId);
414
415 for (auto& q : m_quests.values()) {
416 if (questValidOnServer(q))
417 q->update(dt);
418 }
419}
420
421void QuestManager::startInitialQuests() {
422 auto startingQuests =

Callers

nothing calls this directly

Calls 12

questIdMethod · 0.80
showDialogMethod · 0.80
worldIdMethod · 0.45
playerWorldIdMethod · 0.45
clientContextMethod · 0.45
sequenceMethod · 0.45
stateMethod · 0.45
ephemeralMethod · 0.45
uninitMethod · 0.45
appendMethod · 0.45
removeMethod · 0.45
valuesMethod · 0.45

Tested by

no test coverage detected