diff options
-rw-r--r-- | src/being.cpp | 14 | ||||
-rw-r--r-- | src/being.h | 5 |
2 files changed, 14 insertions, 5 deletions
diff --git a/src/being.cpp b/src/being.cpp index 887be37c..c7ee9083 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -172,6 +172,11 @@ void Being::setMoveSpeed(const Vector &speed) Net::getPlayerHandler()->getPixelsPerTickMoveSpeed(speed); } +int Being::getSpeechTextYPosition() const +{ + return getPixelY() - std::min(getHeight(), 64) - 6; +} + void Being::setPosition(const Vector &pos) { Actor::setPosition(pos); @@ -179,8 +184,7 @@ void Being::setPosition(const Vector &pos) updateCoords(); if (mText) - mText->adviseXY((int)pos.x, - (int)pos.y - getHeight() - mText->getHeight() - 6); + mText->adviseXY(getPixelX(), getSpeechTextYPosition()); } void Being::setDestination(int dstX, int dstY) @@ -299,7 +303,7 @@ void Being::setSpeech(const std::string &text, int time) delete mText; mText = new Text(mSpeech, - getPixelX(), getPixelY() - getHeight(), + getPixelX(), getSpeechTextYPosition(), gcn::Graphics::CENTER, &userPalette->getColor(UserPalette::PARTICLE), true); @@ -897,7 +901,6 @@ void Being::logic() void Being::drawSpeech(int offsetX, int offsetY) { const int px = getPixelX() - offsetX; - const int py = getPixelY() - offsetY; const int speech = config.getIntValue("speech"); // Draw speech above this being @@ -921,7 +924,8 @@ void Being::drawSpeech(int offsetX, int offsetY) mSpeechBubble->setText(mSpeech, showName); mSpeechBubble->setPosition(px - (mSpeechBubble->getWidth() / 2), - py - getHeight() - (mSpeechBubble->getHeight())); + getSpeechTextYPosition() + - mSpeechBubble->getHeight() - offsetY); mSpeechBubble->setVisible(true); } else if (mSpeechTime > 0 && speech == TEXT_OVERHEAD) diff --git a/src/being.h b/src/being.h index c6fd63ed..a7ba29fc 100644 --- a/src/being.h +++ b/src/being.h @@ -468,6 +468,11 @@ class Being : public ActorSprite, public EventListener void updateColors(); + /** + * Gets the advised Y chat text position. + */ + int getSpeechTextYPosition() const; + BeingInfo *mInfo; int mActionTime; /**< Time spent in current action. TODO: Remove use of it */ |