public void DeserializeFromText(string text) { m_items.Clear(); MyEquips.Singleton.myEquips.Clear(); StringStreamReader reader = new StringStreamReader(text); //byte version = reader.ReadByte(); int count = reader.ReadInt(); CSItemSegmentDefine segmentDef = CSItemSegmentDefine.Singleton; for (int index = 0; index < count; ++index) { CSItem item = new CSItem(); item.m_guid.m_lowPart = reader.ReadInt(); item.m_guid.m_highPart = reader.ReadInt(); item.m_id = reader.ReadShort(); item.m_flag = reader.ReadShort(); for (int seg = 0; seg <= segmentDef.MaxSegmentType; seg++) { if ((item.m_flag & (0x1 << seg)) > 0) { segmentDef.ReadSegmentFromText(item, seg, reader.ReadString()); } } } }
public void Serialize(PacketWriter stream) { stream.Write(default(byte)); stream.Write(m_items.Count); CSItemSegmentDefine segmentDef = CSItemSegmentDefine.Singleton; foreach (var item in m_items) { stream.Write(item.m_guid.m_lowPart); stream.Write(item.m_guid.m_highPart); stream.Write(item.m_id); stream.Write(item.m_flag); stream.Write(0); for (int seg = 0; seg <= segmentDef.MaxSegmentType; seg++) { if ((item.m_flag & (0x1 << seg)) > 0) { segmentDef.WriteSegment(item, seg, stream); } } } }
public void Deserialize(PacketReader stream) { int mask = stream.ReadInt32(); if ((mask & (int)ENSerializeMask.enSerializeDirty) > 0) { Debug.Log("Sync item bag error, mask & enSerializeDirty > 0 "); return; } byte version = stream.ReadByte(); int count = stream.ReadInt32(); m_items.Clear(); //MyEquips.Singleton.myEquips.Clear(); CSItemSegmentDefine segmentDef = CSItemSegmentDefine.Singleton; for (uint i = 0; i < count; i++) { CSItem item = new CSItem(); item.m_guid.m_lowPart = stream.ReadInt32(); item.m_guid.m_highPart = stream.ReadInt32(); item.m_id = stream.ReadInt16(); item.m_flag = stream.ReadInt16(); int readDataLength = stream.ReadInt32(); item.Init(); for (int seg = 0; seg <= segmentDef.MaxSegmentType; seg++) { if ((item.m_flag & (0x1 << seg)) > 0) { readDataLength -= segmentDef.ReadSegment(item, seg, stream, readDataLength); } } stream.Seek(readDataLength, SeekOrigin.Current); //MyEquips.Singleton.myEquips.Add(item.m_guid, item); AddItem(item); item.Init(); } }
public string SerializeToText() { StringStreamWriter writer = new StringStreamWriter(); writer.Write(m_items.Count); CSItemSegmentDefine segmentDef = CSItemSegmentDefine.Singleton; foreach (var item in m_items) { writer.Write(item.m_guid.m_lowPart); writer.Write(item.m_guid.m_highPart); writer.Write(item.m_id); writer.Write(item.m_flag); for (int seg = 0; seg <= segmentDef.MaxSegmentType; seg++) { if ((item.m_flag & (0x1 << seg)) > 0) { writer.Write(segmentDef.WriteSegmentToText(item, seg)); } } } return(writer.ToString()); }