aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanaƫl Courant <Ekdohibs@users.noreply.github.com>2017-08-27 19:06:40 +0200
committerGitHub <noreply@github.com>2017-08-27 19:06:40 +0200
commit520b4813832f3623f7b0b0408ecf26f36cda720b (patch)
tree03e63ac4dbac7f9bc2ee5775f965e5f8f733038c
parent1f207a3ddbb5fbe903996a924443d9f9522b48a8 (diff)
downloadminetest-520b4813832f3623f7b0b0408ecf26f36cda720b.tar.gz
minetest-520b4813832f3623f7b0b0408ecf26f36cda720b.tar.bz2
minetest-520b4813832f3623f7b0b0408ecf26f36cda720b.zip
Statbars: fix incorrect half-images in non-standard orientations (fixes #6198)
-rw-r--r--src/hud.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/hud.cpp b/src/hud.cpp
index 7135bc42a..29beef16a 100644
--- a/src/hud.cpp
+++ b/src/hud.cpp
@@ -399,24 +399,32 @@ void Hud::drawStatbar(v2s32 pos, u16 corner, u16 drawdir, std::string texture,
p += offset;
v2s32 steppos;
+ core::rect<s32> srchalfrect, dsthalfrect;
switch (drawdir) {
case HUD_DIR_RIGHT_LEFT:
steppos = v2s32(-1, 0);
+ srchalfrect = core::rect<s32>(srcd.Width / 2, 0, srcd.Width, srcd.Height);
+ dsthalfrect = core::rect<s32>(dstd.Width / 2, 0, dstd.Width, dstd.Height);
break;
case HUD_DIR_TOP_BOTTOM:
steppos = v2s32(0, 1);
+ srchalfrect = core::rect<s32>(0, 0, srcd.Width, srcd.Height / 2);
+ dsthalfrect = core::rect<s32>(0, 0, dstd.Width, dstd.Height / 2);
break;
case HUD_DIR_BOTTOM_TOP:
steppos = v2s32(0, -1);
+ srchalfrect = core::rect<s32>(0, srcd.Height / 2, srcd.Width, srcd.Height);
+ dsthalfrect = core::rect<s32>(0, dstd.Height / 2, dstd.Width, dstd.Height);
break;
default:
steppos = v2s32(1, 0);
+ srchalfrect = core::rect<s32>(0, 0, srcd.Width / 2, srcd.Height);
+ dsthalfrect = core::rect<s32>(0, 0, dstd.Width / 2, dstd.Height);
}
steppos.X *= dstd.Width;
steppos.Y *= dstd.Height;
- for (s32 i = 0; i < count / 2; i++)
- {
+ for (s32 i = 0; i < count / 2; i++) {
core::rect<s32> srcrect(0, 0, srcd.Width, srcd.Height);
core::rect<s32> dstrect(0,0, dstd.Width, dstd.Height);
@@ -425,13 +433,9 @@ void Hud::drawStatbar(v2s32 pos, u16 corner, u16 drawdir, std::string texture,
p += steppos;
}
- if (count % 2 == 1)
- {
- core::rect<s32> srcrect(0, 0, srcd.Width / 2, srcd.Height);
- core::rect<s32> dstrect(0,0, dstd.Width / 2, dstd.Height);
-
- dstrect += p;
- draw2DImageFilterScaled(driver, stat_texture, dstrect, srcrect, NULL, colors, true);
+ if (count % 2 == 1) {
+ dsthalfrect += p;
+ draw2DImageFilterScaled(driver, stat_texture, dsthalfrect, srchalfrect, NULL, colors, true);
}
}