summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--src/net/beinghandler.cpp17
-rw-r--r--src/net/beinghandler.h1
3 files changed, 21 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 86ea7b87..9382ee08 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,7 +9,7 @@
src/net/playerhandler.cpp, src/Makefile.am: Got rid of no longer used
protocol.cpp.
-2006-08-26 Guillaume Melquiond <guillaume.melquiond@gmail.com>
+2006-08-27 Guillaume Melquiond <guillaume.melquiond@gmail.com>
* src/localplayer.cpp, src/net/protocol.h: Send move message
whenever a destination is selected.
@@ -19,6 +19,8 @@
src/net/beinghandler.cpp, src/net/playerhandler.cpp: Changed beings
tile-based coordinates to pixel-based coordinates (almost, they point
to tile centers for now).
+ * src/net/beinghandler.cpp, src/net/beinghandler.h: Added support for
+ leaving beings.
2006-08-26 Bjørn Lindeijer <bjorn@lindeijer.nl>
diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp
index ac2801c2..59a4fa9a 100644
--- a/src/net/beinghandler.cpp
+++ b/src/net/beinghandler.cpp
@@ -54,6 +54,7 @@ BeingHandler::BeingHandler()
//SMSG_PLAYER_MOVE,
//0x0119,
GPMSG_BEING_ENTER,
+ GPMSG_BEING_LEAVE,
GPMSG_BEINGS_MOVE,
0
};
@@ -76,6 +77,10 @@ void BeingHandler::handleMessage(MessageIn &msg)
handleBeingEnterMessage(msg);
break;
+ case GPMSG_BEING_LEAVE:
+ handleBeingLeaveMessage(msg);
+ break;
+
case GPMSG_BEINGS_MOVE:
handleBeingsMoveMessage(msg);
break;
@@ -412,6 +417,18 @@ BeingHandler::handleBeingEnterMessage(MessageIn &msg)
being->setSex(msg.readByte());
}
+void BeingHandler::handleBeingLeaveMessage(MessageIn &msg)
+{
+ msg.readByte(); // type, assume player for now, TODO
+ Being *being = beingManager->findBeing(msg.readLong());
+ if (!being) return;
+ if (being == player_node->getTarget())
+ {
+ player_node->stopAttack();
+ }
+ beingManager->destroyBeing(being);
+}
+
void BeingHandler::handleBeingsMoveMessage(MessageIn &msg)
{
for (int nb = (msg.getLength() - 2) / (4 + 4 * 2); nb > 0; --nb)
diff --git a/src/net/beinghandler.h b/src/net/beinghandler.h
index 0b0d10b9..59539ffe 100644
--- a/src/net/beinghandler.h
+++ b/src/net/beinghandler.h
@@ -35,6 +35,7 @@ class BeingHandler : public MessageHandler
private:
void handleBeingEnterMessage(MessageIn &msg);
+ void handleBeingLeaveMessage(MessageIn &msg);
void handleBeingsMoveMessage(MessageIn &msg);
};