// 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 org.infinity.datatype.Bitmap; import org.infinity.datatype.DecNumber; import org.infinity.datatype.StringRef; import org.infinity.datatype.Unknown; import org.infinity.resource.AbstractStruct; import org.infinity.resource.AddRemovable; import org.infinity.util.io.StreamUtils; public final class AutomapNote extends AbstractStruct implements AddRemovable { // ARE/Automap Notes-specific field labels public static final String ARE_AUTOMAP = "Automap note"; public static final String ARE_AUTOMAP_LOCATION_X = "Coordinate: X"; public static final String ARE_AUTOMAP_LOCATION_Y = "Coordinate: Y"; public static final String ARE_AUTOMAP_TEXT = "Text"; public static final String ARE_AUTOMAP_TEXT_LOCATION = "Text location"; public static final String ARE_AUTOMAP_MARKER_COLOR = "Marker color"; public static final String ARE_AUTOMAP_CONTROL_ID = "Control ID"; public static final String[] s_flag = {"Gray", "Violet", "Green", "Orange", "Red", "Blue", "Dark blue", "Light gray"}; public static final String[] s_source = {"Talk override", "Dialog.tlk"}; AutomapNote() throws Exception { super(null, ARE_AUTOMAP, StreamUtils.getByteBuffer(52), 0); } AutomapNote(AbstractStruct superStruct, ByteBuffer buffer, int offset, int number) throws Exception { super(superStruct, ARE_AUTOMAP + " " + number, buffer, offset); } //--------------------- Begin Interface AddRemovable --------------------- @Override public boolean canRemove() { return true; } //--------------------- End Interface AddRemovable --------------------- @Override public int read(ByteBuffer buffer, int offset) throws Exception { addField(new DecNumber(buffer, offset, 2, ARE_AUTOMAP_LOCATION_X)); addField(new DecNumber(buffer, offset + 2, 2, ARE_AUTOMAP_LOCATION_Y)); addField(new StringRef(buffer, offset + 4, ARE_AUTOMAP_TEXT)); addField(new Bitmap(buffer, offset + 8, 2, ARE_AUTOMAP_TEXT_LOCATION, s_source)); addField(new Bitmap(buffer, offset + 10, 2, ARE_AUTOMAP_MARKER_COLOR, s_flag)); addField(new DecNumber(buffer, offset + 12, 4, ARE_AUTOMAP_CONTROL_ID)); addField(new Unknown(buffer, offset + 16, 36)); return offset + 52; } }