optimized packing/unpacking inventory items (#2610)

This commit is contained in:
qndel 2021-08-18 20:56:07 +02:00 committed by GitHub
commit 3dbc120320
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 6 deletions

View file

@ -112,15 +112,14 @@ void PackPlayer(PkPlayerStruct *pPack, const PlayerStruct &player, bool manashie
PackItem(&pPack->InvBody[i], &player.InvBody[i]);
}
for (int i = 0; i < NUM_INV_GRID_ELEM; i++) {
pPack->_pNumInv = player._pNumInv;
for (int i = 0; i < pPack->_pNumInv; i++) {
PackItem(&pPack->InvList[i], &player.InvList[i]);
}
for (int i = 0; i < NUM_INV_GRID_ELEM; i++)
pPack->InvGrid[i] = player.InvGrid[i];
pPack->_pNumInv = player._pNumInv;
for (int i = 0; i < MAXBELTITEMS; i++) {
PackItem(&pPack->SpdList[i], &player.SpdList[i]);
}
@ -243,7 +242,8 @@ void UnPackPlayer(const PkPlayerStruct *pPack, int pnum, bool netSync)
UnPackItem(&packedItem, &player.InvBody[i], isHellfire);
}
for (int i = 0; i < NUM_INV_GRID_ELEM; i++) {
player._pNumInv = pPack->_pNumInv;
for (int i = 0; i < player._pNumInv; i++) {
auto packedItem = pPack->InvList[i];
bool isHellfire = netSync ? ((packedItem.dwBuff & CF_HELLFIRE) != 0) : (pPack->bIsHellfire != 0);
UnPackItem(&packedItem, &player.InvList[i], isHellfire);
@ -252,7 +252,6 @@ void UnPackPlayer(const PkPlayerStruct *pPack, int pnum, bool netSync)
for (int i = 0; i < NUM_INV_GRID_ELEM; i++)
player.InvGrid[i] = pPack->InvGrid[i];
player._pNumInv = pPack->_pNumInv;
VerifyGoldSeeds(player);
for (int i = 0; i < MAXBELTITEMS; i++) {

View file

@ -347,5 +347,5 @@ TEST(Writehero, pfile_write_hero)
std::vector<unsigned char> s(picosha2::k_digest_size);
picosha2::hash256(f, s.begin(), s.end());
EXPECT_EQ(picosha2::bytes_to_hex_string(s.begin(), s.end()),
"08e9807d1281e4273268f4e265757b4429cfec7c3e8b6deb89dfa109d6797b1c");
"a79367caae6192d54703168d82e0316aa289b2a33251255fad8abe34889c1d3a");
}