#ifndef CHESSBOARDVISUALIZER_HPP
#define CHESSBOARDVISUALIZER_HPP

#include "BaseVisualizer.hpp"
#include "../Chessboard/Chessboard.hpp"
#include "../Chesspieces/Chesspiece.hpp"

class ChessboardVisualizer : public BaseVisualizer {

  private:
    Chessboard* CHESSBOARD;
    std::vector<std::vector<std::string>> draw_vector;

    static size_t GetMaxBoardWidth();

    void GenerateTopBottomBorder(bool top, bool single);
    void GenerateElement() override;
    void GeneratePlayers();
    void GenerateChessboard();
    void GenerateFiles();
    std::string GenerateBoardField(char file, int rank, int height);
    void GenerateDisplayVector();
    std::string FillStringToMaxLength(std::string& str);

  public:
    ChessboardVisualizer(Chessboard* chessboard, size_t padding) : BaseVisualizer(ChessboardVisualizer::GetMaxBoardWidth(), padding), CHESSBOARD(chessboard) {
    	ChessboardVisualizer::GenerateElement();
    };
    void DisplayElement();
};

#endif //CHESSBOARDVISUALIZER_HPP