package school_project;

import java.util.ArrayList;
import java.util.Arrays;

/**
 * Represent the map with its pieces.
 * Every piece has a position element that represent its position on the map
 */
public class Map extends Shape{
    private final ArrayList<Piece> pieces = new ArrayList<>();

    public Map(boolean[][] matrix) {
        super(matrix);
    }

    public void addPiece(Piece piece){
        piece.setLinked_map(this);
        pieces.add(piece);
    }

    /**
     * Return a matrix with all used space on the map to see if a piece can fit in a space
     *
     * @return matrix of boolean with false being the not used space
     */
    public boolean[][] getUsedSpace(){

        // Copy of the map to avoid side effect
        boolean[][] used = new boolean[height][width];
        for (int i = 0; i < height; i++) {
            used[i] = Arrays.copyOf(matrix[i], width);
        }

        for (Piece p : pieces) {
            for(int x = 0; x < p.height; x++){
                for(int y = 0; y < p.width; y++){
                    if (p.getShape()[x][y]){
                        used[p.getPosition().x + x][p.getPosition().y + y] = false;
                    }
                }
            }
        }
        return used;
    }
}
