#include "world_view.h" WorldView::WorldView() : view(nullptr), hasViewChanged(false) { } WorldView::~WorldView() { delete view; } void WorldView::draw(sf::RenderWindow *window) const { } void WorldView::update(Game *game) { // Initialize if necessary if (view == nullptr) { initializeView(game); } // Update size setSize(game->window->getSize()); // Update position moveViewByControls(); // Update window if necessary if (hasViewChanged) { game->window->setView(*this->view); hasViewChanged = false; } } void WorldView::initializeView(Game *game) { auto center = game->window->getView().getCenter(); auto size = game->window->getView().getSize(); view = new sf::View(center, size); } void WorldView::setSize(sf::Vector2u windowSize) { sf::Vector2f viewSize = sf::Vector2f(windowSize.x, windowSize.y); view->setSize(viewSize); hasViewChanged = true; } void WorldView::moveViewByControls() { auto moveDirection = InputMapper::getInputDirection(); if (moveDirection == InputDirection::NONE) { return; } float stepSize = 100.0f * FRAME_TIME.asSeconds(); auto delta = stepSize * Direction::getVector(moveDirection); this->view->move(delta); hasViewChanged = true; }