123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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")
|