void World::handleInput() { sf::Event event; while(mWindow.pollEvent(event)) { if(event.type == sf::Event::Closed) mWindow.close(); else if(event.type == sf::Event::KeyReleased) { if(event.key.code == sf::Keyboard::Escape) mGameState.pause(); } else if(event.type == sf::Event::MouseButtonPressed) { sf::Vector2i mousePos; sf::FloatRect vBounds = getViewBounds(); mousePos.x = sf::Mouse::getPosition(mWindow).x + vBounds.left; mousePos.y = sf::Mouse::getPosition(mWindow).y + vBounds.top; sf::Vector2f mousePosF(mousePos.x, mousePos.y); if(event.mouseButton.button == sf::Mouse::Left) { mousePosF.x = std::min(mousePosF.x, static_cast<float>(mWorldBounds.width - (mLevelBlockSize + mWaypointRadius))); mousePosF.x = std::max(mousePosF.x, static_cast<float>(mLevelBlockSize + mWaypointRadius)); mousePosF.y = std::min(mousePosF.y, static_cast<float>(mWorldBounds.height - (mLevelBlockSize + mWaypointRadius))); mousePosF.y = std::max(mousePosF.y, static_cast<float>(mLevelBlockSize + mWaypointRadius)); if(sf::Keyboard::isKeyPressed(sf::Keyboard::LShift)) { if(mDog) mDog->addToPath(mousePosF); } else { if(mDog) mDog->startNewPath(mousePosF); } } } } handleRealTimeInput(); }
void PlayerController::update(const HiResDuration& dt) { // Update logic/physics here handleRealTimeInput(dt); }