Files
gymkhana-actions/game/ui/menus/load_save/load/load_game.gd
2023-02-07 16:21:22 +01:00

47 lines
1.2 KiB
GDScript

# A container for loading from a save slot
extends Control
# Emitted when the back button is pressed
signal back_button_pressed
# The scene to display a slot
export(PackedScene) var slot_ui_scene
# Load the savegames when loaded
func _ready():
refresh_savegames()
# A slot was pressed. Load the game
#
# #### Parameters
# - slot_id: The slot that was pressed
func _on_slot_pressed(slot_id: int) -> void:
escoria.save_manager.load_game(slot_id)
# The back button was pressed
func _on_back_pressed():
emit_signal("back_button_pressed")
# Create the slots from the list of savegames
func refresh_savegames():
for slot in $VBoxContainer/ScrollContainer/slots.get_children():
$VBoxContainer/ScrollContainer/slots.remove_child(slot)
var saves_list = escoria.save_manager.get_saves_list()
if not saves_list.empty():
for save_key in saves_list.keys():
var new_slot = slot_ui_scene.instance()
$VBoxContainer/ScrollContainer/slots.add_child(
new_slot
)
# Move newest save to the top of the list
$VBoxContainer/ScrollContainer/slots.move_child(new_slot, 0)
new_slot.set_slot_name_date(saves_list[save_key]["name"], saves_list[save_key]["date"])
new_slot.connect("pressed", self, "_on_slot_pressed", [save_key])