1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-03-30 04:36:44 +00:00

[General] Modernize packet style for PlayerBook

This commit is contained in:
David Cernat 2019-10-23 02:02:27 +03:00
parent d66bca8605
commit 96a71c1ced
4 changed files with 19 additions and 27 deletions

View file

@ -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

View file

@ -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();

View file

@ -103,12 +103,6 @@ namespace mwmp
int action; // 0 - Rank, 1 - Expulsion state, 2 - Both
};
struct BookChanges
{
std::vector<Book> books;
unsigned int count;
};
struct InventoryChanges
{
std::vector<Item> items;
@ -230,7 +224,7 @@ namespace mwmp
std::vector<JournalItem> journalChanges;
FactionChanges factionChanges;
std::vector<Topic> topicChanges;
BookChanges bookChanges;
std::vector<Book> bookChanges;
CellStateChanges cellStateChanges;
ESM::ActiveSpells activeSpells;

View file

@ -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<uint32_t>(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);
}
}