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

Method describePersistentEffect

source/frontend/StarItemTooltip.cpp:194–229  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

192}
193
194void ItemTooltipBuilder::describePersistentEffect(
195 ListWidgetPtr const& container, PersistentStatusEffect const& effect) {
196 if (auto uniqueStatusEffect = effect.ptr<UniqueStatusEffect>()) {
197 auto statusEffectDatabase = Root::singleton().statusEffectDatabase();
198 auto effectConfig = statusEffectDatabase->uniqueEffectConfig(*uniqueStatusEffect);
199 if (effectConfig.icon) {
200 auto listItem = container->addItem();
201 listItem->setLabel("statusLabel", effectConfig.label);
202 listItem->fetchChild<ImageWidget>("statusImage")->setImage(*effectConfig.icon);
203 }
204 } else if (auto modifierEffect = effect.ptr<StatModifier>()) {
205 auto statsConfig = Root::singleton().assets()->json("/interface/stats/stats.config");
206 if (auto baseMultiplier = modifierEffect->ptr<StatBaseMultiplier>()) {
207 if (statsConfig.contains(baseMultiplier->statName)) {
208 auto listItem = container->addItem();
209 listItem->fetchChild<ImageWidget>("statusImage")
210 ->setImage(statsConfig.get(baseMultiplier->statName).getString("icon"));
211 listItem->setLabel("statusLabel", strf("{:.1f}%", (baseMultiplier->baseMultiplier - 1) * 100));
212 }
213 } else if (auto valueModifier = modifierEffect->ptr<StatValueModifier>()) {
214 if (statsConfig.contains(valueModifier->statName)) {
215 auto listItem = container->addItem();
216 listItem->fetchChild<ImageWidget>("statusImage")
217 ->setImage(statsConfig.get(valueModifier->statName).getString("icon"));
218 listItem->setLabel("statusLabel", strf("{}{:.2f}", valueModifier->value < 0 ? "-" : "", valueModifier->value));
219 }
220 } else if (auto effectiveMultiplier = modifierEffect->ptr<StatEffectiveMultiplier>()) {
221 if (statsConfig.contains(effectiveMultiplier->statName)) {
222 auto listItem = container->addItem();
223 listItem->fetchChild<ImageWidget>("statusImage")
224 ->setImage(statsConfig.get(effectiveMultiplier->statName).getString("icon"));
225 listItem->setLabel("statusLabel", strf("{:.1f}%", (effectiveMultiplier->effectiveMultiplier - 1) * 100));
226 }
227 }
228 }
229}
230
231}

Callers

nothing calls this directly

Calls 12

singletonClass · 0.85
strfFunction · 0.85
statusEffectDatabaseMethod · 0.80
uniqueEffectConfigMethod · 0.80
addItemMethod · 0.80
setLabelMethod · 0.80
setImageMethod · 0.80
jsonMethod · 0.80
assetsMethod · 0.80
getStringMethod · 0.80
containsMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected