Diffstat (limited to 'dots/dot.gd')
-rw-r--r--dots/dot.gd50
1 files changed, 50 insertions, 0 deletions
diff --git a/dots/dot.gd b/dots/dot.gd
new file mode 100644
index 0000000..d7b915e
--- /dev/null
+++ b/dots/dot.gd
@@ -0,0 +1,50 @@
+extends KinematicBody2D
+class_name dot
+
+var dotCollider = preload("res://dots/dot_extras/dotcollider.tscn" )
+
+onready var dotcollider : CollisionShape2D
+onready var ray : RayCast2D
+
+var tween = Tween.new()
+
+export(Color) var color
+export(GlobalVars.type) var dot_type
+
+func _ready():
+ Events.connect("level_initialized", self, "move")
+ Events.connect("turn_over", self, "move")
+ add_child(tween)
+ var new_dotcollider = dotCollider.instance()
+ add_child(new_dotcollider)
+ dotcollider = new_dotcollider
+ ray = dotcollider.get_ray()
+ dotcollider.move_ray($dotsprite/pos.global_position)
+ $dotsprite.change_color(color)
+
+func move():
+ if ! GlobalVars.state == GlobalVars.states.level_turn:
+ return
+ var go_to = extend_ray_until_collides()
+ tween.interpolate_property(self, "global_position",
+ global_position, go_to, 2,
+ Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)
+ tween.start()
+ Events.emit_signal("done_moving")
+
+func extend_ray_until_collides() -> Vector2:
+ for i in get_viewport_rect().size.y:
+ if not ray.is_colliding():
+ ray.cast_to.y += 1
+ ray.force_raycast_update()
+ var size = ray.cast_to.y
+ print(ray.get_collider())
+ ray.cast_to = Vector2.ZERO
+ return Vector2(global_position.x, global_position.y + size)
+
+func turn_off_collision():
+ dotcollider.disabled = true
+
+func _on_dot_input(viewport, event : InputEvent, shape_idx):
+ InputHandler._pressed(event, self)
+