summaryrefslogtreecommitdiff
path: root/BuilderElement.gd
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2024-08-20 17:00:49 +0200
committerDaniel Weipert <git@mail.dweipert.de>2024-08-20 17:00:49 +0200
commit8d4e709f7e2390e06c3e412c20662e8bc21f0d0c (patch)
treeaec2214a1cc91524e78a7707c6c03612b6d346ba /BuilderElement.gd
initial commit
Diffstat (limited to 'BuilderElement.gd')
-rw-r--r--BuilderElement.gd55
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()