// 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.wed; import java.nio.ByteBuffer; import org.infinity.datatype.DecNumber; import org.infinity.resource.AbstractStruct; import org.infinity.resource.AddRemovable; import org.infinity.util.io.StreamUtils; public final class Wallgroup extends AbstractStruct implements AddRemovable { // WED/Wallgroup-specific field labels public static final String WED_WALLGROUP = "Wall group"; public static final String WED_WALLGROUP_POLYGON_INDEX = "Polygon index"; public static final String WED_WALLGROUP_NUM_POLYGONS = "# polygons"; public Wallgroup() throws Exception { super(null, WED_WALLGROUP, StreamUtils.getByteBuffer(4), 0); } public Wallgroup(AbstractStruct superStruct, ByteBuffer buffer, int offset, int nr) throws Exception { super(superStruct, WED_WALLGROUP + " " + nr, buffer, offset, 2); } public int getNextPolygonIndex() { int count = ((DecNumber)getAttribute(WED_WALLGROUP_NUM_POLYGONS)).getValue(); int index = ((DecNumber)getAttribute(WED_WALLGROUP_POLYGON_INDEX)).getValue(); return count + index; } //--------------------- Begin Interface AddRemovable --------------------- @Override public boolean canRemove() { return true; } //--------------------- End Interface AddRemovable --------------------- @Override public int read(ByteBuffer buffer, int offset) { addField(new DecNumber(buffer, offset, 2, WED_WALLGROUP_POLYGON_INDEX)); addField(new DecNumber(buffer, offset + 2, 2, WED_WALLGROUP_NUM_POLYGONS)); return offset + 4; } }