ChessBuilder/Systems/PieceContainer.gd

49 lines
No EOL
1.3 KiB
GDScript

class_name PieceContainer extends Button
var piece: Pawn = null
@onready var overlays: Node = $Overlays
@onready var effects: Node = $Effects
func _init() -> void:
# Create containers for different types of children
var overlays_node = Node.new()
overlays_node.name = "Overlays"
add_child(overlays_node)
var effects_node = Node.new()
effects_node.name = "Effects"
add_child(effects_node)
func set_piece(new_piece: Pawn) -> void:
remove_piece() # Clean up any existing piece
piece = new_piece
if new_piece != null:
add_child(new_piece)
new_piece.position = Vector2(25, 25)
func get_piece() -> Pawn:
return piece
func remove_piece(keep_piece: bool = false) -> Pawn:
var old_piece = piece
if piece != null:
remove_child(piece)
if !keep_piece:
piece.queue_free()
old_piece = null
piece = null
return old_piece
func add_overlay(overlay: Node) -> void:
overlays.add_child(overlay)
func remove_overlay(overlay_name: String) -> void:
var overlay = overlays.get_node_or_null(overlay_name)
if overlay:
overlay.queue_free()
func get_overlay(overlay_name: String) -> Node:
return overlays.get_node_or_null(overlay_name)
func has_piece() -> bool:
return piece != null