diff options
Diffstat (limited to 'src/gui/widgets')
-rw-r--r-- | src/gui/widgets/playerbox.cpp | 29 | ||||
-rw-r--r-- | src/gui/widgets/playerbox.h | 3 | ||||
-rw-r--r-- | src/gui/widgets/window.cpp | 7 | ||||
-rw-r--r-- | src/gui/widgets/window.h | 2 |
4 files changed, 33 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); + } } diff --git a/src/gui/widgets/playerbox.h b/src/gui/widgets/playerbox.h index 6498e69ec..4f413f23c 100644 --- a/src/gui/widgets/playerbox.h +++ b/src/gui/widgets/playerbox.h @@ -31,6 +31,7 @@ class Being; class ImageRect; +class Skin; /** * A box showing a player character. @@ -81,6 +82,8 @@ class PlayerBox : public gcn::ScrollArea float mAlpha; ImageRect mBackground; + Skin *mSkin; + bool mDrawBackground; }; #endif diff --git a/src/gui/widgets/window.cpp b/src/gui/widgets/window.cpp index f84376f2d..3fb0649c2 100644 --- a/src/gui/widgets/window.cpp +++ b/src/gui/widgets/window.cpp @@ -1029,3 +1029,10 @@ int Window::getOption(std::string name) return mSkin->getOption(name); return 0; } + +bool Window::getOptionBool(std::string name) +{ + if (mSkin) + return mSkin->getOption(name) != 0; + return 0; +} diff --git a/src/gui/widgets/window.h b/src/gui/widgets/window.h index ee49f2852..12c40859a 100644 --- a/src/gui/widgets/window.h +++ b/src/gui/widgets/window.h @@ -401,6 +401,8 @@ class Window : public gcn::Window, gcn::WidgetListener int getOption(std::string name); + bool getOptionBool(std::string name); + protected: bool canMove(); |