void GameEngine::fire() { if (gameIsPaused()) { kDebug() << "trying to fire while game is paused!!!"; resume(); return; } foreach (Ball *ball, m_balls) { if (!ball->toBeFired) { continue; } // else ball->toBeFired = false; qreal ballCenter= ball->getRect().left() + (ball->getRect().width())/2; qreal barCenter = m_bar.center(); qreal angle = M_PI / 3; angle *= (barCenter - ballCenter) / (m_bar.getRect().width()/2); angle += M_PI_2; ball->directionX = cos(angle) * BALL_SPEED; ball->directionY = -sin(angle) * BALL_SPEED; } m_dScore = BRICK_SCORE; m_infoMessage.hide(); randomCounter = 0; }
void GameEngine::pause() { if (gameIsPaused()) { return; } m_elapsedTimeTimer.stop(); m_gameTimer.stop(); emit gamePaused(); //showMessage("Game Paused!"); PORT - FOR NOW }
void GameEngine::resume() { if (!gameIsPaused()) { return; } m_elapsedTimeTimer.start(); m_gameTimer.start(); hideMessage(); emit gameResumed(); }
void GameEngine::pause() { if (gameIsPaused()) { return; } if (m_gameWon || m_gameOver) { return; } m_elapsedTimeTimer.stop(); m_gameTimer.stop(); emit gamePaused(); showMessage(i18n("Game Paused!")); }
void GameEngine::repaintMovingObjects() { m_bar.repaint(); foreach (Ball *ball, m_balls) { ball->repaint(); } foreach (Gift *gift, m_gifts) { if (!gift->isVisible()) { continue; } gift->repaint(); } // avoid infinite loops of the ball ++randomCounter; if (randomCounter == 1024) { randomCounter = 0; foreach (Ball *ball, m_balls) { if (qrand() % 2) { ball->directionX += 0.002; } else { ball->directionY += 0.002; } } // increase the speed a little // if there is at least one ball moving // and the game isn't paused bool ballMoving = false; foreach (Ball *ball, m_balls) { if (!ball->toBeFired) { ballMoving = true; break; } } if (ballMoving && !gameIsPaused()) { changeSpeed(AUTO_SPEED_INCREASE); } }
void GameEngine::loadLevel() { deleteAllObjects(); m_remainingBricks = 0; m_levelLoader->loadLevel( m_bricks ); if (m_bricks.isEmpty()) { if (m_levelLoader->level() == 1) { // No level in the levelset kError() << "Invalid levelset " << m_levelLoader->levelset() << endl; } else { // No more levels: game won m_gameWon = true; kDebug() << m_score; addScore( GAME_WON_SCORE + m_lives.size() * LIFE_SCORE ); kDebug() << m_lives.size() << m_score; showMessage( i18n("Well done! You won the game") ); emit gameEnded(m_score, -1, m_elapsedTime); deleteMovingObjects(); } } m_balls.append(new Ball); moveBar(m_bar.center()); m_bar.reset(); updateAttachedBalls(); m_gameTimer.setInterval(REPAINT_INTERVAL); m_speed = 1.8; m_repaintInterval = 1; m_levelInfo.setLevel(m_level); if (gameIsPaused()) { resume(); } showMessage(i18n("Level %1", m_level)); QTimer::singleShot(2000, this, SLOT(hideMessage())); showFireBallMessage(); }
void GameEngine::moveBar(int newPos) { if (gameIsPaused()) { return; } // width of the game int width = BRICK_WIDTH * WIDTH; // width of the bar int w = m_bar.getRect().width(); int y = m_bar.getRect().y(); int x = newPos - w/2; if (x < 0) { x = 0; emit resetMousePosition(); } else if (x > width - w) { x = width - w; emit resetMousePosition(); } m_bar.moveTo(x, y); }