summaryrefslogtreecommitdiff
path: root/src/localplayer.cpp
diff options
context:
space:
mode:
authorDavid Athay <ko2fan@gmail.com>2008-04-11 14:12:30 +0000
committerDavid Athay <ko2fan@gmail.com>2008-04-11 14:12:30 +0000
commitb50649ee5e28511df72cc3a08023747727c5b6f0 (patch)
tree1f1408b4550e70388ed1103747f973dbe77670f5 /src/localplayer.cpp
parent760967f3c0dae0c352568a2865c57679559806fa (diff)
downloadMana-b50649ee5e28511df72cc3a08023747727c5b6f0.tar.gz
Mana-b50649ee5e28511df72cc3a08023747727c5b6f0.tar.bz2
Mana-b50649ee5e28511df72cc3a08023747727c5b6f0.tar.xz
Mana-b50649ee5e28511df72cc3a08023747727c5b6f0.zip
Players now need to
click on the monster sprites rather than the tile. Players will now move to the target before attacking it.
Diffstat (limited to 'src/localplayer.cpp')
-rw-r--r--src/localplayer.cpp33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/localplayer.cpp b/src/localplayer.cpp
index 0ed23892..2aae199e 100644
--- a/src/localplayer.cpp
+++ b/src/localplayer.cpp
@@ -48,7 +48,8 @@ LocalPlayer::LocalPlayer(Uint32 id, Uint16 job, Map *map):
mInventory(new Inventory),
mXp(0), mNetwork(0),
mTarget(NULL), mPickUpTarget(NULL),
- mTrading(false), mLastAction(-1),
+ mTrading(false), mGoingToTarget(false),
+ mLastAction(-1),
mWalkingDir(0), mDestX(0), mDestY(0)
{
}
@@ -104,6 +105,16 @@ void LocalPlayer::nextStep()
{
walk(mWalkingDir);
}
+
+ }
+
+ if (mGoingToTarget && mTarget && withinAttackRange(mTarget))
+ {
+ mAction = Being::STAND;
+ attack(mTarget, true);
+ mGoingToTarget = false;
+ mPath.clear();
+ return;
}
Player::nextStep();
@@ -453,3 +464,23 @@ void LocalPlayer::setXp(int xp)
}
mXp = xp;
}
+
+bool LocalPlayer::withinAttackRange(Being *target)
+{
+ int dist_x = abs(target->mX - mX);
+ int dist_y = abs(target->mY - mY);
+
+ if (dist_x > getAttackRange() || dist_y > getAttackRange())
+ {
+ return false;
+ }
+
+ return true;
+}
+
+void LocalPlayer::setGotoTarget(Being *target)
+{
+ mTarget = target;
+ mGoingToTarget = true;
+ setDestination(target->mX, target->mY);
+}