summaryrefslogtreecommitdiff
path: root/src/gui/viewport.cpp
diff options
context:
space:
mode:
authorJared Adams <jaxad0127@gmail.com>2010-06-09 18:13:06 -0600
committerJared Adams <jaxad0127@gmail.com>2010-06-10 12:28:28 -0600
commitccafb75577f9ea8f86243d26e80fb60e56af12d1 (patch)
treefd8e0566118c217f0efa3c32b90d6f8870822233 /src/gui/viewport.cpp
parent35e024b85a5448cba235fa400f9412fd4e289ec0 (diff)
downloadmana-client-ccafb75577f9ea8f86243d26e80fb60e56af12d1.tar.gz
mana-client-ccafb75577f9ea8f86243d26e80fb60e56af12d1.tar.bz2
mana-client-ccafb75577f9ea8f86243d26e80fb60e56af12d1.tar.xz
mana-client-ccafb75577f9ea8f86243d26e80fb60e56af12d1.zip
Merge BeingManager and FloorItemManager as ActorSpriteManager
No need for two different classes to manage ActorSprites. Reviewed-by: Chuck Miller
Diffstat (limited to 'src/gui/viewport.cpp')
-rw-r--r--src/gui/viewport.cpp32
1 files changed, 19 insertions, 13 deletions
diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp
index 3e1f2581..66f614a8 100644
--- a/src/gui/viewport.cpp
+++ b/src/gui/viewport.cpp
@@ -21,10 +21,9 @@
#include "gui/viewport.h"
+#include "actorspritemanager.h"
#include "client.h"
-#include "beingmanager.h"
#include "configuration.h"
-#include "flooritemmanager.h"
#include "graphics.h"
#include "keyboardconfig.h"
#include "localplayer.h"
@@ -204,12 +203,16 @@ void Viewport::draw(gcn::Graphics *gcnGraphics)
}
// Draw player names, speech, and emotion sprite as needed
- const Beings &beings = beingManager->getAll();
- for (Beings::const_iterator i = beings.begin(), i_end = beings.end();
- i != i_end; ++i)
+ const ActorSprites &actors = actorSpriteManager->getAll();
+ for (ActorSpritesConstIterator it = actors.begin(), it_end = actors.end();
+ it != it_end; it++)
{
- (*i)->drawSpeech((int) mPixelViewX, (int) mPixelViewY);
- (*i)->drawEmotion(graphics, (int) mPixelViewX, (int) mPixelViewY);
+ if ((*it)->getType() == ActorSprite::FLOOR_ITEM)
+ continue;
+
+ Being *b = static_cast<Being*>(*it);
+ b->drawSpeech((int) mPixelViewX, (int) mPixelViewY);
+ b->drawEmotion(graphics, (int) mPixelViewX, (int) mPixelViewY);
}
if (miniStatusWindow)
@@ -417,7 +420,7 @@ void Viewport::mousePressed(gcn::MouseEvent &event)
else if (event.getButton() == gcn::MouseEvent::MIDDLE)
{
// Find the being nearest to the clicked position
- Being *target = beingManager->findNearestLivingBeing(
+ Being *target = actorSpriteManager->findNearestLivingBeing(
pixelX, pixelY, 20, ActorSprite::MONSTER);
if (target)
@@ -491,11 +494,11 @@ void Viewport::mouseMoved(gcn::MouseEvent &event)
const int x = (event.getX() + (int) mPixelViewX);
const int y = (event.getY() + (int) mPixelViewY);
- mHoverBeing = beingManager->findBeingByPixel(x, y);
+ mHoverBeing = actorSpriteManager->findBeingByPixel(x, y);
mBeingPopup->show(getMouseX(), getMouseY(), mHoverBeing);
- mHoverItem = floorItemManager->findByCoordinates(x / mMap->getTileWidth(),
- y / mMap->getTileHeight());
+ mHoverItem = actorSpriteManager->findItem(x / mMap->getTileWidth(),
+ y / mMap->getTileHeight());
if (mHoverBeing)
{
@@ -542,8 +545,11 @@ void Viewport::hideBeingPopup()
mBeingPopup->setVisible(false);
}
-void Viewport::clearHoverBeing(Being *being)
+void Viewport::clearHover(ActorSprite *actor)
{
- if (mHoverBeing == being)
+ if (mHoverBeing == actor)
mHoverBeing = 0;
+
+ if (mHoverItem == actor)
+ mHoverItem = 0;
}