-[gd_scene format=3 uid="uid://bsiy7irf1p5e1"]
+[gd_scene load_steps=6 format=3 uid="uid://bsiy7irf1p5e1"]
+
+[ext_resource type="Script" path="res://scripts/save_menu.gd" id="1_47jxk"]
+[ext_resource type="Texture2D" uid="uid://caxlr5o014d0h" path="res://assets/ui/button_square_depth_line.png" id="1_ejhmr"]
+[ext_resource type="Script" path="res://addons/label_font_auto_sizer/label_auto_sizer.gd" id="2_mvfow"]
+[ext_resource type="Theme" uid="uid://c6osikflt1uy1" path="res://assets/resources/ui_theme.tres" id="3_n5hex"]
+
+[sub_resource type="LabelSettings" id="LabelSettings_ak3jm"]
+font_size = 32
+font_color = Color(0.900196, 0.84087, 0.882328, 1)
+outline_size = 5
+outline_color = Color(0, 0, 0, 1)
[node name="SaveMenu" type="Control"]
+process_mode = 2
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
+script = ExtResource("1_47jxk")
+
+[node name="CenterContainer" type="CenterContainer" parent="."]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"]
+layout_mode = 2
+
+[node name="NinePatchRect" type="NinePatchRect" parent="CenterContainer/PanelContainer"]
+modulate = Color(0.831856, 0.844692, 0.906161, 1)
+custom_minimum_size = Vector2(100, 100)
+layout_mode = 2
+texture = ExtResource("1_ejhmr")
+patch_margin_left = 15
+patch_margin_top = 15
+patch_margin_right = 15
+patch_margin_bottom = 25
+
+[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 50
+theme_override_constants/margin_top = 20
+theme_override_constants/margin_right = 50
+theme_override_constants/margin_bottom = 35
+
+[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer"]
+layout_mode = 2
+
+[node name="LabelAutoSizer" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
+custom_minimum_size = Vector2(0, 50)
+layout_mode = 2
+theme_override_font_sizes/font_size = 8
+text = "Save"
+label_settings = SubResource("LabelSettings_ak3jm")
+horizontal_alignment = 1
+vertical_alignment = 1
+autowrap_mode = 3
+clip_text = true
+script = ExtResource("2_mvfow")
+_size_just_modified_by_autosizer = false
+_set_defaults = true
+_base_font_size = 32
+_current_font_size = 32
+_last_size_state = 1
+
+[node name="Row1Container" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
+layout_mode = 2
+alignment = 1
+
+[node name="Slot1Button" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container"]
+custom_minimum_size = Vector2(150, 0)
+layout_mode = 2
+theme = ExtResource("3_n5hex")
+text = "Slot 1"
+
+[node name="Slot2Button" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container"]
+custom_minimum_size = Vector2(150, 0)
+layout_mode = 2
+theme = ExtResource("3_n5hex")
+text = "Slot 2"
+
+[node name="Row2Container" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
+layout_mode = 2
+alignment = 1
+
+[node name="Slot3Button" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row2Container"]
+custom_minimum_size = Vector2(150, 0)
+layout_mode = 2
+theme = ExtResource("3_n5hex")
+text = "Slot 3"
+
+[node name="Slot4Button" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row2Container"]
+custom_minimum_size = Vector2(150, 0)
+layout_mode = 2
+theme = ExtResource("3_n5hex")
+text = "Slot 4"
+
+[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
+layout_mode = 2
+theme_override_constants/margin_top = 20
+
+[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer"]
+layout_mode = 2
+alignment = 2
+
+[node name="ReturnButton" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
+modulate = Color(0.901197, 0.823165, 0.861526, 1)
+custom_minimum_size = Vector2(150, 0)
+layout_mode = 2
+theme = ExtResource("3_n5hex")
+text = "Return"
+
+[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
+[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container/Slot1Button" to="." method="_on_slot1_button_pressed"]
+[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container/Slot2Button" to="." method="_on_slot2_button_pressed"]
+[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row2Container/Slot3Button" to="." method="_on_slot3_button_pressed"]
+[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row2Container/Slot4Button" to="." method="_on_slot4_button_pressed"]
+[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/ReturnButton" to="." method="_on_return_button_pressed"]
var paused: bool = false
-
+var save_menu: Node
func _ready():
visible = paused
pause_game()
-func save_data():
- SaveSystem.set_var("save", SaveResource.new())
- SaveSystem.set_var("save:scene", get_scene())
- SaveSystem.set_var("save:player_position", Globals.get_last_player_position_in_scene(get_scene()))
- SaveSystem.save()
-
-
-func get_scene() -> Constants.LEVELS_NAMES:
- return Globals.get_current_scene()
-
-
func pause_game():
# update player position before pausing the execution
Globals.request_update_player_position.emit()
paused = !paused
get_tree().paused = paused
visible = paused
+
+ if !paused:
+ close_save_menu()
+
+
+func open_save_menu(save_mode: bool):
+ if not save_menu:
+ var save_menu_res = load(Constants.LEVELS_PATHS[Constants.LEVELS_NAMES["save_menu"]]) as PackedScene
+ save_menu = save_menu_res.instantiate()
+ add_child(save_menu)
+
+ save_menu.save_mode = save_mode
+ save_menu.visible = true
+
+
+func close_save_menu():
+ if save_menu:
+ save_menu.visible = false
func _on_save_button_pressed():
- save_data()
+ open_save_menu(true)
func _on_load_button_pressed():
- var save_data = SaveSystem.get_var("save")
- print(save_data)
+ open_save_menu(false)
--- /dev/null
+extends Control
+
+
+### if save is true: save
+### if save is false: load
+var save_mode := true
+
+@onready var title_label = $CenterContainer/PanelContainer/MarginContainer/VBoxContainer/LabelAutoSizer
+
+
+func _on_visibility_changed():
+ if !is_node_ready():
+ var timer = Timer.new()
+ timer.wait_time = .01
+ timer.autostart = true
+ timer.one_shot = true
+ timer.timeout.connect(_on_visibility_changed)
+ add_child(timer)
+ else:
+ if save_mode:
+ title_label.text = "Save" # TODO: this must be localized
+ else:
+ title_label.text = "Load" # TODO: this must be localized
+
+
+func save_data(save_name: String):
+ var save_path := "user://" + save_name + ".sav"
+ SaveSystem.set_var("save", SaveResource.new())
+ SaveSystem.set_var("save:scene", Globals.get_current_scene())
+ SaveSystem.set_var("save:player_position", Globals.get_last_player_position_in_scene(Globals.get_current_scene()))
+ SaveSystem.save(save_path)
+
+
+func load_data(save_name: String):
+ var save_path := "user://" + save_name + ".sav"
+ SaveSystem._load(save_path)
+ var save_json = SaveSystem.get_var("save")
+ print(save_json)
+
+
+func save_or_load(save_name: String):
+ if save_mode:
+ save_data(save_name)
+ else:
+ load_data(save_name)
+
+
+func _on_slot1_button_pressed():
+ save_or_load("save_1")
+
+
+func _on_slot2_button_pressed():
+ save_or_load("save_2")
+
+
+func _on_slot3_button_pressed():
+ save_or_load("save_3")
+
+
+func _on_slot4_button_pressed():
+ save_or_load("save_4")
+
+
+func _on_return_button_pressed():
+ visible = false