#import <UIKit/UIKit.h>
#include "Vector.h"
#include "Types.h"

typedef struct MazeCell MazeCell;

struct MazeCell {
  BOOL leftWall;
  BOOL rightWall;
  BOOL bottomWall;
  BOOL topWall;
  BOOL backWall;
  BOOL frontWall;
  float red;
  float green;
  float blue;
  int partitionID;
};

@interface Maze : NSObject {
  int sizeX;
  int sizeY;
  int sizeZ;
  MazeCell * cells;
  int firstCellIndex;
  int lastCellIndex;
}

- (void) generateNewMazeWithSizeX: (int) x sizeY: (int) y sizeZ: (int) z;
- (int) cellIndexForGridPositionX: (int) x Y: (int) y Z: (int) z;
- (IntVector) gridPositionForCellIndex: (int) cellIndex;
- (Vector) spatialPositionForCellIndex: (int) cellIndex;
- (int) firstCellIndex;
- (int) lastCellIndex;
- (MazeCell *) cellAtIndex: (int) cellIndex;
- (void) draw;

@end
