/** * @file pack.h * * Interface of functions for minifying player data structure. */ #ifndef __PACK_H__ #define __PACK_H__ DEVILUTION_BEGIN_NAMESPACE #ifdef __cplusplus extern "C" { #endif #pragma pack(push, 1) typedef struct PkItemStruct { Uint32 iSeed; Uint16 iCreateInfo; Uint16 idx; Uint8 bId; Uint8 bDur; Uint8 bMDur; Uint8 bCh; Uint8 bMCh; Uint16 wValue; Uint32 dwBuff; } PkItemStruct; typedef struct PkPlayerStruct { Uint32 dwLowDateTime; Uint32 dwHighDateTime; Sint8 destAction; Sint8 destParam1; Sint8 destParam2; Uint8 plrlevel; Uint8 px; Uint8 py; Uint8 targx; Uint8 targy; char pName[PLR_NAME_LEN]; Sint8 pClass; Uint8 pBaseStr; Uint8 pBaseMag; Uint8 pBaseDex; Uint8 pBaseVit; Sint8 pLevel; Uint8 pStatPts; Sint32 pExperience; Sint32 pGold; Sint32 pHPBase; Sint32 pMaxHPBase; Sint32 pManaBase; Sint32 pMaxManaBase; Sint8 pSplLvl[37]; // Should be MAX_SPELLS but set to 37 to make save games compatible Uint64 pMemSpells; PkItemStruct InvBody[NUM_INVLOC]; PkItemStruct InvList[NUM_INV_GRID_ELEM]; Sint8 InvGrid[NUM_INV_GRID_ELEM]; Uint8 _pNumInv; PkItemStruct SpdList[MAXBELTITEMS]; Sint8 pTownWarps; Sint8 pDungMsgs; Sint8 pLvlLoad; Sint8 pBattleNet; Uint8 pManaShield; Uint8 pDungMsgs2; Sint8 bReserved[2]; Uint16 wReflections; Sint16 wReserved2; Sint8 pSplLvl2[10]; // Hellfire spells Sint16 wReserved8; Uint32 pDiabloKillLevel; Sint32 pDifficulty; Sint32 pDamAcFlags; Sint32 dwReserved[5]; } PkPlayerStruct; #pragma pack(pop) void PackPlayer(PkPlayerStruct *pPack, int pnum, BOOL manashield); void UnPackPlayer(PkPlayerStruct *pPack, int pnum, BOOL killok); void PackItem(PkItemStruct *id, ItemStruct *is); void UnPackItem(PkItemStruct *is, ItemStruct *id); /* rdata */ #ifdef __cplusplus } #endif DEVILUTION_END_NAMESPACE #endif /* __PACK_H__ */