summaryrefslogtreecommitdiff
path: root/src/net/npchandler.cpp
diff options
context:
space:
mode:
authorGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-07-23 16:51:13 +0000
committerGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-07-23 16:51:13 +0000
commit430bbe292eb51b3f3bb7b356d8b218b28bed0ff4 (patch)
treeafe53ed4e2978408a0082ec974f0b9dfab32a00c /src/net/npchandler.cpp
parenta30bb2e92405fb379db298f2996e1c0ecd3f4bbd (diff)
downloadmana-client-430bbe292eb51b3f3bb7b356d8b218b28bed0ff4.tar.gz
mana-client-430bbe292eb51b3f3bb7b356d8b218b28bed0ff4.tar.bz2
mana-client-430bbe292eb51b3f3bb7b356d8b218b28bed0ff4.tar.xz
mana-client-430bbe292eb51b3f3bb7b356d8b218b28bed0ff4.zip
Converted NPC code to new server.
Diffstat (limited to 'src/net/npchandler.cpp')
-rw-r--r--src/net/npchandler.cpp34
1 files changed, 14 insertions, 20 deletions
diff --git a/src/net/npchandler.cpp b/src/net/npchandler.cpp
index 02204a84..888a3a29 100644
--- a/src/net/npchandler.cpp
+++ b/src/net/npchandler.cpp
@@ -38,10 +38,8 @@ extern NpcTextDialog *npcTextDialog;
NPCHandler::NPCHandler()
{
static const Uint16 _messages[] = {
- SMSG_NPC_CHOICE,
- SMSG_NPC_MESSAGE,
- SMSG_NPC_NEXT,
- SMSG_NPC_CLOSE,
+ GPMSG_NPC_CHOICE,
+ GPMSG_NPC_MESSAGE,
0
};
handledMessages = _messages;
@@ -49,30 +47,26 @@ NPCHandler::NPCHandler()
void NPCHandler::handleMessage(MessageIn &msg)
{
- int id;
+ Being *being = beingManager->findBeing(msg.readShort());
+ if (!being || being->getType() != Being::NPC)
+ {
+ return;
+ }
+
+ current_npc = static_cast< NPC * >(being);
+ std::string text = msg.readString(msg.getUnreadLength());
switch (msg.getId())
{
- case SMSG_NPC_CHOICE:
- msg.readShort(); // length
- id = msg.readLong();
- current_npc = dynamic_cast<NPC*>(beingManager->findBeing(id));
- npcListDialog->parseItems(msg.readString(msg.getLength() - 8));
+ case GPMSG_NPC_CHOICE:
+ npcListDialog->parseItems(text);
npcListDialog->setVisible(true);
break;
- case SMSG_NPC_MESSAGE:
- msg.readShort(); // length
- id = msg.readLong();
- current_npc = dynamic_cast<NPC*>(beingManager->findBeing(id));
- npcTextDialog->addText(msg.readString(msg.getLength() - 8));
+ case GPMSG_NPC_MESSAGE:
+ npcTextDialog->addText(text);
npcListDialog->setVisible(false);
npcTextDialog->setVisible(true);
break;
-
- case SMSG_NPC_NEXT:
- case SMSG_NPC_CLOSE:
- // Next/Close button in NPC dialog, currently unused
- break;
}
}