コード例 #1
0
ファイル: CSItemBag.cs プロジェクト: moto2002/snowbattle
    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());
                }
            }
        }
    }
コード例 #2
0
ファイル: CSItemBag.cs プロジェクト: moto2002/snowbattle
    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);
                }
            }
        }
    }
コード例 #3
0
ファイル: CSItemBag.cs プロジェクト: moto2002/snowbattle
    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();
        }
    }
コード例 #4
0
ファイル: CSItemBag.cs プロジェクト: moto2002/snowbattle
    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());
    }