class_name BuilderElement extends Node2D @export var element: Node2D var collision_shape: Shape2D func _ready(): var element_sprite: Sprite2D = element.get_node("Sprite2D") $Sprite2D.texture = element_sprite.texture $Sprite2D.region_enabled = element_sprite.region_enabled $Sprite2D.region_rect = element_sprite.region_rect $Sprite2D.scale = element_sprite.scale $Sprite2D.position = element_sprite.position var element_collision_shape = element.get_node("CollisionShape2D").duplicate() as CollisionShape2D $Area2D.add_child(element_collision_shape) collision_shape = element_collision_shape.shape func _draw(): draw_circle( Vector2.ZERO, 8 + element.attack_range, Color(1, 1, 1, 0.75), false, 1.0 ) if not can_build(): if collision_shape is RectangleShape2D: draw_rect(Rect2((collision_shape.size / 2) * -1, collision_shape.size), Color(1, 0, 0, 0.75)) func _process(_delta): #global_position = get_global_mouse_position().snapped(Game.map.tile_set.tile_size / 2) global_position = get_global_mouse_position().snapped(Game.map.tile_set.tile_size) func can_build(): if $Area2D.get_overlapping_areas().size() > 0: return false if $Area2D.get_overlapping_bodies().size() > 0: return false return true func _on_area_entered(_node) -> void: queue_redraw() func _on_area_exited(_node) -> void: queue_redraw()