| 192 | } |
| 193 | |
| 194 | void 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 | } |
nothing calls this directly
no test coverage detected