#include "GameLogic.h"
#include <iostream>

GameLogic::GameLogic() : attemptsLeft(6) {}

void GameLogic::startGame() {
    std::cout << "Добро пожаловать в игру Виселица!\n";
    while (true) {
        displayGameState();
        char letter = PlayerInput::getValidInput();
        if (usedLetters.find(letter) != usedLetters.end()) {
            std::cout << "Вы уже вводили эту букву. Попробуйте другую.\n";
            continue;
        }
        usedLetters.insert(letter);
        if (!wordManager.checkLetter(letter)) {
            attemptsLeft--;
            std::cout << "Неверная буква! Осталось попыток: " << attemptsLeft << "\n";
        }
        if (checkWin()) {
            std::cout << "Поздравляем! Вы угадали слово: " << wordManager.getDisplayedWord() << "\n";
            break;
        }
        if (checkGameOver()) {
            std::cout << "Вы проиграли. Загаданное слово было: " << wordManager.getDisplayedWord() << "\n";
            break;
        }
    }
}

void GameLogic::displayGameState() const {
    std::cout << "Текущее состояние: " << wordManager.getDisplayedWord() << "\n";
    std::cout << "Оставшиеся попытки: " << attemptsLeft << "\n";
    std::cout << "Использованные буквы: ";
    for (char c : usedLetters) {
        std::cout << c << " ";
    }
    std::cout << "\n";
}

bool GameLogic::checkGameOver() const {
    return attemptsLeft <= 0;
}

bool GameLogic::checkWin() const {
    return wordManager.isWordGuessed();
}
