X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fhud.cpp;h=43d9573801c2f22ba15450e487943703edab858c;hb=b0746834cc44af1086c83715d0d6f749f653f29a;hp=d72141899afd63b391d7e124eb0228fdaad00684;hpb=2eeb62057a9e08def6a0f013e3ca5d84768d1566;p=dragonfireclient.git diff --git a/src/hud.cpp b/src/hud.cpp index d72141899..43d957380 100644 --- a/src/hud.cpp +++ b/src/hud.cpp @@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "hud.h" #include "settings.h" #include "util/numeric.h" +#include "util/string.h" #include "log.h" #include "gamedef.h" #include "itemdef.h" @@ -208,14 +209,18 @@ void Hud::drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount, s32 width = (itemcount - inv_offset) * (m_hotbar_imagesize + m_padding * 2); if (direction == HUD_DIR_TOP_BOTTOM || direction == HUD_DIR_BOTTOM_TOP) { - width = m_hotbar_imagesize + m_padding * 2; - height = (itemcount - inv_offset) * (m_hotbar_imagesize + m_padding * 2); + s32 tmp = height; + height = width; + width = tmp; } // Position of upper left corner of bar - v2s32 pos = upperleftpos + screen_offset; - pos *= m_hud_scaling * porting::getDisplayDensity(); + v2s32 pos = screen_offset; + pos.X *= m_hud_scaling * porting::getDisplayDensity(); + pos.Y *= m_hud_scaling * porting::getDisplayDensity(); + pos += upperleftpos; + // Store hotbar_image in member variable, used by drawItem() if (hotbar_image != player->hotbar_image) { hotbar_image = player->hotbar_image; if (hotbar_image != "") @@ -224,6 +229,7 @@ void Hud::drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount, use_hotbar_image = false; } + // Store hotbar_selected_image in member variable, used by drawItem() if (hotbar_selected_image != player->hotbar_selected_image) { hotbar_selected_image = player->hotbar_selected_image; if (hotbar_selected_image != "") @@ -232,7 +238,7 @@ void Hud::drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount, use_hotbar_selected_image = false; } - /* draw customized item background */ + // draw customized item background if (use_hotbar_image) { core::rect imgrect2(-m_padding/2, -m_padding/2, width+m_padding/2, height+m_padding/2); @@ -244,12 +250,12 @@ void Hud::drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount, NULL, hbar_colors, true); } + // Draw items + core::rect imgrect(0, 0, m_hotbar_imagesize, m_hotbar_imagesize); for (s32 i = inv_offset; i < itemcount && (size_t)i < mainlist->getSize(); i++) { - v2s32 steppos; s32 fullimglen = m_hotbar_imagesize + m_padding * 2; - core::rect imgrect(0, 0, m_hotbar_imagesize, m_hotbar_imagesize); - + v2s32 steppos; switch (direction) { case HUD_DIR_RIGHT_LEFT: steppos = v2s32(-(m_padding + (i - inv_offset) * fullimglen), m_padding); @@ -314,7 +320,7 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) (e->number >> 8) & 0xFF, (e->number >> 0) & 0xFF); core::rect size(0, 0, e->scale.X, text_height * e->scale.Y); - std::wstring text = utf8_to_wide(e->text); + std::wstring text = unescape_enriched(utf8_to_wide(e->text)); core::dimension2d textsize = font->getDimension(text.c_str()); v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2), (e->align.Y - 1.0) * (textsize.Height / 2)); @@ -350,11 +356,11 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) (e->number >> 8) & 0xFF, (e->number >> 0) & 0xFF); core::rect size(0, 0, 200, 2 * text_height); - std::wstring text = utf8_to_wide(e->name); + std::wstring text = unescape_enriched(utf8_to_wide(e->name)); font->draw(text.c_str(), size + pos, color); std::ostringstream os; os << distance << e->text; - text = utf8_to_wide(os.str()); + text = unescape_enriched(utf8_to_wide(os.str())); pos.Y += text_height; font->draw(text.c_str(), size + pos, color); break; } @@ -538,6 +544,12 @@ void Hud::drawSelectionMesh() video::SMaterial oldmaterial = driver->getMaterial2D(); driver->setMaterial(m_selection_material); setMeshColor(m_selection_mesh, m_selection_mesh_color); + video::SColor face_color(0, + MYMIN(255, m_selection_mesh_color.getRed() * 1.5), + MYMIN(255, m_selection_mesh_color.getGreen() * 1.5), + MYMIN(255, m_selection_mesh_color.getBlue() * 1.5)); + setMeshColorByNormal(m_selection_mesh, m_selected_face_normal, + face_color); scene::IMesh* mesh = cloneMesh(m_selection_mesh); translateMesh(mesh, m_selection_pos_with_offset); u32 mc = m_selection_mesh->getMeshBufferCount();