public static List <Tag> readData(BinaryReader reader) { bool completed = false; List <Tag> compound = new List <Tag>(); while (!completed) { byte tagType = reader.ReadByte(); //Console.WriteLine("TagType: " + Util.getTypeName(tagType)); switch (tagType) { case 0: completed = true; break; case 1: TagByte tagByte = new TagByte(); tagByte.read(reader); compound.Add(tagByte); break; case 2: TagShort tagShort = new TagShort(); tagShort.read(reader); compound.Add(tagShort); break; case 3: TagInt tagInt = new TagInt(); tagInt.read(reader); compound.Add(tagInt); break; case 4: TagLong tagLong = new TagLong(); tagLong.read(reader); compound.Add(tagLong); break; case 5: TagFloat tagFloat = new TagFloat(); tagFloat.read(reader); compound.Add(tagFloat); break; case 6: TagDouble tagDouble = new TagDouble(); tagDouble.read(reader); compound.Add(tagDouble); break; case 7: TagByteArray tagByteArray = new TagByteArray(); tagByteArray.read(reader); compound.Add(tagByteArray); break; case 8: TagString tagString = new TagString(); tagString.read(reader); compound.Add(tagString); break; case 9: TagList tagList = new TagList(); tagList.read(reader); compound.Add(tagList); break; case 10: TagCompound tagCompound = new TagCompound(); tagCompound.read(reader); compound.Add(tagCompound); break; default: throw new InvalidTagException("An invalid tag type: " + tagType + ", was found while parsing a TAG_Compound"); } } return(compound); }
public static List<Tag> readData(BinaryReader reader) { bool completed = false; List<Tag> compound = new List<Tag>(); while (!completed) { byte tagType = reader.ReadByte(); //Console.WriteLine("TagType: " + Util.getTypeName(tagType)); switch (tagType) { case 0: completed = true; break; case 1: TagByte tagByte = new TagByte(); tagByte.read(reader); compound.Add(tagByte); break; case 2: TagShort tagShort = new TagShort(); tagShort.read(reader); compound.Add(tagShort); break; case 3: TagInt tagInt = new TagInt(); tagInt.read(reader); compound.Add(tagInt); break; case 4: TagLong tagLong = new TagLong(); tagLong.read(reader); compound.Add(tagLong); break; case 5: TagFloat tagFloat = new TagFloat(); tagFloat.read(reader); compound.Add(tagFloat); break; case 6: TagDouble tagDouble = new TagDouble(); tagDouble.read(reader); compound.Add(tagDouble); break; case 7: TagByteArray tagByteArray = new TagByteArray(); tagByteArray.read(reader); compound.Add(tagByteArray); break; case 8: TagString tagString = new TagString(); tagString.read(reader); compound.Add(tagString); break; case 9: TagList tagList = new TagList(); tagList.read(reader); compound.Add(tagList); break; case 10: TagCompound tagCompound = new TagCompound(); tagCompound.read(reader); compound.Add(tagCompound); break; default: throw new InvalidTagException("An invalid tag type: " + tagType + ", was found while parsing a TAG_Compound"); } } return compound; }
public override void read(BinaryReader reader) { try { this.list = new List<object>(); this.name = Util.readString(reader); this.tagId = reader.ReadSByte(); int length = 0; if (BitConverter.IsLittleEndian) { length = Util.readIntegerBigEndian(reader); } else { length = reader.ReadInt32(); } for (int a = 0; a < length; a++) { switch (tagId) { case 1: list.Add(TagByte.readData(reader)); break; case 2: list.Add(TagShort.readData(reader)); break; case 3: list.Add(TagInt.readData(reader)); break; case 4: list.Add(TagLong.readData(reader)); break; case 5: list.Add(TagFloat.readData(reader)); break; case 6: list.Add(TagDouble.readData(reader)); break; case 7: list.Add(TagByteArray.readData(reader)); break; case 8: list.Add(TagString.readData(reader)); break; case 9: TagList newList = new TagList(); newList.read(reader); list.Add(newList); break; case 10: List<Tag> newTagList = TagCompound.readData(reader); TagCompound compound = new TagCompound("", newTagList); list.Add(compound); break; } } } catch (IOException exception) { throw new FailedReadException(exception.Message, exception); } }