added pause menu and started save/load systems
authorEduardo <[email protected]>
Sun, 7 Jul 2024 15:05:46 +0000 (17:05 +0200)
committerEduardo <[email protected]>
Sun, 7 Jul 2024 15:05:46 +0000 (17:05 +0200)
project.godot
scenes/house_template.tscn
scenes/interfaces/pause_menu.tscn
scenes/main_level.tscn
scripts/globals.gd
scripts/house_template.gd [new file with mode: 0644]
scripts/main_level.gd
scripts/pause_menu.gd

index 08e08f4dd769f34397f0a0b2fc889b27198b922a..6e75fbc265c016e47fdf4730435658a7f1a85c55 100644 (file)
@@ -61,6 +61,12 @@ ui_down={
 , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
 ]
 }
+ui_menu={
+"deadzone": 0.5,
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194370,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
+, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194305,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
+]
+}
 
 [rendering]
 
index 14fa3ed772271e2f0fd42a6e5e696ad5ebab7a04..5e22a0417ee43b9446ac4378443daeaa6d0465a7 100644 (file)
@@ -1,6 +1,8 @@
-[gd_scene load_steps=6 format=4 uid="uid://bk4h1frr4r8tq"]
+[gd_scene load_steps=8 format=4 uid="uid://bk4h1frr4r8tq"]
 
+[ext_resource type="Script" path="res://scripts/house_template.gd" id="1_1vs50"]
 [ext_resource type="Texture2D" uid="uid://d4j4ulftsvn5c" path="res://assets/textures/Inner.png" id="1_w2ggh"]
+[ext_resource type="PackedScene" uid="uid://d11oo2pxcah1g" path="res://scenes/interfaces/pause_menu.tscn" id="1_yi287"]
 [ext_resource type="PackedScene" uid="uid://k76535tjepm3" path="res://scenes/elements/player.tscn" id="2_07rl6"]
 [ext_resource type="PackedScene" uid="uid://da1uex028xkv1" path="res://scenes/elements/door_scene_manager.tscn" id="3_3eu8f"]
 
@@ -464,6 +466,7 @@ navigation_layer_0/layers = 1
 sources/0 = SubResource("TileSetAtlasSource_q4fiy")
 
 [node name="HouseTemplate" type="Node2D"]
+script = ExtResource("1_1vs50")
 
 [node name="TileMapLayer" type="TileMapLayer" parent="."]
 rotation = -0.000322629
@@ -484,3 +487,5 @@ push_direction = 2
 z_index = 4096
 position = Vector2(582, 328)
 zoom = Vector2(2, 2)
+
+[node name="PauseMenu" parent="Camera2D" instance=ExtResource("1_yi287")]
index d7b0b5764cdf99ae3ff010cfa63fdc8c2cb83ab8..510593e981094e66cf4eb2d2edd0e0ff05a3c480 100644 (file)
@@ -1,8 +1,14 @@
-[gd_scene load_steps=2 format=3 uid="uid://d11oo2pxcah1g"]
+[gd_scene load_steps=4 format=3 uid="uid://d11oo2pxcah1g"]
 
 [ext_resource type="Script" path="res://scripts/pause_menu.gd" id="1_aq3as"]
+[ext_resource type="Script" path="res://addons/label_font_auto_sizer/label_auto_sizer.gd" id="2_j81qh"]
+
+[sub_resource type="LabelSettings" id="LabelSettings_3oc3d"]
+font_size = 50
 
 [node name="PauseMenu" type="Control"]
+process_mode = 3
+z_index = 4096
 layout_mode = 3
 anchors_preset = 15
 anchor_right = 1.0
@@ -10,3 +16,61 @@ anchor_bottom = 1.0
 grow_horizontal = 2
 grow_vertical = 2
 script = ExtResource("1_aq3as")
