// 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.gam; import java.nio.ByteBuffer; import org.infinity.datatype.Bitmap; import org.infinity.datatype.DecNumber; import org.infinity.datatype.Flag; import org.infinity.resource.AbstractStruct; public final class ModronMazeEntry extends AbstractStruct { // GAM/ModronMazeEntry-specific field labels public static final String GAM_MAZE_ENTRY = "Maze entry"; public static final String GAM_MAZE_ENTRY_OVERRIDE = "Override"; public static final String GAM_MAZE_ENTRY_ACCESSIBLE = "Accessible"; public static final String GAM_MAZE_ENTRY_IS_VALID = "Is valid"; public static final String GAM_MAZE_ENTRY_IS_TRAPPED = "Is trapped"; public static final String GAM_MAZE_ENTRY_TRAP_TYPE = "Trap type"; public static final String GAM_MAZE_ENTRY_WALLS = "Walls"; public static final String GAM_MAZE_ENTRY_VISITED = "Visited"; private static final String[] s_noyes = {"No", "Yes"}; private static final String[] s_traps = {"TrapA", "TrapB", "TrapC"}; private static final String[] s_walls = {"None", "East", "West", "North", "South"}; public ModronMazeEntry(AbstractStruct superStruct, ByteBuffer buffer, int offset, int nr) throws Exception { super(superStruct, GAM_MAZE_ENTRY + " " + nr, buffer, offset); } @Override public int read(ByteBuffer buffer, int offset) throws Exception { addField(new DecNumber(buffer, offset, 4, GAM_MAZE_ENTRY_OVERRIDE)); addField(new Bitmap(buffer, offset + 4, 4, GAM_MAZE_ENTRY_ACCESSIBLE, s_noyes)); addField(new Bitmap(buffer, offset + 8, 4, GAM_MAZE_ENTRY_IS_VALID, s_noyes)); addField(new Bitmap(buffer, offset + 12, 4, GAM_MAZE_ENTRY_IS_TRAPPED, s_noyes)); addField(new Bitmap(buffer, offset + 16, 4, GAM_MAZE_ENTRY_TRAP_TYPE, s_traps)); addField(new Flag(buffer, offset + 20, 2, GAM_MAZE_ENTRY_WALLS, s_walls)); addField(new Bitmap(buffer, offset + 22, 4, GAM_MAZE_ENTRY_VISITED, s_noyes)); return offset + 26; } }