#ifndef PLAYER_HPP #define PLAYER_HPP #include #include #include #include #include #include #include #include "data.hpp" #include "globals.hpp" #include "scheduler.hpp" struct Object; class Entity; class Player; struct Object { Object(ObjectData data) { rect.setSize(data.size); rect.setPosition(data.pos); rect.setOutlineThickness(data.edge); rect.setFillColor(data.interior_color); rect.setOutlineColor(data.exterior_color); }; sf::RectangleShape rect; }; class Entity : public Object { public: Entity(EntityData data) : Object(data.object), _velocity(data.velocity) {}; void set_velocity(sf::Vector2f velocity); void set_velocity_x(int velocity); void set_velocity_y(int velocity); const sf::Vector2 get_velocity(); protected: sf::Vector2f _velocity; }; class Player : public Entity { public: Player(PlayerData data) : Entity(data.entity), max_dash_acceleration(data.max_dash_acceleration), max_vertical_acceleration(data.max_vertical_acceleration) {}; float max_vertical_acceleration; float max_dash_acceleration; bool m_jumping { false }; void handle_movment(std::optional dash); void handle_gravity(); void handle_collision( std::array, MAX_COLS>, MAX_ROWS>& tilemap); private: std::string direction { "left" }; }; #endif