Adds score tracking to level
parent
d405ab5846
commit
f1054637ed
|
@ -1,8 +1,9 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://bs6an72avch86"]
|
||||
[gd_scene load_steps=5 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"]
|
||||
|
||||
[node name="Main" type="Node2D"]
|
||||
|
||||
|
@ -34,5 +35,11 @@ position = Vector2(707, 325)
|
|||
|
||||
[node name="RestartTimer" type="Timer" parent="." groups=["GameClockPause"]]
|
||||
|
||||
[node name="ScoreDisplay" parent="." instance=ExtResource("4_jjvhh")]
|
||||
offset_left = 4.0
|
||||
offset_top = 42.0
|
||||
offset_right = 156.0
|
||||
offset_bottom = 197.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,35 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://mp03fsd536be"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bwiflwp3hufyu" path="res://Scripts/score_display.gd" id="1_abl27"]
|
||||
|
||||
[node name="ScoreDisplay" type="VBoxContainer"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_abl27")
|
||||
|
||||
[node name="ScoreLabel" type="Label" parent="."]
|
||||
layout_mode = 2
|
||||
text = "Score
|
||||
0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="LengthLabel" type="Label" parent="."]
|
||||
layout_mode = 2
|
||||
text = "Length
|
||||
3"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="PendingLengthLabel" type="Label" parent="."]
|
||||
layout_mode = 2
|
||||
text = "Length
|
||||
3"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="OuroborosPossibleLabel" type="Label" parent="."]
|
||||
layout_mode = 2
|
||||
text = "Ouroboros Possible
|
||||
No"
|
||||
horizontal_alignment = 1
|
|
@ -0,0 +1,3 @@
|
|||
extends Node
|
||||
|
||||
var score : int = 0
|
|
@ -0,0 +1 @@
|
|||
uid://ce6w51wxkuq4l
|
|
@ -0,0 +1,34 @@
|
|||
extends VBoxContainer
|
||||
|
||||
@onready
|
||||
var score_label : Label = $ScoreLabel
|
||||
@onready
|
||||
var length_label : Label = $LengthLabel
|
||||
@onready
|
||||
var pending_length_label : Label = $PendingLengthLabel
|
||||
@onready
|
||||
var ouroboros_label : Label = $OuroborosPossibleLabel
|
||||
|
||||
var ouroboros_possible : bool = false
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
score_label.text = "Score\n{score}".format(GameManager)
|
||||
length_label.text = "Length\n{0}".format([get_snake_length()])
|
||||
var head : Node = get_tree().get_first_node_in_group("Head")
|
||||
if head is SnakePart:
|
||||
pending_length_label.text = "Eventual Length\n{0}".format([get_snake_length() + head.queued_growth])
|
||||
if ouroboros_possible:
|
||||
ouroboros_label.text = "Ouroboros Possible\nYes"
|
||||
else:
|
||||
ouroboros_label.text = "Ouroboros Possible\nNo"
|
||||
|
||||
func get_snake_length() -> int:
|
||||
var length : int = 0
|
||||
var obstacles : Array = get_tree().get_nodes_in_group("BlocksSpawn")
|
||||
for obstacle in obstacles:
|
||||
if obstacle is SnakePart:
|
||||
if obstacle.state == obstacle.States.ALIVE:
|
||||
length += 1
|
||||
|
||||
ouroboros_possible = !length % 2
|
||||
return length
|
|
@ -0,0 +1 @@
|
|||
uid://bwiflwp3hufyu
|
|
@ -33,7 +33,7 @@ var timer_ref : Timer = $"../Timer"
|
|||
|
||||
var next_part : SnakePart = null
|
||||
var skip_next_move_propagation : bool = false
|
||||
var queued_growth : int = 21
|
||||
var queued_growth : int = 0
|
||||
|
||||
signal on_movement(new_dir)
|
||||
signal on_death
|
||||
|
@ -238,6 +238,7 @@ func ouroboros() -> void:
|
|||
|
||||
# The head can spawn a new snake
|
||||
if part_type == PartTypes.HEAD:
|
||||
GameManager.score += 1
|
||||
get_tree().get_first_node_in_group("GameClockPause").start(1)
|
||||
get_tree().get_first_node_in_group("GameClock").stop()
|
||||
spawn_new_snake()
|
||||
|
|
|
@ -17,6 +17,7 @@ config/icon="res://icon.svg"
|
|||
[autoload]
|
||||
|
||||
GridManager="*res://Scripts/grid_manager.gd"
|
||||
GameManager="*res://Scripts/game_manager.gd"
|
||||
|
||||
[global_group]
|
||||
|
||||
|
|
Loading…
Reference in New Issue