104 lines
4.1 KiB
C++
104 lines
4.1 KiB
C++
#include "PlayingViewVisualizer.hpp"
|
|
#include "ChessboardVisualizer.hpp"
|
|
#include "HistorieVisualizer.hpp"
|
|
#include "CommandMenuVisualizer.hpp"
|
|
|
|
void PlayingViewVisualizer::GenerateElement() {
|
|
position_vector.clear();
|
|
display_vector.clear();
|
|
ChessboardVisualizer chessboardVisualizer = ChessboardVisualizer(CHESSBOARD, 2);
|
|
HistorieVisualizer historieVisualizer = HistorieVisualizer(CHESSBOARD, 32, 2);
|
|
CommandMenuVisualizer cmdMenuVisualizer = CommandMenuVisualizer(CHESSBOARD, 2);
|
|
|
|
GeneratePositionVector(chessboardVisualizer.GetDisplayVector(), historieVisualizer.GetDisplayVector(), cmdMenuVisualizer.GetDisplayVector());
|
|
|
|
BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, true, false);
|
|
BaseVisualizer::GenerateEmptyLine(MAX_MENU_WIDTH, false);
|
|
|
|
std::vector<std::string> temp;
|
|
|
|
//((single) ? BaseVisualizer::VERTICAL_LINE_SINGLE : BaseVisualizer::VERTICAL_LINE) + std::string(padding, ' ')
|
|
|
|
for (const auto& row : position_vector) {
|
|
display_vector.push_back(row);
|
|
}
|
|
|
|
BaseVisualizer::GenerateEmptyLine(MAX_MENU_WIDTH, false);
|
|
BaseVisualizer::GenerateTopBottomBorder(MAX_MENU_WIDTH, false, false);
|
|
//size_t maxWidth = BaseVisualizer::FindMaxLength(chessboardVisualizer.display_vector);
|
|
|
|
}
|
|
|
|
void PlayingViewVisualizer::GeneratePositionVector(
|
|
std::vector<std::vector<std::string>>* chessboard_display_vector,
|
|
std::vector<std::vector<std::string>>* historie_display_vector,
|
|
std::vector<std::vector<std::string>>* command_menu_display_vector)
|
|
{
|
|
for (size_t i = 0; i < chessboard_display_vector->size(); ++i) {
|
|
size_t test;
|
|
std::vector<std::string> temp;
|
|
temp.push_back({BaseVisualizer::VERTICAL_LINE + " "});
|
|
if (i == 0) {
|
|
const std::string& first_element = chessboard_display_vector->at(i).at(0);
|
|
temp.push_back(first_element);
|
|
temp.push_back(std::string(62-BaseVisualizer::CountVisibleCharacters(first_element), ' '));
|
|
} else if (chessboard_display_vector->at(i).size() > 1 && i != 0) {
|
|
temp.insert(temp.end(), chessboard_display_vector->at(i).begin(), chessboard_display_vector->at(i).end());
|
|
} else {
|
|
temp.push_back(chessboard_display_vector->at(i).at(0));
|
|
}
|
|
|
|
if (i < historie_display_vector->size()) {
|
|
temp.push_back(std::string(DISTANCE_BETWEEN_ELEMENTS, ' '));
|
|
temp.push_back(historie_display_vector->at(i)[0]);
|
|
} else if (i-3-historie_display_vector->size() < command_menu_display_vector->size()) {
|
|
temp.push_back(std::string(DISTANCE_BETWEEN_ELEMENTS, ' '));
|
|
temp.push_back(command_menu_display_vector->at(i-3-historie_display_vector->size())[0]);
|
|
} else{
|
|
temp.push_back({"", ""});
|
|
}
|
|
|
|
BaseVisualizer::GetSumAllCharsFromVector(temp);
|
|
temp.push_back(std::string(MAX_MENU_WIDTH-BaseVisualizer::GetSumAllCharsFromVector(temp)-1, ' ') + BaseVisualizer::VERTICAL_LINE);
|
|
|
|
position_vector.push_back(temp);
|
|
}
|
|
}
|
|
|
|
void PlayingViewVisualizer::DisplayElement() {
|
|
PlayingViewVisualizer::GenerateElement();
|
|
size_t size;
|
|
std::string temp;
|
|
for (int row = 0; row < display_vector.size(); ++row) {
|
|
for (int column = 0; column < display_vector[row].size(); ++column) {
|
|
if (row >= 4 && row <= 27 && column >= 3 && column <= 10) {
|
|
bool isSecondRowOfField = ((row-1) % 3 == 2);
|
|
bool isBlackWhite = ((column-1) % 2 == (row-1) % 2);
|
|
|
|
if ((row - 1) % 3 == 0) { // Change after 3 rows
|
|
if (isSecondRowOfField) {
|
|
this->SetConsoleColor(isBlackWhite ? BLACK : WHITE, isBlackWhite ? WHITE : BLACK);
|
|
} else {
|
|
this->SetConsoleColor(isBlackWhite ? WHITE : BLACK, isBlackWhite ? BLACK : WHITE);
|
|
}
|
|
} else {
|
|
if (isSecondRowOfField) {
|
|
this->SetConsoleColor(isBlackWhite ? WHITE : BLACK, isBlackWhite ? BLACK : WHITE);
|
|
} else {
|
|
this->SetConsoleColor(isBlackWhite ? BLACK : WHITE, isBlackWhite ? WHITE : BLACK);
|
|
}
|
|
}
|
|
}
|
|
std::cout << display_vector[row][column];
|
|
this->SetConsoleColor(DEFAULT, DEFAULT);
|
|
}
|
|
this->SetConsoleColor(DEFAULT, DEFAULT);
|
|
|
|
std::cout << std::endl;
|
|
}
|
|
}
|
|
|
|
std::string PlayingViewVisualizer::GetMove() {
|
|
return move;
|
|
}
|