void Gun::onFixedUpdate(sf::Time dt) { // Decrement Cooldown if (mCooldownCounter > 0.0f) { mCooldownCounter -= dt.asSeconds(); if (mCooldownCounter < 0.0f) { mCooldownCounter = 0.0f; } } // Check if gun is firinga and ready to fire. if (mFiring && mCooldownCounter == 0.0f) { // If gun is bursty if (mBurst) { // then fire the gun multiple times. for (unsigned i = 0; i < mBurstAmount; i++) { fireGun(); } } // Else just fire once. else { fireGun(); } } }
void BobShooter::execute() { if (firing) { fireGun(); } }
PlayerController::PlayerController(AttackingEntityPtr player, View::AbstractView* view) : m_player(player) { // Add the player to the view view->addEntity(player); // Request a signal when a key is pressed view->addObserver([this](const Event&){ m_moveLeftKeyDown = false; }, Event::Type::MoveLeftKeyReleased); view->addObserver([this](const Event&){ m_moveLeftKeyDown = true; }, Event::Type::MoveLeftKeyPressed); view->addObserver([this](const Event&){ m_moveRightKeyDown = false; }, Event::Type::MoveRightKeyReleased); view->addObserver([this](const Event&){ m_moveRightKeyDown = true; }, Event::Type::MoveRightKeyPressed); view->addObserver([this](const Event&){ m_fireKeyDown = false; }, Event::Type::FireKeyReleased); view->addObserver([this](const Event&){ m_fireKeyDown = true; fireGun(); }, Event::Type::FireKeyPressed); }
void PlayerController::update(const sf::Time& elapsedTime) { // Move the player to the left if needed if (m_moveLeftKeyDown) { m_player->setPosition(Vector2f{m_player->getPosition().x - (m_player->getSpeed() * elapsedTime.asSeconds()), m_player->getPosition().y}); if (m_player->getPosition().x < 0) m_player->setPosition(Vector2f{0, m_player->getPosition().y}); } // Move the player to the right if needed if (m_moveRightKeyDown) { m_player->setPosition(Vector2f{m_player->getPosition().x + (m_player->getSpeed() * elapsedTime.asSeconds()), m_player->getPosition().y}); if (m_player->getPosition().x + m_player->getSize().x > SCREEN_WIDTH) m_player->setPosition(Vector2f{SCREEN_WIDTH - m_player->getSize().x, m_player->getPosition().y}); } // Fire the gun if needed if (m_fireKeyDown) fireGun(); }