diff options
Diffstat (limited to 'src/gui/widgets/playerbox.cpp')
-rw-r--r-- | src/gui/widgets/playerbox.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/gui/widgets/playerbox.cpp b/src/gui/widgets/playerbox.cpp index f0a6a5e89..423f26563 100644 --- a/src/gui/widgets/playerbox.cpp +++ b/src/gui/widgets/playerbox.cpp @@ -38,14 +38,18 @@ PlayerBox::PlayerBox(Being *being, std::string skin): mBeing(being), - mAlpha(1.0) + mAlpha(1.0), + mSkin(nullptr), + mDrawBackground(false) { init(skin); } PlayerBox::PlayerBox(std::string skin): mBeing(nullptr), - mAlpha(1.0) + mAlpha(1.0), + mSkin(nullptr), + mDrawBackground(false) { init(skin); } @@ -53,7 +57,10 @@ PlayerBox::PlayerBox(std::string skin): PlayerBox::~PlayerBox() { if (Theme::instance()) + { + Theme::instance()->unload(mSkin); Theme::instance()->unloadRect(mBackground); + } mBeing = nullptr; } @@ -66,7 +73,9 @@ void PlayerBox::init(std::string skin) { if (skin.empty()) skin = "playerbox_background.xml"; - Theme::instance()->loadRect(mBackground, skin); + mSkin = Theme::instance()->loadSkinRect(mBackground, skin); + if (mSkin) + mDrawBackground = (mSkin->getOption("drawbackground") != 0); } else { @@ -98,10 +107,14 @@ void PlayerBox::draw(gcn::Graphics *graphics) void PlayerBox::drawFrame(gcn::Graphics *graphics) { - int w, h, bs; - bs = getFrameSize(); - w = getWidth() + bs * 2; - h = getHeight() + bs * 2; + if (mDrawBackground) + { + int w, h, bs; + bs = getFrameSize(); + w = getWidth() + bs * 2; + h = getHeight() + bs * 2; - static_cast<Graphics*>(graphics)->drawImageRect(0, 0, w, h, mBackground); + static_cast<Graphics*>(graphics)->drawImageRect( + 0, 0, w, h, mBackground); + } } |