summaryrefslogtreecommitdiff
path: root/src/entities/actors/snake/head/head.gd
blob: 222d09146e6a602eb14aeb3088fc6c3a0433d4e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
extends Node2D

# export(float, 1.0, 1000.0, 1.0) var SPEED: float = 100.0
# export(float, 1.0, 1000.0, 1.0) var ROT_SPEED: float = 200.0
# export(float, 0.01, 1.0, 0.01) var POSITION_UPDATE_INTERVAL: float = 0.01
var speed: float
var rot_speed: float
var position_update_interval: float

var direction: Vector2 = Vector2.UP
var _time_elapsed: float = 0.0


func _ready():
	Event.emit_signal("new_curve_point", global_position)


func _process(delta: float) -> void:
	if Input.is_action_pressed("move_left"):
		# direction = direction.rotated(deg2rad(-ROT_SPEED))
		rotate(deg2rad(-rot_speed * delta))
	if Input.is_action_pressed("move_right"):
		# direction = direction.rotated(deg2rad(ROT_SPEED))
		rotate(deg2rad(rot_speed * delta))

	move_local_x(direction.x * speed * delta)
	move_local_y(direction.y * speed * delta)

	_handle_time_elapsed(delta)


# using a timer is not recommended for < 0.01
func _handle_time_elapsed(delta: float) -> void:
	if _time_elapsed >= position_update_interval:
		Event.emit_signal("new_curve_point", global_position)
		_time_elapsed = 0.0
	_time_elapsed += delta