Adds restart/return to main menu options after finishing run
							parent
							
								
									b32eee2d6c
								
							
						
					
					
						commit
						823d57a446
					
				| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
[gd_scene load_steps=3 format=3 uid="uid://bqg3ohs1gwofr"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" uid="uid://b8brifkk4knh8" path="res://Scripts/game_over_menu.gd" id="1_arass"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="LabelSettings" id="LabelSettings_7upku"]
 | 
			
		||||
font_size = 32
 | 
			
		||||
 | 
			
		||||
[node name="GameOverMenu" type="VBoxContainer" groups=["GameOverMenu"]]
 | 
			
		||||
visible = false
 | 
			
		||||
anchors_preset = 15
 | 
			
		||||
anchor_right = 1.0
 | 
			
		||||
anchor_bottom = 1.0
 | 
			
		||||
grow_horizontal = 2
 | 
			
		||||
grow_vertical = 2
 | 
			
		||||
script = ExtResource("1_arass")
 | 
			
		||||
 | 
			
		||||
[node name="FinalScore" type="Label" parent="."]
 | 
			
		||||
layout_mode = 2
 | 
			
		||||
text = "Final Score
 | 
			
		||||
0"
 | 
			
		||||
label_settings = SubResource("LabelSettings_7upku")
 | 
			
		||||
horizontal_alignment = 1
 | 
			
		||||
 | 
			
		||||
[node name="Control" type="Control" parent="."]
 | 
			
		||||
layout_mode = 2
 | 
			
		||||
size_flags_vertical = 3
 | 
			
		||||
 | 
			
		||||
[node name="Restart" type="Button" parent="."]
 | 
			
		||||
layout_mode = 2
 | 
			
		||||
text = "Restart"
 | 
			
		||||
 | 
			
		||||
[node name="MainMenu" type="Button" parent="."]
 | 
			
		||||
layout_mode = 2
 | 
			
		||||
text = "Main Menu"
 | 
			
		||||
 | 
			
		||||
[connection signal="pressed" from="Restart" to="." method="restart"]
 | 
			
		||||
[connection signal="pressed" from="MainMenu" to="." method="back"]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,9 +1,10 @@
 | 
			
		|||
[gd_scene load_steps=5 format=3 uid="uid://bs6an72avch86"]
 | 
			
		||||
[gd_scene load_steps=6 format=3 uid="uid://bs6an72avch86"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://gkqku38yb2ng" path="res://Scenes/level.tscn" id="1_bo1nx"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://d0okbjqyaoe0w" path="res://Scenes/snake_part.tscn" id="2_8gbba"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://bldekmt1rakjl" path="res://Scenes/fruit.tscn" id="3_8gbba"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://mp03fsd536be" path="res://Scenes/score_display.tscn" id="4_jjvhh"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://bqg3ohs1gwofr" path="res://Scenes/game_over_menu.tscn" id="5_kry3j"]
 | 
			
		||||
 | 
			
		||||
[node name="Main" type="Node2D"]
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -41,5 +42,11 @@ offset_top = 42.0
 | 
			
		|||
offset_right = 156.0
 | 
			
		||||
offset_bottom = 197.0
 | 
			
		||||
 | 
			
		||||
[node name="GameOverMenu" parent="." instance=ExtResource("5_kry3j")]
 | 
			
		||||
offset_left = 340.0
 | 
			
		||||
offset_top = 173.0
 | 
			
		||||
offset_right = 812.0
 | 
			
		||||
offset_bottom = 475.0
 | 
			
		||||
 | 
			
		||||
[connection signal="area_exited" from="Level" to="SnakePart" method="_on_level_area_exited"]
 | 
			
		||||
[connection signal="timeout" from="RestartTimer" to="Timer" method="start" binds= [0.3]]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
extends VBoxContainer
 | 
			
		||||
 | 
			
		||||
var level : PackedScene = load("res://Scenes/main.tscn")
 | 
			
		||||
var main_menu : PackedScene = load("res://Scenes/main_menu.tscn")
 | 
			
		||||
@onready
 | 
			
		||||
var score_label : Label = $FinalScore
 | 
			
		||||
 | 
			
		||||
func update_score() -> void:
 | 
			
		||||
	score_label.text = "Final Score\n{score}".format(GameManager)
 | 
			
		||||
 | 
			
		||||
func restart():
 | 
			
		||||
	get_tree().change_scene_to_packed(level)
 | 
			
		||||
 | 
			
		||||
func back():
 | 
			
		||||
	get_tree().change_scene_to_packed(main_menu)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
uid://b8brifkk4knh8
 | 
			
		||||
| 
						 | 
				
			
			@ -31,6 +31,9 @@ var snake_part_obj : PackedScene = preload("res://Scenes/snake_part.tscn")
 | 
			
		|||
@onready
 | 
			
		||||
var timer_ref : Timer = $"../Timer"
 | 
			
		||||
 | 
			
		||||
@onready
 | 
			
		||||
var game_over_menu : VBoxContainer = get_tree().get_first_node_in_group("GameOverMenu")
 | 
			
		||||
 | 
			
		||||
var next_part : SnakePart = null
 | 
			
		||||
var skip_next_move_propagation : bool = false
 | 
			
		||||
var queued_growth : int = 0
 | 
			
		||||
| 
						 | 
				
			
			@ -227,6 +230,7 @@ func lose_game() -> void:
 | 
			
		|||
	print("Game lost")
 | 
			
		||||
	state = States.DEAD
 | 
			
		||||
	on_death.emit()
 | 
			
		||||
	game_over_menu.visible = true
 | 
			
		||||
 | 
			
		||||
func ouroboros() -> void:
 | 
			
		||||
	print("You have achieved the ouroboros!")
 | 
			
		||||
| 
						 | 
				
			
			@ -239,6 +243,7 @@ func ouroboros() -> void:
 | 
			
		|||
	# The head can spawn a new snake
 | 
			
		||||
	if part_type == PartTypes.HEAD:
 | 
			
		||||
		GameManager.score += 1
 | 
			
		||||
		remove_from_group("Head")
 | 
			
		||||
		get_tree().get_first_node_in_group("GameClockPause").start(1)
 | 
			
		||||
		get_tree().get_first_node_in_group("GameClock").stop()
 | 
			
		||||
		spawn_new_snake()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,10 @@ config/icon="res://icon.svg"
 | 
			
		|||
GridManager="*res://Scripts/grid_manager.gd"
 | 
			
		||||
GameManager="*res://Scripts/game_manager.gd"
 | 
			
		||||
 | 
			
		||||
[display]
 | 
			
		||||
 | 
			
		||||
window/stretch/mode="viewport"
 | 
			
		||||
 | 
			
		||||
[global_group]
 | 
			
		||||
 | 
			
		||||
Level=""
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue