diff options
Diffstat (limited to 'src/net/eathena/questhandler.cpp')
-rw-r--r-- | src/net/eathena/questhandler.cpp | 139 |
1 files changed, 8 insertions, 131 deletions
diff --git a/src/net/eathena/questhandler.cpp b/src/net/eathena/questhandler.cpp index 404069594..db70958a4 100644 --- a/src/net/eathena/questhandler.cpp +++ b/src/net/eathena/questhandler.cpp @@ -25,6 +25,7 @@ #include "net/eathena/messageout.h" #include "net/eathena/protocol.h" +#include "net/eathena/questrecv.h" #include "resources/skillconsts.h" @@ -58,31 +59,31 @@ void QuestHandler::handleMessage(Net::MessageIn &msg) switch (msg.getId()) { case SMSG_QUEST_ADD: - processAddQuest(msg); + QuestRecv::processAddQuest(msg); break; case SMSG_QUEST_LIST: - processAddQuests(msg); + QuestRecv::processAddQuests(msg); break; case SMSG_QUEST_LIST_OBJECTIVES: - processAddQuestsObjectives(msg); + QuestRecv::processAddQuestsObjectives(msg); break; case SMSG_QUEST_UPDATE_OBJECTIVES: - processUpdateQuestsObjectives(msg); + QuestRecv::processUpdateQuestsObjectives(msg); break; case SMSG_QUEST_REMOVE: - processRemoveQuest(msg); + QuestRecv::processRemoveQuest(msg); break; case SMSG_QUEST_ACTIVATE: - processActivateQuest(msg); + QuestRecv::processActivateQuest(msg); break; case SMSG_QUEST_NPC_EFFECT: - processNpcQuestEffect(msg); + QuestRecv::processNpcQuestEffect(msg); break; default: @@ -91,130 +92,6 @@ void QuestHandler::handleMessage(Net::MessageIn &msg) BLOCK_END("QuestHandler::handleMessage") } -void QuestHandler::processAddQuest(Net::MessageIn &msg) -{ - const int var = msg.readInt32("quest id"); - const int val = msg.readUInt8("state"); - msg.readUInt8("time diff"); - msg.readInt32("time"); - const int num = msg.readInt16("objectives count"); - for (int f = 0; f < num; f ++) - { - // need use in quests kills list - msg.readInt32("monster id"); - msg.readInt16("count"); - msg.readString(24, "monster name"); - } - - msg.skipToEnd("unused"); - - if (questsWindow) - { - questsWindow->updateQuest(var, val); - questsWindow->rebuild(true); - } - if (skillDialog) - { - skillDialog->updateQuest(var, val); - skillDialog->playUpdateEffect(var + SKILL_VAR_MIN_ID); - } -} - -void QuestHandler::processAddQuests(Net::MessageIn &msg) -{ - msg.readInt16("len"); - const int num = msg.readInt32("quests count"); - for (int f = 0; f < num; f ++) - { - const int var = msg.readInt32("quest id"); - const int val = msg.readUInt8("state"); - msg.readInt32("time diff"); - msg.readInt32("time"); - msg.readInt16("objectives count"); - if (questsWindow) - questsWindow->updateQuest(var, val); - if (skillDialog) - skillDialog->updateQuest(var, val); - } - - if (questsWindow) - questsWindow->rebuild(false); -} - -void QuestHandler::processAddQuestsObjectives(Net::MessageIn &msg) -{ - msg.readInt16("len"); - const int quests = msg.readInt32("quests count"); - for (int f = 0; f < quests; f ++) - { - msg.readInt32("quest id"); - msg.readInt32("time diff"); - msg.readInt32("time"); - const int num = msg.readInt16("objectives count"); - for (int d = 0; d < num; d ++) - { - // need use in quests kills list - msg.readInt32("monster id"); - msg.readInt16("count"); - msg.readString(24, "monster name"); - } - } - msg.skipToEnd("unused"); -} - -void QuestHandler::processUpdateQuestsObjectives(Net::MessageIn &msg) -{ - // ignored - msg.readInt16("len"); - const int num = msg.readInt16("objectives count"); - for (int f = 0; f < num; f ++) - { - msg.readInt32("quest id"); - msg.readInt32("monster id"); - msg.readInt16("count old"); - msg.readInt16("count new"); - } -} - -void QuestHandler::processRemoveQuest(Net::MessageIn &msg) -{ - const int var = msg.readInt32("quest id"); - const int val = -1; - - // not removing quest, because this is impossible, - // but changing status to -1 - if (questsWindow) - { - questsWindow->updateQuest(var, val); - questsWindow->rebuild(true); - } - if (skillDialog) - { - skillDialog->updateQuest(var, val); - skillDialog->playUpdateEffect(var + SKILL_VAR_MIN_ID); - } -} - -void QuestHandler::processActivateQuest(Net::MessageIn &msg) -{ - UNIMPLIMENTEDPACKET; - // +++ need enable/disable quests depend on this packet - msg.readInt32("quest id"); - msg.readUInt8("activate"); -} - -void QuestHandler::processNpcQuestEffect(Net::MessageIn &msg) -{ - UNIMPLIMENTEDPACKET; - // this packed mostly useless, because manaplus can show any - // kind of effects based on quest states. - msg.readInt32("npc id"); - msg.readInt16("x"); - msg.readInt16("y"); - msg.readInt16("state"); - msg.readInt16("color"); -} - void QuestHandler::setQeustActiveState(const int questId, const bool active) const { |