43 lines
1.3 KiB
GDScript
43 lines
1.3 KiB
GDScript
extends Node2D
|
|
|
|
export var cost: int = 0
|
|
|
|
var open: bool = false
|
|
|
|
onready var label: Label = $Label
|
|
onready var sprite: Sprite = $Sprite
|
|
onready var closed_collision: CollisionShape2D = $"%ClosedCollision"
|
|
|
|
func _ready():
|
|
label.text = "¶" + str(cost)
|
|
|
|
func _physics_process(delta):
|
|
if Game.keys >= cost and not open:
|
|
open = true
|
|
label.visible = false
|
|
var tween = create_tween()
|
|
tween.tween_property(sprite, "frame", 3, 0.25)
|
|
tween.tween_property(closed_collision, "disabled", true, 0.0)
|
|
|
|
func _on_Area2D_area_entered(area):
|
|
if area.is_in_group("player_hitbox"):
|
|
Game.still_playing = false
|
|
var player = area.get_parent()
|
|
player.state_chart.send_event("start_teleport")
|
|
player.connect("teleport_finished", self, "_on_player_teleport_finished")
|
|
#Play level complete jingle
|
|
Audio.play_music(Audio.a_victory)
|
|
#Display 3D Text
|
|
var hud = get_tree().get_nodes_in_group("hud").pop_back()
|
|
if hud:
|
|
var text = preload("res://objects/hud/3d_text.tscn").instance()
|
|
text.anim = "level complete"
|
|
yield(get_tree(), "idle_frame")
|
|
hud.add_child(text)
|
|
|
|
func _on_player_teleport_finished():
|
|
Game.tally_scores()
|
|
yield(get_tree().create_timer(4.0, false), "timeout")
|
|
Fade.fade_out(0.4)
|
|
yield(Fade, "fade_finished")
|
|
SceneManager.change_scene(preload("res://menus/results.tscn").instance())
|