frame-of-mind/src/logic-scenes/main menu/save_game_list.gd

48 lines
993 B
GDScript3
Raw Normal View History

@tool
class_name SaveGameHandle extends CenterContainer
signal picked(save_game: SaveGame)
var has_stage: bool = false:
set(stage):
has_stage = stage
visible = stage
save_buttons[0].grab_focus()
@export var saves: Array[SaveGame] = [SaveGame.new(), SaveGame.new(), SaveGame.new()]
var save_buttons: Array[SaveGameDisplay]
@export var update_display: bool:
set(value):
display()
var create_new_game: bool = false
func _ready() -> void:
display()
func display():
for child in save_buttons:
child.free()
save_buttons = []
for i in range(saves.size()):
var new_button := SaveGameDisplay.new(saves[i], i+1)
save_buttons.append(new_button)
add_child(new_button)
new_button.pressed.connect(func(): _on_game_picked(i))
func _on_game_picked(id: int):
if create_new_game:
if saves[id].current_room == 0:
picked.emit(id)
else:
$Popup.show()
else:
picked.emit(id)
func pick_slot(create_new_game: bool):
State.take_stage(self)
create_new_game = true