From 96a71c1cedbfa1ea574c8e5f8bf24876381fc956 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Wed, 23 Oct 2019 02:02:27 +0300 Subject: [PATCH] [General] Modernize packet style for PlayerBook --- apps/openmw-mp/Script/Functions/Books.cpp | 10 ++++----- apps/openmw/mwmp/LocalPlayer.cpp | 6 ++--- components/openmw-mp/Base/BasePlayer.hpp | 8 +------ .../Packets/Player/PacketPlayerBook.cpp | 22 +++++++++---------- 4 files changed, 19 insertions(+), 27 deletions(-) diff --git a/apps/openmw-mp/Script/Functions/Books.cpp b/apps/openmw-mp/Script/Functions/Books.cpp index 49556f32f..d68fb891d 100644 --- a/apps/openmw-mp/Script/Functions/Books.cpp +++ b/apps/openmw-mp/Script/Functions/Books.cpp @@ -12,7 +12,7 @@ void BookFunctions::ClearBookChanges(unsigned short pid) noexcept Player *player; GET_PLAYER(pid, player, ); - player->bookChanges.books.clear(); + player->bookChanges.clear(); } unsigned int BookFunctions::GetBookChangesSize(unsigned short pid) noexcept @@ -20,7 +20,7 @@ unsigned int BookFunctions::GetBookChangesSize(unsigned short pid) noexcept Player *player; GET_PLAYER(pid, player, 0); - return player->bookChanges.count; + return player->bookChanges.size(); } void BookFunctions::AddBook(unsigned short pid, const char* bookId) noexcept @@ -31,7 +31,7 @@ void BookFunctions::AddBook(unsigned short pid, const char* bookId) noexcept mwmp::Book book; book.bookId = bookId; - player->bookChanges.books.push_back(book); + player->bookChanges.push_back(book); } const char *BookFunctions::GetBookId(unsigned short pid, unsigned int index) noexcept @@ -39,10 +39,10 @@ const char *BookFunctions::GetBookId(unsigned short pid, unsigned int index) noe Player *player; GET_PLAYER(pid, player, ""); - if (index >= player->bookChanges.count) + if (index >= player->bookChanges.size()) return "invalid"; - return player->bookChanges.books.at(index).bookId.c_str(); + return player->bookChanges.at(index).bookId.c_str(); } void BookFunctions::SendBookChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept diff --git a/apps/openmw/mwmp/LocalPlayer.cpp b/apps/openmw/mwmp/LocalPlayer.cpp index 4b779607e..e26ebc4f7 100644 --- a/apps/openmw/mwmp/LocalPlayer.cpp +++ b/apps/openmw/mwmp/LocalPlayer.cpp @@ -1327,7 +1327,7 @@ void LocalPlayer::setBooks() MWWorld::Ptr ptrPlayer = getPlayerPtr(); MWMechanics::NpcStats &ptrNpcStats = ptrPlayer.getClass().getNpcStats(ptrPlayer); - for (const auto &book : bookChanges.books) + for (const auto &book : bookChanges) ptrNpcStats.flagAsUsed(book.bookId); } @@ -1609,14 +1609,14 @@ void LocalPlayer::sendTopic(const std::string& topicId) void LocalPlayer::sendBook(const std::string& bookId) { - bookChanges.books.clear(); + bookChanges.clear(); mwmp::Book book; book.bookId = bookId; LOG_MESSAGE_SIMPLE(TimedLog::LOG_INFO, "Sending ID_PLAYER_BOOK with book %s", book.bookId.c_str()); - bookChanges.books.push_back(book); + bookChanges.push_back(book); getNetworking()->getPlayerPacket(ID_PLAYER_BOOK)->setPlayer(this); getNetworking()->getPlayerPacket(ID_PLAYER_BOOK)->Send(); diff --git a/components/openmw-mp/Base/BasePlayer.hpp b/components/openmw-mp/Base/BasePlayer.hpp index bbb966ac1..d47995ea9 100644 --- a/components/openmw-mp/Base/BasePlayer.hpp +++ b/components/openmw-mp/Base/BasePlayer.hpp @@ -103,12 +103,6 @@ namespace mwmp int action; // 0 - Rank, 1 - Expulsion state, 2 - Both }; - struct BookChanges - { - std::vector books; - unsigned int count; - }; - struct InventoryChanges { std::vector items; @@ -230,7 +224,7 @@ namespace mwmp std::vector journalChanges; FactionChanges factionChanges; std::vector topicChanges; - BookChanges bookChanges; + std::vector bookChanges; CellStateChanges cellStateChanges; ESM::ActiveSpells activeSpells; diff --git a/components/openmw-mp/Packets/Player/PacketPlayerBook.cpp b/components/openmw-mp/Packets/Player/PacketPlayerBook.cpp index cc3978ae7..ca7fb5790 100644 --- a/components/openmw-mp/Packets/Player/PacketPlayerBook.cpp +++ b/components/openmw-mp/Packets/Player/PacketPlayerBook.cpp @@ -13,23 +13,21 @@ void PacketPlayerBook::Packet(RakNet::BitStream *bs, bool send) { PlayerPacket::Packet(bs, send); + uint32_t count; + if (send) - player->bookChanges.count = (unsigned int)(player->bookChanges.books.size()); - else - player->bookChanges.books.clear(); + count = static_cast(player->bookChanges.size()); - RW(player->bookChanges.count, send); + RW(count, send); - for (unsigned int i = 0; i < player->bookChanges.count; i++) + if (!send) { - Book book; - - if (send) - book = player->bookChanges.books.at(i); + player->bookChanges.clear(); + player->bookChanges.resize(count); + } + for (auto &&book : player->bookChanges) + { RW(book.bookId, send, true); - - if (!send) - player->bookChanges.books.push_back(book); } }