X-Git-Url: https://git.ralfj.de/multypo.git/blobdiff_plain/036922ba5e90ae7f6f6abe3f99b1783dec5132fc..7a18f439db0b8a7d55ffd0368bb0159afa79ab62:/qt/player.cpp diff --git a/qt/player.cpp b/qt/player.cpp index 4049788..c75bb46 100644 --- a/qt/player.cpp +++ b/qt/player.cpp @@ -1,28 +1,73 @@ #include "player.h" #include +#include +#include -static QString colorToString(QColor col) +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) { - return QString("#%1%2%3").arg(col.red(), 2, 16, QChar('0')) - .arg(col.green(), 2, 16, QChar('0')) - .arg(col.blue(), 2, 16, QChar('0')); + // 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(name, READY_COLOR); + } + break; + case Waiting: + break; + case Typing: + setLabel(currentWord, BASE_COLOR, name+":"); + break; + } } -Player::Player(QWidget* parent) { - theLabel = new QLabel (parent); - parent->layout()->addWidget(theLabel); +void Player::setLabel(QString body, QString color, QString header) +{ + QString text = QString("").arg(color); + if (!header.isEmpty()) { + text += QString("%1
").arg(Qt::escape(header)); + } + text += Qt::escape(body); + theLabel->setText(text); +} + +void Player::wordComplete(int points) +{ + score += points; + state = Waiting; + setLabel(currentWord, READY_COLOR, name+":"); +} + +QString Player::getCurrentWord() { + Q_ASSERT(state == Typing); + return currentWord; +} + +void Player::nextWord() { + Q_ASSERT(state == Waiting); + currentWord = ""; + setLabel("", BASE_COLOR, name+":"); + state = Typing; } -void Player::handleKey(QString str) { - if (str.length() == 1) { - currentLine += str; - } else if (name.isNull() && str == "Return") { - // set name - name = currentLine; - currentLine = ""; - } else if (str == "BackSpace") { - currentLine.chop(1); - } - theLabel->setText(currentLine); +void Player::showScore() { + Q_ASSERT(state == Waiting); + setLabel(QString ("Spieler %1 hat %2 Punkte.").arg(name).arg(score), READY_COLOR); }