void GUI::displayGameScreen(const Map& map, bool isWhosTurn, const Chess* ch) { COORD bufferSize{ WINDOW_COLS, WINDOW_LINES }; COORD characterBufferSize{ WINDOW_COLS, WINDOW_LINES }; COORD characterPosition{ 0, 0 }; SMALL_RECT consoleWriteArea{ 0, 0, WINDOW_COLS - 1, WINDOW_LINES - 1 }; CHAR_INFO consoleBuffer[WINDOW_COLS * WINDOW_LINES]; SetConsoleScreenBufferSize(hConsole, bufferSize); for (int y = 0; y < WINDOW_LINES; ++y) { for (int x = 0; x < WINDOW_COLS; ++x) { consoleBuffer[x + WINDOW_COLS * y].Char.AsciiChar = gameScreen[y][x]; consoleBuffer[x + WINDOW_COLS * y].Attributes = DEFAULT_COLOR; } } WriteConsoleOutputA(hConsole, consoleBuffer, characterBufferSize, characterPosition, &consoleWriteArea); displayChessboard(map); displayBattleSituation(map); displayGameInfo(isWhosTurn, map, ch); }
void GuiGame::processWindowEvents() { sf::Event event; while(_context.window->pollEvent(event)) { assert(std::this_thread::get_id() == _ownerId); if(_displayRequest.load()) { displayGame(); _displayRequest.store(false); } while(not _pendingMessages.empty()) { displayGameInfo(_pendingMessages.front()); _pendingMessages.pop(); } if(event.type == sf::Event::Closed) quit(); else _context.gui->handleEvent(event); } }