diff --git a/src/editor/editor.hpp b/src/editor/editor.hpp index c15dd124df..74c2d43f87 100644 --- a/src/editor/editor.hpp +++ b/src/editor/editor.hpp @@ -51,6 +51,7 @@ class Editor final : public Screen, { public: static bool is_active(); + inline EditorLayersWidget* get_layers_widget() const { return m_layers_widget; } private: static bool is_autosave_file(const std::string& filename) { diff --git a/src/editor/layers_widget.cpp b/src/editor/layers_widget.cpp index a7685fc661..ef5e1a49da 100644 --- a/src/editor/layers_widget.cpp +++ b/src/editor/layers_widget.cpp @@ -495,10 +495,14 @@ EditorLayersWidget::set_selected_tilemap(TileMap* tilemap) { TileMap* selected_tilemap = get_selected_tilemap(); if (selected_tilemap) + { selected_tilemap->m_editor_active = false; + selected_tilemap->set_alpha(0.5f); + } m_selected_tilemap = tilemap->get_uid(); tilemap->m_editor_active = true; + tilemap->set_alpha(1.0f); } Vector diff --git a/src/editor/object_menu.cpp b/src/editor/object_menu.cpp index 6d24c84083..9bbad82841 100644 --- a/src/editor/object_menu.cpp +++ b/src/editor/object_menu.cpp @@ -54,6 +54,20 @@ ObjectMenu::refresh() } } + TileMap* selected_tilemap = m_editor.get_layers_widget()->get_selected_tilemap(); + if (m_object != selected_tilemap) + { + const float current_alpha = static_cast(m_object)->get_alpha(); + if (current_alpha > 0.0f) + { + add_entry(MNID_HIDE_LAYER, _("Hide Layer")); + } + else + { + add_entry(MNID_HIDE_LAYER, _("Show Layer")); + } + } + if (!m_object->is_up_to_date()) { add_hl(); @@ -86,6 +100,25 @@ ObjectMenu::menu_action(MenuItem& item) refresh(); }); break; + + case MNID_HIDE_LAYER: + if (m_object) + { + TileMap* tilemap = static_cast(m_object); + const float current_alpha = static_cast(m_object)->get_alpha(); + if (current_alpha > 0.0f) + { + tilemap->set_alpha(0.0f); + } + else + { + tilemap->set_alpha(1.0f); + } + m_editor.m_reactivate_request = true; + refresh(); + } + MenuManager::instance().pop_menu(); + break; case MNID_PATCH_NOTES: { diff --git a/src/editor/object_menu.hpp b/src/editor/object_menu.hpp index b6d780edd5..0fbc073eb1 100644 --- a/src/editor/object_menu.hpp +++ b/src/editor/object_menu.hpp @@ -29,6 +29,7 @@ class ObjectMenu final : public Menu public: enum { MNID_UPDATE, + MNID_HIDE_LAYER, MNID_PATCH_NOTES, MNID_REMOVE, MNID_REMOVEFUNCTION,