2024-10-01 23:32:59 +00:00
|
|
|
@tool
|
2024-10-06 09:40:42 +00:00
|
|
|
class_name SaveGameHandle extends CenterContainer
|
2024-10-01 23:32:59 +00:00
|
|
|
|
2024-10-06 09:40:42 +00:00
|
|
|
signal picked(save_game: SaveGame)
|
|
|
|
|
|
|
|
|
|
var has_stage: bool = false:
|
|
|
|
|
set(stage):
|
|
|
|
|
has_stage = stage
|
|
|
|
|
visible = stage
|
|
|
|
|
save_buttons[0].grab_focus()
|
2024-10-01 23:32:59 +00:00
|
|
|
|
2024-10-06 09:40:42 +00:00
|
|
|
@export var saves: Array[SaveGame] = [SaveGame.new(), SaveGame.new(), SaveGame.new()]
|
|
|
|
|
var save_buttons: Array[SaveGameDisplay]
|
2024-10-01 23:32:59 +00:00
|
|
|
@export var update_display: bool:
|
|
|
|
|
set(value):
|
|
|
|
|
display()
|
|
|
|
|
|
2024-10-06 09:40:42 +00:00
|
|
|
var create_new_game: bool = false
|
|
|
|
|
|
2024-10-01 23:32:59 +00:00
|
|
|
func _ready() -> void:
|
|
|
|
|
display()
|
|
|
|
|
|
|
|
|
|
func display():
|
2024-10-06 09:40:42 +00:00
|
|
|
for child in save_buttons:
|
2024-10-01 23:32:59 +00:00
|
|
|
child.free()
|
|
|
|
|
|
2024-10-06 09:40:42 +00:00
|
|
|
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
|