void iMystPoundCtlCnst::Serialize(iDynamicBuffer& buff) { iCtlCnst::Serialize(buff); // Last week production buff.Write((sint8)m_mt); buff.Write((sint8)m_cnt); }
uint32 Decompress(const unsigned char* lzoBuff, uint32 lzoBuffLen, iDynamicBuffer& rawBuff) { uint16 hdr; memcpy(&hdr, lzoBuff, sizeof(uint16)); lzoBuffLen -= sizeof(uint16); lzoBuff += sizeof(uint16); if (hdr != LZO_BLOCK_HDR) { check(0); return 0; } unsigned long raw_buf_len; memcpy(&raw_buf_len, lzoBuff, sizeof(unsigned long)); lzoBuffLen -= sizeof(uint32); lzoBuff += sizeof(uint32); if (raw_buf_len <= 0 || raw_buf_len > LZO_MAX_BUF_LEN) { check(0); return 0; } rawBuff.ReInit(raw_buf_len); rawBuff.IncSize( raw_buf_len ); int res = lzo1x_decompress(lzoBuff,lzoBuffLen,(unsigned char*)rawBuff.GetData(),&raw_buf_len,NULL); if (res != LZO_E_OK) { check(0); return 0; } return raw_buf_len; }
void iPermFSKModCtlCnst::Serialize(iDynamicBuffer& buff) { iCtlCnst::Serialize(buff); // Visitors buff.Write((uint16)visitors.GetSize()); for (uint32 xx=0; xx<visitors.GetSize(); ++xx) buff.Write(visitors[xx]); }
void iPermFSKModCtlCnst::Unserialize(iDynamicBuffer& buff) { iCtlCnst::Unserialize(buff); // Visitors uint16 viscnt; buff.Read(viscnt); visitors.RemoveAll(); while (viscnt--) { uint16 visitor; buff.Read(visitor); visitors.Add(visitor); } }
void iMGuildCtlCnst::Serialize(iDynamicBuffer& buff) { iCtlCnst::Serialize(buff); // Spells buff.Write((uint16)spells.GetSize()); for (uint32 xx=0; xx<spells.GetSize(); ++xx) buff.Write(spells[xx]); // Visitors buff.Write((uint16)visitors.GetSize()); for (uint32 xx=0; xx<visitors.GetSize(); ++xx) buff.Write(visitors[xx]); }
void iTavernCtlCnst::Unserialize(iDynamicBuffer& buff) { iCtlCnst::Unserialize(buff); uint16 curRumor; uint8 bRecruited; buff.Read(curRumor); buff.Read(bRecruited); m_curRumor = curRumor; m_bRecruited = bRecruited > 0; }
void iMystPoundCtlCnst::Unserialize(iDynamicBuffer& buff) { iCtlCnst::Unserialize(buff); // Last week production sint8 mt, cnt; buff.Read(mt); buff.Read(cnt); m_mt = (MINERAL_TYPE)mt; m_cnt = cnt; }
void iMGuildCtlCnst::Unserialize(iDynamicBuffer& buff) { iCtlCnst::Unserialize(buff); // Spells uint16 spcnt; buff.Read(spcnt); spells.RemoveAll(); while (spcnt--) { uint16 spell; buff.Read(spell); spells.Add(spell); } // Visitors uint16 viscnt; buff.Read(viscnt); visitors.RemoveAll(); while (viscnt--) { uint16 visitor; buff.Read(visitor); visitors.Add(visitor); } }
void iCtlCnsts::Serialize(iDynamicBuffer& buff) { buff.Write((uint8)2); // constructions initialization flag (0 - default, 1 - customized, 2 - customized with serialized data) uint16 cnt=0; for (uint32 xx=0; xx<m_items.GetSize(); ++xx) if (m_items[xx]->IsBuilt()) cnt++; buff.Write(cnt); for (uint32 xx=0; xx<m_items.GetSize(); ++xx) { if (m_items[xx]->IsBuilt()) { buff.Write((uint16)xx); buff.Write((uint8)1); // Built m_items[xx]->Serialize(buff); } } }
void iManaVtxCtlCnst::Unserialize(iDynamicBuffer& buff) { iCtlCnst::Unserialize(buff); // Visitors uint8 bVisited; buff.Read(bVisited); m_bVisited = (bVisited==0)?false:true; }
void iCtlCnsts::Unserialize(iDynamicBuffer& buff) { uint8 flag; buff.Read(flag); if (flag == 0) { // init default constructions GetCnst(DEFAULT_CONSTRUCTIONS[m_pCastle->Proto()->Type()][0])->SetState(iCtlCnst::Built); GetCnst(DEFAULT_CONSTRUCTIONS[m_pCastle->Proto()->Type()][1])->SetState(iCtlCnst::Built); } else if (flag == 1 || flag == 2) { uint16 cnt; buff.Read(cnt); while (cnt--){ uint16 idx; buff.Read(idx); uint8 state; buff.Read(state); m_items[idx]->SetState(iCtlCnst::Built); if (flag == 2) m_items[idx]->Unserialize(buff); } } else { check(0); } }
uint32 Compress(const unsigned char* rawBuff, uint32 rawBuffLen, iDynamicBuffer& lzoBuff) { check(rawBuffLen > 0 && rawBuffLen <= LZO_MAX_BUF_LEN); unsigned long out_len = (rawBuffLen + rawBuffLen / 16 + 64 + 3); unsigned char* buff = new unsigned char[out_len]; // compress from `in' to `out' with LZO1X-1 int res = lzo1x_1_compress(rawBuff,rawBuffLen,buff,&out_len,wrkmem); if (res != LZO_E_OK) { // this should NEVER happen delete[] buff; check(0); return 0; } lzoBuff.Write(LZO_BLOCK_HDR); lzoBuff.Write(rawBuffLen); lzoBuff.Write(buff, out_len); delete[] buff; return lzoBuff.GetSize(); }
bool iMemoryDib::Byte2Bit(const iDynamicBuffer& in_buff, iDynamicBuffer& out_buff) { check(in_buff.GetSize()); uint32 nsiz = in_buff.GetSize()/8 + ((in_buff.GetSize()%8==0)?0:1); out_buff.ReInit(nsiz); for (uint32 xx=0; xx<nsiz; ++xx){ uint32 cnt=0; uint8 data=0; uint8 odata=0; while (cnt<8 && in_buff.Read(data)) { odata |= (data?1<<cnt:0); cnt++; } out_buff.Write(odata); } out_buff.Seek(0); return true; }
bool iMemoryDib::Bit2Byte(const iDynamicBuffer& in_buff, iDynamicBuffer& out_buff) { check(in_buff.GetSize()); uint32 nsiz = in_buff.GetSize()*8; out_buff.ReInit(nsiz); for (uint32 xx=0; xx<in_buff.GetSize(); ++xx){ uint8 data; in_buff.Read(data); for (uint32 zz=0; zz<8; ++zz){ uint8 bd = (uint8)(((data >> zz)&1)?255:0); out_buff.Write(bd); } } return true; }
void iDwellCtlCnst::Serialize(iDynamicBuffer& buff) { iCtlCnst::Serialize(buff); // Creatures quantity buff.Write(crCount); }
void iDwellCtlCnst::Unserialize(iDynamicBuffer& buff) { iCtlCnst::Unserialize(buff); // Creatures quantity buff.Read(crCount); }
void iTavernCtlCnst::Serialize(iDynamicBuffer& buff) { iCtlCnst::Serialize(buff); buff.Write((uint16)m_curRumor); buff.Write((uint8)m_bRecruited); }
void iManaVtxCtlCnst::Serialize(iDynamicBuffer& buff) { iCtlCnst::Serialize(buff); // Visitors buff.Write((uint8)m_bVisited); }