Exemplo n.º 1
0
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();
		}
	}
}
Exemplo n.º 2
0
void GameOverScreen::onQuitEvent() {
	while (!game_->GameOverAnimationFinished()) {
		game_->GetField().step();
	}
	if (!isHighscore()) {
		jngl::quit();
	}
}
Exemplo n.º 3
0
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());
                }
            }
        }
    }
}