summaryrefslogtreecommitdiff
path: root/Objects/BuilderObject.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/BuilderObject.gd')
-rw-r--r--Objects/BuilderObject.gd50
1 files changed, 50 insertions, 0 deletions
diff --git a/Objects/BuilderObject.gd b/Objects/BuilderObject.gd
new file mode 100644
index 0000000..9131120
--- /dev/null
+++ b/Objects/BuilderObject.gd
@@ -0,0 +1,50 @@
+class_name BuilderObject
+extends Node2D
+
+
+signal collided
+
+var is_colliding = false
+var is_dragged = false
+
+var mouse_offset = Vector2(0,0)
+var last_position = Vector2(0,0)
+
+
+func _process(_delta):
+ if $Area2D.get_overlapping_areas().size() > 0:
+ is_colliding = true
+ else:
+ is_colliding = false
+
+ if is_dragged:
+ position = get_global_mouse_position() + mouse_offset
+
+ if is_colliding:
+ modulate = Color("bb5a4b")
+ else:
+ modulate = Color("fff")
+
+
+func _on_area_2d_input_event(_viewport, event: InputEvent, _shape_idx):
+ if event.is_action_pressed("drag_start"):
+ drag_start()
+ if event.is_action_released("drag_start"):
+ drag_end()
+
+
+func drag_start():
+ if get_viewport():
+ mouse_offset = position - get_global_mouse_position()
+ last_position = position
+
+ is_dragged = true
+
+func drag_end():
+ if is_dragged and is_colliding:
+ if last_position != Vector2(0,0):
+ position = last_position
+ else:
+ queue_free()
+
+ is_dragged = false