// 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.to; import java.nio.ByteBuffer; import org.infinity.datatype.HexNumber; import org.infinity.datatype.ResourceRef; import org.infinity.datatype.StringRef; import org.infinity.datatype.Unknown; import org.infinity.resource.AbstractStruct; import org.infinity.util.io.StreamUtils; public class StrRefEntry extends AbstractStruct { // TOH/StrrefEntry-specific field labels public static final String TOH_STRREF = "StrRef entry"; public static final String TOH_STRREF_OVERRIDDEN = "Overridden strref"; public static final String TOH_STRREF_SOUND = "Associated sound"; public static final String TOH_STRREF_OFFSET_TOT_STRING = "TOT string offset"; public StrRefEntry() throws Exception { super(null, TOH_STRREF, StreamUtils.getByteBuffer(28), 0); } public StrRefEntry(AbstractStruct superStruct, ByteBuffer buffer, int offset, int nr) throws Exception { super(superStruct, TOH_STRREF + " " + nr, buffer, offset); } public StrRefEntry(AbstractStruct superStruct, String name, ByteBuffer buffer, int offset) throws Exception { super(superStruct, name, buffer, offset); } @Override public int read(ByteBuffer buffer, int offset) throws Exception { addField(new StringRef(buffer, offset, TOH_STRREF_OVERRIDDEN)); addField(new Unknown(buffer, offset + 4, 4)); addField(new Unknown(buffer, offset + 8, 4)); addField(new Unknown(buffer, offset + 12, 4)); addField(new ResourceRef(buffer, offset + 16, TOH_STRREF_SOUND, "WAV")); addField(new HexNumber(buffer, offset + 24, 4, TOH_STRREF_OFFSET_TOT_STRING)); return offset + 28; } }