import Cell from "./cell.tsx";
import styles from "./maze.module.css";
import {State} from "@/app/state/state.ts";
import {ActionDispatch, JSX} from "react";
import {Action} from "@/app/state/action.ts";

export default function Maze({state, dispatch}:
                             {
                                 state: State,
                                 dispatch: ActionDispatch<[Action]>
                             }) {
    if (!state.maze) {
        return <div>No valid maze.</div>
    }

    const maze: JSX.Element[] = [];
    for (let y = 0; y < state.maze.height; y++) {
        const row: JSX.Element[] = [];
        for (let x = 0; x < state.maze.width; x++) {
            row.push(<Cell key={`${x}x${y}`} x={x} y={y} state={state} dispatch={dispatch}/>)
        }
        maze.push(<div key={`r${y}`} className={styles.row}>{row}</div>);
    }
    return (
        <div className={styles.maze}>
            {maze}
        </div>
    );
}