// 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.dlg; import java.nio.ByteBuffer; import org.infinity.datatype.DecNumber; import org.infinity.datatype.StringRef; import org.infinity.resource.AbstractStruct; import org.infinity.resource.AddRemovable; import org.infinity.util.io.StreamUtils; public final class State extends AbstractStruct implements AddRemovable { // DLG/State-specific field labels public static final String DLG_STATE = "State"; public static final String DLG_STATE_RESPONSE = "Response"; public static final String DLG_STATE_FIRST_RESPONSE_INDEX = "First response index"; public static final String DLG_STATE_NUM_RESPONSES = "# responses"; public static final String DLG_STATE_TRIGGER_INDEX = "Trigger index"; private int nr; State() throws Exception { super(null, DLG_STATE, StreamUtils.getByteBuffer(16), 0); } State(AbstractStruct superStruct, ByteBuffer buffer, int offset, int count) throws Exception { super(superStruct, DLG_STATE + " " + count, buffer, offset); nr = count; } public int getFirstTrans() { return ((DecNumber)getAttribute(DLG_STATE_FIRST_RESPONSE_INDEX)).getValue(); } public int getNumber() { return nr; } public StringRef getResponse() { return (StringRef)getAttribute(DLG_STATE_RESPONSE); } public int getTransCount() { return ((DecNumber)getAttribute(DLG_STATE_NUM_RESPONSES)).getValue(); } public int getTriggerIndex() { return ((DecNumber)getAttribute(DLG_STATE_TRIGGER_INDEX)).getValue(); } //--------------------- Begin Interface AddRemovable --------------------- @Override public boolean canRemove() { return true; } //--------------------- End Interface AddRemovable --------------------- @Override public int read(ByteBuffer buffer, int offset) { addField(new StringRef(buffer, offset, DLG_STATE_RESPONSE)); addField(new DecNumber(buffer, offset + 4, 4, DLG_STATE_FIRST_RESPONSE_INDEX)); addField(new DecNumber(buffer, offset + 8, 4, DLG_STATE_NUM_RESPONSES)); addField(new DecNumber(buffer, offset + 12, 4, DLG_STATE_TRIGGER_INDEX)); return offset + 16; } }