From a5a8bf1fe5a16f26a75e09c53566ae2a3d02151e Mon Sep 17 00:00:00 2001 From: OverloadedOrama <35376950+OverloadedOrama@users.noreply.github.com> Date: Thu, 16 Jul 2020 05:05:40 +0300 Subject: [PATCH] Turn Symmetry Guides visibility on and off if mirroring is enabled Also fixed issue with "Show Guides" view menu option and having multiple projects with guides. Only think remaining is to make the Symmetry Guides look different than regular guides. Closes #133. --- CHANGELOG.md | 1 + src/Autoload/Global.gd | 2 ++ src/Classes/Project.gd | 7 ++++++- src/Tools/Base.gd | 10 ++++++++++ src/UI/Rulers/SymmetryGuide.gd | 1 + src/UI/TopMenuContainer.gd | 7 ++++++- 6 files changed, 26 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26a1d31..c7c1ece 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ Darshan Phaldesai (luiq54), Igor Santarek (jegor377), rob-a-bolton, Kinwailo - You can now drag & drop files into the program while it's running to open them. You can open .pxo files, image files and palette (json and gpl) files this way. - You can now draw on the tiling mode previews! ([#65](https://github.com/Orama-Interactive/Pixelorama/issues/65)) - Added Resize Canvas option to Image menu. +- Added Symmetry Guides. They let you change the axis of symmetry for mirroring. ([#133](https://github.com/Orama-Interactive/Pixelorama/issues/133)) - Palettes can now be created from the colors of the selected sprite. - You can now preview how the frames of the spritesheet you are importing will look. - You can now import image files as layers. Their size will be cropped to the project's size. diff --git a/src/Autoload/Global.gd b/src/Autoload/Global.gd index 65076ed..c93e65f 100644 --- a/src/Autoload/Global.gd +++ b/src/Autoload/Global.gd @@ -42,6 +42,8 @@ var right_cursor_tool_texture := ImageTexture.new() var image_clipboard : Image var play_only_tags := true +var show_x_symmetry_axis := false +var show_y_symmetry_axis := false # Preferences var theme_type : int = Theme_Types.DARK diff --git a/src/Classes/Project.gd b/src/Classes/Project.gd index 90c8533..4cee860 100644 --- a/src/Classes/Project.gd +++ b/src/Classes/Project.gd @@ -126,7 +126,12 @@ func change_project() -> void: for guide in Global.canvas.get_children(): if guide is Guide: if guide in guides: - guide.visible = true + guide.visible = Global.show_guides + if guide is SymmetryGuide: + if guide.type == Guide.Types.HORIZONTAL: + guide.visible = Global.show_x_symmetry_axis and Global.show_guides + else: + guide.visible = Global.show_y_symmetry_axis and Global.show_guides else: guide.visible = false diff --git a/src/Tools/Base.gd b/src/Tools/Base.gd index b2939db..f281dc1 100644 --- a/src/Tools/Base.gd +++ b/src/Tools/Base.gd @@ -27,11 +27,21 @@ func _on_PixelPerfect_toggled(button_pressed : bool): func _on_Horizontal_toggled(button_pressed : bool): tool_slot.horizontal_mirror = button_pressed tool_slot.save_config() + Global.show_y_symmetry_axis = button_pressed + # If the button is not pressed but another button is, keep the symmetry guide visible + if !button_pressed and (Tools._slots[BUTTON_LEFT].horizontal_mirror or Tools._slots[BUTTON_RIGHT].horizontal_mirror): + Global.show_y_symmetry_axis = true + Global.current_project.y_symmetry_axis.visible = Global.show_y_symmetry_axis and Global.show_guides func _on_Vertical_toggled(button_pressed : bool): tool_slot.vertical_mirror = button_pressed tool_slot.save_config() + Global.show_x_symmetry_axis = button_pressed + # If the button is not pressed but another button is, keep the symmetry guide visible + if !button_pressed and (Tools._slots[BUTTON_LEFT].vertical_mirror or Tools._slots[BUTTON_RIGHT].vertical_mirror): + Global.show_x_symmetry_axis = true + Global.current_project.x_symmetry_axis.visible = Global.show_x_symmetry_axis and Global.show_guides func save_config() -> void: diff --git a/src/UI/Rulers/SymmetryGuide.gd b/src/UI/Rulers/SymmetryGuide.gd index 7f9301c..0e08794 100644 --- a/src/UI/Rulers/SymmetryGuide.gd +++ b/src/UI/Rulers/SymmetryGuide.gd @@ -4,6 +4,7 @@ class_name SymmetryGuide extends Guide func _ready() -> void: ._ready() has_focus = false + visible = false func _input(_event : InputEvent) -> void: diff --git a/src/UI/TopMenuContainer.gd b/src/UI/TopMenuContainer.gd index 8352e9e..8482d80 100644 --- a/src/UI/TopMenuContainer.gd +++ b/src/UI/TopMenuContainer.gd @@ -260,8 +260,13 @@ func toggle_show_guides() -> void: Global.show_guides = !Global.show_guides view_menu.set_item_checked(3, Global.show_guides) for guide in Global.canvas.get_children(): - if guide is Guide: + if guide is Guide and guide in Global.current_project.guides: guide.visible = Global.show_guides + if guide is SymmetryGuide: + if guide.type == Guide.Types.HORIZONTAL: + guide.visible = Global.show_x_symmetry_axis and Global.show_guides + else: + guide.visible = Global.show_y_symmetry_axis and Global.show_guides func toggle_show_anim_timeline() -> void: