small racing game im working on
Diffstat (limited to 'scenes/race_highlevel.gd')
| -rw-r--r-- | scenes/race_highlevel.gd | 35 |
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(): |