From 3dbc120320971b7663c45b37536eb4336d33459e Mon Sep 17 00:00:00 2001 From: qndel Date: Wed, 18 Aug 2021 20:56:07 +0200 Subject: [PATCH] optimized packing/unpacking inventory items (#2610) --- Source/pack.cpp | 9 ++++----- test/writehero_test.cpp | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Source/pack.cpp b/Source/pack.cpp index ed510bc0e..1214f1184 100644 --- a/Source/pack.cpp +++ b/Source/pack.cpp @@ -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++) { diff --git a/test/writehero_test.cpp b/test/writehero_test.cpp index 9928f3c30..20ec33c84 100644 --- a/test/writehero_test.cpp +++ b/test/writehero_test.cpp @@ -347,5 +347,5 @@ TEST(Writehero, pfile_write_hero) std::vector 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"); }