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