void GameOverScreen::step() { game_->GetField().step(); // Show GameOver animation game_->StepToRotateScreen(); if (game_->GameOverAnimationFinished()) { if (isHighscore()) { StepWidgets(); if(jngl::keyPressed(jngl::key::Return) || jngl::keyPressed(jngl::key::WizB)) { data_.name = input_->getText(); GetOptions().Set("lastHighscoreName", data_.name); highscore_.Add(data_); highscore_.save(); Menu* menu = new Menu; menu->BlinkHighscore(data_); jngl::setWork(new Fade(menu)); } } else { blink_ += 4; if (blink_ > 2 * 255) { blink_ = 0; } if (jngl::mousePressed() || jngl::keyPressed(jngl::key::Any)) { jngl::setWork(new Fade(new Menu)); } } } else if (jngl::keyPressed(jngl::key::Escape)) { while (!game_->GameOverAnimationFinished()) { game_->GetField().step(); } } }
void GameOverScreen::onQuitEvent() { while (!game_->GameOverAnimationFinished()) { game_->GetField().step(); } if (!isHighscore()) { jngl::quit(); } }
void KBlocksScene::updateGame() { if (mSnapshotMode) { return; } QVarLengthArray<int, 16> removedLines(mGroupCount); int gameCount = mpGameLogic->updateGame(removedLines.data()); for (int i = 0; i < mGroupCount; i++) { if (removedLines[i] > 0) { if (maGameScoreList[i]->addScore(removedLines[i])) { int tmpLevel = maGameScoreList[i]->getGameLevel(); if (mTopGameLevel < tmpLevel) { mpGameLogic->levelUpGame(tmpLevel - mTopGameLevel); mTopGameLevel = tmpLevel; } } emit scoreChanged(i, maGameScoreList[i]->getScorePoint(), maGameScoreList[i]->getLineCount(), maGameScoreList[i]->getGameLevel()); } else if (removedLines[i] == -1) { maGroupList[i]->stopGame(); if (mGroupCount == 1) { QTimer::singleShot(500, this, &KBlocksScene::gameOverPlayer); emit isHighscore(0, maGameScoreList[0]->getScorePoint(), maGameScoreList[0]->getGameLevel()); } else { if (i == 0) { for (int j = 0; j < mGroupCount; j++) { maGroupList[j]->stopGame(); } QTimer::singleShot(500, this, &KBlocksScene::gameOverMultiLose); emit isHighscore(0, maGameScoreList[0]->getScorePoint(), maGameScoreList[0]->getGameLevel()); } else if (gameCount <= 1) { maGroupList[0]->stopGame(); QTimer::singleShot(500, this, &KBlocksScene::gameOverMultiWin); emit isHighscore(0, maGameScoreList[0]->getScorePoint(), maGameScoreList[0]->getGameLevel()); } } } } }