From 7902465cf1f08c12f879a7361d08e4b39226e654 Mon Sep 17 00:00:00 2001 From: Emmanouil Papadeas <35376950+OverloadedOrama@users.noreply.github.com> Date: Mon, 10 Feb 2025 03:03:29 +0200 Subject: [PATCH] Add user data for individual tiles --- src/Classes/TileSetCustom.gd | 5 ++++- src/UI/TilesPanel.gd | 11 +++++++++-- src/UI/TilesPanel.tscn | 11 +++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/Classes/TileSetCustom.gd b/src/Classes/TileSetCustom.gd index a59a3c79c..814fe9ed1 100644 --- a/src/Classes/TileSetCustom.gd +++ b/src/Classes/TileSetCustom.gd @@ -31,6 +31,8 @@ class Tile: var times_used := 1 ## The relative probability of this tile appearing when drawing random tiles. var probability := 1.0 + ## User defined data for each individual tile. + var user_data := "" func _init(_image: Image) -> void: image = _image @@ -41,12 +43,13 @@ class Tile: return times_used <= 0 func serialize() -> Dictionary: - return {"times_used": times_used, "probability": probability} + return {"times_used": times_used, "probability": probability, "user_data": user_data} func deserialize(dict: Dictionary, skip_times_used := false) -> void: if not skip_times_used: times_used = dict.get("times_used", times_used) probability = dict.get("probability", probability) + user_data = dict.get("user_data", user_data) func _init(_tile_size: Vector2i, _name := "", add_empty_tile := true) -> void: diff --git a/src/UI/TilesPanel.gd b/src/UI/TilesPanel.gd index dfed4dfc9..2b5bca80d 100644 --- a/src/UI/TilesPanel.gd +++ b/src/UI/TilesPanel.gd @@ -65,6 +65,7 @@ var tile_index_menu_popped := 0 @onready var tile_button_popup_menu: PopupMenu = $TileButtonPopupMenu @onready var tile_properties: AcceptDialog = $TileProperties @onready var tile_probability_slider: ValueSlider = %TileProbabilitySlider +@onready var tile_user_data_text_edit: TextEdit = %TileUserDataTextEdit func _ready() -> void: @@ -281,13 +282,15 @@ func _on_show_empty_tile_toggled(toggled_on: bool) -> void: func _on_tile_button_popup_menu_index_pressed(index: int) -> void: + var selected_tile := current_tileset.tiles[tile_index_menu_popped] if index == 0: # Properties - tile_probability_slider.value = current_tileset.tiles[tile_index_menu_popped].probability + tile_probability_slider.value = selected_tile.probability + tile_user_data_text_edit.text = selected_tile.user_data tile_properties.popup_centered() elif index == 1: # Delete if tile_index_menu_popped == 0: return - if current_tileset.tiles[tile_index_menu_popped].can_be_removed(): + if selected_tile.can_be_removed(): var undo_data := current_tileset.serialize_undo_data() current_tileset.tiles.remove_at(tile_index_menu_popped) var redo_data := current_tileset.serialize_undo_data() @@ -306,3 +309,7 @@ func _on_tile_button_popup_menu_index_pressed(index: int) -> void: func _on_tile_probability_slider_value_changed(value: float) -> void: current_tileset.tiles[tile_index_menu_popped].probability = value + + +func _on_tile_user_data_text_edit_text_changed() -> void: + current_tileset.tiles[tile_index_menu_popped].user_data = tile_user_data_text_edit.text diff --git a/src/UI/TilesPanel.tscn b/src/UI/TilesPanel.tscn index 1ea9b8f40..6aa63dc4e 100644 --- a/src/UI/TilesPanel.tscn +++ b/src/UI/TilesPanel.tscn @@ -387,6 +387,16 @@ stretch_margin_right = 3 stretch_margin_bottom = 3 script = ExtResource("10_wfr6s") +[node name="TileUserDataLabel" type="Label" parent="TileProperties/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "User data:" + +[node name="TileUserDataTextEdit" type="TextEdit" parent="TileProperties/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +scroll_fit_content_height = true + [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/RotateRightButton" to="." method="_on_rotate_pressed" binds= [true]] @@ -400,3 +410,4 @@ script = ExtResource("10_wfr6s") [connection signal="toggled" from="Options/MarginContainer/ScrollContainer/GridContainer/ShowEmptyTile" to="." method="_on_show_empty_tile_toggled"] [connection signal="index_pressed" from="TileButtonPopupMenu" to="." method="_on_tile_button_popup_menu_index_pressed"] [connection signal="value_changed" from="TileProperties/GridContainer/TileProbabilitySlider" to="." method="_on_tile_probability_slider_value_changed"] +[connection signal="text_changed" from="TileProperties/GridContainer/TileUserDataTextEdit" to="." method="_on_tile_user_data_text_edit_text_changed"]