holesome/src/game/player/player.cpp

59 lines
1.2 KiB
C++
Raw Normal View History

2023-05-08 18:20:55 +02:00
#include "player.hpp"
2023-05-17 23:22:45 +02:00
#include <utility>
sf::Vector2f Player::getTrackablePosition() const
{
return coordinates.isometric().toScreen();
}
sf::Vector2f Player::getTrackableSize() const
{
// TODO: Proper implementation
return {static_cast<float>(circle->getRadius() * 2), static_cast<float>(circle->getRadius() * 2)};
}
2023-05-24 14:00:51 +02:00
void Player::update()
{
if (!input->isActive) {
isActive = false;
return;
}
auto moveDirection = input->direction.asIsometricVector();
auto moveDelta = moveDirection * 30.0f * FRAME_TIME.asSeconds();
coordinates.move(moveDelta);
circle->coordinates.set(coordinates);
}
void Player::draw(sf::RenderWindow *window) const
{
circle->draw(window);
}
Player::~Player()
{
delete circle;
}
2023-05-17 23:22:45 +02:00
Player::Player(std::shared_ptr<InputIdentity> assignedInput, const sf::Color color, WorldCoordinates initCoordinates)
{
coordinates.set(initCoordinates);
2023-05-17 23:22:45 +02:00
input = std::move(assignedInput);
circle = new CircleObject(10, color);
circle->coordinates.set(coordinates);
}
TrackableState Player::getTrackableState() const
{
if (isActive)
{
return TrackableState::TRACKING;
} else
{
return TrackableState::END_TRACKING;
}
}