mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-02-13 01:03:07 +00:00
Add user data for individual tiles
This commit is contained in:
parent
c7c79f9203
commit
7902465cf1
|
@ -31,6 +31,8 @@ class Tile:
|
||||||
var times_used := 1
|
var times_used := 1
|
||||||
## The relative probability of this tile appearing when drawing random tiles.
|
## The relative probability of this tile appearing when drawing random tiles.
|
||||||
var probability := 1.0
|
var probability := 1.0
|
||||||
|
## User defined data for each individual tile.
|
||||||
|
var user_data := ""
|
||||||
|
|
||||||
func _init(_image: Image) -> void:
|
func _init(_image: Image) -> void:
|
||||||
image = _image
|
image = _image
|
||||||
|
@ -41,12 +43,13 @@ class Tile:
|
||||||
return times_used <= 0
|
return times_used <= 0
|
||||||
|
|
||||||
func serialize() -> Dictionary:
|
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:
|
func deserialize(dict: Dictionary, skip_times_used := false) -> void:
|
||||||
if not skip_times_used:
|
if not skip_times_used:
|
||||||
times_used = dict.get("times_used", times_used)
|
times_used = dict.get("times_used", times_used)
|
||||||
probability = dict.get("probability", probability)
|
probability = dict.get("probability", probability)
|
||||||
|
user_data = dict.get("user_data", user_data)
|
||||||
|
|
||||||
|
|
||||||
func _init(_tile_size: Vector2i, _name := "", add_empty_tile := true) -> void:
|
func _init(_tile_size: Vector2i, _name := "", add_empty_tile := true) -> void:
|
||||||
|
|
|
@ -65,6 +65,7 @@ var tile_index_menu_popped := 0
|
||||||
@onready var tile_button_popup_menu: PopupMenu = $TileButtonPopupMenu
|
@onready var tile_button_popup_menu: PopupMenu = $TileButtonPopupMenu
|
||||||
@onready var tile_properties: AcceptDialog = $TileProperties
|
@onready var tile_properties: AcceptDialog = $TileProperties
|
||||||
@onready var tile_probability_slider: ValueSlider = %TileProbabilitySlider
|
@onready var tile_probability_slider: ValueSlider = %TileProbabilitySlider
|
||||||
|
@onready var tile_user_data_text_edit: TextEdit = %TileUserDataTextEdit
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
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:
|
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
|
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()
|
tile_properties.popup_centered()
|
||||||
elif index == 1: # Delete
|
elif index == 1: # Delete
|
||||||
if tile_index_menu_popped == 0:
|
if tile_index_menu_popped == 0:
|
||||||
return
|
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()
|
var undo_data := current_tileset.serialize_undo_data()
|
||||||
current_tileset.tiles.remove_at(tile_index_menu_popped)
|
current_tileset.tiles.remove_at(tile_index_menu_popped)
|
||||||
var redo_data := current_tileset.serialize_undo_data()
|
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:
|
func _on_tile_probability_slider_value_changed(value: float) -> void:
|
||||||
current_tileset.tiles[tile_index_menu_popped].probability = value
|
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
|
||||||
|
|
|
@ -387,6 +387,16 @@ stretch_margin_right = 3
|
||||||
stretch_margin_bottom = 3
|
stretch_margin_bottom = 3
|
||||||
script = ExtResource("10_wfr6s")
|
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="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]]
|
||||||
|
@ -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="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="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="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"]
|
||||||
|
|
Loading…
Reference in a new issue