Diffstat (limited to 'input_handler.gd')
-rw-r--r--input_handler.gd44
1 files changed, 44 insertions, 0 deletions
diff --git a/input_handler.gd b/input_handler.gd
new file mode 100644
index 0000000..b0f64c2
--- /dev/null
+++ b/input_handler.gd
@@ -0,0 +1,44 @@
+extends CanvasLayer
+
+var pressed = false setget set_pressed
+
+var nodes_with_points = []
+
+onready var line = $Line2D
+
+func _pressed(event : InputEvent, node : dot):
+ if not GlobalVars.state == GlobalVars.states.player_turn:
+ return
+ if line.get_point_count() > 0:
+ if node.color == line.default_color:
+ if not node in nodes_with_points:
+# line.remove_point(line.get_point_count() - 1) # remove the last points
+ set_physics_process(false)
+ yield(get_tree(), "idle_frame")
+ line.add_point(node.position + GlobalVars.size / 2)
+ nodes_with_points.append(node)
+ set_physics_process(true)
+ elif event.is_action("click") and event.is_pressed():
+ pressed = true
+ line.clear_points()
+ nodes_with_points.clear()
+ nodes_with_points.append(node)
+ line.add_point(node.position + GlobalVars.size / 2) # add a point in the center of the dot
+ line.add_point(line.get_global_mouse_position())
+ line.default_color = node.color
+
+func _physics_process(delta):
+ if line.get_point_count() > 0:
+ if Input.is_action_pressed("click") and pressed == true:
+ line.remove_point(line.get_point_count() - 1)
+ line.add_point(line.get_global_mouse_position())
+ elif line.get_point_count() > 2:
+ line.clear_points()
+ else:
+ line.clear_points()
+ nodes_with_points.clear()
+ pressed = false
+
+func set_pressed(new_pressed):
+ pressed = new_pressed
+ set_physics_process(pressed)