ld52_olive_harvest/ui/Hud.gd

80 lines
1.9 KiB
GDScript

extends Node2D
var coin = 0
export var postie_times = [0.5]
export var postie_length = .3
# Anything above 10 can't be rendered (for now?)
export var num_days = 5
export var next_level = ""
export var needed_coins = 50
export var slug_o_clock = 0.7
export var slug_chance_per_roll = 0.5
export var slug_roll_rate = 10
export var max_slugs_per_group = 3
func add_coin(amount: int):
coin += amount
$HudInner/Panel/LabelCoin.text = str(coin)
if coin >= needed_coins:
self._win()
var hp: int = 3
func _lose(due_to_slugs: bool):
get_tree().paused = true
$HudInner/GameOverDialogue.visible = true
$HudInner/GameOverDialogue/SlugSorrowLabel.visible = due_to_slugs
$HudInner/GameOverDialogue/NoTimeLabel.visible = not due_to_slugs
return
func _win():
var _r = get_tree().change_scene("res://levels/" + next_level + ".tscn")
func remove_hp():
hp -= 1
var hp_indicator = $HudInner/Panel/HpBar.get_child(hp)
hp_indicator.modulate.r = 0
if hp == 0:
# Lose game
self._lose(true)
return
func _ready():
# get a fresh seed for the PRNG
randomize()
$HudInner/GameOverDialogue.visible = false
if next_level == "":
printerr("No next level configured!")
var sch = $HudInner/Panel/Scheduler
sch.postie_times = postie_times
sch.days_on_this_level = num_days
sch.postie_length = postie_length
sch.slug_o_clock = slug_o_clock
sch.slug_chance_per_roll = slug_chance_per_roll
sch.slug_roll_rate = slug_roll_rate
sch.max_slugs_per_group = max_slugs_per_group
$HudInner/Panel/LabelCoinNeed.text = "need: " + str(needed_coins)
var w2d: World2D = get_world_2d()
Navigation2DServer.map_set_edge_connection_margin(w2d.navigation_map, 10.0)
# random place to put it, but needed to get our navigation working:
func _on_TryAgainButton_pressed() -> void:
# restart the level
print("reload ", get_tree().reload_current_scene())
get_tree().paused = false
func _on_Scheduler_ran_out_of_time() -> void:
self._lose(false)