mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-30 15:09:48 +00:00
Add a n options button in the tiles panel
This commit is contained in:
parent
c3277d8b01
commit
f9034f8e44
|
@ -3484,6 +3484,14 @@ msgstr ""
|
||||||
msgid "Tile size:"
|
msgid "Tile size:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/UI/TilesPanel.gd
|
||||||
|
msgid "Select a tile to place it on the canvas."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/UI/TilesPanel.gd
|
||||||
|
msgid "Modify tiles on the canvas."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/UI/TilesPanel.tscn
|
#: src/UI/TilesPanel.tscn
|
||||||
msgid "Draw tiles"
|
msgid "Draw tiles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3503,3 +3511,26 @@ msgstr ""
|
||||||
#: src/UI/TilesPanel.tscn
|
#: src/UI/TilesPanel.tscn
|
||||||
msgid "Flip tile vertically"
|
msgid "Flip tile vertically"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. Refers to manual mode, one of the three modes of tilemap layer pixel drawing.
|
||||||
|
#: src/UI/TilesPanel.tscn
|
||||||
|
msgid "Manual"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Refers to auto (automatic) mode, one of the three modes of tilemap layer pixel drawing.
|
||||||
|
#: src/UI/TilesPanel.tscn
|
||||||
|
msgid "Auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Refers to stack mode, one of the three modes of tilemap layer pixel drawing.
|
||||||
|
#: src/UI/TilesPanel.tscn
|
||||||
|
msgid "Stack"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/UI/TilesPanel.tscn
|
||||||
|
msgid "Tile button size:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/UI/TilesPanel.tscn
|
||||||
|
msgid "Show empty tile:"
|
||||||
|
msgstr ""
|
||||||
|
|
|
@ -41,16 +41,21 @@ var button_size := 36:
|
||||||
if button_size == value:
|
if button_size == value:
|
||||||
return
|
return
|
||||||
button_size = clampi(value, MIN_BUTTON_SIZE, MAX_BUTTON_SIZE)
|
button_size = clampi(value, MIN_BUTTON_SIZE, MAX_BUTTON_SIZE)
|
||||||
|
tile_size_slider.value = button_size
|
||||||
update_minimum_size()
|
update_minimum_size()
|
||||||
Global.config_cache.set_value("tileset_panel", "button_size", button_size)
|
Global.config_cache.set_value("tileset_panel", "button_size", button_size)
|
||||||
for button: Control in tile_button_container.get_children():
|
for button: Control in tile_button_container.get_children():
|
||||||
button.custom_minimum_size = Vector2(button_size, button_size)
|
button.custom_minimum_size = Vector2(button_size, button_size)
|
||||||
button.size = Vector2(button_size, button_size)
|
button.size = Vector2(button_size, button_size)
|
||||||
|
var show_empty_tile := true
|
||||||
|
|
||||||
@onready var place_tiles: Button = %PlaceTiles
|
@onready var place_tiles: Button = %PlaceTiles
|
||||||
@onready var transform_buttons_container: HFlowContainer = %TransformButtonsContainer
|
@onready var transform_buttons_container: HFlowContainer = %TransformButtonsContainer
|
||||||
@onready var tile_button_container: HFlowContainer = %TileButtonContainer
|
@onready var tile_button_container: HFlowContainer = %TileButtonContainer
|
||||||
@onready var mode_buttons_container: HFlowContainer = %ModeButtonsContainer
|
@onready var mode_buttons_container: HFlowContainer = %ModeButtonsContainer
|
||||||
|
@onready var option_button: Button = %OptionButton
|
||||||
|
@onready var options: Popup = $Options
|
||||||
|
@onready var tile_size_slider: ValueSlider = %TileSizeSlider
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
@ -59,6 +64,9 @@ func _ready() -> void:
|
||||||
for child: Button in transform_buttons_container.get_children():
|
for child: Button in transform_buttons_container.get_children():
|
||||||
Global.disable_button(child, true)
|
Global.disable_button(child, true)
|
||||||
update_tip()
|
update_tip()
|
||||||
|
tile_size_slider.min_value = MIN_BUTTON_SIZE
|
||||||
|
tile_size_slider.max_value = MAX_BUTTON_SIZE
|
||||||
|
tile_size_slider.value = button_size
|
||||||
|
|
||||||
|
|
||||||
func _gui_input(event: InputEvent) -> void:
|
func _gui_input(event: InputEvent) -> void:
|
||||||
|
@ -82,13 +90,13 @@ func set_tileset(tileset: TileSetCustom) -> void:
|
||||||
current_tileset.updated.connect(_update_tileset)
|
current_tileset.updated.connect(_update_tileset)
|
||||||
|
|
||||||
|
|
||||||
func update_tip():
|
func update_tip() -> void:
|
||||||
var tip = %Tip
|
var tip := %Tip
|
||||||
tip.get_parent().visible = true
|
tip.get_parent().visible = true
|
||||||
if placing_tiles:
|
if placing_tiles:
|
||||||
tip.text = "Select a tile to place it on the canvas."
|
tip.text = tr("Select a tile to place it on the canvas.")
|
||||||
else:
|
else:
|
||||||
tip.text = "Modify tiles on the canvas."
|
tip.text = tr("Modify tiles on the canvas.")
|
||||||
|
|
||||||
|
|
||||||
func _on_cel_switched() -> void:
|
func _on_cel_switched() -> void:
|
||||||
|
@ -142,6 +150,8 @@ func _create_tile_button(texture: Texture2D, index: int, button_group: ButtonGro
|
||||||
button.add_child(texture_rect)
|
button.add_child(texture_rect)
|
||||||
button.tooltip_text = str(index)
|
button.tooltip_text = str(index)
|
||||||
button.toggled.connect(_on_tile_button_toggled.bind(index))
|
button.toggled.connect(_on_tile_button_toggled.bind(index))
|
||||||
|
if index == 0 and not show_empty_tile:
|
||||||
|
button.visible = false
|
||||||
return button
|
return button
|
||||||
|
|
||||||
|
|
||||||
|
@ -219,3 +229,18 @@ func _on_rotate_pressed(clockwise: bool) -> void:
|
||||||
is_flipped_v = ROTATION_MATRIX[final_i * 3 + 1]
|
is_flipped_v = ROTATION_MATRIX[final_i * 3 + 1]
|
||||||
is_transposed = ROTATION_MATRIX[final_i * 3 + 2]
|
is_transposed = ROTATION_MATRIX[final_i * 3 + 2]
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
|
func _on_option_button_pressed() -> void:
|
||||||
|
var pos := Vector2i(option_button.global_position) - options.size
|
||||||
|
options.popup_on_parent(Rect2i(pos.x - 16, pos.y + 32, options.size.x, options.size.y))
|
||||||
|
|
||||||
|
|
||||||
|
func _on_tile_size_slider_value_changed(value: float) -> void:
|
||||||
|
button_size = value
|
||||||
|
|
||||||
|
|
||||||
|
func _on_show_empty_tile_toggled(toggled_on: bool) -> void:
|
||||||
|
show_empty_tile = toggled_on
|
||||||
|
if tile_button_container.get_child_count() > 0:
|
||||||
|
tile_button_container.get_child(0).visible = show_empty_tile
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=26 format=3 uid="uid://bfbragmmdwfbl"]
|
[gd_scene load_steps=28 format=3 uid="uid://bfbragmmdwfbl"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://src/UI/TilesPanel.gd" id="1_d2oc5"]
|
[ext_resource type="Script" path="res://src/UI/TilesPanel.gd" id="1_d2oc5"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d4by47alul2qw" path="res://assets/graphics/tiles_panel/tiles_draw.png" id="2_h0p0x"]
|
[ext_resource type="Texture2D" uid="uid://d4by47alul2qw" path="res://assets/graphics/tiles_panel/tiles_draw.png" id="2_h0p0x"]
|
||||||
|
@ -8,6 +8,8 @@
|
||||||
[ext_resource type="Texture2D" uid="uid://dfq0wpxsd51co" path="res://assets/graphics/tiles_panel/tiles_manual.png" id="6_gwj5u"]
|
[ext_resource type="Texture2D" uid="uid://dfq0wpxsd51co" path="res://assets/graphics/tiles_panel/tiles_manual.png" id="6_gwj5u"]
|
||||||
[ext_resource type="Texture2D" uid="uid://7m4hln3mo2e5" path="res://assets/graphics/tiles_panel/tiles_auto.png" id="7_afsgi"]
|
[ext_resource type="Texture2D" uid="uid://7m4hln3mo2e5" path="res://assets/graphics/tiles_panel/tiles_auto.png" id="7_afsgi"]
|
||||||
[ext_resource type="Texture2D" uid="uid://uo1ikty26del" path="res://assets/graphics/tiles_panel/tiles_stack.png" id="8_yoaya"]
|
[ext_resource type="Texture2D" uid="uid://uo1ikty26del" path="res://assets/graphics/tiles_panel/tiles_stack.png" id="8_yoaya"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dwoilatxfh1s7" path="res://assets/graphics/misc/options.png" id="9_macrc"]
|
||||||
|
[ext_resource type="Script" path="res://src/UI/Nodes/Sliders/ValueSlider.gd" id="10_wfr6s"]
|
||||||
|
|
||||||
[sub_resource type="InputEventAction" id="InputEventAction_klv67"]
|
[sub_resource type="InputEventAction" id="InputEventAction_klv67"]
|
||||||
action = &"toggle_draw_tiles_mode"
|
action = &"toggle_draw_tiles_mode"
|
||||||
|
@ -84,7 +86,7 @@ unique_name_in_owner = true
|
||||||
custom_minimum_size = Vector2(25, 25)
|
custom_minimum_size = Vector2(25, 25)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 0
|
size_flags_vertical = 0
|
||||||
tooltip_text = "Draw tiles mode"
|
tooltip_text = "Draw tiles"
|
||||||
mouse_default_cursor_shape = 2
|
mouse_default_cursor_shape = 2
|
||||||
toggle_mode = true
|
toggle_mode = true
|
||||||
shortcut = SubResource("Shortcut_6ebuw")
|
shortcut = SubResource("Shortcut_6ebuw")
|
||||||
|
@ -244,6 +246,24 @@ texture = ExtResource("8_yoaya")
|
||||||
expand_mode = 1
|
expand_mode = 1
|
||||||
stretch_mode = 3
|
stretch_mode = 3
|
||||||
|
|
||||||
|
[node name="OptionButton" type="Button" parent="VBoxContainer/MarginContainer/VBoxContainer/Buttons" groups=["UIButtons"]]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
custom_minimum_size = Vector2(24, 24)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 4
|
||||||
|
mouse_default_cursor_shape = 2
|
||||||
|
|
||||||
|
[node name="TextureRect" type="TextureRect" parent="VBoxContainer/MarginContainer/VBoxContainer/Buttons/OptionButton"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
texture = ExtResource("9_macrc")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 3
|
||||||
|
|
||||||
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/MarginContainer/VBoxContainer"]
|
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/MarginContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
|
@ -269,6 +289,59 @@ size_flags_vertical = 3
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Options" type="Popup" parent="."]
|
||||||
|
position = Vector2i(0, 36)
|
||||||
|
size = Vector2i(210, 100)
|
||||||
|
unresizable = false
|
||||||
|
borderless = false
|
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="Options"]
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
|
[node name="ScrollContainer" type="ScrollContainer" parent="Options/MarginContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="GridContainer" type="GridContainer" parent="Options/MarginContainer/ScrollContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
columns = 2
|
||||||
|
|
||||||
|
[node name="TileSizeLabel" type="Label" parent="Options/MarginContainer/ScrollContainer/GridContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
text = "Tile button size:"
|
||||||
|
|
||||||
|
[node name="TileSizeSlider" type="TextureProgressBar" parent="Options/MarginContainer/ScrollContainer/GridContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
focus_mode = 2
|
||||||
|
mouse_default_cursor_shape = 2
|
||||||
|
theme_type_variation = &"ValueSlider"
|
||||||
|
min_value = 36.0
|
||||||
|
max_value = 144.0
|
||||||
|
value = 36.0
|
||||||
|
nine_patch_stretch = true
|
||||||
|
stretch_margin_left = 3
|
||||||
|
stretch_margin_top = 3
|
||||||
|
stretch_margin_right = 3
|
||||||
|
stretch_margin_bottom = 3
|
||||||
|
script = ExtResource("10_wfr6s")
|
||||||
|
|
||||||
|
[node name="ShowEmptyTileLabel" type="Label" parent="Options/MarginContainer/ScrollContainer/GridContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Show empty tile:"
|
||||||
|
|
||||||
|
[node name="ShowEmptyTile" type="CheckBox" parent="Options/MarginContainer/ScrollContainer/GridContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
mouse_default_cursor_shape = 2
|
||||||
|
button_pressed = true
|
||||||
|
text = "On"
|
||||||
|
|
||||||
[connection signal="toggled" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/PlaceTiles" to="." method="_on_place_tiles_toggled"]
|
[connection signal="toggled" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/PlaceTiles" to="." method="_on_place_tiles_toggled"]
|
||||||
[connection signal="pressed" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/TransformButtonsContainer/RotateLeftButton" to="." method="_on_rotate_pressed" binds= [false]]
|
[connection signal="pressed" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/TransformButtonsContainer/RotateLeftButton" to="." method="_on_rotate_pressed" binds= [false]]
|
||||||
[connection signal="pressed" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/TransformButtonsContainer/RotateRightButton" to="." method="_on_rotate_pressed" binds= [true]]
|
[connection signal="pressed" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/TransformButtonsContainer/RotateRightButton" to="." method="_on_rotate_pressed" binds= [true]]
|
||||||
|
@ -277,3 +350,6 @@ layout_mode = 2
|
||||||
[connection signal="toggled" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/ModeButtonsContainer/Manual" to="." method="_on_manual_toggled"]
|
[connection signal="toggled" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/ModeButtonsContainer/Manual" to="." method="_on_manual_toggled"]
|
||||||
[connection signal="toggled" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/ModeButtonsContainer/Auto" to="." method="_on_auto_toggled"]
|
[connection signal="toggled" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/ModeButtonsContainer/Auto" to="." method="_on_auto_toggled"]
|
||||||
[connection signal="toggled" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/ModeButtonsContainer/Stack" to="." method="_on_stack_toggled"]
|
[connection signal="toggled" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/ModeButtonsContainer/Stack" to="." method="_on_stack_toggled"]
|
||||||
|
[connection signal="pressed" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/OptionButton" to="." method="_on_option_button_pressed"]
|
||||||
|
[connection signal="value_changed" from="Options/MarginContainer/ScrollContainer/GridContainer/TileSizeSlider" to="." method="_on_tile_size_slider_value_changed"]
|
||||||
|
[connection signal="toggled" from="Options/MarginContainer/ScrollContainer/GridContainer/ShowEmptyTile" to="." method="_on_show_empty_tile_toggled"]
|
||||||
|
|
Loading…
Reference in a new issue