1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- extends TileMap
- signal kace_broken
- signal kace_damaged
- signal has_moved
- enum Tile {
- BRICK = 0,
- }
- enum State {
- DONE,
- MOVING,
- }
- export (float) var moving_time = 1.0
- onready var life_container = $LifeContainer
- 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):
- 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 start_moving():
- current_row += 1
- tween.interpolate_property(self, "position", position,
- position + Vector2(0, cell_size.y), 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_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()
- func _on_MoveDown_tween_all_completed():
- finish_moving()
|