small racing game im working on
Diffstat (limited to 'scenes/race_highlevel.gd')
-rw-r--r--scenes/race_highlevel.gd35
1 files changed, 22 insertions, 13 deletions
diff --git a/scenes/race_highlevel.gd b/scenes/race_highlevel.gd
index 79ac020..4628cef 100644
--- a/scenes/race_highlevel.gd
+++ b/scenes/race_highlevel.gd
@@ -10,44 +10,53 @@ extends Splitscreen
@export var ghost_scene: PackedScene
@export var track_loader_scene: PackedScene
+
var race: Race
var huds: Array[HUD]
func _ready() -> void:
+ super()
scale = Globals.cfg.get_value(SettingsSaver.GRAPHIC, "viewport_scale") / 100
+ await get_tree().physics_frame
race = Race.new(Globals.playing, Globals.ghost, car_scene, ghost_scene, track_loader_scene)
race.did_reset.connect(count_in)
+ race.cars_needed = Globals.players
add_child(race)
- add_player()
- super()
+ for player in Globals.players:
+ add_player()
# cant call it join because of overriding and stuff
func add_player() -> void:
- await get_tree().physics_frame
- var c_cam := CarCamera.new(race.car)
- var i_cam := IntroCam.new(Globals.playing, c_cam)
+ var car := len(players)
var v := join()
+ var c_cam := CarCamera.new(race.cars[car])
+ var i_cam := IntroCam.new(Globals.playing, c_cam)
v.viewport.add_child(c_cam)
v.viewport.add_child(i_cam)
var hud = hud_scene.instantiate()
- hud.assigned.emit(race.car, race.timer, race.track)
+ hud.assigned.emit(race.cars[car], race.timers[car], race.track)
v.add_child(hud)
- race.split.connect(hud.splits.update)
+ race.split.connect(func(t, p, n): if n == car: hud.splits.update(t, p))
race.next_lap.connect(hud.laps.increment)
huds.append(hud)
i_cam.finished.connect(count_in)
race.did_reset.connect(c_cam.reset)
race.did_reset.connect(hud.laps.reset)
- race.finished.connect(func(t: float, p_t: float):
+ race.finished.connect(func(t: float, p_t: float, n: int):
+ if n != car:
+ return
var finish: FinishUI = finish_scene.instantiate()
hud.add_child(finish)
finish.set_time(t, p_t)
- finish.retry.connect(func():
- race.reset()
- finish.queue_free()
- get_tree().paused = false
+ finish.retry.disabled = players.size() > 1
+ finish.quit.disabled = players.size() > 1
+ race.all_finished.connect(func():
+ finish.retry.disabled = false
+ finish.quit.disabled = false
)
- finish.quit.connect(queue_free)
+ finish.retry.pressed.connect(race.reset)
+ race.did_reset.connect(finish.queue_free)
+ finish.quit.pressed.connect(queue_free)
)
func count_in():