Files
Dunkanoid/Pipes.gd

82 lines
2.7 KiB
GDScript

extends Node2D
class_name Pipes
signal door_opened(door : int)
signal door_closed(door : int)
enum {
TOP_LEFT,
TOP_RIGHT,
BOTTOM_LEFT,
BOTTOM_RIGHT
}
func open_door(door : int) -> void:
match door:
TOP_LEFT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($TopDoor1L, "position", $TopDoor1L.get_meta("open"), 1)
tween.tween_property($TopDoor1R, "position", $TopDoor1R.get_meta("open"), 1)
tween.finished.connect(_top_left_opened)
TOP_RIGHT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($TopDoor2L, "position", $TopDoor2L.get_meta("open"), 1)
tween.tween_property($TopDoor2R, "position", $TopDoor2R.get_meta("open"), 1)
tween.finished.connect(_top_right_opened)
BOTTOM_LEFT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($LeftDoor, "position", $LeftDoor.get_meta("open"), 1)
tween.finished.connect(_bottom_left_opened)
BOTTOM_RIGHT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($RightDoor, "position", $RightDoor.get_meta("open"), 1)
tween.finished.connect(_bottom_right_opened)
func _top_left_opened() -> void:
door_opened.emit(TOP_LEFT)
func _top_right_opened() -> void:
door_opened.emit(TOP_RIGHT)
func _bottom_left_opened() -> void:
door_opened.emit(BOTTOM_LEFT)
func _bottom_right_opened() -> void:
door_opened.emit(BOTTOM_LEFT)
func close_door(door : int) -> void:
match door:
TOP_LEFT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($TopDoor1L, "position", $TopDoor1L.get_meta("closed"), 1)
tween.tween_property($TopDoor1R, "position", $TopDoor1R.get_meta("closed"), 1)
tween.finished.connect(_top_left_closed)
TOP_RIGHT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($TopDoor2L, "position", $TopDoor2L.get_meta("closed"), 1)
tween.tween_property($TopDoor2R, "position", $TopDoor2R.get_meta("closed"), 1)
tween.finished.connect(_top_right_closed)
BOTTOM_LEFT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($LeftDoor, "position", $LeftDoor.get_meta("closed"), 1)
tween.finished.connect(_bottom_left_closed)
BOTTOM_RIGHT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($RightDoor, "position", $RightDoor.get_meta("closed"), 1)
tween.finished.connect(_bottom_right_closed)
func _top_left_closed() -> void:
door_closed.emit(TOP_LEFT)
func _top_right_closed() -> void:
door_closed.emit(TOP_RIGHT)
func _bottom_left_closed() -> void:
door_closed.emit(BOTTOM_LEFT)
func _bottom_right_closed() -> void:
door_closed.emit(BOTTOM_LEFT)