예제 #1
0
        public override void writeData(BinaryWriter writer)
        {
            writer.Write(tagId);

            Util.writeData(writer, BitConverter.GetBytes(list.Count));

            foreach (object obj in list)
            {
                switch (tagId)
                {
                case 1:
                    writer.Write((sbyte)obj);
                    break;

                case 2:
                    short shortnum = (short)obj;
                    Util.writeData(writer, BitConverter.GetBytes(shortnum));
                    break;

                case 3:
                    int intnum = (int)obj;
                    Util.writeData(writer, BitConverter.GetBytes(intnum));
                    break;

                case 4:
                    long longnum = (long)obj;
                    Util.writeData(writer, BitConverter.GetBytes(longnum));
                    break;

                case 5:
                    float floatnum = (float)obj;
                    Util.writeData(writer, BitConverter.GetBytes(floatnum));
                    break;

                case 6:
                    double doublenum = (double)obj;
                    Util.writeData(writer, BitConverter.GetBytes(doublenum));
                    break;

                case 7:
                    byte[] array = (byte[])obj;

                    for (int a = 0; a < array.Length; a++)
                    {
                        writer.Write(array[a]);
                    }

                    break;

                case 8:
                    Util.writeUTF8String(writer, (string)obj);
                    break;

                case 9:
                    TagList writeList = (TagList)obj;
                    writeList.write(writer);
                    break;

                case 10:
                    TagCompound compound = (TagCompound)obj;
                    List <Tag>  tagList  = compound.tags;

                    foreach (Tag tag in tagList)
                    {
                        tag.write(writer);
                    }

                    //tag compound ends with a zero byte
                    writer.Write((byte)0);

                    break;
                }
            }
        }