#include "player.h"

#include <QLayout>
#include <QDebug>
#include <QTextDocument>

Player::Player(QWidget* parent) : score(0), state(Naming) {
	theLabel = new QLabel (parent);
    theLabel->setTextFormat(Qt::RichText);
	parent->layout()->addWidget(theLabel);
	qDebug() << "Player created";
}

void Player::handleKey(QString str)
{
    // edit "current line"
    if (str.length() == 1) {
        currentWord += str;
    }
    else if (str == "BackSpace") {
        currentWord.chop(1);
    }
    // see if this does anything useful
    switch (state) {
        case Naming:
            setLabel(currentWord, BASE_COLOR);
            if (str == "Return") {
                name = currentWord;
                state = Waiting;
                setLabel("<Bereit>", READY_COLOR);
            }
            break;
        case Waiting:
            break;
        case Typing:
            setLabel(currentWord, BASE_COLOR);
            break;
    }
}

void Player::setLabel(QString body, QString color)
{
    QString text = QString("<font color=%1>").arg(color);
    if (state >= Waiting) {
        text += QString("<font size=-3>%1:</font><br>").arg(Qt::escape(name));
    }
    text += Qt::escape(body);
    theLabel->setText(text);
}

void Player::wordComplete(int points)
{
    score += points;
    state = Waiting;
    setLabel(currentWord, READY_COLOR);
}

QString Player::getCurrentWord() {
    Q_ASSERT(state == Typing);
	return currentWord;
}

void Player::nextWord() {
    Q_ASSERT(state == Waiting);
	currentWord = "";
    setLabel("<Warte auf Eingabe>", BASE_COLOR);
	state = Typing;
}

void Player::showScore() {
    Q_ASSERT(state == Waiting);
    setLabel(QString ("%1 Punkte").arg(score), READY_COLOR);
}
