diff options
Diffstat (limited to 'src/openvic-simulation/history/Bookmark.hpp')
-rw-r--r-- | src/openvic-simulation/history/Bookmark.hpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/openvic-simulation/history/Bookmark.hpp b/src/openvic-simulation/history/Bookmark.hpp new file mode 100644 index 0000000..ec230ca --- /dev/null +++ b/src/openvic-simulation/history/Bookmark.hpp @@ -0,0 +1,53 @@ +#pragma once + +#include <cstdint> + +#include <openvic-dataloader/v2script/AbstractSyntaxTree.hpp> + +#include "openvic-simulation/types/IdentifierRegistry.hpp" + +namespace OpenVic { + struct BookmarkManager; + + struct Bookmark : HasIdentifier { + friend struct BookmarkManager; + + private: + const std::string name; + const std::string description; + const Date date; + const uint32_t initial_camera_x; + const uint32_t initial_camera_y; + + Bookmark( + std::string_view new_identifier, + std::string_view new_name, + std::string_view new_description, + Date new_date, + uint32_t new_initial_camera_x, + uint32_t new_initial_camera_y + ); + + public: + Bookmark(Bookmark&&) = default; + + std::string_view get_name() const; + std::string_view get_description() const; + Date const& get_date() const; + uint32_t get_initial_camera_x() const; + uint32_t get_initial_camera_y() const; + }; + + struct BookmarkManager { + private: + IdentifierRegistry<Bookmark> bookmarks; + + public: + BookmarkManager(); + + bool add_bookmark(std::string_view identifier, std::string_view name, std::string_view description, Date date, uint32_t initial_camera_x, uint32_t initial_camera_y); + IDENTIFIER_REGISTRY_ACCESSORS(bookmark); + + bool load_bookmark_file(ast::NodeCPtr root); + }; +}
\ No newline at end of file |