#ifndef MOVEMENT_PHYSICS_HPP_
#define MOVEMENT_PHYSICS_HPP_

#include <Entity/PhysicsEntity/CameraEntity/Player/Player.hpp>

/**
 * @brief Represents the player's movement physics in a specific block.
 */
class MovementPhysics
{
protected:
    static constexpr float gravity = 0.01f;
    static constexpr float friction = 0.01f;

public:
    /**
     * @brief Update the player under these movement physics.
     * 
     * @param player The player.
     */
    virtual void updatePlayer(Player &player) = 0;

    /**
     * @brief Get friction
     * @return The friction float.
     */
    virtual float getFriction() = 0;

    /**
     * @brief Get gravity.
     * @return The gravity float.
     */
    virtual float getGravity() = 0;
};

#endif