X-Git-Url: https://git.ralfj.de/multypo.git/blobdiff_plain/e52cebeda021cf4e76330eabd3777ec6136720d3..318e322c3cd72e6a7f692c6f7c7770c0e15720c8:/qt/player.cpp diff --git a/qt/player.cpp b/qt/player.cpp index 937bbab..4853823 100644 --- a/qt/player.cpp +++ b/qt/player.cpp @@ -3,57 +3,58 @@ #include #include -static QString colorToString(QColor col) -{ - 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')); -} - -Player::Player(QWidget* parent) { +Player::Player(QWidget* parent) : score(0), state(Naming) { theLabel = new QLabel (parent); parent->layout()->addWidget(theLabel); - modifyable = true; qDebug() << "Player created"; } -bool Player::hasName() { - return !name.isEmpty(); -} - -QString Player::getName() { - return name; -} - -QString Player::getCurrentLine() { - return currentLine; +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: + theLabel->setText(currentWord); + if (str == "Return") { + name = currentWord; + state = Waiting; + theLabel->setText(""); + } + break; + case Waiting: + break; + case Typing: + theLabel->setText(currentWord); + break; + } +} + +void Player::wordComplete(int points) +{ + score += points; + state = Waiting; + theLabel->setText(""); } -void Player::setWaiting(QString labeltext) { - theLabel->setText(labeltext); - modifyable = false; +QString Player::getCurrentWord() { + Q_ASSERT(state == Typing); + return currentWord; } -void Player::resetText() { - currentLine.clear(); - theLabel->setText(currentLine); - modifyable = true; +void Player::nextWord() { + currentWord = ""; + theLabel->setText(currentWord); + state = Typing; } -bool Player::handleKey(QString str) { - if (!modifyable) - return false; - bool newChar = false; - if (str.length() == 1) { - currentLine += str; - newChar = true; - } else if (!hasName() && str == "Return") { - // set name - name = currentLine; - currentLine = ""; - } else if (str == "BackSpace") { - currentLine.chop(1); - } - theLabel->setText(currentLine); - return newChar; +void Player::showScore() { + Q_ASSERT(state == Waiting); + theLabel->setText(QString ("Spieler %1 hat %2 Punkte.").arg(name).arg(score)); }