Пример #1
0
void iMystPoundCtlCnst::Serialize(iDynamicBuffer& buff)
{
	iCtlCnst::Serialize(buff);
	// Last week production
	buff.Write((sint8)m_mt);
	buff.Write((sint8)m_cnt);
}
Пример #2
0
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;
}
Пример #3
0
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]);
}
Пример #4
0
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); }
}
Пример #5
0
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]);
}
Пример #6
0
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;
}
Пример #7
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;
}
Пример #8
0
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); }
}
Пример #9
0
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);
		}
	}
}
Пример #10
0
void iManaVtxCtlCnst::Unserialize(iDynamicBuffer& buff)
{
	iCtlCnst::Unserialize(buff);
	// Visitors
	uint8 bVisited;
	buff.Read(bVisited);
	m_bVisited = (bVisited==0)?false:true;
}
Пример #11
0
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);
	}
}
Пример #12
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();
}
Пример #13
0
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;
}
Пример #14
0
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;
}
Пример #15
0
void iDwellCtlCnst::Serialize(iDynamicBuffer& buff)
{
	iCtlCnst::Serialize(buff);
	// Creatures quantity
	buff.Write(crCount);
}
Пример #16
0
void iDwellCtlCnst::Unserialize(iDynamicBuffer& buff)
{
	iCtlCnst::Unserialize(buff);
	// Creatures quantity
	buff.Read(crCount);
}
Пример #17
0
void iTavernCtlCnst::Serialize(iDynamicBuffer& buff)
{
	iCtlCnst::Serialize(buff);
	buff.Write((uint16)m_curRumor);
	buff.Write((uint8)m_bRecruited);
}
Пример #18
0
void iManaVtxCtlCnst::Serialize(iDynamicBuffer& buff)
{
	iCtlCnst::Serialize(buff);
	// Visitors
	buff.Write((uint8)m_bVisited);
}