Beispiel #1
0
    public void Write(IBitWriter writer)
    {
        writer.WriteUInt16(Header ?? 0x102);

        int startPos = writer.Position;

        ActI.Write(writer);
        ActII.Write(writer);
        ActIII.Write(writer);
        ActIV.Write(writer);
        ActV.Write(writer);
        int endPos = writer.Position;

        writer.Align();
        Span <byte> padding = stackalloc byte[13];

        padding.Clear();
        writer.WriteBytes(padding);
    }
Beispiel #2
0
    public void Write(IBitWriter writer)
    {
        var itemStatCost = Core.MetaData.ItemStatCostData;

        writer.WriteUInt16(Header ?? 0x6667);
        foreach (var entry in Stats)
        {
            var property = itemStatCost.GetByStat(entry.Key);
            writer.WriteUInt16(property?["ID"].ToUInt16() ?? 0, 9);
            int attribute = entry.Value;
            int valShift  = property?["ValShift"].ToInt32() ?? 0;
            if (valShift > 0)
            {
                attribute <<= valShift;
            }
            writer.WriteInt32(attribute, property?["CSvBits"].ToInt32() ?? 0);
        }
        writer.WriteUInt16(0x1ff, 9);
        writer.Align();
    }