#include "field.h" #include "field.moc" #include #include #include #include #include #include "base/board.h" Field::Field(TQWidget *parent) : TQWidget(parent, "field"), BaseField(this) { KGameLCDList *sc = new KGameLCDList(i18n("Remaining blocks"), this); showScore = new KGameLCD(3, sc); sc->append(showScore); TQWhatsThis::add(sc, i18n("Display the number of remaining " "blocks.
" "It turns blue" " if it is a highscore " "and red " "if it is the best local score.
")); lcds->addWidget(sc, 1, 0); lcds->setRowStretch(2, 1); KGameLCDList *et = new KGameLCDList(i18n("Elapsed time"), this); elapsedTime = new KGameLCDClock(et); connect(board, TQ_SIGNAL(firstBlockClicked()), elapsedTime, TQ_SLOT(start())); et->append(elapsedTime); lcds->addWidget(et, 5, 0); lcds->setRowStretch(6, 1); connect(board, TQ_SIGNAL(scoreUpdated()), TQ_SLOT(scoreUpdatedSlot())); connect(board, TQ_SIGNAL(gameOverSignal()), TQ_SLOT(gameOver())); settingsChanged(); connect(parent, TQ_SIGNAL(settingsChanged()), TQ_SLOT(settingsChanged())); TQTimer::singleShot(0, this, TQ_SLOT(start())); } void Field::pause() { if ( board->isGameOver() ) return; bool paused = board->isPaused(); if (paused) elapsedTime->start(); else elapsedTime->stop(); BaseField::pause(!paused); } void Field::start() { init(false, false, true, true, TQString()); GTInitData data; data.seed = kapp->random(); BaseField::start(data); elapsedTime->reset(); } void Field::gameOver() { elapsedTime->stop(); stop(true); BaseField::gameOver(currentScore(), this); } KExtHighscore::Score Field::currentScore() const { KExtHighscore::Score score(KExtHighscore::Won); score.setScore(board->score()); score.setData("time", 3600 - elapsedTime->seconds()); return score; } bool Field::_isPaused() const { return board->isPaused(); }