extends Node2D signal kace_broken signal kace_damaged signal has_moved enum State { DONE, MOVING, } const Brick = preload("res://component/entity/brick/Brick.tscn") const BRICK_SIZE = 20 export (float) var moving_time = 1.0 onready var tween = $MoveDown var current_state = State.DONE var current_row = 1 func generate_and_move(): generate_row() current_state = State.MOVING start_moving() func generate_row(): for x in range(10): generate_cell(x, -current_row) func generate_cell(x, y): if randi() % 2 : # 50% of generation build_brick(x, y) func build_brick(x, y): var brick = Brick.instance() brick.setup(x, y, current_row * current_row) brick.connect("kace_broken", self, "_on_Brick_kace_broken") brick.connect("kace_damaged", self, "_on_Brick_kace_damaged") add_child(brick) func start_moving(): current_row += 1 tween.interpolate_property(self, "position", position, position + Vector2(0, BRICK_SIZE), moving_time, Tween.TRANS_QUART, Tween.EASE_IN_OUT) tween.start() func finish_moving(): current_state = State.DONE emit_signal("has_moved") func _ready(): randomize() generate_and_move() func _on_Launcher_is_full(): generate_and_move() func _on_MoveDown_tween_all_completed(): finish_moving() func _on_Brick_kace_broken(): emit_signal("kace_broken") func _on_Brick_kace_damaged(): emit_signal("kace_damaged")