void GameState::onEvent() { while (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { applicationStateManager->setNextState(STATE_EXIT); } else if (event.type == SDL_KEYDOWN) { switch(event.key.keysym.scancode) { case SDL_SCANCODE_ESCAPE: applicationStateManager->pushStateOnStack(STATE_GAMEMENU); setPauseStatus(PAUSED_THIS_FRAME); break; case SDL_SCANCODE_P: applicationStateManager->pushStateOnStack(STATE_PAUSE); setPauseStatus(PAUSED_THIS_FRAME); break; } } gameEntityManager.onEvent(&event); } }
void ExecutionWindow::on_debugPushButton_clicked() { setPauseStatus(true); }
void ExecutionWindow::onEvaluationPaused() { setPauseStatus(true); }
void ExecutionWindow::onEvaluationResumed() { setPauseStatus(false); }
void GameState::onUpdate() { if (blackScreen.isBlackingIn()) { blackScreen.onUpdate(); if (!blackScreen.isBlackingIn()) { //Do something when black in is done } } else if (blackScreen.isBlackingOut()) { blackScreen.onUpdate(); if (!blackScreen.isBlackingOut()) { applicationStateManager->setNextState(nextState); } } if (playerDestroyed) { if (lives>0) { player = gameEntityManager.getFactory()->createEntity("player"); } else { gameOverTimer.start(); } playerDestroyed = false; } if (gameOverTimer.isStarted()) { if (gameOverTimer.getTimeOnTimer()>3000) { applicationStateManager->pushStateOnStack(STATE_GAMEOVER); setPauseStatus(PAUSED_THIS_FRAME); AudioSystem::getInstance()->stopMusic(); gameOverTimer.stop(); } } if (victoryTimer.isStarted()) { if (victoryTimer.getTimeOnTimer()>3000) { applicationStateManager->pushStateOnStack(STATE_VICTORY); setPauseStatus(PAUSED_THIS_FRAME); AudioSystem::getInstance()->stopMusic(); victoryTimer.stop(); } } level.onUpdate(); while (!level.getSpawningQueue().empty()) { SpawnData data = level.popSpawningQueue(); gameEntityManager.getFactory()->createEntity(data); } gameEntityManager.onUpdate(); if (pauseStatus == PAUSED_THIS_FRAME) { gameEntityManager.pauseAllTimers(); level.pauseTimers(); AudioSystem::getInstance()->pauseMusic(); setPauseStatus(PAUSED_NONE); } else if (pauseStatus == UNPAUSED_THIS_FRAME) { gameEntityManager.resumeAllTimers(); level.resumeTimers(); AudioSystem::getInstance()->playMusic(); setPauseStatus(PAUSED_NONE); } }