extends TileMap signal kace_broken signal kace_damaged signal has_moved enum Tile { BRICK = 0, } enum State { DONE, MOVING, } onready var life_container = $LifeContainer var current_state = State.DONE var current_row = 1 func generate_and_move(): generate_row() current_state = State.MOVING move() current_state = State.DONE 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): set_cell(x, y, Tile.BRICK) life_container.spawn_brick(x, y, current_row * current_row) func damage_cell(tile_pos : Vector2): var cell_id = get_cellv(tile_pos) if cell_id != TileMap.INVALID_CELL and cell_id == Tile.BRICK: emit_signal("kace_damaged") if life_container.may_die_by_taking_this(tile_pos, 1): break_cell(tile_pos) func break_cell(tile_pos): set_cellv(tile_pos, -1) emit_signal("kace_broken") func move(): current_row += 1 position.y += cell_size.y func _ready(): randomize() generate_and_move() func _on_Ball_kace_contact(contact_pos:Vector2): var local_position = to_local(contact_pos) var tile_pos = world_to_map(local_position) damage_cell(tile_pos) func _on_Launcher_is_full(): generate_and_move() emit_signal("has_moved")