summaryrefslogtreecommitdiff
path: root/scripts/base_crawler.gd
blob: ffc726c3377de45e5cd165d603875072baaec604 (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
38
39
40
41
42
43
44
extends CharacterBody2D

@onready var sprite_node = $Sprite2D

var damage : int
var speed : float
var max_health : float
var worth : int

var _health : float
var _timer : Timer

func _ready() -> void:
	_health = max_health

	_timer = Timer.new()
	_timer.wait_time = speed / 60
	_timer.autostart = true
	_timer.connect("timeout", Callable(self, "_on_animate_timeout"))
	add_child(_timer)


func _process(delta):
	get_parent().set_progress(get_parent().get_progress() + speed * delta)
	if get_parent().get_progress_ratio() >= 1:
		GameData.subtract_morale(damage)
		queue_free()

func deal_damage(tower_damage):
	_health -= tower_damage
	if _health <= 0:
		GameData.add_life(worth)
		queue_free()
	else:
		_update_color()

func _update_color():
	var ratio : float = _health / max_health
	var target_color = Color(1, ratio, ratio)

	sprite_node.modulate = target_color

func _on_animate_timeout():
	sprite_node.scale.x = -sprite_node.scale.x