|  | extends StaticBody2D
const OPENED_POSITION = Vector2(-47, 0)
const CLOSED_POSITION = Vector2(-6, 0)
const POSITION_DIFF = 41
export var color:Color
export var transition_rate = 0.75
var _control_state = 0 # 0 = No-OP | 1 = Open | 2 = Close
func _ready():
	set_color(color)
func set_color(c):
	$Doorway/Glow.pulse_color = c
func is_opening():
	if $Tween.is_active():
		return _control_state == 1
	return false
func is_closing():
	if $Tween.is_active():
		return _control_state == 2
	return false
func open():
	var t = transition_rate
	var cdiff = ($Doorway.position - OPENED_POSITION).length()
	if cdiff > 0.001:
		t = transition_rate * (cdiff / POSITION_DIFF)
	$Tween.interpolate_property($Doorway, "position", $Doorway.position, OPENED_POSITION, t, Tween.TRANS_LINEAR, Tween.EASE_IN)
	$Tween.start()
	$Audio.play()
	_control_state = 1
func close():
	var t = transition_rate
	var cdiff = ($Doorway.position - CLOSED_POSITION).length()
	if cdiff > 0.001:
		t = transition_rate * (cdiff / POSITION_DIFF)
	$Tween.interpolate_property($Doorway, "position", $Doorway.position, CLOSED_POSITION, t, Tween.TRANS_LINEAR, Tween.EASE_IN)
	$Tween.start()
	$Audio.play()
	_control_state = 2
func stop():
	$Tween.stop($Doorway, "position")
	$Audio.stop()
	_control_state = 0
 |