From cce1f768e7399b838a2b865511915bdd576dbbf4 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 23 Oct 2022 17:31:31 +0200 Subject: a --- main/editor.hpp | 93 --------------------------------------------------------- 1 file changed, 93 deletions(-) delete mode 100644 main/editor.hpp (limited to 'main/editor.hpp') diff --git a/main/editor.hpp b/main/editor.hpp deleted file mode 100644 index 28ba153c..00000000 --- a/main/editor.hpp +++ /dev/null @@ -1,93 +0,0 @@ -#pragma once -#include "compat/defs.hpp" -#include "tile-atlas.hpp" -#include "global-coords.hpp" -#include "tile.hpp" - -#include -#include -#include -#include -#include -#include -#include - -namespace floormat { - -enum class editor_mode : unsigned char { - select, floor, walls, -}; - -struct world; - -struct tile_type final -{ - tile_type(editor_mode mode, Containers::StringView name); - std::shared_ptr maybe_atlas(Containers::StringView str); - std::shared_ptr atlas(Containers::StringView str); - auto cbegin() const { return _atlases.cbegin(); } - auto cend() const { return _atlases.cend(); } - auto begin() const { return _atlases.cbegin(); } - auto end() const { return _atlases.cend(); } - Containers::StringView name() const { return _name; } - editor_mode mode() const { return _mode; } - - void clear_selection(); - void select_tile(const std::shared_ptr& atlas, std::size_t variant); - void select_tile_permutation(const std::shared_ptr& atlas); - bool is_tile_selected(const std::shared_ptr& atlas, std::size_t variant) const; - bool is_permutation_selected(const std::shared_ptr& atlas) const; - bool is_atlas_selected(const std::shared_ptr& atlas) const; - tile_image get_selected(); - void place_tile(world& world, global_coords pos, tile_image& img); - -private: - enum selection_mode : std::uint8_t { - sel_none, sel_tile, sel_perm, - }; - enum rotation : std::uint8_t { - rot_N, rot_W, - }; - - std::string _name; - std::map> _atlases; - tile_image _selected_tile; - std::tuple, std::vector> _permutation; - selection_mode _selection_mode = sel_none; - editor_mode _mode; - rotation _rotation{}; - - void load_atlases(); - tile_image get_selected_perm(); -}; - -struct editor final -{ - [[nodiscard]] bool dirty() const { return _dirty; } - void set_dirty(bool value) { _dirty = value; } - [[nodiscard]] editor_mode mode() const { return _mode; } - void set_mode(editor_mode mode); - - tile_type& floor() { return _floor; } - const tile_type& floor() const { return _floor; } - - tile_type* current(); - const tile_type* current() const; - - void on_click(world& world, global_coords pos); - void on_mouse_move(world& world, const global_coords pos); - void on_release(); - - editor(); - editor(editor&&) noexcept = default; - editor& operator=(editor&&) noexcept = default; - fm_DECLARE_DELETED_COPY_ASSIGNMENT(editor); - -private: - tile_type _floor{editor_mode::floor, "floor"}; - std::optional _last_pos; - editor_mode _mode = editor_mode::select; - bool _dirty = false; -}; - -} // namespace floormat -- cgit v1.2.3