diff options
-rw-r--r-- | src/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/net/eathena/searchstorehandler.cpp | 80 | ||||
-rw-r--r-- | src/net/eathena/searchstorehandler.h | 9 | ||||
-rw-r--r-- | src/net/eathena/searchstorerecv.cpp | 107 | ||||
-rw-r--r-- | src/net/eathena/searchstorerecv.h | 39 |
6 files changed, 155 insertions, 84 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e263d55ff..96917c595 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1702,6 +1702,8 @@ SET(SRCS_EATHENA net/eathena/rouletterecv.h net/eathena/searchstorehandler.cpp net/eathena/searchstorehandler.h + net/eathena/searchstorerecv.cpp + net/eathena/searchstorerecv.h net/eathena/serverfeatures.cpp net/eathena/serverfeatures.h net/eathena/skillhandler.cpp diff --git a/src/Makefile.am b/src/Makefile.am index 68aa866ea..6e00350a0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1548,6 +1548,8 @@ manaplus_SOURCES += gui/windows/bankwindow.cpp \ net/eathena/rouletterecv.h \ net/eathena/searchstorehandler.cpp \ net/eathena/searchstorehandler.h \ + net/eathena/searchstorerecv.cpp \ + net/eathena/searchstorerecv.h \ net/eathena/serverfeatures.cpp \ net/eathena/serverfeatures.h \ net/eathena/skillhandler.cpp \ diff --git a/src/net/eathena/searchstorehandler.cpp b/src/net/eathena/searchstorehandler.cpp index 6151a161c..e4225b6ee 100644 --- a/src/net/eathena/searchstorehandler.cpp +++ b/src/net/eathena/searchstorehandler.cpp @@ -27,6 +27,7 @@ #include "net/eathena/messageout.h" #include "net/eathena/protocol.h" +#include "net/eathena/searchstorerecv.h" #include "debug.h" @@ -55,19 +56,19 @@ void SearchStoreHandler::handleMessage(Net::MessageIn &msg) switch (msg.getId()) { case SMSG_SEARCHSTORE_SEARCH_ACK: - processSearchAck(msg); + SearchStoreRecv::processSearchAck(msg); break; case SMSG_SEARCHSTORE_SEARCH_FAILED: - processSearchFailed(msg); + SearchStoreRecv::processSearchFailed(msg); break; case SMSG_SEARCHSTORE_OPEN: - processSearchOpen(msg); + SearchStoreRecv::processSearchOpen(msg); break; case SMSG_SEARCHSTORE_CLICK_ACK: - processSearchClickAck(msg); + SearchStoreRecv::processSearchClickAck(msg); break; default: @@ -110,75 +111,4 @@ void SearchStoreHandler::select(const int accountId, outMsg.writeInt16(static_cast<int16_t>(itemId), "item id"); } -void SearchStoreHandler::processSearchAck(Net::MessageIn &msg) -{ - UNIMPLIMENTEDPACKET; - const int count = (msg.readInt16("len") - 7) / 106; - msg.readUInt8("is first page"); - msg.readUInt8("is next page"); - msg.readUInt8("remain uses"); - for (int f = 0; f < count; f ++) - { - msg.readInt32("store id"); - msg.readInt32("aoount id"); - msg.readString(80, "store name"); - msg.readInt16("item id"); - msg.readUInt8("item type"); - msg.readInt32("price"); - msg.readInt16("amount"); - msg.readUInt8("refine"); - for (int d = 0; d < 4; d++) - msg.readInt16("card"); - - // +++ need use ItemColorManager for colors - } -} - -void SearchStoreHandler::processSearchFailed(Net::MessageIn &msg) -{ - UNIMPLIMENTEDPACKET; - const int result = msg.readUInt8("result"); - switch (result) - { - case 0: - NotifyManager::notify( - NotifyTypes::SEARCH_STORE_FAILED_NO_STORES); - break; - case 1: - NotifyManager::notify( - NotifyTypes::SEARCH_STORE_FAILED_MANY_RESULTS); - break; - case 2: - NotifyManager::notify( - NotifyTypes::SEARCH_STORE_FAILED_CANT_SEARCH_ANYMORE); - break; - case 3: - NotifyManager::notify( - NotifyTypes::SEARCH_STORE_FAILED_CANT_SEARCH_YET); - break; - case 4: - NotifyManager::notify( - NotifyTypes::SEARCH_STORE_FAILED_NO_INFORMATION); - break; - default: - NotifyManager::notify( - NotifyTypes::SEARCH_STORE_FAILED); - break; - } -} - -void SearchStoreHandler::processSearchOpen(Net::MessageIn &msg) -{ - UNIMPLIMENTEDPACKET; - msg.readInt16("effect"); - msg.readUInt8("uses"); -} - -void SearchStoreHandler::processSearchClickAck(Net::MessageIn &msg) -{ - UNIMPLIMENTEDPACKET; - msg.readInt16("x"); - msg.readInt16("y"); -} - } // namespace EAthena diff --git a/src/net/eathena/searchstorehandler.h b/src/net/eathena/searchstorehandler.h index 29ff9439c..121651b3d 100644 --- a/src/net/eathena/searchstorehandler.h +++ b/src/net/eathena/searchstorehandler.h @@ -49,15 +49,6 @@ class SearchStoreHandler final : public MessageHandler, void select(const int accountId, const int storeId, const int itemId) const override final; - - protected: - static void processSearchAck(Net::MessageIn &msg); - - static void processSearchFailed(Net::MessageIn &msg); - - static void processSearchOpen(Net::MessageIn &msg); - - static void processSearchClickAck(Net::MessageIn &msg); }; } // namespace EAthena diff --git a/src/net/eathena/searchstorerecv.cpp b/src/net/eathena/searchstorerecv.cpp new file mode 100644 index 000000000..a409ea586 --- /dev/null +++ b/src/net/eathena/searchstorerecv.cpp @@ -0,0 +1,107 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2015 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "net/eathena/searchstorerecv.h" + +#include "logger.h" +#include "notifymanager.h" + +#include "enums/resources/notifytypes.h" + +#include "net/eathena/messageout.h" +#include "net/eathena/protocol.h" + +#include "debug.h" + +namespace EAthena +{ + +void SearchStoreRecv::processSearchAck(Net::MessageIn &msg) +{ + UNIMPLIMENTEDPACKET; + const int count = (msg.readInt16("len") - 7) / 106; + msg.readUInt8("is first page"); + msg.readUInt8("is next page"); + msg.readUInt8("remain uses"); + for (int f = 0; f < count; f ++) + { + msg.readInt32("store id"); + msg.readInt32("aoount id"); + msg.readString(80, "store name"); + msg.readInt16("item id"); + msg.readUInt8("item type"); + msg.readInt32("price"); + msg.readInt16("amount"); + msg.readUInt8("refine"); + for (int d = 0; d < 4; d++) + msg.readInt16("card"); + + // +++ need use ItemColorManager for colors + } +} + +void SearchStoreRecv::processSearchFailed(Net::MessageIn &msg) +{ + UNIMPLIMENTEDPACKET; + const int result = msg.readUInt8("result"); + switch (result) + { + case 0: + NotifyManager::notify( + NotifyTypes::SEARCH_STORE_FAILED_NO_STORES); + break; + case 1: + NotifyManager::notify( + NotifyTypes::SEARCH_STORE_FAILED_MANY_RESULTS); + break; + case 2: + NotifyManager::notify( + NotifyTypes::SEARCH_STORE_FAILED_CANT_SEARCH_ANYMORE); + break; + case 3: + NotifyManager::notify( + NotifyTypes::SEARCH_STORE_FAILED_CANT_SEARCH_YET); + break; + case 4: + NotifyManager::notify( + NotifyTypes::SEARCH_STORE_FAILED_NO_INFORMATION); + break; + default: + NotifyManager::notify( + NotifyTypes::SEARCH_STORE_FAILED); + break; + } +} + +void SearchStoreRecv::processSearchOpen(Net::MessageIn &msg) +{ + UNIMPLIMENTEDPACKET; + msg.readInt16("effect"); + msg.readUInt8("uses"); +} + +void SearchStoreRecv::processSearchClickAck(Net::MessageIn &msg) +{ + UNIMPLIMENTEDPACKET; + msg.readInt16("x"); + msg.readInt16("y"); +} + +} // namespace EAthena diff --git a/src/net/eathena/searchstorerecv.h b/src/net/eathena/searchstorerecv.h new file mode 100644 index 000000000..582f57431 --- /dev/null +++ b/src/net/eathena/searchstorerecv.h @@ -0,0 +1,39 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2015 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef NET_EATHENA_SEARCHSTORERECV_H +#define NET_EATHENA_SEARCHSTORERECV_H + +#include "net/searchstorehandler.h" + +#include "net/eathena/messagehandler.h" + +namespace EAthena +{ + namespace SearchStoreRecv + { + void processSearchAck(Net::MessageIn &msg); + void processSearchFailed(Net::MessageIn &msg); + void processSearchOpen(Net::MessageIn &msg); + void processSearchClickAck(Net::MessageIn &msg); + } // namespace SearchStoreRecv +} // namespace EAthena + +#endif // NET_EATHENA_SEARCHSTORERECV_H |