// 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.wed;
import java.nio.ByteBuffer;
import org.infinity.datatype.DecNumber;
import org.infinity.datatype.Flag;
import org.infinity.datatype.Unknown;
import org.infinity.resource.AbstractStruct;
public final class Tilemap extends AbstractStruct // implements AddRemovable
{
// WED/Tilemap-specific field labels
public static final String WED_TILEMAP = "Tilemap";
public static final String WED_TILEMAP_TILE_INDEX_PRI = "Primary tile index";
public static final String WED_TILEMAP_TILE_COUNT_PRI = "Primary tile count";
public static final String WED_TILEMAP_TILE_INDEX_SEC = "Secondary tile index";
public static final String WED_TILEMAP_DRAW_OVERLAYS = "Draw Overlays";
public static final String WED_TILEMAP_ANIMATION_SPEED = "Animation speed";
private static final String[] s_flags = {"Primary overlay only", "Unused", "Overlay 1",
"Overlay 2", "Overlay 3", "Overlay 4", "Overlay 5",
"Overlay 6", "Overlay 7"};
public Tilemap(AbstractStruct superStruct, ByteBuffer buffer, int offset, int number) throws Exception
{
super(superStruct, WED_TILEMAP + " " + number, buffer, offset, 5);
}
public int getTileCount()
{
return ((DecNumber)getAttribute(WED_TILEMAP_TILE_COUNT_PRI)).getValue();
}
@Override
public int read(ByteBuffer buffer, int offset) throws Exception
{
addField(new DecNumber(buffer, offset, 2, WED_TILEMAP_TILE_INDEX_PRI));
addField(new DecNumber(buffer, offset + 2, 2, WED_TILEMAP_TILE_COUNT_PRI));
addField(new DecNumber(buffer, offset + 4, 2, WED_TILEMAP_TILE_INDEX_SEC));
addField(new Flag(buffer, offset + 6, 1, WED_TILEMAP_DRAW_OVERLAYS, s_flags));
addField(new DecNumber(buffer, offset + 7, 1, WED_TILEMAP_ANIMATION_SPEED));
addField(new Unknown(buffer, offset + 8, 2));
return offset + 10;
}
}