blob: d01342fc73ae78f4ad2505a849657ed2ba2b6b1b (
plain) (
blame)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
extends Node
class_name SceneControl
@onready var path: Path2D = $DrawNode/TrackPath
@onready var path_follow: PathFollow2D = $DrawNode/TrackPath/TrackFollower
@onready var car = $Car
@onready var checkpoints = $Checkpoints.get_children()
@onready var ui = $UI/Control
@onready var start = $Start
var finish_line: Area2D
var is_driving = false
var current_time = 0.0
func _ready():
finish_line = $FinishLine/Area2D as Area2D
finish_line.body_entered.connect(_on_finish_line_body_entered)
reset_level()
func _physics_process(delta):
if car.driving:
current_time += delta
print(current_time)
ui.update_timer_label(current_time)
func get_path_direction(pos):
var offset = path.curve.get_closest_offset(pos)
path_follow.progress = offset
return path_follow.transform.x
func get_path_next_position(pos):
var offset = path.curve.get_closest_offset(pos)
path_follow.progress = offset + 50
return path_follow.position
func set_driving(driving: bool):
car.driving = driving
is_driving = driving
func reset_level():
ui.update_timer_label(-1)
for cp in checkpoints:
cp.set_was_visited(false)
car.global_position = start.global_position
car.global_rotation = start.rotation;
func start_driving():
current_time = 0.0
set_driving(true)
func evaluate_driving():
for cp in checkpoints:
if not cp.was_visited:
return false
return true
func _on_finish_line_body_entered(node: Node2D):
if evaluate_driving():
ui.switch_to_post_game_UI()
set_driving(false)
reset_level()
|