diff options
-rw-r--r-- | src/localplayer.cpp | 10 | ||||
-rw-r--r-- | src/localplayer.h | 8 | ||||
-rw-r--r-- | src/npc.cpp | 14 |
3 files changed, 16 insertions, 16 deletions
diff --git a/src/localplayer.cpp b/src/localplayer.cpp index b8703b70..a719e265 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -328,6 +328,11 @@ void LocalPlayer::walk(unsigned char dir) } } +Being* LocalPlayer::getTarget() const +{ + return mTarget; +} + void LocalPlayer::setTarget(Being *target) { if (mLastTarget != -1 || target == this) @@ -565,11 +570,6 @@ void LocalPlayer::stopAttack() mLastTarget = -1; } -Being* LocalPlayer::getTarget() const -{ - return mTarget; -} - void LocalPlayer::revive() { MessageOut outMsg(mNetwork); diff --git a/src/localplayer.h b/src/localplayer.h index 0ba0dd90..b368d7c1 100644 --- a/src/localplayer.h +++ b/src/localplayer.h @@ -141,8 +141,6 @@ class LocalPlayer : public Player void stopAttack(); - Being* getTarget() const; - /** * Overridden to do nothing. The attacks of the local player are * displayed as soon as the player attacks, not when the server says @@ -154,6 +152,12 @@ class LocalPlayer : public Player virtual void handleAttack(Being *victim, int damage) {} /** + * Returns the current target of the player. Returns 0 if no being is + * currently targeted. + */ + Being* getTarget() const; + + /** * Sets the target being of the player. */ void setTarget(Being* target); diff --git a/src/npc.cpp b/src/npc.cpp index 3edb57a0..1088a082 100644 --- a/src/npc.cpp +++ b/src/npc.cpp @@ -73,21 +73,17 @@ NPC::NPC(Uint32 id, Uint16 job, Map *map, Network *network): NPC::~NPC() { - if (mName) - { - delete mName; + delete mName; + + if (player_node->getTarget() == this) player_node->setTarget(NULL); - } } void NPC::setName(const std::string &name) { - if (mName) - { - delete mName; - } - std::string displayName = name.substr(0, name.find('#', 0)); + const std::string displayName = name.substr(0, name.find('#', 0)); + delete mName; mName = new Text(displayName, mPx + NAME_X_OFFSET, mPy + NAME_Y_OFFSET, gcn::Graphics::CENTER, gcn::Color(200, 200, 255)); Being::setName(displayName + " (NPC)"); |