PauseState::PauseState(StateStack& stack, Context context) : State(stack, context) , mBackgroundSprite() , mPausedText() , mGUIContainer() { sf::Font& font = context.fonts->get(Fonts::Main); sf::Vector2f windowSize(context.window->getSize()); mPausedText.setFont(font); mPausedText.setString("Game Paused"); mPausedText.setCharacterSize(70); centerOrigin(mPausedText); mPausedText.setPosition(0.5f * windowSize.x, 0.4f * windowSize.y); auto returnButton = std::make_shared<GUI::Button>(*context.fonts, *context.textures); returnButton->setPosition(0.5f * windowSize.x - 100, 0.4f * windowSize.y + 75); returnButton->setText("Return"); returnButton->setCallback([this] () { requestStackPop(); }); auto backToMenuButton = std::make_shared<GUI::Button>(*context.fonts, *context.textures); backToMenuButton->setPosition(0.5f * windowSize.x - 100, 0.4f * windowSize.y + 125); backToMenuButton->setText("Back to menu"); backToMenuButton->setCallback([this] () { requestStateClear(); requestStackPush(States::Menu); }); mGUIContainer.pack(returnButton); mGUIContainer.pack(backToMenuButton); }
bool DebugState::handleEvent(const sf::Event &event) { if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) { requestStateClear(); } return true; }
bool GameOverState::update(sf::Time dt) { // Show state for 3 seconds, after return to menu mElapsedTime += dt; if (mElapsedTime > sf::seconds(3)) { requestStateClear(); requestStackPush(States::Menu); } return false; }
bool GameState::handleEvent(const sf::Event& event) { if (event.type == sf::Event::Closed || (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape)) { requestStateClear(); return false; } scene_graph_.handleEvent(event); return true; }
bool GameOverState::update(sf::Time dt) { // Show state for 3 seconds, after return to menu mElapsedTime += dt; if (mElapsedTime > sf::seconds(3)) { if (mStatus == Player::MissionStatus::MissionFailure || mStatus == Player::MissionStatus::MissionWin) { requestStateClear(); requestStackPush(States::Menu); } else { requestStackPop(); } } return false; }
// Handles events that occur during our pause state bool PauseState::handleEvent(const sf::Event& event) { if (event.type != sf::Event::KeyPressed) return false; if (event.key.code == sf::Keyboard::Escape) { // Escape pressed, remove itself to return to the game requestStackPop(); } if (event.key.code == sf::Keyboard::BackSpace) { // Backspace pressed, remove all states and return to main menu requestStateClear(); requestStackPush(States::Menu); } return false; }
bool GameState::update(sf::Time dt) { handleProjectiles(); handleInfected(); handleSurvivors(); cleanupBloodSplatterAnimations(); cleanupBloodSplatters(dt); setRandomMusicTrack(); updateWave(); if (survivors_.empty()) { requestStateClear(); return false; } // Update Crosshair's Position crosshair_->setPosition(window_->mapPixelToCoords(sf::Mouse::getPosition(*window_))); scene_graph_.update(dt); return true; }