#ifndef MAZE_H
#define MAZE_H

#define MAZE_MAX_ROWS 200
#define MAZE_MAX_COLS 300

#define W_N 1
#define W_E 2
#define W_S 4
#define W_W 8

typedef struct {
    int rows, cols;
    unsigned char cells[MAZE_MAX_ROWS][MAZE_MAX_COLS];
    int visited[MAZE_MAX_ROWS][MAZE_MAX_COLS];
} Maze;

typedef enum {
    ALG_RECURSIVE,
    ALG_PRIM,
    ALG_KRUSKAL,
    ALG_ALDUS,
    ALG_COUNT
} MazeAlgo;

void maze_init(Maze *m, int rows, int cols);
void maze_reset(Maze *m);
int  maze_generate_full(Maze *m, MazeAlgo algo);

#endif
