From e4f443a57a1b1ecd95282de2908824078d19dea5 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Tue, 23 Aug 2011 00:31:18 +0300 Subject: [PATCH] Inventory transparency; very loosely based on sapier's commits. Also contains some commented-out code for testing out different looks in the future. --- src/game.cpp | 62 ++++++++++++++++++++++++++++++++++------ src/guiInventoryMenu.cpp | 25 ++++++++++------ 2 files changed, 70 insertions(+), 17 deletions(-) diff --git a/src/game.cpp b/src/game.cpp index 7c77996..dc3ed24 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -319,17 +319,61 @@ void draw_hotbar(video::IVideoDriver *driver, gui::IGUIFont *font, if(g_selected_item == i) { - driver->draw2DRectangle(video::SColor(255,255,0,0), - core::rect(rect.UpperLeftCorner - v2s32(1,1)*padding, - rect.LowerRightCorner + v2s32(1,1)*padding), - NULL); - } - else - { - video::SColor bgcolor2(128,0,0,0); - driver->draw2DRectangle(bgcolor2, rect, NULL); + video::SColor c_outside(255,255,0,0); + //video::SColor c_outside(255,0,0,0); + //video::SColor c_inside(255,192,192,192); + s32 x1 = rect.UpperLeftCorner.X; + s32 y1 = rect.UpperLeftCorner.Y; + s32 x2 = rect.LowerRightCorner.X; + s32 y2 = rect.LowerRightCorner.Y; + // Black base borders + driver->draw2DRectangle(c_outside, + core::rect( + v2s32(x1 - padding, y1 - padding), + v2s32(x2 + padding, y1) + ), NULL); + driver->draw2DRectangle(c_outside, + core::rect( + v2s32(x1 - padding, y2), + v2s32(x2 + padding, y2 + padding) + ), NULL); + driver->draw2DRectangle(c_outside, + core::rect( + v2s32(x1 - padding, y1), + v2s32(x1, y2) + ), NULL); + driver->draw2DRectangle(c_outside, + core::rect( + v2s32(x2, y1), + v2s32(x2 + padding, y2) + ), NULL); + /*// Light inside borders + driver->draw2DRectangle(c_inside, + core::rect( + v2s32(x1 - padding/2, y1 - padding/2), + v2s32(x2 + padding/2, y1) + ), NULL); + driver->draw2DRectangle(c_inside, + core::rect( + v2s32(x1 - padding/2, y2), + v2s32(x2 + padding/2, y2 + padding/2) + ), NULL); + driver->draw2DRectangle(c_inside, + core::rect( + v2s32(x1 - padding/2, y1), + v2s32(x1, y2) + ), NULL); + driver->draw2DRectangle(c_inside, + core::rect( + v2s32(x2, y1), + v2s32(x2 + padding/2, y2) + ), NULL); + */ } + video::SColor bgcolor2(128,0,0,0); + driver->draw2DRectangle(bgcolor2, rect, NULL); + if(item != NULL) { drawInventoryItem(driver, font, item, rect, NULL); diff --git a/src/guiInventoryMenu.cpp b/src/guiInventoryMenu.cpp index f90a2e9..8faf3d0 100644 --- a/src/guiInventoryMenu.cpp +++ b/src/guiInventoryMenu.cpp @@ -41,7 +41,7 @@ void drawInventoryItem(video::IVideoDriver *driver, driver->draw2DImage(texture, rect, core::rect(core::position2d(0,0), core::dimension2di(texture->getOriginalSize())), - clip, colors, false); + clip, colors, true); } else { @@ -241,22 +241,31 @@ void GUIInventoryMenu::drawList(const ListDrawSpec &s) if(m_selected_item != NULL && m_selected_item->listname == s.listname && m_selected_item->i == i) { + /*s32 border = imgsize.X/12; + driver->draw2DRectangle(video::SColor(255,192,192,192), + core::rect(rect.UpperLeftCorner - v2s32(1,1)*border, + rect.LowerRightCorner + v2s32(1,1)*border), + NULL); + driver->draw2DRectangle(video::SColor(255,0,0,0), + core::rect(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), - core::rect(rect.UpperLeftCorner - v2s32(2,2), - rect.LowerRightCorner + v2s32(2,2)), + core::rect(rect.UpperLeftCorner - v2s32(1,1)*border, + rect.LowerRightCorner + v2s32(1,1)*border), &AbsoluteClippingRect); } + video::SColor bgcolor(255,128,128,128); + driver->draw2DRectangle(bgcolor, rect, &AbsoluteClippingRect); + if(item) { drawInventoryItem(driver, font, item, rect, &AbsoluteClippingRect); } - else - { - video::SColor bgcolor(255,128,128,128); - driver->draw2DRectangle(bgcolor, rect, &AbsoluteClippingRect); - } + } }