- Add RectangleShape2D to Character and InteractiveObject collision areas - Fix HUD button signal connections in _ready() - Fix character_placed signal emitting global_position - Extract DEFAULT_DRAG_RADIUS constant in DragDropComponent - Type Variant on JSON parsed variable in SaveManager - Extract music symbol constants in HUD - Refactor duplicated drag input code in InputManager Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
29 lines
836 B
GDScript
29 lines
836 B
GDScript
## Character — base class for all playable figures (bunny, cat, etc.).
|
|
class_name Character extends Node2D
|
|
|
|
signal character_picked_up(character: Character)
|
|
signal character_placed(character: Character, position: Vector2)
|
|
|
|
@export var character_id: String = ""
|
|
@export var display_name: String = ""
|
|
|
|
var _is_held: bool = false
|
|
|
|
|
|
func _ready() -> void:
|
|
var drag: DragDropComponent = get_node_or_null("DragDropComponent") as DragDropComponent
|
|
if drag != null:
|
|
drag.drag_picked_up.connect(_on_drag_picked_up)
|
|
drag.drag_released.connect(_on_drag_released)
|
|
|
|
|
|
func _on_drag_picked_up(_pos: Vector2) -> void:
|
|
_is_held = true
|
|
character_picked_up.emit(self)
|
|
|
|
|
|
func _on_drag_released(pos: Vector2) -> void:
|
|
_is_held = false
|
|
GameState.set_character_position(character_id, global_position)
|
|
character_placed.emit(self, global_position)
|