#include "player.hpp" #include "../../sprites/texture_manager.hpp" #include "../../sprites/single_sprite.hpp" #include "../../sprites/animated_sprite.hpp" #include "../../sprites/sprite_sheet.hpp" #include Player::Player(std::shared_ptr assignedInput, const std::string &image, WorldCoordinates initCoordinates) { coordinates->set(initCoordinates); input = std::move(assignedInput); // auto sprite = std::make_shared(TextureManager::getInstance()->getTexture(image), // sf::Vector2f{width, width}); // addChildScreenOffset(sprite, {-width / 2.f, -width / 2.f}); auto spriteSheet = std::make_shared(TextureManager::getInstance()->getTexture(image), 4, 2); auto animatedSprite = spriteSheet->getAnimation(0, 8); animatedSprite->setSize({width, width}); addChildScreenOffset(animatedSprite, {-width / 2.f, -width / 2.f}); } sf::Vector2f Player::getTrackablePosition() const { return coordinates->isometric().toScreen(); } sf::Vector2f Player::getTrackableSize() const { return {width, width}; } void Player::update() { if (!input->isActive) { setActive(false); return; } auto moveDirection = input->direction.asIsometricVector(); auto moveDelta = moveDirection * speed * FRAME_TIME.asSeconds(); coordinates->move(moveDelta); GameObject::update(); } TrackableState Player::getTrackableState() const { if (getActive()) { return TrackableState::TRACKING; } else { return TrackableState::END_TRACKING; } }