Ouroboros/Scripts/score_display.gd

35 lines
1.0 KiB
GDScript

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