DreamBall/menus/main/save_file_manager.tscn

183 lines
5.6 KiB
Text
Raw Permalink Normal View History

[gd_scene load_steps=4 format=3 uid="uid://w5te3qujco7d"]
[ext_resource type="Theme" uid="uid://c6ceauyc42c33" path="res://menus/menu.tres" id="1_gc46s"]
[sub_resource type="GDScript" id="GDScript_a5kgg"]
script/source = "extends MainMenuComponent
signal request_start
func _init() -> void:
self.displayed_name = \"Save files\"
func _ready() -> void:
for child in $ScrollContainer/SaveButtons.get_children(true):
child.queue_free()
## Get the newest \"played_for\" when the main menu appears again
get_parent().connect(\"tree_entered\", func():
if SaveFiles.selected_file:
display_file_data(SaveFiles.selected_file)
)
var btn_group := ButtonGroup.new()
var save_file_names := SaveFiles.get_all_existing_save_file_names()
for i in len(save_file_names):
var save_file_name := save_file_names[i]
var save_name := save_file_name.substr(0, save_file_name.rfind(\".\"))
if save_name.is_valid_int():
save_name = \"File #\" + save_name
var button := Button.new()
button.toggle_mode = true
button.button_group = btn_group
button.connect(\"pressed\", func():
$VBoxContainer/MarginContainer/VBoxContainer/Description/Name.text = save_name
display_file_data(save_file_name)
)
button.text = save_name
if i == 0 or i == len(save_file_names) - 1:
var margin = MarginContainer.new()
if i == 0:
margin.add_theme_constant_override(\"margin_left\", 10)
elif i == len(save_file_names) - 1:
margin.add_theme_constant_override(\"margin_right\", 10)
margin.add_child(button)
$ScrollContainer/SaveButtons.add_child(margin)
else:
$ScrollContainer/SaveButtons.add_child(button)
super()
func display_file_data(file_name: String) -> void:
var label_time := $VBoxContainer/MarginContainer/VBoxContainer/Description/Time
$VBoxContainer/MarginContainer/VBoxContainer/Buttons/Start.disabled = false
$VBoxContainer/MarginContainer/VBoxContainer/Buttons/Delete.disabled = false
var data = SaveFiles.read(file_name)
label_time.text = \" | \"
if data.has(\"played_for\") and data.played_for is float:
var seconds: float = data.played_for
var minutes: int = floor(seconds / 60)
label_time.text += (\"%0*d\" % [2, minutes]) + \":\" + (\"%0*.3f\" % [6, seconds - (minutes * 60)])
else:
label_time.text += \"00:00.000\"
func _on_start_pressed() -> void:
request_start.emit()
func _on_delete_pressed() -> void:
SaveFiles.empty(SaveFiles.selected_file)
display_file_data(SaveFiles.selected_file)
"
[sub_resource type="LabelSettings" id="LabelSettings_gc46s"]
font_size = 24
[node name="SaveFileManager" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_gc46s")
script = SubResource("GDScript_a5kgg")
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.147731, 0.243238, 0.205466, 1)
[node name="ScrollContainer" type="ScrollContainer" parent="."]
layout_mode = 1
anchors_preset = 10
anchor_right = 1.0
grow_horizontal = 2
size_flags_vertical = 3
follow_focus = true
vertical_scroll_mode = 0
[node name="SaveButtons" type="HBoxContainer" parent="ScrollContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 6
alignment = 1
[node name="Placeholder1" type="Button" parent="ScrollContainer/SaveButtons"]
layout_mode = 2
toggle_mode = true
text = "Save file #1"
[node name="Placeholder2" type="Button" parent="ScrollContainer/SaveButtons"]
layout_mode = 2
toggle_mode = true
text = "Save file #2"
[node name="Placeholder3" type="Button" parent="ScrollContainer/SaveButtons"]
layout_mode = 2
toggle_mode = true
text = "Save file #3"
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -243.5
offset_top = -157.0
offset_right = 243.5
offset_bottom = 157.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
mouse_filter = 2
alignment = 1
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 30
theme_override_constants/margin_top = 30
theme_override_constants/margin_right = 30
theme_override_constants/margin_bottom = 30
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MarginContainer"]
layout_mode = 2
[node name="Description" type="HBoxContainer" parent="VBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
alignment = 1
[node name="Name" type="Label" parent="VBoxContainer/MarginContainer/VBoxContainer/Description"]
layout_mode = 2
text = "Please select a save file!"
label_settings = SubResource("LabelSettings_gc46s")
horizontal_alignment = 1
vertical_alignment = 1
[node name="Time" type="Label" parent="VBoxContainer/MarginContainer/VBoxContainer/Description"]
layout_mode = 2
[node name="Buttons" type="HBoxContainer" parent="VBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
alignment = 1
[node name="Start" type="Button" parent="VBoxContainer/MarginContainer/VBoxContainer/Buttons"]
custom_minimum_size = Vector2(300, 0)
layout_mode = 2
size_flags_horizontal = 3
disabled = true
text = "Start"
[node name="Delete" type="Button" parent="VBoxContainer/MarginContainer/VBoxContainer/Buttons"]
layout_mode = 2
disabled = true
text = "Delete"
[connection signal="pressed" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/Start" to="." method="_on_start_pressed"]
[connection signal="pressed" from="VBoxContainer/MarginContainer/VBoxContainer/Buttons/Delete" to="." method="_on_delete_pressed"]