baba-is-auto
C++17 Baba Is You simulator
Loading...
Searching...
No Matches
Map.hpp
Go to the documentation of this file.
1// Copyright (c) 2020-2026 Chris Ohk
2
3// I am making my contributions/submissions to this project solely in our
4// personal capacity and am not conveying any rights to any intellectual
5// property of any third parties.
6
7#ifndef BABA_IS_AUTO_MAP_HPP
8#define BABA_IS_AUTO_MAP_HPP
9
12
13#include <string_view>
14#include <vector>
15
16namespace baba_is_auto
17{
19using Position = std::pair<std::size_t, std::size_t>;
20
26class Map
27{
28 public:
30 Map() = default;
31
35 Map(std::size_t width, std::size_t height);
36
38 void Reset();
39
42 std::size_t GetWidth() const;
43
46 std::size_t GetHeight() const;
47
51 void Load(std::string_view filename);
52
57 void AddObject(std::size_t x, std::size_t y, ObjectType type);
58
63 void RemoveObject(std::size_t x, std::size_t y, ObjectType type);
64
69 Object& At(std::size_t x, std::size_t y);
70
75 const Object& At(std::size_t x, std::size_t y) const;
76
80 std::vector<Position> GetPositions(ObjectType type) const;
81
82 private:
83 std::size_t m_width = 0;
84 std::size_t m_height = 0;
85
86 std::vector<Object> m_initObjects;
87 std::vector<Object> m_objects;
88};
89} // namespace baba_is_auto
90
91#endif
Map class.
Definition Map.hpp:27
void AddObject(std::size_t x, std::size_t y, ObjectType type)
void RemoveObject(std::size_t x, std::size_t y, ObjectType type)
Map()=default
Default constructor.
std::size_t GetHeight() const
void Reset()
Resets map data.
Object & At(std::size_t x, std::size_t y)
std::size_t GetWidth() const
const Object & At(std::size_t x, std::size_t y) const
Map(std::size_t width, std::size_t height)
std::vector< Position > GetPositions(ObjectType type) const
void Load(std::string_view filename)
Object class.
Definition Object.hpp:32
Definition IAgent.hpp:14
ObjectType
An enumerator for identifying the object.
Definition GameEnums.hpp:14
std::pair< std::size_t, std::size_t > Position
A zero-based (x, y) map position.
Definition Map.hpp:19