mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 01:53:45 +01:00
Fix inventory hud scaling
This commit is contained in:
parent
4fdf66bbf4
commit
b5f6d41eed
18
src/hud.cpp
18
src/hud.cpp
@ -208,15 +208,18 @@ void Hud::drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount,
|
|||||||
s32 width = (itemcount - inv_offset) * (m_hotbar_imagesize + m_padding * 2);
|
s32 width = (itemcount - inv_offset) * (m_hotbar_imagesize + m_padding * 2);
|
||||||
|
|
||||||
if (direction == HUD_DIR_TOP_BOTTOM || direction == HUD_DIR_BOTTOM_TOP) {
|
if (direction == HUD_DIR_TOP_BOTTOM || direction == HUD_DIR_BOTTOM_TOP) {
|
||||||
width = m_hotbar_imagesize + m_padding * 2;
|
s32 tmp = height;
|
||||||
height = (itemcount - inv_offset) * (m_hotbar_imagesize + m_padding * 2);
|
height = width;
|
||||||
|
width = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Position of upper left corner of bar
|
// Position of upper left corner of bar
|
||||||
v2s32 pos = upperleftpos + screen_offset;
|
v2s32 pos = screen_offset;
|
||||||
pos.X *= m_hud_scaling * porting::getDisplayDensity();
|
pos.X *= m_hud_scaling * porting::getDisplayDensity();
|
||||||
pos.Y *= 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) {
|
if (hotbar_image != player->hotbar_image) {
|
||||||
hotbar_image = player->hotbar_image;
|
hotbar_image = player->hotbar_image;
|
||||||
if (hotbar_image != "")
|
if (hotbar_image != "")
|
||||||
@ -225,6 +228,7 @@ void Hud::drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount,
|
|||||||
use_hotbar_image = false;
|
use_hotbar_image = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Store hotbar_selected_image in member variable, used by drawItem()
|
||||||
if (hotbar_selected_image != player->hotbar_selected_image) {
|
if (hotbar_selected_image != player->hotbar_selected_image) {
|
||||||
hotbar_selected_image = player->hotbar_selected_image;
|
hotbar_selected_image = player->hotbar_selected_image;
|
||||||
if (hotbar_selected_image != "")
|
if (hotbar_selected_image != "")
|
||||||
@ -233,7 +237,7 @@ void Hud::drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount,
|
|||||||
use_hotbar_selected_image = false;
|
use_hotbar_selected_image = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* draw customized item background */
|
// draw customized item background
|
||||||
if (use_hotbar_image) {
|
if (use_hotbar_image) {
|
||||||
core::rect<s32> imgrect2(-m_padding/2, -m_padding/2,
|
core::rect<s32> imgrect2(-m_padding/2, -m_padding/2,
|
||||||
width+m_padding/2, height+m_padding/2);
|
width+m_padding/2, height+m_padding/2);
|
||||||
@ -245,12 +249,12 @@ void Hud::drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount,
|
|||||||
NULL, hbar_colors, true);
|
NULL, hbar_colors, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Draw items
|
||||||
|
core::rect<s32> imgrect(0, 0, m_hotbar_imagesize, m_hotbar_imagesize);
|
||||||
for (s32 i = inv_offset; i < itemcount && (size_t)i < mainlist->getSize(); i++) {
|
for (s32 i = inv_offset; i < itemcount && (size_t)i < mainlist->getSize(); i++) {
|
||||||
v2s32 steppos;
|
|
||||||
s32 fullimglen = m_hotbar_imagesize + m_padding * 2;
|
s32 fullimglen = m_hotbar_imagesize + m_padding * 2;
|
||||||
|
|
||||||
core::rect<s32> imgrect(0, 0, m_hotbar_imagesize, m_hotbar_imagesize);
|
v2s32 steppos;
|
||||||
|
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case HUD_DIR_RIGHT_LEFT:
|
case HUD_DIR_RIGHT_LEFT:
|
||||||
steppos = v2s32(-(m_padding + (i - inv_offset) * fullimglen), m_padding);
|
steppos = v2s32(-(m_padding + (i - inv_offset) * fullimglen), m_padding);
|
||||||
|
@ -154,12 +154,12 @@ private:
|
|||||||
void drawItem(const ItemStack &item, const core::rect<s32>& rect,
|
void drawItem(const ItemStack &item, const core::rect<s32>& rect,
|
||||||
bool selected);
|
bool selected);
|
||||||
|
|
||||||
float m_hud_scaling;
|
float m_hud_scaling; // cached minetest setting
|
||||||
v3s16 m_camera_offset;
|
v3s16 m_camera_offset;
|
||||||
v2u32 m_screensize;
|
v2u32 m_screensize;
|
||||||
v2s32 m_displaycenter;
|
v2s32 m_displaycenter;
|
||||||
s32 m_hotbar_imagesize;
|
s32 m_hotbar_imagesize; // Takes hud_scaling into account, updated by resizeHotbar()
|
||||||
s32 m_padding;
|
s32 m_padding; // Takes hud_scaling into account, updated by resizeHotbar()
|
||||||
video::SColor hbar_colors[4];
|
video::SColor hbar_colors[4];
|
||||||
|
|
||||||
std::vector<aabb3f> m_selection_boxes;
|
std::vector<aabb3f> m_selection_boxes;
|
||||||
|
Loading…
Reference in New Issue
Block a user