diff options
-rw-r--r-- | src/being/actorsprite.cpp | 25 | ||||
-rw-r--r-- | src/being/actorsprite.h | 22 | ||||
-rw-r--r-- | src/being/being.cpp | 12 | ||||
-rw-r--r-- | src/flooritem.cpp | 5 |
4 files changed, 31 insertions, 33 deletions
diff --git a/src/being/actorsprite.cpp b/src/being/actorsprite.cpp index 327996e2d..133e3594f 100644 --- a/src/being/actorsprite.cpp +++ b/src/being/actorsprite.cpp @@ -75,34 +75,17 @@ ActorSprite::~ActorSprite() } } -bool ActorSprite::draw(Graphics *const graphics, +void ActorSprite::draw1(Graphics *const graphics, const int offsetX, const int offsetY) const { - FUNC_BLOCK("ActorSprite::draw", 1) - const int px = getPixelX() + offsetX - mapTileSize / 2; - // Temporary fix to the Y offset. -#ifdef MANASERV_SUPPORT - const int py = getPixelY() + offsetY - - ((Net::getNetworkType() == ServerInfo::MANASERV) ? 15 : mapTileSize); -#else - const int py = getPixelY() + offsetY - mapTileSize; -#endif - + FUNC_BLOCK("ActorSprite::draw1", 1) if (mUsedTargetCursor) { mUsedTargetCursor->update(tick_time * MILLISECONDS_IN_A_TICK); mUsedTargetCursor->draw(graphics, - px + getTargetOffsetX() - mCursorPaddingX, - py + getTargetOffsetY() - mCursorPaddingY); + offsetX + getTargetOffsetX() - mCursorPaddingX, + offsetY + getTargetOffsetY() - mCursorPaddingY); } - - return drawSpriteAt(graphics, px, py); -} - -bool ActorSprite::drawSpriteAt(Graphics *const graphics, - const int x, const int y) const -{ - return CompoundSprite::draw(graphics, x, y); } void ActorSprite::logic() diff --git a/src/being/actorsprite.h b/src/being/actorsprite.h index db1e4a47d..709e1f27b 100644 --- a/src/being/actorsprite.h +++ b/src/being/actorsprite.h @@ -88,12 +88,9 @@ public: virtual Type getType() const A_WARN_UNUSED { return UNKNOWN; } - virtual bool draw(Graphics *const graphics, - const int offsetX, - const int offsetY) const override; - - virtual bool drawSpriteAt(Graphics *const graphics, - const int x, const int y) const; + void draw1(Graphics *const graphics, + const int offsetX, + const int offsetY) const; virtual void logic(); @@ -182,6 +179,19 @@ public: */ void removeActorSpriteListener(ActorSpriteListener *const listener); + int getActorX() const + { return getPixelX() - mapTileSize / 2; } + + int getActorY() const + { +#ifdef MANASERV_SUPPORT + return getPixelY() + ((Net::getNetworkType() == ServerInfo::MANASERV) + ? 15 : mapTileSize); +#else + return getPixelY() - mapTileSize; +#endif + } + protected: /** * Notify self that the stun mode has been updated. Invoked by diff --git a/src/being/being.cpp b/src/being/being.cpp index be8db4058..0f47011c1 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -2253,7 +2253,12 @@ bool Being::draw(Graphics *const graphics, { bool res = true; if (!mErased) - res = ActorSprite::draw(graphics, offsetX, offsetY); + { + const int px = getActorX() + offsetX; + const int py = getActorY() + offsetY; + ActorSprite::draw1(graphics, px, py); + res = drawSpriteAt(graphics, px, py); + } return res; } @@ -2296,10 +2301,7 @@ void Being::drawSpritesSDL(Graphics *const graphics, bool Being::drawSpriteAt(Graphics *const graphics, const int x, const int y) const { - bool res = true; - - if (!mErased) - res = ActorSprite::drawSpriteAt(graphics, x, y); + bool res = CompoundSprite::draw(graphics, x, y); if (!userPalette) return res; diff --git a/src/flooritem.cpp b/src/flooritem.cpp index 1976574ab..3019dca02 100644 --- a/src/flooritem.cpp +++ b/src/flooritem.cpp @@ -144,7 +144,10 @@ bool FloorItem::draw(Graphics *const graphics, } } - const bool res = ActorSprite::draw(graphics, offsetX, offsetY); + const int px = getActorX() + offsetX; + const int py = getActorY() + offsetY; + ActorSprite::draw1(graphics, px, py); + const bool res = CompoundSprite::draw(graphics, px, py); if (mHighlight) { |