| 98 | } |
| 99 | |
| 100 | void QuestLogInterface::tick(float dt) { |
| 101 | Pane::tick(dt); |
| 102 | auto selected = getSelected(); |
| 103 | if (selected && m_manager->hasQuest(selected->data().toString())) { |
| 104 | auto quest = m_manager->getQuest(selected->data().toString()); |
| 105 | |
| 106 | m_manager->markAsRead(quest->questId()); |
| 107 | |
| 108 | if (m_manager->isActive(quest->questId())) { |
| 109 | fetchChild<ButtonWidget>("btnToggleTracking")->enable(); |
| 110 | fetchChild<ButtonWidget>("btnToggleTracking")->setText(m_manager->isCurrent(quest->questId()) ? m_untrackLabel : m_trackLabel); |
| 111 | if (quest->canBeAbandoned()) |
| 112 | fetchChild<ButtonWidget>("btnAbandon")->enable(); |
| 113 | else |
| 114 | fetchChild<ButtonWidget>("btnAbandon")->disable(); |
| 115 | } else { |
| 116 | fetchChild<ButtonWidget>("btnToggleTracking")->disable(); |
| 117 | fetchChild<ButtonWidget>("btnToggleTracking")->setText(m_trackLabel); |
| 118 | fetchChild<ButtonWidget>("btnAbandon")->disable(); |
| 119 | } |
| 120 | fetchChild<LabelWidget>("lblQuestTitle")->setText(quest->title()); |
| 121 | fetchChild<LabelWidget>("lblQuestBody")->setText(quest->text()); |
| 122 | |
| 123 | auto portraitName = "Objective"; |
| 124 | auto imagePortrait = quest->portrait(portraitName); |
| 125 | if (imagePortrait) { |
| 126 | auto portraitTitleLabel = fetchChild<LabelWidget>("lblPortraitTitle"); |
| 127 | String portraitTitle = quest->portraitTitle(portraitName).value(""); |
| 128 | Maybe<unsigned> charLimit = portraitTitleLabel->getTextCharLimit(); |
| 129 | portraitTitleLabel->setText(portraitTitle); |
| 130 | |
| 131 | Drawable::scaleAll(*imagePortrait, Vec2F(-1, 1)); |
| 132 | fetchChild<ImageWidget>("imgPortrait")->setDrawables(*imagePortrait); |
| 133 | fetchChild<ImageWidget>("imgPolaroid")->setVisibility(true); |
| 134 | fetchChild<ImageWidget>("imgPolaroidBack")->setVisibility(true); |
| 135 | |
| 136 | } else { |
| 137 | fetchChild<LabelWidget>("lblPortraitTitle")->setText(""); |
| 138 | fetchChild<ImageWidget>("imgPortrait")->setDrawables({}); |
| 139 | fetchChild<ImageWidget>("imgPolaroid")->setVisibility(false); |
| 140 | fetchChild<ImageWidget>("imgPolaroidBack")->setVisibility(false); |
| 141 | } |
| 142 | |
| 143 | m_rewardItems->clearItems(); |
| 144 | if (quest->rewards().size() > 0) { |
| 145 | fetchChild<LabelWidget>("lblRewards")->setVisibility(true); |
| 146 | fetchChild<ItemGridWidget>("rewardItems")->setVisibility(true); |
| 147 | for (auto const& reward : quest->rewards()) |
| 148 | m_rewardItems->addItems(reward->clone()); |
| 149 | } else { |
| 150 | fetchChild<LabelWidget>("lblRewards")->setVisibility(false); |
| 151 | fetchChild<ItemGridWidget>("rewardItems")->setVisibility(false); |
| 152 | } |
| 153 | } else { |
| 154 | fetchChild<ButtonWidget>("btnToggleTracking")->disable(); |
| 155 | fetchChild<ButtonWidget>("btnToggleTracking")->setText(m_trackLabel); |
| 156 | fetchChild<ButtonWidget>("btnAbandon")->disable(); |
| 157 | fetchChild<LabelWidget>("lblQuestTitle")->setText(""); |
nothing calls this directly
no test coverage detected