small racing game im working on
streamline lap based code
| -rw-r--r-- | classes/track.gd | 8 | ||||
| -rw-r--r-- | race.gd | 4 | ||||
| -rw-r--r-- | scenes/track-base.gd | 2 | ||||
| -rw-r--r-- | tracks/test.tres | 3 | ||||
| -rw-r--r-- | ui/laps.gd | 2 |
5 files changed, 10 insertions, 9 deletions
diff --git a/classes/track.gd b/classes/track.gd index 349dc78..9764ccc 100644 --- a/classes/track.gd +++ b/classes/track.gd @@ -31,8 +31,8 @@ class_name TrackResource ## Offset the entire track @export var offset := Vector3.UP @export_group("Race") -## Num laps, 0 = no laps -@export var laps := 0 +## Num laps, 1 = go to finish and done +@export var laps := 1 @export_subgroup("Checkpoints") ## Place the path offsets of checkpoint locations in this array @export var checkpoints: PackedFloat32Array = [] @@ -50,9 +50,9 @@ class_name TrackResource @export var finish_scale := Vector3.ONE @export var finish_needs_collision := false @export_subgroup("Start") -## Start location in path offset (unused if [member laps] > 0) +## Start location in path offset (unused if [member laps] > 1) @export var start_location: float = 0.0 -## Start scene (disregarded if [member laps] > 0) +## Start scene (disregarded if [member laps] > 1) @export var start_scene: PackedScene = preload("res://scenes/ring_start.tscn") ## How much to scale the start (see above) @export var start_scale := Vector3.ONE @@ -5,7 +5,7 @@ extends Node3D @export var track: TrackLoader @export var splits: Control @export var timer: Control -@onready var data := TrackSaveableData.new(track.checkpoints.size(), track.track.laps if track.track.laps else 1) +@onready var data := TrackSaveableData.new(track.checkpoints.size(), track.track.laps) @onready var best_time_data := TrackSaveableData._load(saves % track.track.name) var car: Car var ghost: GhostCar @@ -57,7 +57,7 @@ func _ready() -> void: if data.checkpoints[current_lap][i] < 0: return collect(-1) - if not track.track.laps or track.track.laps - 1 == current_lap: + if track.track.laps - 1 == current_lap: finished.emit() playing = false print("finished") diff --git a/scenes/track-base.gd b/scenes/track-base.gd index 4a429b7..fdf2b7b 100644 --- a/scenes/track-base.gd +++ b/scenes/track-base.gd @@ -108,7 +108,7 @@ func _update(): checkpoints.append(c) finish = make_follower(track.finish_scene, track.finish_location, track.finish_scale, track.finish_needs_collision) - if track.laps == 0: + if track.laps == 1: var s: Start = make_follower(track.start_scene, track.start_location, track.start_scale, track.start_needs_collision) start_pos = s.global_position start_rot = s.rotation diff --git a/tracks/test.tres b/tracks/test.tres index 504ef4b..d19c967 100644 --- a/tracks/test.tres +++ b/tracks/test.tres @@ -17,10 +17,11 @@ left_barrier = true right_barrier = true sun_x = -90 sun_y = 0 +overview_height = 200.0 name = "test" is_loop = false offset = Vector3(0, 1, 0) -laps = 0 +laps = 1 checkpoints = PackedFloat32Array(0.5) checkpoint_scene = ExtResource("1_ra7ed") checkpoint_scale = Vector3(0.4, 0.4, 0.4) @@ -6,7 +6,7 @@ extends PanelContainer var lap := 0 func _ready() -> void: - visible = track.track.laps + visible = track.track.laps > 1 increment() func increment() -> void: |