diff options
author | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2007-07-23 16:51:13 +0000 |
---|---|---|
committer | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2007-07-23 16:51:13 +0000 |
commit | 430bbe292eb51b3f3bb7b356d8b218b28bed0ff4 (patch) | |
tree | afe53ed4e2978408a0082ec974f0b9dfab32a00c /src/net/npchandler.cpp | |
parent | a30bb2e92405fb379db298f2996e1c0ecd3f4bbd (diff) | |
download | mana-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.cpp | 34 |
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; } } |