#pragma once #include #include #include #include #include "entities.hpp" #include "log.hpp" #include "map.hpp" #include "user_input.hpp" #include "pathfinder/base.hpp" #include "camera.hpp" using Collision = std::pair, std::weak_ptr>; class PathFindingDemo { public: PathFindingDemo(int width, int height); ~PathFindingDemo(); PathFindingDemo(const PathFindingDemo &m) = delete; PathFindingDemo(PathFindingDemo &&m) = delete; PathFindingDemo &operator=(const PathFindingDemo &) = delete; PathFindingDemo &operator=(PathFindingDemo &&) = delete; std::vector>& GetEntities() { return m_Entities; } const Map& GetMap() const { return m_Map; } const Camera& GetCamera() const { return m_Camera; } bool IsExitRequested() const { return m_ExitRequested; } void AddEntity(std::shared_ptr e); void CreateMap(); void UpdateWorld(); void HandleActions(const std::vector &actions); WorldPos GetRandomPosition() const; private: const std::vector& GetEntityCollisions(); bool m_ExitRequested = false; Map m_Map; Camera m_Camera; std::vector> m_Entities; std::unique_ptr m_PathFinder; std::vector> m_SelectedEntities; };