Browse Source

optimized packing/unpacking inventory items (#2610)

pull/2630/head
qndel 5 years ago committed by GitHub
parent
commit
3dbc120320
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      Source/pack.cpp
  2. 2
      test/writehero_test.cpp

9
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++) {

2
test/writehero_test.cpp

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

Loading…
Cancel
Save