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