diff options
author | David Athay <ko2fan@gmail.com> | 2009-05-18 18:18:23 +0100 |
---|---|---|
committer | David Athay <ko2fan@gmail.com> | 2009-05-18 18:18:23 +0100 |
commit | 72660d2c33773f0f74663efe6f9ac47648cdf283 (patch) | |
tree | e21d5a283eefaa5767d942f602c718eae42cbd4a /src | |
parent | e7df8c9dd7ebc14c1263c19c6a238ebcf4fd9465 (diff) | |
download | mana-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.cpp | 8 | ||||
-rw-r--r-- | src/localplayer.cpp | 21 | ||||
-rw-r--r-- | src/localplayer.h | 4 | ||||
-rw-r--r-- | src/main.cpp | 2 | ||||
-rw-r--r-- | src/net/ea/playerhandler.cpp | 4 | ||||
-rw-r--r-- | src/net/ea/playerhandler.h | 2 | ||||
-rw-r--r-- | src/net/playerhandler.h | 2 | ||||
-rw-r--r-- | src/net/tmwserv/gameserver/player.cpp | 7 | ||||
-rw-r--r-- | src/net/tmwserv/gameserver/player.h | 1 | ||||
-rw-r--r-- | src/net/tmwserv/playerhandler.cpp | 6 | ||||
-rw-r--r-- | src/net/tmwserv/playerhandler.h | 2 | ||||
-rw-r--r-- | src/net/tmwserv/protocol.h | 2 |
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 |