diff options
author | Chuck Miller <shadowmil@gmail.com> | 2010-01-15 23:35:30 -0500 |
---|---|---|
committer | Chuck Miller <shadowmil@gmail.com> | 2010-01-15 23:38:07 -0500 |
commit | b278542da029c629736be8605a9b4d85a6f2b902 (patch) | |
tree | e935cf888be4e88d5f471654a27fbdf512ab537b | |
parent | c5e241b276bcbf725309360edc2bdf033f49e98e (diff) | |
download | mana-b278542da029c629736be8605a9b4d85a6f2b902.tar.gz mana-b278542da029c629736be8605a9b4d85a6f2b902.tar.bz2 mana-b278542da029c629736be8605a9b4d85a6f2b902.tar.xz mana-b278542da029c629736be8605a9b4d85a6f2b902.zip |
Fixes drawing sprite in the playerbox widget.
-rw-r--r-- | src/being.cpp | 14 | ||||
-rw-r--r-- | src/being.h | 8 | ||||
-rw-r--r-- | src/gui/widgets/playerbox.cpp | 2 |
3 files changed, 23 insertions, 1 deletions
diff --git a/src/being.cpp b/src/being.cpp index 613e692a..45a621e4 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -664,6 +664,20 @@ void Being::draw(Graphics *graphics, int offsetX, int offsetY) const } } +void Being::drawSpriteAt(Graphics *graphics, int x, int y) const +{ + const int px = x - 16; + const int py = y - 32; + + for (SpriteConstIterator it = mSprites.begin(); it != mSprites.end(); it++) + if (*it) + { + if ((*it)->getAlpha() != mAlpha) + (*it)->setAlpha(mAlpha); + (*it)->draw(graphics, px, py); + } +} + void Being::drawEmotion(Graphics *graphics, int offsetX, int offsetY) { if (!mEmotion) diff --git a/src/being.h b/src/being.h index 02abf898..f670722c 100644 --- a/src/being.h +++ b/src/being.h @@ -321,9 +321,17 @@ class Being : public Sprite, public ConfigListener * Draws this being to the given graphics context. * * @see Sprite::draw(Graphics, int, int) + * + * TODO: The following two functions should be combined. + * at some point draw(), was changed to use mPx and mPy, with arugements + * only for the offset, drawSpriteAt() takes x, and y and draws the sprite + * exactly at those coords (though it does do some computing to work how the + * old draw() worked). */ virtual void draw(Graphics *graphics, int offsetX, int offsetY) const; + virtual void drawSpriteAt(Graphics *graphics, int x, int y) const; + /** * Set the alpha opacity used to draw the being. */ diff --git a/src/gui/widgets/playerbox.cpp b/src/gui/widgets/playerbox.cpp index 4c499c36..9419616e 100644 --- a/src/gui/widgets/playerbox.cpp +++ b/src/gui/widgets/playerbox.cpp @@ -86,7 +86,7 @@ void PlayerBox::draw(gcn::Graphics *graphics) const int bs = getFrameSize(); const int x = getWidth() / 2 + bs; const int y = getHeight() - bs; - mPlayer->draw(static_cast<Graphics*>(graphics), x, y); + mPlayer->drawSpriteAt(static_cast<Graphics*>(graphics), x, y); } if (config.getValue("guialpha", 0.8) != mAlpha) |