diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2022-11-27 17:27:56 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2022-11-27 17:27:56 +0100 |
commit | beb6685f605b89ce4b2dd99f87b9319e4f7f4d94 (patch) | |
tree | b4db6babfa2a7c5518db59e1678ef4e434ae0d70 /editor/scenery-editor.cpp | |
parent | d2fcaad5425acb4a50138e793e3dcecc6600e4d3 (diff) |
more WIP
Diffstat (limited to 'editor/scenery-editor.cpp')
-rw-r--r-- | editor/scenery-editor.cpp | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/editor/scenery-editor.cpp b/editor/scenery-editor.cpp index 482b2131..c8f9f910 100644 --- a/editor/scenery-editor.cpp +++ b/editor/scenery-editor.cpp @@ -8,8 +8,6 @@ namespace floormat { using rotation_ = rotation; using rotation_t = std::underlying_type_t<rotation_>; -scenery_editor::pair::operator bool() const { return atlas != nullptr; } - scenery_editor::scenery_editor() noexcept { load_atlases(); @@ -17,45 +15,45 @@ scenery_editor::scenery_editor() noexcept void scenery_editor::set_rotation(rotation_ r) { - _selected.r = r; + _selected.frame.r = r; } rotation_ scenery_editor::rotation() const { - return _selected.r; + return _selected.frame.r; } void scenery_editor::next_rotation() { - auto r_1 = (rotation_t)_selected.r + 1; + // todo + auto r_1 = (rotation_t)_selected.frame.r + 1; auto rot = (rotation_)r_1; if (rot >= rotation_COUNT) rot = (rotation_)0; - _selected.r = rot; + _selected.frame.r = rot; } void scenery_editor::prev_rotation() { - if (_selected.r == (rotation_)0) - _selected.r = (rotation_)((rotation_t)rotation_COUNT - 1); + if (_selected.frame.r == (rotation_)0) + _selected.frame.r = (rotation_)((rotation_t)rotation_COUNT - 1); else - _selected.r = (rotation_)((rotation_t)_selected.r - 1); + _selected.frame.r = (rotation_)((rotation_t)_selected.frame.r - 1); } //return atlas == _selected.atlas && r == _selected.s.r && frame == _selected.s.frame; -void scenery_editor::select_tile(const std::shared_ptr<anim_atlas>& atlas, rotation_ r, frame_t frame) +void scenery_editor::select_tile(const scenery_proto& proto) { - fm_assert(frame < atlas->group(r).frames.size()); - _selected = { atlas, r, frame }; + _selected = proto; } void scenery_editor::clear_selection() { - _selected = { nullptr, rotation_COUNT, scenery::NO_FRAME }; + _selected = {}; } -auto scenery_editor::get_selected() -> pair +const scenery_proto& scenery_editor::get_selected() { return _selected; } @@ -65,9 +63,9 @@ bool scenery_editor::is_atlas_selected(const std::shared_ptr<anim_atlas>& atlas) return _selected.atlas == atlas; } -bool scenery_editor::is_item_selected(const std::shared_ptr<anim_atlas>& atlas, rotation_ r, frame_t frame) const +bool scenery_editor::is_item_selected(const scenery_proto& proto) const { - return is_atlas_selected(atlas) && _selected.r == r && _selected.frame == frame; + return _selected == proto; } void scenery_editor::load_atlases() |