This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/doc/lua_api.txt b/doc/lua_api.txt | |
index 1cd6a13..43c719a 100644 | |
--- a/doc/lua_api.txt | |
+++ b/doc/lua_api.txt | |
@@ -478,8 +478,10 @@ Note: Future revisions to the HUD API may be incompatible; the HUD API is still | |
- image | |
Displays an image on the HUD. | |
- - scale: The scale of the image, with 1 being the original texture size. | |
- Only the X coordinate scale is used. | |
+ - scale: The scale of the image, with 1 being the original texture size. | |
+ Only the X coordinate scale is used (positive values) | |
+ Negative values represent that percentage of the screen it | |
+ should take; e.g. x=-100 means 100% (width) | |
- text: The name of the texture that is displayed. | |
- alignment: The alignment of the image. | |
- offset: offset in pixels from position. | |
diff --git a/src/hud.cpp b/src/hud.cpp | |
index a0086b2..183f94e 100644 | |
--- a/src/hud.cpp | |
+++ b/src/hud.cpp | |
@@ -234,13 +234,16 @@ void Hud::drawLuaElements() { | |
const video::SColor color(255, 255, 255, 255); | |
const video::SColor colors[] = {color, color, color, color}; | |
core::dimension2di imgsize(texture->getOriginalSize()); | |
- core::rect<s32> rect(0, 0, imgsize.Width * e->scale.X, | |
- imgsize.Height * e->scale.X); | |
- rect += pos; | |
- v2s32 offset((e->align.X - 1.0) * ((imgsize.Width * e->scale.X) / 2), | |
- (e->align.Y - 1.0) * ((imgsize.Height * e->scale.X) / 2)); | |
- rect += offset; | |
- rect += v2s32(e->offset.X, e->offset.Y); | |
+ v2s32 dstsize(imgsize.Width * e->scale.X, | |
+ imgsize.Height * e->scale.Y); | |
+ if (e->scale.X < 0) | |
+ dstsize.X = screensize.X * (e->scale.X * -0.01); | |
+ if (e->scale.Y < 0) | |
+ dstsize.Y = screensize.Y * (e->scale.Y * -0.01); | |
+ v2s32 offset((e->align.X - 1.0) * dstsize.X / 2, | |
+ (e->align.Y - 1.0) * dstsize.Y / 2); | |
+ core::rect<s32> rect(0, 0, dstsize.X, dstsize.Y); | |
+ rect += pos + offset + v2s32(e->offset.X, e->offset.Y); | |
driver->draw2DImage(texture, rect, | |
core::rect<s32>(core::position2d<s32>(0,0), imgsize), | |
NULL, colors, true); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment