Inventory transparency; very loosely based on sapier's commits.

Also contains some commented-out code for testing out different looks
in the future.
This commit is contained in:
Perttu Ahola 2011-08-23 00:31:18 +03:00
parent d4df20a913
commit e4f443a57a
2 changed files with 70 additions and 17 deletions

View File

@ -319,17 +319,61 @@ void draw_hotbar(video::IVideoDriver *driver, gui::IGUIFont *font,
if(g_selected_item == i) if(g_selected_item == i)
{ {
driver->draw2DRectangle(video::SColor(255,255,0,0), video::SColor c_outside(255,255,0,0);
core::rect<s32>(rect.UpperLeftCorner - v2s32(1,1)*padding, //video::SColor c_outside(255,0,0,0);
rect.LowerRightCorner + v2s32(1,1)*padding), //video::SColor c_inside(255,192,192,192);
NULL); s32 x1 = rect.UpperLeftCorner.X;
} s32 y1 = rect.UpperLeftCorner.Y;
else s32 x2 = rect.LowerRightCorner.X;
{ s32 y2 = rect.LowerRightCorner.Y;
video::SColor bgcolor2(128,0,0,0); // Black base borders
driver->draw2DRectangle(bgcolor2, rect, NULL); driver->draw2DRectangle(c_outside,
core::rect<s32>(
v2s32(x1 - padding, y1 - padding),
v2s32(x2 + padding, y1)
), NULL);
driver->draw2DRectangle(c_outside,
core::rect<s32>(
v2s32(x1 - padding, y2),
v2s32(x2 + padding, y2 + padding)
), NULL);
driver->draw2DRectangle(c_outside,
core::rect<s32>(
v2s32(x1 - padding, y1),
v2s32(x1, y2)
), NULL);
driver->draw2DRectangle(c_outside,
core::rect<s32>(
v2s32(x2, y1),
v2s32(x2 + padding, y2)
), NULL);
/*// Light inside borders
driver->draw2DRectangle(c_inside,
core::rect<s32>(
v2s32(x1 - padding/2, y1 - padding/2),
v2s32(x2 + padding/2, y1)
), NULL);
driver->draw2DRectangle(c_inside,
core::rect<s32>(
v2s32(x1 - padding/2, y2),
v2s32(x2 + padding/2, y2 + padding/2)
), NULL);
driver->draw2DRectangle(c_inside,
core::rect<s32>(
v2s32(x1 - padding/2, y1),
v2s32(x1, y2)
), NULL);
driver->draw2DRectangle(c_inside,
core::rect<s32>(
v2s32(x2, y1),
v2s32(x2 + padding/2, y2)
), NULL);
*/
} }
video::SColor bgcolor2(128,0,0,0);
driver->draw2DRectangle(bgcolor2, rect, NULL);
if(item != NULL) if(item != NULL)
{ {
drawInventoryItem(driver, font, item, rect, NULL); drawInventoryItem(driver, font, item, rect, NULL);

View File

@ -41,7 +41,7 @@ void drawInventoryItem(video::IVideoDriver *driver,
driver->draw2DImage(texture, rect, driver->draw2DImage(texture, rect,
core::rect<s32>(core::position2d<s32>(0,0), core::rect<s32>(core::position2d<s32>(0,0),
core::dimension2di(texture->getOriginalSize())), core::dimension2di(texture->getOriginalSize())),
clip, colors, false); clip, colors, true);
} }
else else
{ {
@ -241,22 +241,31 @@ void GUIInventoryMenu::drawList(const ListDrawSpec &s)
if(m_selected_item != NULL && m_selected_item->listname == s.listname if(m_selected_item != NULL && m_selected_item->listname == s.listname
&& m_selected_item->i == i) && m_selected_item->i == i)
{ {
/*s32 border = imgsize.X/12;
driver->draw2DRectangle(video::SColor(255,192,192,192),
core::rect<s32>(rect.UpperLeftCorner - v2s32(1,1)*border,
rect.LowerRightCorner + v2s32(1,1)*border),
NULL);
driver->draw2DRectangle(video::SColor(255,0,0,0),
core::rect<s32>(rect.UpperLeftCorner - v2s32(1,1)*((border+1)/2),
rect.LowerRightCorner + v2s32(1,1)*((border+1)/2)),
NULL);*/
s32 border = 2;
driver->draw2DRectangle(video::SColor(255,255,0,0), driver->draw2DRectangle(video::SColor(255,255,0,0),
core::rect<s32>(rect.UpperLeftCorner - v2s32(2,2), core::rect<s32>(rect.UpperLeftCorner - v2s32(1,1)*border,
rect.LowerRightCorner + v2s32(2,2)), rect.LowerRightCorner + v2s32(1,1)*border),
&AbsoluteClippingRect); &AbsoluteClippingRect);
} }
video::SColor bgcolor(255,128,128,128);
driver->draw2DRectangle(bgcolor, rect, &AbsoluteClippingRect);
if(item) if(item)
{ {
drawInventoryItem(driver, font, item, drawInventoryItem(driver, font, item,
rect, &AbsoluteClippingRect); rect, &AbsoluteClippingRect);
} }
else
{
video::SColor bgcolor(255,128,128,128);
driver->draw2DRectangle(bgcolor, rect, &AbsoluteClippingRect);
}
} }
} }