summaryrefslogtreecommitdiff
path: root/src/gui/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/widgets')
-rw-r--r--src/gui/widgets/playerbox.cpp29
-rw-r--r--src/gui/widgets/playerbox.h3
-rw-r--r--src/gui/widgets/window.cpp7
-rw-r--r--src/gui/widgets/window.h2
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();