Add support for using textures in hotbar

This commit is contained in:
BlockMen 2013-08-01 01:09:57 +02:00 committed by Kahrl
parent fead7a27ca
commit 439079cad8
2 changed files with 50 additions and 22 deletions

@ -64,6 +64,8 @@ Hud::Hud(video::IVideoDriver *driver, gui::IGUIEnvironment* guienv,
selectionbox_argb = video::SColor(255, sbox_r, sbox_g, sbox_b); selectionbox_argb = video::SColor(255, sbox_r, sbox_g, sbox_b);
use_crosshair_image = tsrc->isKnownSourceImage("crosshair.png"); use_crosshair_image = tsrc->isKnownSourceImage("crosshair.png");
use_hotbar_bg_img = tsrc->isKnownSourceImage("hotbar.png");
use_hotbar_border_img = tsrc->isKnownSourceImage("hotbar_selected.png");
} }
@ -90,6 +92,18 @@ void Hud::drawItem(v2s32 upperleftpos, s32 imgsize, s32 itemcount,
driver->draw2DRectangle(bgcolor, barrect, NULL);*/ driver->draw2DRectangle(bgcolor, barrect, NULL);*/
core::rect<s32> imgrect(0, 0, imgsize, imgsize); core::rect<s32> imgrect(0, 0, imgsize, imgsize);
const video::SColor hbar_color(255, 255, 255, 255);
const video::SColor hbar_colors[] = {hbar_color, hbar_color, hbar_color, hbar_color};
if (use_hotbar_bg_img) {
core::rect<s32> imgrect2(-padding/2, -padding/2, width+padding/2, height+padding/2);
core::rect<s32> rect2 = imgrect2 + pos;
video::ITexture *texture = tsrc->getTexture("hotbar.png");
core::dimension2di imgsize(texture->getOriginalSize());
driver->draw2DImage(texture, rect2,
core::rect<s32>(core::position2d<s32>(0,0), imgsize),
NULL, hbar_colors, true);
}
for (s32 i = 0; i < itemcount; i++) for (s32 i = 0; i < itemcount; i++)
{ {
@ -112,8 +126,18 @@ void Hud::drawItem(v2s32 upperleftpos, s32 imgsize, s32 itemcount,
core::rect<s32> rect = imgrect + pos + steppos; core::rect<s32> rect = imgrect + pos + steppos;
if (selectitem == i + 1) if (selectitem == i + 1) {
{ if (use_hotbar_border_img) {
core::rect<s32> imgrect2(-padding*2, -padding*2, height, height);
rect = imgrect2 + pos + steppos;
video::ITexture *texture = tsrc->getTexture("hotbar_selected.png");
core::dimension2di imgsize(texture->getOriginalSize());
driver->draw2DImage(texture, rect,
core::rect<s32>(core::position2d<s32>(0,0), imgsize),
NULL, hbar_colors, true);
rect = imgrect + pos + steppos;
} else {
rect = imgrect + pos + steppos;
video::SColor c_outside(255,255,0,0); video::SColor c_outside(255,255,0,0);
//video::SColor c_outside(255,0,0,0); //video::SColor c_outside(255,0,0,0);
//video::SColor c_inside(255,192,192,192); //video::SColor c_inside(255,192,192,192);
@ -165,8 +189,10 @@ void Hud::drawItem(v2s32 upperleftpos, s32 imgsize, s32 itemcount,
), NULL); ), NULL);
*/ */
} }
}
video::SColor bgcolor2(128, 0, 0, 0); video::SColor bgcolor2(128, 0, 0, 0);
if (!use_hotbar_bg_img)
driver->draw2DRectangle(bgcolor2, rect, NULL); driver->draw2DRectangle(bgcolor2, rect, NULL);
drawItemStack(driver, font, item, rect, NULL, gamedef); drawItemStack(driver, font, item, rect, NULL, gamedef);
} }

@ -106,6 +106,8 @@ public:
video::SColor crosshair_argb; video::SColor crosshair_argb;
video::SColor selectionbox_argb; video::SColor selectionbox_argb;
bool use_crosshair_image; bool use_crosshair_image;
bool use_hotbar_border_img;
bool use_hotbar_bg_img;
Hud(video::IVideoDriver *driver, gui::IGUIEnvironment* guienv, Hud(video::IVideoDriver *driver, gui::IGUIEnvironment* guienv,
gui::IGUIFont *font, u32 text_height, IGameDef *gamedef, gui::IGUIFont *font, u32 text_height, IGameDef *gamedef,