DynamicEntities.h 785 bytes
#pragma once
#include <States/GameState/Entities/IEntity.h>
#include <random>
struct IDynamicEntity : IEntity {
    [[nodiscard]] virtual std::unique_ptr<IDynamicEntity> clone() const = 0;
    virtual void action() = 0;
    ~IDynamicEntity() override = default;
};
class Enemy : public IDynamicEntity {
public:
    Enemy();
    [[nodiscard]] std::unique_ptr<IDynamicEntity> clone() const override;
    void action() override;
    void draw_into(sf::RenderWindow& window) const override;
    void prepare_for_drawing() override;
private:
    sf::RectangleShape m_rectangle;
    sf::Clock m_stopwatch;
    std::mt19937 m_rng{std::random_device{}()};
    std::uniform_int_distribution<size_t> m_dist_milliseconds{0, 9999};
    std::uniform_int_distribution<> m_dist_direction{0, 3};