66 lines
1.3 KiB
GDScript

extends Area2D
var opened = false
export var locked = false
export var security_level = 0
var player_level = -1
func lock():
locked = true
$Top/Color.modulate = Color.red
func unlock():
locked = false
set_color()
func set_color():
match(security_level):
0:
$Top/Color.modulate = Color.green
1:
$Top/Color.modulate = Color.blue
2:
$Top/Color.modulate = Color.yellow
3:
$Top/Color.modulate = Color.orange
4:
$Top/Color.modulate = Color.red
5:
$Top/Color.modulate = Color.purple
# Called when the node enters the scene tree for the first time.
func _ready():
connect("body_entered", self, "_on_body_enter")
connect("body_exited", self, "_on_body_exit")
if locked:
lock()
else:
unlock()
func _on_body_enter(body):
if body.has_method("add_interactable"):
if body.clearance_level >= security_level and not locked:
open()
func _on_body_exit(body):
if body.has_method("remove_interactable"):
close()
func open():
if not opened:
$AnimationPlayer.play("Open")
$AudioStreamPlayer2D.play()
$StaticBody2D.collision_layer = 0
$StaticBody2D.collision_mask = 0
opened = true
func close():
if opened:
$AnimationPlayer.play("Close")
$AudioStreamPlayer2D.play()
$StaticBody2D.collision_layer = 1
$StaticBody2D.collision_mask = 1
opened = false