diff options
Diffstat (limited to '')
-rw-r--r-- | src/client/hud.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/client/hud.cpp b/src/client/hud.cpp index 304a3ab16..e78130dd4 100644 --- a/src/client/hud.cpp +++ b/src/client/hud.cpp @@ -283,11 +283,25 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) { u32 text_height = g_fontengine->getTextHeight(); irr::gui::IGUIFont* font = g_fontengine->getFont(); + + // Reorder elements by z_index + std::vector<size_t> ids; + for (size_t i = 0; i != player->maxHudId(); i++) { HudElement *e = player->getHud(i); if (!e) continue; + auto it = ids.begin(); + while (it != ids.end() && player->getHud(*it)->z_index <= e->z_index) + ++it; + + ids.insert(it, i); + } + + for (size_t i : ids) { + HudElement *e = player->getHud(i); + v2s32 pos(floor(e->pos.X * (float) m_screensize.X + 0.5), floor(e->pos.Y * (float) m_screensize.Y + 0.5)); switch (e->type) { |