// 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.other; import java.nio.ByteBuffer; import javax.swing.JComponent; import org.infinity.datatype.DecNumber; import org.infinity.datatype.Flag; import org.infinity.datatype.TextString; import org.infinity.datatype.Unknown; import org.infinity.gui.StructViewer; import org.infinity.gui.hexview.BasicColorMap; import org.infinity.gui.hexview.StructHexViewer; import org.infinity.resource.AbstractStruct; import org.infinity.resource.HasViewerTabs; import org.infinity.resource.Resource; import org.infinity.resource.key.ResourceEntry; public final class WfxResource extends AbstractStruct implements Resource, HasViewerTabs { // WFX-specific field labels public static final String WFX_CURVE_RADIUS = "SR curve radius"; public static final String WFX_FLAGS = "Flags"; public static final String WFX_VARIATION_PITCH = "Pitch variation"; public static final String WFX_VARIATION_VOLUME = "Volume variation"; private static final String[] s_flag = {"No flags set", "Cutscene audio", "Alternate SR curve", "Pitch variance", "Volume variance", "Disable environmental effects"}; private StructHexViewer hexViewer; public WfxResource(ResourceEntry entry) throws Exception { super(entry); } @Override public int read(ByteBuffer buffer, int offset) throws Exception { addField(new TextString(buffer, offset, 4, COMMON_SIGNATURE)); addField(new TextString(buffer, offset + 4, 4, COMMON_VERSION)); addField(new DecNumber(buffer, offset + 8, 4, WFX_CURVE_RADIUS)); addField(new Flag(buffer, offset + 12, 4, WFX_FLAGS, s_flag)); addField(new DecNumber(buffer, offset + 16, 4, WFX_VARIATION_PITCH)); addField(new DecNumber(buffer, offset + 20, 4, WFX_VARIATION_VOLUME)); addField(new Unknown(buffer, offset + 24, 240)); return offset + 264; } //--------------------- Begin Interface HasViewerTabs --------------------- @Override public int getViewerTabCount() { return 1; } @Override public String getViewerTabName(int index) { return StructViewer.TAB_RAW; } @Override public JComponent getViewerTab(int index) { if (hexViewer == null) { hexViewer = new StructHexViewer(this, new BasicColorMap(this, true)); } return hexViewer; } @Override public boolean viewerTabAddedBefore(int index) { return false; } //--------------------- End Interface HasViewerTabs --------------------- @Override protected void viewerInitialized(StructViewer viewer) { viewer.addTabChangeListener(hexViewer); } }