From: Eduardo Date: Sun, 7 Jul 2024 15:05:46 +0000 (+0200) Subject: added pause menu and started save/load systems X-Git-Url: http://git.edufdez.es/?a=commitdiff_plain;h=0c2ec2649477fb18bfb9a11fddeb2d79becba17c;p=rpg-template.git added pause menu and started save/load systems --- diff --git a/project.godot b/project.godot index 08e08f4..6e75fbc 100644 --- a/project.godot +++ b/project.godot @@ -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] diff --git a/scenes/house_template.tscn b/scenes/house_template.tscn index 14fa3ed..5e22a04 100644 --- a/scenes/house_template.tscn +++ b/scenes/house_template.tscn @@ -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")] diff --git a/scenes/interfaces/pause_menu.tscn b/scenes/interfaces/pause_menu.tscn index d7b0b57..510593e 100644 --- a/scenes/interfaces/pause_menu.tscn +++ b/scenes/interfaces/pause_menu.tscn @@ -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"] diff --git a/scenes/main_level.tscn b/scenes/main_level.tscn index 469592f..f5d63c3 100644 --- a/scenes/main_level.tscn +++ b/scenes/main_level.tscn @@ -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 diff --git a/scripts/globals.gd b/scripts/globals.gd index 815bef8..9c11b14 100644 --- a/scripts/globals.gd +++ b/scripts/globals.gd @@ -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 index 0000000..ac49cc8 --- /dev/null +++ b/scripts/house_template.gd @@ -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) diff --git a/scripts/main_level.gd b/scripts/main_level.gd index 1dc76a9..ba567d1 100644 --- a/scripts/main_level.gd +++ b/scripts/main_level.gd @@ -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) diff --git a/scripts/pause_menu.gd b/scripts/pause_menu.gd index c514980..9eceebd 100644 --- a/scripts/pause_menu.gd +++ b/scripts/pause_menu.gd @@ -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)