mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-12 16:15:20 +02:00
Add z-index management to HUD
This commit is contained in:
committed by
rubenwardy
parent
f6de86ce4b
commit
cf7fda0083
@@ -131,6 +131,7 @@ struct ClientEvent
|
||||
v2f *offset;
|
||||
v3f *world_pos;
|
||||
v2s32 *size;
|
||||
s16 z_index;
|
||||
} hudadd;
|
||||
struct
|
||||
{
|
||||
|
@@ -2650,6 +2650,7 @@ void Game::handleClientEvent_HudAdd(ClientEvent *event, CameraOrientation *cam)
|
||||
e->offset = *event->hudadd.offset;
|
||||
e->world_pos = *event->hudadd.world_pos;
|
||||
e->size = *event->hudadd.size;
|
||||
e->z_index = event->hudadd.z_index;
|
||||
hud_server_to_client[server_id] = player->addHud(e);
|
||||
|
||||
delete event->hudadd.pos;
|
||||
@@ -2728,6 +2729,10 @@ void Game::handleClientEvent_HudChange(ClientEvent *event, CameraOrientation *ca
|
||||
case HUD_STAT_SIZE:
|
||||
e->size = *event->hudchange.v2s32data;
|
||||
break;
|
||||
|
||||
case HUD_STAT_Z_INDEX:
|
||||
e->z_index = event->hudchange.data;
|
||||
break;
|
||||
}
|
||||
|
||||
delete event->hudchange.v3fdata;
|
||||
|
@@ -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) {
|
||||
|
Reference in New Issue
Block a user