summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Athay <ko2fan@gmail.com>2009-05-18 18:18:23 +0100
committerDavid Athay <ko2fan@gmail.com>2009-05-18 18:18:23 +0100
commit72660d2c33773f0f74663efe6f9ac47648cdf283 (patch)
treee21d5a283eefaa5767d942f602c718eae42cbd4a /src
parente7df8c9dd7ebc14c1263c19c6a238ebcf4fd9465 (diff)
downloadmana-72660d2c33773f0f74663efe6f9ac47648cdf283.tar.gz
mana-72660d2c33773f0f74663efe6f9ac47648cdf283.tar.bz2
mana-72660d2c33773f0f74663efe6f9ac47648cdf283.tar.xz
mana-72660d2c33773f0f74663efe6f9ac47648cdf283.zip
Added target combat
Diffstat (limited to 'src')
-rw-r--r--src/gui/viewport.cpp8
-rw-r--r--src/localplayer.cpp21
-rw-r--r--src/localplayer.h4
-rw-r--r--src/main.cpp2
-rw-r--r--src/net/ea/playerhandler.cpp4
-rw-r--r--src/net/ea/playerhandler.h2
-rw-r--r--src/net/playerhandler.h2
-rw-r--r--src/net/tmwserv/gameserver/player.cpp7
-rw-r--r--src/net/tmwserv/gameserver/player.h1
-rw-r--r--src/net/tmwserv/playerhandler.cpp6
-rw-r--r--src/net/tmwserv/playerhandler.h2
-rw-r--r--src/net/tmwserv/protocol.h2
12 files changed, 28 insertions, 33 deletions
diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp
index 2c3f4007..cbde95c4 100644
--- a/src/gui/viewport.cpp
+++ b/src/gui/viewport.cpp
@@ -358,19 +358,15 @@ void Viewport::mousePressed(gcn::MouseEvent &event)
keyboard.isKeyActive(keyboard.KEY_ATTACK))
{
player_node->setGotoTarget(being);
-//TODO: This can be changed when TMWServ moves to target based combat
-#ifdef TMWSERV_SUPPORT
- player_node->attack();
-#else
+
player_node->attack(being,
!keyboard.isKeyActive(keyboard.KEY_TARGET));
-#endif
}
else
{
#ifdef TMWSERV_SUPPORT
- player_node->setDestination(event.getX() + (int) mPixelViewX,
+ player_node->setDestination(event.getX() + (int) mPixelViewX,
event.getY() + (int) mPixelViewY);
#else
player_node->setDestination(tilex, tiley);
diff --git a/src/localplayer.cpp b/src/localplayer.cpp
index e9bc30f2..4c34394b 100644
--- a/src/localplayer.cpp
+++ b/src/localplayer.cpp
@@ -606,7 +606,7 @@ void LocalPlayer::emote(Uint8 emotion)
}
#ifdef TMWSERV_SUPPORT
-
+/*
void LocalPlayer::attack()
{
if (mLastAction != -1)
@@ -656,13 +656,14 @@ void LocalPlayer::attack()
}
Net::GameServer::Player::attack(getSpriteDirection());
}
-
+*/
void LocalPlayer::useSpecial(int special)
{
Net::GameServer::Player::useSpecial(special);
}
-#else
+#endif
+//#else
void LocalPlayer::attack(Being *target, bool keep)
{
@@ -676,9 +677,13 @@ void LocalPlayer::attack(Being *target, bool keep)
mLastTarget = -1;
setTarget(target);
}
-
+#ifdef TMWSERV_SUPPORT
+ int dist_x = target->getPixelX();
+ int dist_y = target->getPixelY();
+#else
int dist_x = target->mX - mX;
int dist_y = target->mY - mY;
+#endif
// Must be standing to attack
if (mAction != STAND)
@@ -699,8 +704,12 @@ void LocalPlayer::attack(Being *target, bool keep)
setDirection(LEFT);
}
+#ifdef TMWSERV_SUPPORT
+ mLastAction = tick_time;
+#else
mWalkTime = tick_time;
mTargetTime = tick_time;
+#endif
setAction(ATTACK);
@@ -715,14 +724,12 @@ void LocalPlayer::attack(Being *target, bool keep)
sound.playSfx("sfx/fist-swish.ogg");
}
- Net::getPlayerHandler()->attack(target);
+ Net::getPlayerHandler()->attack(target->getId());
if (!keep)
stopAttack();
}
-#endif // no TMWSERV_SUPPORT
-
void LocalPlayer::stopAttack()
{
if (mTarget)
diff --git a/src/localplayer.h b/src/localplayer.h
index 4a85dd75..85681e03 100644
--- a/src/localplayer.h
+++ b/src/localplayer.h
@@ -214,11 +214,9 @@ class LocalPlayer : public Player
void setTrading(bool trading) { mTrading = trading; }
#ifdef TMWSERV_SUPPORT
- void attack();
void useSpecial(int id);
-#else
- void attack(Being *target = NULL, bool keep = false);
#endif
+ void attack(Being *target = NULL, bool keep = false);
/**
* Triggers whether or not to show the name as a GM name.
diff --git a/src/main.cpp b/src/main.cpp
index fb061818..f15eeccc 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -307,7 +307,7 @@ static void setUpdatesDir()
static void initHomeDir(const Options &options)
{
homeDir = options.homeDir;
-
+
if (homeDir.empty())
{
homeDir = std::string(PHYSFS_getUserDir()) +
diff --git a/src/net/ea/playerhandler.cpp b/src/net/ea/playerhandler.cpp
index b7131f0a..8cc4b44f 100644
--- a/src/net/ea/playerhandler.cpp
+++ b/src/net/ea/playerhandler.cpp
@@ -422,10 +422,10 @@ void PlayerHandler::handleMessage(MessageIn &msg)
}
}
-void PlayerHandler::attack(Being *being)
+void PlayerHandler::attack(int id)
{
MessageOut outMsg(CMSG_PLAYER_ATTACK);
- outMsg.writeInt32(being->getId());
+ outMsg.writeInt32(id);
outMsg.writeInt8(0);
}
diff --git a/src/net/ea/playerhandler.h b/src/net/ea/playerhandler.h
index 94ae952f..4429d856 100644
--- a/src/net/ea/playerhandler.h
+++ b/src/net/ea/playerhandler.h
@@ -35,7 +35,7 @@ class PlayerHandler : public MessageHandler, public Net::PlayerHandler
void handleMessage(MessageIn &msg);
- void attack(Being *being);
+ void attack(int id);
void emote(int emoteId);
diff --git a/src/net/playerhandler.h b/src/net/playerhandler.h
index 0998da04..c51c59c0 100644
--- a/src/net/playerhandler.h
+++ b/src/net/playerhandler.h
@@ -31,7 +31,7 @@ namespace Net {
class PlayerHandler
{
public:
- virtual void attack(Being *being) = 0;
+ virtual void attack(int id) = 0;
virtual void emote(int emoteId) = 0;
diff --git a/src/net/tmwserv/gameserver/player.cpp b/src/net/tmwserv/gameserver/player.cpp
index 3f05c954..93853681 100644
--- a/src/net/tmwserv/gameserver/player.cpp
+++ b/src/net/tmwserv/gameserver/player.cpp
@@ -58,13 +58,6 @@ void Net::GameServer::Player::moveItem(int oldSlot, int newSlot, int amount)
Net::GameServer::connection->send(msg);
}
-void Net::GameServer::Player::attack(int direction)
-{
- MessageOut msg(PGMSG_ATTACK);
- msg.writeInt8(direction);
- Net::GameServer::connection->send(msg);
-}
-
void Net::GameServer::Player::useSpecial(int special)
{
MessageOut msg(PGMSG_USE_SPECIAL);
diff --git a/src/net/tmwserv/gameserver/player.h b/src/net/tmwserv/gameserver/player.h
index eddd9102..24b25dc7 100644
--- a/src/net/tmwserv/gameserver/player.h
+++ b/src/net/tmwserv/gameserver/player.h
@@ -43,7 +43,6 @@ namespace Net
void walk(int x, int y);
void pickUp(int x, int y);
void moveItem(int oldSlot, int newSlot, int amount);
- void attack(int direction);
void useSpecial(int special);
void requestTrade(int id);
void acceptTrade(bool accept);
diff --git a/src/net/tmwserv/playerhandler.cpp b/src/net/tmwserv/playerhandler.cpp
index b697e8a8..543d18d8 100644
--- a/src/net/tmwserv/playerhandler.cpp
+++ b/src/net/tmwserv/playerhandler.cpp
@@ -332,9 +332,11 @@ void PlayerHandler::handleMapChangeMessage(MessageIn &msg)
viewport->scrollBy(scrollOffsetX, scrollOffsetY);
}
-void PlayerHandler::attack(Being *being)
+void PlayerHandler::attack(int id)
{
- // TODO
+ MessageOut msg(PGMSG_ATTACK);
+ msg.writeInt16(id);
+ Net::GameServer::connection->send(msg);
}
void PlayerHandler::emote(int emoteId)
diff --git a/src/net/tmwserv/playerhandler.h b/src/net/tmwserv/playerhandler.h
index 5524415e..238da182 100644
--- a/src/net/tmwserv/playerhandler.h
+++ b/src/net/tmwserv/playerhandler.h
@@ -34,7 +34,7 @@ class PlayerHandler : public MessageHandler, public Net::PlayerHandler
void handleMessage(MessageIn &msg);
- void attack(Being *being);
+ void attack(int id);
void emote(int emoteId);
diff --git a/src/net/tmwserv/protocol.h b/src/net/tmwserv/protocol.h
index 7fa3b372..0f2a1b0d 100644
--- a/src/net/tmwserv/protocol.h
+++ b/src/net/tmwserv/protocol.h
@@ -106,7 +106,7 @@ enum {
GPMSG_BEING_DIR_CHANGE = 0x0273, // W being id, B direction
GPMSG_BEINGS_MOVE = 0x0280, // { W being id, B flags [, C position, B speed] [, W*2 destination] }*
GPMSG_ITEMS = 0x0281, // { W item id, W*2 position }*
- PGMSG_ATTACK = 0x0290, // B direction
+ PGMSG_ATTACK = 0x0290, // W being id
PGMSG_USE_SPECIAL = 0x0292, // B specialID
GPMSG_BEING_ATTACK = 0x0291, // W being id
PGMSG_SAY = 0x02A0, // S text