small racing game im working on
Diffstat (limited to 'ui/tracks.gd')
| -rw-r--r-- | ui/tracks.gd | 50 |
1 files changed, 22 insertions, 28 deletions
diff --git a/ui/tracks.gd b/ui/tracks.gd index 0686727..e1e139c 100644 --- a/ui/tracks.gd +++ b/ui/tracks.gd @@ -1,34 +1,28 @@ -extends GridContainer - -@export var tracks: Array[TrackResource] -@export var race: PackedScene -@export var ghost_watch: PackedScene -@export var trackbutton: PackedScene +extends TrackSelect +class_name BuiltinTrackSelect func _ready() -> void: + _load() + mkbuttons(Globals.builtin_tracks) + super() + +func _load(): + var tracks: Array = str_to_var(FileAccess.get_file_as_string("res://tracks.cfg")) for track in tracks: - var button: TrackButton = trackbutton.instantiate() - add_child(button) - var ghost := GhostData._load(Globals.SAVES % track.name) - button.init(track, ghost) - button.play.connect(play.bind(track, ghost)) - button.watch.connect(watch.bind(track, ghost)) - (get_child(0) as TrackButton).button.grab_focus() + var loaded := TrackResource.from_d(track) + loaded.builtin = true + Globals.builtin_tracks.append(loaded) -func play(track: TrackResource, ghost: GhostData) -> void: - print("play %s" % track.name) - Globals.playing = track - Globals.ghost = ghost - add_to_main(race) +func add(t: TrackResource): + mkbutton(t) + Globals.builtin_tracks.append(t) + BuiltinTrackSelect.store_all() -func watch(track: TrackResource, ghost: GhostData) -> void: - print("watch %s" % track.name) - Globals.playing = track - Globals.ghost = ghost - add_to_main(ghost_watch) +static func delete(t: TrackResource): + Globals.builtin_tracks.erase(t) + BuiltinTrackSelect.store_all() -func add_to_main(p: PackedScene) -> void: - owner.hide() - var c := p.instantiate() - get_viewport().add_child(c) - c.tree_exited.connect(owner.show) +static func store_all(): + var arr: Array = Globals.builtin_tracks.map(func(t: TrackResource) -> Dictionary: return t.to_d()) + var file := FileAccess.open("res://tracks.cfg", FileAccess.WRITE) + file.store_string(var_to_str(arr)) |