diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/actorsprite.cpp | 18 | ||||
-rw-r--r-- | src/being.cpp | 6 | ||||
-rw-r--r-- | src/compoundsprite.cpp | 33 | ||||
-rw-r--r-- | src/compoundsprite.h | 3 | ||||
-rw-r--r-- | src/gui/widgets/playerbox.cpp | 4 | ||||
-rw-r--r-- | src/net/tmwa/charserverhandler.cpp | 2 |
6 files changed, 27 insertions, 39 deletions
diff --git a/src/actorsprite.cpp b/src/actorsprite.cpp index b4b56451..68b92a1f 100644 --- a/src/actorsprite.cpp +++ b/src/actorsprite.cpp @@ -22,6 +22,7 @@ #include "client.h" #include "event.h" +#include "game.h" #include "imagesprite.h" #include "localplayer.h" #include "log.h" @@ -67,11 +68,8 @@ ActorSprite::~ActorSprite() bool ActorSprite::draw(Graphics *graphics, int offsetX, int offsetY) const { - // TODO: Eventually, we probably should fix all sprite offsets so that - // these translations aren't necessary anymore. The sprites know - // best where their base point should be. - const int px = getPixelX() + offsetX - 16; - const int py = getPixelY() + offsetY - 16; + int px = getPixelX() + offsetX; + int py = getPixelY() + offsetY; if (mUsedTargetCursor) { @@ -80,6 +78,12 @@ bool ActorSprite::draw(Graphics *graphics, int offsetX, int offsetY) const mUsedTargetCursor->draw(graphics, px, py); } + Map *map = Game::instance() ? Game::instance()->getCurrentMap() : 0; + if (map) + { + py += map->getTileHeight() / 2; + } + return drawSpriteAt(graphics, px, py); } @@ -450,8 +454,8 @@ void ActorSprite::loadTargetCursor(const std::string &filename, for (unsigned int i = 0; i < currentImageSet->size(); ++i) { anim->addFrame(currentImageSet->get(i), 75, - (16 - (currentImageSet->getWidth() / 2)), - (16 - (currentImageSet->getHeight() / 2))); + -(currentImageSet->getWidth() / 2), + -(currentImageSet->getHeight() / 2)); } SimpleAnimation *currentCursor = new SimpleAnimation(anim); diff --git a/src/being.cpp b/src/being.cpp index d4bca7ce..48e29258 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -953,11 +953,9 @@ void Being::updateCoords() // Monster names show above the sprite instead of below it if (getType() == MONSTER) - mDispName->adviseXY(getPixelX(), - getPixelY() - getHeight() - getOffsetY() - - mDispName->getHeight()); + mDispName->adviseXY(getPixelX(), getPixelY() - getHeight()); else - mDispName->adviseXY(getPixelX(), getPixelY()); + mDispName->adviseXY(getPixelX(), getPixelY() + mDispName->getHeight()); } void Being::flashName(int time) diff --git a/src/compoundsprite.cpp b/src/compoundsprite.cpp index 4e91d281..e96137c4 100644 --- a/src/compoundsprite.cpp +++ b/src/compoundsprite.cpp @@ -281,19 +281,8 @@ void CompoundSprite::redraw() const { mWidth = at(0)->getWidth(); mHeight = at(0)->getHeight(); - - // Temporary fix for position - Map *map = Game::instance() ? Game::instance()->getCurrentMap() : 0; - if (map) - { - mOffsetX = map->getTileWidth() / 2; - mOffsetY = map->getTileHeight(); - } - else // Char selection screen fix - { - mOffsetX = 16; - mOffsetY = 32; - } + mOffsetX = 0; + mOffsetY = 0; mNeedsRedraw = false; return; } @@ -326,18 +315,6 @@ void CompoundSprite::redraw() const mOffsetX -= posX; mOffsetY -= posY; - Map *map = Game::instance() ? Game::instance()->getCurrentMap() : 0; - if (map) - { - mOffsetX += map->getTileWidth() / 2; - mOffsetY += map->getTileHeight(); - } - else // Char selection screen fix - { - mOffsetX += 16; - mOffsetY += 32; - } - #if SDL_BYTEORDER == SDL_BIG_ENDIAN int rmask = 0xff000000; int gmask = 0x00ff0000; @@ -369,6 +346,12 @@ void CompoundSprite::redraw() const s->draw(graphics, posX - s->getWidth() / 2, posY - s->getHeight()); } + // Uncomment to see buffer sizes + /*graphics->fillRectangle(gcn::Rectangle(0, 0, 3, 3)); + graphics->fillRectangle(gcn::Rectangle(mWidth - 3, 0, 3, 3)); + graphics->fillRectangle(gcn::Rectangle(mWidth - 3, mHeight - 3, 3, 3)); + graphics->fillRectangle(gcn::Rectangle(0, mHeight - 3, 3, 3));*/ + delete graphics; SDL_Surface *surfaceA = SDL_CreateRGBSurface(SDL_HWSURFACE, mWidth, mHeight, diff --git a/src/compoundsprite.h b/src/compoundsprite.h index 5754c4e1..3a5e0129 100644 --- a/src/compoundsprite.h +++ b/src/compoundsprite.h @@ -96,6 +96,9 @@ public: */ virtual size_t getFrameCount(size_t layer); + void doRedraw() + { mNeedsRedraw = true; } + private: typedef CompoundSprite::iterator SpriteIterator; typedef CompoundSprite::const_iterator SpriteConstIterator; diff --git a/src/gui/widgets/playerbox.cpp b/src/gui/widgets/playerbox.cpp index 559ac5a6..f71889bb 100644 --- a/src/gui/widgets/playerbox.cpp +++ b/src/gui/widgets/playerbox.cpp @@ -85,8 +85,8 @@ void PlayerBox::draw(gcn::Graphics *graphics) { // Draw character const int bs = getFrameSize(); - const int x = getWidth() / 2 + bs - 16; - const int y = getHeight() - bs - 32; + const int x = getWidth() / 2 + bs; + const int y = getHeight() - bs; mBeing->drawSpriteAt(static_cast<Graphics*>(graphics), x, y); } diff --git a/src/net/tmwa/charserverhandler.cpp b/src/net/tmwa/charserverhandler.cpp index e6dc84a2..dcc68fb3 100644 --- a/src/net/tmwa/charserverhandler.cpp +++ b/src/net/tmwa/charserverhandler.cpp @@ -159,10 +159,10 @@ void CharServerHandler::handleMessage(Net::MessageIn &msg) mapServer.hostname = ipToString(msg.readInt32()); mapServer.port = msg.readInt16(); - // Prevent the selected local player from being deleted player_node = mSelectedCharacter->dummy; PlayerInfo::setBackend(mSelectedCharacter->data); + // Prevent the selected local player from being deleted mSelectedCharacter->dummy = 0; delete_all(mCharacters); |