1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-01-31 15:39:49 +00:00

Tileset panel UI improvements

This commit is contained in:
Emmanouil Papadeas 2024-11-24 19:41:16 +02:00
parent 3f26e859dc
commit 65895374ab
3 changed files with 28 additions and 8 deletions

View file

@ -22,7 +22,6 @@ func update_texture() -> void:
# Prevent from drawing on empty image portions. # Prevent from drawing on empty image portions.
if index == 0 and tileset.tiles.size() > 1: if index == 0 and tileset.tiles.size() > 1:
var coords := get_tile_coords(i) var coords := get_tile_coords(i)
var rect := Rect2i(coords, tileset.tile_size)
var current_tile := tileset.tiles[index] var current_tile := tileset.tiles[index]
var tile_size := current_tile.image.get_size() var tile_size := current_tile.image.get_size()
image.blit_rect(current_tile.image, Rect2i(Vector2i.ZERO, tile_size), coords) image.blit_rect(current_tile.image, Rect2i(Vector2i.ZERO, tile_size), coords)

View file

@ -5,7 +5,9 @@ enum TileEditingMode { MANUAL, AUTO, STACK }
const TRANSPARENT_CHECKER := preload("res://src/UI/Nodes/TransparentChecker.tscn") const TRANSPARENT_CHECKER := preload("res://src/UI/Nodes/TransparentChecker.tscn")
static var placing_tiles := false
static var tile_editing_mode := TileEditingMode.AUTO static var tile_editing_mode := TileEditingMode.AUTO
static var selected_tile_index := 0
var current_tileset: TileSetCustom var current_tileset: TileSetCustom
@onready var h_flow_container: HFlowContainer = $VBoxContainer/ScrollContainer/HFlowContainer @onready var h_flow_container: HFlowContainer = $VBoxContainer/ScrollContainer/HFlowContainer
@ -34,14 +36,22 @@ func _update_tileset(cel: BaseCel) -> void:
if tilemap_cel != Global.current_project.get_current_cel(): if tilemap_cel != Global.current_project.get_current_cel():
tilemap_cel.tileset.updated.disconnect(_update_tileset) tilemap_cel.tileset.updated.disconnect(_update_tileset)
var tileset := tilemap_cel.tileset var tileset := tilemap_cel.tileset
var button_group := ButtonGroup.new()
if selected_tile_index >= tileset.tiles.size():
selected_tile_index = 0
for i in tileset.tiles.size(): for i in tileset.tiles.size():
var tile = tileset.tiles[i] var tile := tileset.tiles[i]
var button := _create_tile_button(ImageTexture.create_from_image(tile.image), i) var texture := ImageTexture.create_from_image(tile.image)
var button := _create_tile_button(texture, i, button_group)
if i == selected_tile_index:
button.button_pressed = true
h_flow_container.add_child(button) h_flow_container.add_child(button)
func _create_tile_button(texture: Texture2D, index: int) -> Button: func _create_tile_button(texture: Texture2D, index: int, button_group: ButtonGroup) -> Button:
var button := Button.new() var button := Button.new()
button.button_group = button_group
button.toggle_mode = true
button.custom_minimum_size = Vector2i(36, 36) button.custom_minimum_size = Vector2i(36, 36)
button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND
var texture_rect := TextureRect.new() var texture_rect := TextureRect.new()
@ -54,18 +64,19 @@ func _create_tile_button(texture: Texture2D, index: int) -> Button:
texture_rect.set_anchor_and_offset(SIDE_BOTTOM, 1, -6) texture_rect.set_anchor_and_offset(SIDE_BOTTOM, 1, -6)
texture_rect.grow_horizontal = Control.GROW_DIRECTION_BOTH texture_rect.grow_horizontal = Control.GROW_DIRECTION_BOTH
texture_rect.grow_vertical = Control.GROW_DIRECTION_BOTH texture_rect.grow_vertical = Control.GROW_DIRECTION_BOTH
var transparent_checker := TRANSPARENT_CHECKER.instantiate() var transparent_checker := TRANSPARENT_CHECKER.instantiate() as ColorRect
transparent_checker.set_anchors_preset(Control.PRESET_FULL_RECT) transparent_checker.set_anchors_preset(Control.PRESET_FULL_RECT)
transparent_checker.show_behind_parent = true transparent_checker.show_behind_parent = true
texture_rect.add_child(transparent_checker) texture_rect.add_child(transparent_checker)
button.add_child(texture_rect) button.add_child(texture_rect)
button.tooltip_text = str(index) button.tooltip_text = str(index)
button.pressed.connect(_on_tile_button_pressed.bind(index)) button.toggled.connect(_on_tile_button_toggled.bind(index))
return button return button
func _on_tile_button_pressed(index: int) -> void: func _on_tile_button_toggled(toggled_on: bool, index: int) -> void:
print(index) if toggled_on:
selected_tile_index = index
func _clear_tile_buttons() -> void: func _clear_tile_buttons() -> void:
@ -73,6 +84,10 @@ func _clear_tile_buttons() -> void:
child.queue_free() child.queue_free()
func _on_place_tiles_toggled(toggled_on: bool) -> void:
placing_tiles = toggled_on
func _on_manual_toggled(toggled_on: bool) -> void: func _on_manual_toggled(toggled_on: bool) -> void:
if toggled_on: if toggled_on:
tile_editing_mode = TileEditingMode.MANUAL tile_editing_mode = TileEditingMode.MANUAL

View file

@ -15,6 +15,11 @@ script = ExtResource("1_d2oc5")
[node name="VBoxContainer" type="VBoxContainer" parent="."] [node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 2 layout_mode = 2
[node name="PlaceTiles" type="CheckBox" parent="VBoxContainer"]
layout_mode = 2
mouse_default_cursor_shape = 2
text = "Place tiles"
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2 layout_mode = 2
@ -46,6 +51,7 @@ layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
[connection signal="toggled" from="VBoxContainer/PlaceTiles" to="." method="_on_place_tiles_toggled"]
[connection signal="toggled" from="VBoxContainer/HBoxContainer/Manual" to="." method="_on_manual_toggled"] [connection signal="toggled" from="VBoxContainer/HBoxContainer/Manual" to="." method="_on_manual_toggled"]
[connection signal="toggled" from="VBoxContainer/HBoxContainer/Auto" to="." method="_on_auto_toggled"] [connection signal="toggled" from="VBoxContainer/HBoxContainer/Auto" to="." method="_on_auto_toggled"]
[connection signal="toggled" from="VBoxContainer/HBoxContainer/Stack" to="." method="_on_stack_toggled"] [connection signal="toggled" from="VBoxContainer/HBoxContainer/Stack" to="." method="_on_stack_toggled"]