#include "board.h" #include "boardwindow.h" #include "maingame.h" #include "spaceship.h" BoardWindow::BoardWindow(int height, int width, Board *board) : height(height), width(width), board(board) { } BoardWindow::~BoardWindow() { } void BoardWindow::update() { Window::update(); this->resize(); int twoThirds = (this->getRows() / 3) * 2; int halfCols = this->getCols() / 2; int y = (twoThirds / 2) - 12; int x = halfCols - 4 - 1; // Print black hole this->printBlackHole(y, x, 0); y += 6; x = (this->getCols() / 2) - (46 / 2) - 1; // Print all planets for (int i = 1; i < BOARD_SIZE - 1; i++) { this->printPlanet(y, x, i); x += 8; if (i == (BOARD_SIZE - 2) / 2) { x = (this->getCols() / 2) - (46 / 2) - 1; y += 6; } } y += 6; x = halfCols - 4 - 1; // Print black hole this->printBlackHole(y, x, BOARD_SIZE - 1); } void BoardWindow::resize() { int rows = this->getMaxRows() - this->height; int cols = this->getMaxCols() - this->width; this->setWindow(rows, cols, 0, 0); Window::resize(); } void BoardWindow::printBlackHole(int y, int x, int planet) { this->print("+------+", y, x); this->print("| |", y + 1, x); this->print("| |", y + 2, x); this->print("| |", y + 3, x); this->print("+------+", y + 4, x); this->printSpaceShip(y + 1, x + 1, planet, 6); } void BoardWindow::printPlanet(int y, int x, int planet) { this->print("+----+", y, x); this->print("| |", y + 1, x); this->print("| |", y + 2, x); this->print("| |", y + 3, x); this->print("+----+", y + 4, x); this->printSpaceShip(y + 1, x + 1, planet, 4); } void BoardWindow::printSpaceShip(int y, int x, int planet, int width) { auto tmp = this->board->getShips(planet); int size = (int)tmp->size() + 1; for (int i = 1; i < size; i++) { tmp->at(i - 1)->render(this, y, x, false); x++; if (i != 1 && i % width == 0) { y++; x -= width; } } }