+
+[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="VBoxContainer" type="VBoxContainer" parent="CenterContainer"]
+layout_mode = 2
+
+[node name="PauseLabel" type="Label" parent="CenterContainer/VBoxContainer"]
+custom_minimum_size = Vector2(250, 100)
+layout_mode = 2
+theme_override_font_sizes/font_size = 16
+text = "Pause"
+label_settings = SubResource("LabelSettings_3oc3d")
+horizontal_alignment = 1
+vertical_alignment = 1
+autowrap_mode = 3
+clip_text = true
+script = ExtResource("2_j81qh")
+_size_just_modified_by_autosizer = false
+_set_defaults = true
+_base_font_size = 50
+_current_font_size = 50
+_last_size_state = 1
+
+[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer"]
+layout_mode = 2
+alignment = 1
+
+[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/VBoxContainer/HBoxContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 32
+theme_override_constants/margin_top = 32
+theme_override_constants/margin_right = 32
+theme_override_constants/margin_bottom = 32
+
+[node name="SaveButton" type="Button" parent="CenterContainer/VBoxContainer/HBoxContainer/MarginContainer"]
+layout_mode = 2
+text = "Save"
+
+[node name="MarginContainer2" type="MarginContainer" parent="CenterContainer/VBoxContainer/HBoxContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 32
+theme_override_constants/margin_top = 32
+theme_override_constants/margin_right = 32
+theme_override_constants/margin_bottom = 32
+
+[node name="LoadButton" type="Button" parent="CenterContainer/VBoxContainer/HBoxContainer/MarginContainer2"]
+layout_mode = 2
+text = "Load
+"
+
+[connection signal="pressed" from="CenterContainer/VBoxContainer/HBoxContainer/MarginContainer/SaveButton" to="." method="_on_save_button_pressed"]
+[connection signal="pressed" from="CenterContainer/VBoxContainer/HBoxContainer/MarginContainer2/LoadButton" to="." method="_on_load_button_pressed"]
index 469592ff3a62ed6d11e1a649ca7ea7ea328cd851..f5d63c368a8196f2f0b4e4b285c1f64f4fb9c10c 100644 (file)
@@ -1,9 +1,10 @@
-[gd_scene load_steps=7 format=4 uid="uid://ds1fjw3marbia"]
+[gd_scene load_steps=8 format=4 uid="uid://ds1fjw3marbia"]
 
 [ext_resource type="PackedScene" uid="uid://k76535tjepm3" path="res://scenes/elements/player.tscn" id="1_6iuf6"]
 [ext_resource type="Script" path="res://scripts/main_level.gd" id="1_fdviv"]
 [ext_resource type="Texture2D" uid="uid://bj3fteudhyal6" path="res://assets/textures/Overworld.png" id="1_pt2os"]
 [ext_resource type="PackedScene" uid="uid://da1uex028xkv1" path="res://scenes/elements/door_scene_manager.tscn" id="1_qqjfh"]
+[ext_resource type="PackedScene" uid="uid://d11oo2pxcah1g" path="res://scenes/interfaces/pause_menu.tscn" id="2_4k3ic"]
 
 [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_n0o3p"]
 texture = ExtResource("1_pt2os")
@@ -1658,3 +1659,9 @@ motion_mode = 1
 [node name="Camera2D" type="Camera2D" parent="Player"]
 z_index = 4096
 zoom = Vector2(2, 2)
+
+[node name="PauseMenu" parent="Player/Camera2D" instance=ExtResource("2_4k3ic")]
+offset_left = -288.0
+offset_top = -162.0
+offset_right = 288.0
+offset_bottom = 162.0
index 815bef8a28490c205d184affb6d25f2f8c18a51c..9c11b149bf01cd04a0f390e87389c23f352cb5bd 100644 (file)
@@ -16,6 +16,10 @@ class _PlayerPositionAt:
 var player_positions: Array[_PlayerPositionAt]
 var last_scene_updated: Constants.LEVELS_NAMES
 
+
+signal request_update_player_position
+
+
 func update_player_position(scene: Constants.LEVELS_NAMES, new_position: Vector2):
        last_scene_updated = scene
        
diff --git a/scripts/house_template.gd b/scripts/house_template.gd
new file mode 100644 (file)
index 0000000..ac49cc8
--- /dev/null
@@ -0,0 +1,15 @@
+extends Node2D
+
+
+const LEVEL_NAME = "house_template"
+
+@onready var player = $Player
+
+
+func _ready():
+       Globals.request_update_player_position.connect(update_player_position)
+       Globals.set_current_scene(Constants.LEVELS_NAMES[LEVEL_NAME])
+
+
+func update_player_position():
+       Globals.update_player_position(Constants.LEVELS_NAMES[LEVEL_NAME], player.position)
index 1dc76a9503256d954fee21d8df2fd68d0b194279..ba567d18331c9d1b7c190de11f099185c245e5f2 100644 (file)
@@ -7,5 +7,12 @@ const LEVEL_NAME = "main_level"
 
 
 func _ready():
+       Globals.request_update_player_position.connect(update_player_position)
+       Globals.set_current_scene(Constants.LEVELS_NAMES[LEVEL_NAME])
+       
        # get player poss
        player.position = Globals.get_last_player_position_in_scene(Constants.LEVELS_NAMES[LEVEL_NAME] as Constants.LEVELS_NAMES)
+
+
+func update_player_position():
+       Globals.update_player_position(Constants.LEVELS_NAMES[LEVEL_NAME], player.position)
index c5149801758ec90643f3a1fa609d1b386ed02f9e..9eceebd27e81f8dcf38fc1174c42f1ae1e1897d1 100644 (file)
@@ -1,20 +1,42 @@
 extends Control
 
 
-# Called when the node enters the scene tree for the first time.
+var paused: bool = false
+
+
 func _ready():
-       pass # Replace with function body.
+       visible = paused
 
 
-# Called every frame. 'delta' is the elapsed time since the previous frame.
-func _process(delta):
-       pass
+func _process(_delta):
+       if Input.is_action_just_pressed("ui_cancel"):
+               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
+
+
+func _on_save_button_pressed():
+       save_data()
+
+
+func _on_load_button_pressed():
+       var save_data = SaveSystem.get_var("save")
+       print(save_data)