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

Method update

source/frontend/StarStatusPane.cpp:61–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

59}
60
61void StatusPane::update(float dt) {
62 Pane::update(dt);
63
64 auto assets = Root::singleton().assets();
65 auto interfaceScale = m_guiContext->interfaceScale();
66 int roundWindowHeight = ceil(windowHeight() / interfaceScale) * interfaceScale;
67
68 auto imageMetadataDatabase = Root::singleton().imageMetadataDatabase();
69 auto statusEffectDatabase = Root::singleton().statusEffectDatabase();
70
71 Vec2I statusIconOffset = jsonToVec2I(assets->json("/interface.config:statusIconPos"));
72 Vec2I statusIconPos = Vec2I(statusIconOffset[0] * interfaceScale, roundWindowHeight - statusIconOffset[1] * interfaceScale);
73 Vec2I statusIconShift = jsonToVec2I(assets->json("/interface.config:statusIconShift")) * interfaceScale;
74
75 RectF boundRect = RectF::null();
76
77 m_statusIndicators.clear();
78 for (auto const& pair : m_player->activeUniqueStatusEffectSummary()) {
79 auto effectConfig = statusEffectDatabase->uniqueEffectConfig(pair.first);
80 if (effectConfig.icon) {
81 RectF rect = RectF::withSize(Vec2F(statusIconPos), Vec2F(imageMetadataDatabase->imageSize(*effectConfig.icon)) * interfaceScale);
82 boundRect.combine(rect);
83 m_statusIndicators.append(StatusEffectIndicator{*effectConfig.icon, pair.second, effectConfig.label, rect});
84 statusIconPos += statusIconShift;
85 }
86 }
87
88 setPosition(Vec2I::round(boundRect.min() / interfaceScale));
89 setSize(Vec2I::round(boundRect.size() / interfaceScale));
90}
91
92}

Callers

nothing calls this directly

Calls 15

singletonClass · 0.85
jsonToVec2IFunction · 0.85
roundFunction · 0.85
assetsMethod · 0.80
imageMetadataDatabaseMethod · 0.80
statusEffectDatabaseMethod · 0.80
jsonMethod · 0.80
uniqueEffectConfigMethod · 0.80
interfaceScaleMethod · 0.45
clearMethod · 0.45
imageSizeMethod · 0.45

Tested by

no test coverage detected