aboutsummaryrefslogtreecommitdiff
path: root/src/app/options.hpp
blob: 0023283ebf05b56a6bbac2f6d02ab2036b28ab37 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#pragma once

#include "engine/bounds.hpp"
#include "engine/vector2.hpp"
#include "random_generator.hpp"

#include <memory>
#include <string_view>

/**
 * Application options.
 */
class AppOptions
{
public:
	AppOptions() = default;

	[[nodiscard]] std::shared_ptr<Bounds> maze_bounds() const;
	void maze_bounds(std::shared_ptr<Bounds> maze_bounds);

	[[nodiscard]] std::shared_ptr<Vector2> start_coords() const;
	void start_coords(std::shared_ptr<Vector2> start_coords);

	[[nodiscard]] std::string_view wall() const;
	void wall(std::string_view wall);

	[[nodiscard]] std::shared_ptr<RandomNumberGenerator> random_gen() const;
	void random_gen(std::shared_ptr<RandomNumberGenerator> random_gen);

private:
	std::shared_ptr<Bounds> _maze_bounds = nullptr;

	std::shared_ptr<Vector2> _start_coords = nullptr;

	std::string_view _wall;

	std::shared_ptr<RandomNumberGenerator> _random_gen = nullptr;
};