#pragma once #include "engine/bounds.hpp" #include "engine/vector2.hpp" #include "random_generator.hpp" #include #include /** * Application options. */ class AppOptions { public: AppOptions() = default; [[nodiscard]] std::shared_ptr maze_bounds() const; void maze_bounds(std::shared_ptr maze_bounds); [[nodiscard]] std::shared_ptr start_coords() const; void start_coords(std::shared_ptr start_coords); [[nodiscard]] std::string_view wall() const; void wall(std::string_view wall); [[nodiscard]] std::shared_ptr random_gen() const; void random_gen(std::shared_ptr random_gen); private: std::shared_ptr _maze_bounds = nullptr; std::shared_ptr _start_coords = nullptr; std::string_view _wall; std::shared_ptr _random_gen = nullptr; };