// 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.Unknown;
import org.infinity.resource.AbstractStruct;
public final class ModronMaze extends AbstractStruct
{
// GAM/ModronMaze-specific field labels
public static final String GAM_MAZE = "Modron maze state";
public static final String GAM_MAZE_SIZE_X = "Size: X";
public static final String GAM_MAZE_SIZE_Y = "Size: Y";
public static final String GAM_MAZE_NORDOM_X = "Nordom position: X";
public static final String GAM_MAZE_NORDOM_Y = "Nordom position: Y";
public static final String GAM_MAZE_MAIN_HALL_X = "Main hall position: X";
public static final String GAM_MAZE_MAIN_HALL_Y = "Main hall position: Y";
public static final String GAM_MAZE_FOYER_X = "Foyer position: X";
public static final String GAM_MAZE_FOYER_Y = "Foyer position: Y";
public static final String GAM_MAZE_ENGINE_ROOM_X = "Engine room position: X";
public static final String GAM_MAZE_ENGINE_ROOM_Y = "Engine room position: Y";
public static final String GAM_MAZE_NUM_TRAPS = "# traps";
public static final String GAM_MAZE_INITIALIZED = "Initialized";
private static final String[] s_noyes = {"No", "Yes"};
public ModronMaze(AbstractStruct superStruct, ByteBuffer buffer, int offset) throws Exception
{
super(superStruct, GAM_MAZE, buffer, offset);
}
@Override
public int read(ByteBuffer buffer, int offset) throws Exception
{
int curOfs = offset;
// adding room data
for (int i = 0; i < 64; i++) {
ModronMazeEntry entry = new ModronMazeEntry(this, buffer, curOfs, i);
addField(entry);
curOfs += entry.getSize();
}
// adding header data
addField(new DecNumber(buffer, curOfs, 4, GAM_MAZE_SIZE_X));
curOfs += 4;
addField(new DecNumber(buffer, curOfs, 4, GAM_MAZE_SIZE_Y));
curOfs += 4;
addField(new DecNumber(buffer, curOfs, 4, GAM_MAZE_NORDOM_X));
curOfs += 4;
addField(new DecNumber(buffer, curOfs, 4, GAM_MAZE_NORDOM_Y));
curOfs += 4;
addField(new DecNumber(buffer, curOfs, 4, GAM_MAZE_MAIN_HALL_X));
curOfs += 4;
addField(new DecNumber(buffer, curOfs, 4, GAM_MAZE_MAIN_HALL_Y));
curOfs += 4;
addField(new DecNumber(buffer, curOfs, 4, GAM_MAZE_FOYER_X));
curOfs += 4;
addField(new DecNumber(buffer, curOfs, 4, GAM_MAZE_FOYER_Y));
curOfs += 4;
addField(new DecNumber(buffer, curOfs, 4, GAM_MAZE_ENGINE_ROOM_X));
curOfs += 4;
addField(new DecNumber(buffer, curOfs, 4, GAM_MAZE_ENGINE_ROOM_Y));
curOfs += 4;
addField(new DecNumber(buffer, curOfs, 4, GAM_MAZE_NUM_TRAPS));
curOfs += 4;
addField(new Bitmap(buffer, curOfs, 4, GAM_MAZE_INITIALIZED, s_noyes));
curOfs += 4;
addField(new Unknown(buffer, curOfs, 8));
curOfs += 8;
return curOfs;
}
}