diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2024-08-20 17:00:49 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2024-08-20 17:00:49 +0200 |
commit | 8d4e709f7e2390e06c3e412c20662e8bc21f0d0c (patch) | |
tree | aec2214a1cc91524e78a7707c6c03612b6d346ba /BuilderElement.gd |
initial commit
Diffstat (limited to 'BuilderElement.gd')
-rw-r--r-- | BuilderElement.gd | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/BuilderElement.gd b/BuilderElement.gd new file mode 100644 index 0000000..4232649 --- /dev/null +++ b/BuilderElement.gd @@ -0,0 +1,55 @@ +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(Vector2(16, 16)) + + +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() |