// 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.sto; import java.nio.ByteBuffer; 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 Drink extends AbstractStruct implements AddRemovable { // STO/Drink-specific field labels public static final String STO_DRINK = "Drink"; public static final String STO_DRINK_NAME = "Drink name"; public static final String STO_DRINK_PRICE = "Price"; public static final String STO_DRINK_RUMOR_RATE = "Rumor rate"; Drink() throws Exception { super(null, STO_DRINK, StreamUtils.getByteBuffer(20), 0); } Drink(AbstractStruct superStruct, ByteBuffer buffer, int offset, int number) throws Exception { super(superStruct, STO_DRINK + " " + 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 Unknown(buffer, offset, 8)); addField(new StringRef(buffer, offset + 8, STO_DRINK_NAME)); addField(new DecNumber(buffer, offset + 12, 4, STO_DRINK_PRICE)); addField(new DecNumber(buffer, offset + 16, 4, STO_DRINK_RUMOR_RATE)); return offset + 20; } }