80 lines
1.9 KiB
GDScript
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)
|