2023-05-09 20:50:50 +02:00
|
|
|
#include "world_view.h"
|
|
|
|
|
2023-05-10 11:03:14 +02:00
|
|
|
WorldView::WorldView() : view(nullptr)
|
2023-05-09 20:50:50 +02:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
WorldView::~WorldView()
|
|
|
|
{
|
2023-05-10 11:03:14 +02:00
|
|
|
delete view;
|
2023-05-09 20:50:50 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void WorldView::draw(sf::RenderWindow *window) const
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2023-05-10 11:03:14 +02:00
|
|
|
void WorldView::update(Game *game)
|
2023-05-09 20:50:50 +02:00
|
|
|
{
|
2023-05-10 11:03:14 +02:00
|
|
|
if (view == nullptr)
|
|
|
|
{
|
|
|
|
initializeView(game);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Update size
|
|
|
|
auto windowSize = game->window->getSize();
|
|
|
|
sf::Vector2f viewSize = sf::Vector2f(windowSize.x, windowSize.y);
|
|
|
|
view->setSize(viewSize);
|
2023-05-09 20:50:50 +02:00
|
|
|
|
2023-05-10 11:03:14 +02:00
|
|
|
// Update position
|
|
|
|
auto moveDirection = InputMapper::getInputDirection();
|
2023-05-09 20:50:50 +02:00
|
|
|
if (moveDirection != InputDirection::NONE)
|
|
|
|
{
|
2023-05-10 11:03:14 +02:00
|
|
|
float stepSize = 100.0f * FRAME_TIME.asSeconds();
|
2023-05-09 20:50:50 +02:00
|
|
|
auto delta = stepSize * Direction::getVector(moveDirection);
|
2023-05-10 11:03:14 +02:00
|
|
|
this->view->move(delta);
|
2023-05-09 20:50:50 +02:00
|
|
|
}
|
2023-05-10 11:03:14 +02:00
|
|
|
|
|
|
|
// TODO: Only update if necessary
|
|
|
|
game->window->setView(*this->view);
|
|
|
|
}
|
|
|
|
|
|
|
|
void WorldView::initializeView(Game *game)
|
|
|
|
{
|
|
|
|
auto center = game->window->getView().getCenter();
|
|
|
|
auto size = game->window->getView().getSize();
|
|
|
|
view = new sf::View(center, size);
|
2023-05-09 20:50:50 +02:00
|
|
|
}
|