From 8d4e709f7e2390e06c3e412c20662e8bc21f0d0c Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Tue, 20 Aug 2024 17:00:49 +0200 Subject: initial commit --- BuilderElement.gd | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 BuilderElement.gd (limited to 'BuilderElement.gd') 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() -- cgit v1.2.3