You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdegames/klickety/field.cpp

81 lines
2.2 KiB

#include "field.h"
#include "field.moc"
#include <tqwhatsthis.h>
#include <tqlayout.h>
#include <kapplication.h>
#include <klocale.h>
#include <kgamelcd.h>
#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("<qt>Display the number of remaining "
"blocks.<br/>"
"It turns <font color=\"blue\">blue"
"</font> if it is a highscore "
"and <font color=\"red\">red</font> "
"if it is the best local score.</qt>"));
lcds->addWidget(sc, 1, 0);
lcds->setRowStretch(2, 1);
KGameLCDList *et = new KGameLCDList(i18n("Elapsed time"), this);
elapsedTime = new KGameLCDClock(et);
connect(board, TQT_SIGNAL(firstBlockClicked()), elapsedTime, TQT_SLOT(start()));
et->append(elapsedTime);
lcds->addWidget(et, 5, 0);
lcds->setRowStretch(6, 1);
connect(board, TQT_SIGNAL(scoreUpdated()), TQT_SLOT(scoreUpdatedSlot()));
connect(board, TQT_SIGNAL(gameOverSignal()), TQT_SLOT(gameOver()));
settingsChanged();
connect(parent, TQT_SIGNAL(settingsChanged()), TQT_SLOT(settingsChanged()));
TQTimer::singleShot(0, this, TQT_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::null);
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();
}