game over screen and stuff

This commit is contained in:
siembra
2026-02-14 15:35:27 -05:00
parent 3fc8153e9e
commit 2812c4211a
5 changed files with 151 additions and 19 deletions

View File

@@ -11,7 +11,6 @@ var word_set_array
var alphabet = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N",
"O","P","Q","R","S","T","U","V","W","X","Y","Z"]
var comets = []
var comet_speed = 150
var active
# display
@@ -19,15 +18,21 @@ var viewport_size
var scale_factor_x
var scale_factor_y
# numbers
# difficulty
var max_delay = 2
var min_delay = .5
var delay = max_delay
var comet_speed = 250
# numbers
var spawn_timer = 0
var max_character_count = 0
# stats
var health = 100
var hit_count = 0.0
var miss_count = 0.0
var comets_processed = 0.0
var total_comets = 0.0
# ui init
@@ -80,18 +85,23 @@ func _ready() -> void:
# Runs every frame
func _process(delta: float) -> void:
if active:
if health <= 0:
game_over()
spawn_timer += delta
hp_label.text = "HP: " + str(health)
miss_label.text = "X: " + str(miss_count)
if total_comets > 0:
var accper = (total_comets - miss_count)/(total_comets)*100
acc_label.text = "ACC: " + str(snapped(accper, .02)) + "%"
if spawn_timer >= delay:
spawn_timer = 0
spawn_word()
func calculate_accuracy():
var accper = (hit_count)/(comets_processed)*100
acc_label.text = "ACC: " + str(snapped(accper, .02)) + "%"
func spawn_word():
var scan_commet = comet_source.instantiate()
var comet_width = scan_commet.get_node("Sprite").sprite_frames.get_frame_texture("comet",0).get_width()
@@ -100,24 +110,35 @@ func spawn_word():
var offset = comet_width
scan_commet.queue_free()
for char in new_word:
if char != " ":
for chara in new_word:
if chara != " ":
var new_commet = comet_source.instantiate()
total_comets += 1
new_commet.position = Vector2(offset,-128)
new_commet.get_node("Sprite").get_node("Label").text = char
new_commet.get_node("Sprite").get_node("Label").text = chara
new_commet.speed = comet_speed
add_child(new_commet)
comets.append(new_commet)
offset += dist
delay = randf_range(0.75,max_delay)
delay = randf_range(min_delay,max_delay)
func take_damage():
pass
func miss(comet):
$Miss.play()
health -= comet.damage
comets_processed += 1
miss_count += 1.0
calculate_accuracy()
comets.erase(comet)
comet.queue_free()
func game_over():
pass
active = false
$BackgroundMusic.stop()
self.get_node("OnTop").get_node("GameOver").visible = true
$Lose.play()
await $Lose.finished
$Sad.play()
func _input(event):
if event is InputEventKey and event.pressed:
@@ -126,6 +147,9 @@ func _input(event):
if len(comets) > 0:
var comet = comets[0]
if event.as_text() == comet.get_node("Sprite").get_node("Label").text:
comets_processed += 1
hit_count += 1
calculate_accuracy()
comet.self_active = false
var laser = Line2D.new()
laser.default_color = Color.RED