// Near Infinity - An Infinity Engine Browser and Editor // Copyright (C) 2001 - 2005 Jon Olav Hauglid // See LICENSE.txt for license information package org.infinity.resource.are; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; import org.infinity.datatype.EffectType; import org.infinity.datatype.TextString; import org.infinity.resource.AbstractStruct; import org.infinity.resource.AddRemovable; import org.infinity.resource.Effect2; import org.infinity.resource.StructEntry; public class ProEffect extends AbstractStruct implements AddRemovable { // ARE/Projectile Effect-specific field labels public static final String ARE_PROEFFECT = "Effect"; ProEffect(AbstractStruct superStruct, ByteBuffer buffer, int offset, int number) throws Exception { super(superStruct, ARE_PROEFFECT + " " + number, buffer, offset); } //--------------------- Begin Interface AddRemovable --------------------- @Override public boolean canRemove() { return false; } //--------------------- End Interface AddRemovable --------------------- @Override public int read(ByteBuffer buffer, int offset) throws Exception { addField(new TextString(buffer, offset, 4, COMMON_SIGNATURE)); addField(new TextString(buffer, offset + 4, 4, COMMON_VERSION)); EffectType type = new EffectType(buffer, offset + 8, 4); addField(type); List<StructEntry> list = new ArrayList<StructEntry>(); offset = type.readAttributes(buffer, offset + 12, list); addToList(getList().size() - 1, list); list.clear(); offset = Effect2.readCommon(list, buffer, offset); addToList(getList().size() - 1, list); return offset; } }