|
@@ -1,12 +1,9 @@
|
|
|
-extends TileMap
|
|
|
+extends Node2D
|
|
|
|
|
|
signal kace_broken
|
|
|
signal kace_damaged
|
|
|
signal has_moved
|
|
|
|
|
|
-enum Tile {
|
|
|
- BRICK = 0,
|
|
|
-}
|
|
|
|
|
|
enum State {
|
|
|
DONE,
|
|
@@ -14,10 +11,14 @@ enum State {
|
|
|
}
|
|
|
|
|
|
|
|
|
+const Brick = preload("res://component/entity/brick/Brick.tscn")
|
|
|
+
|
|
|
+const BRICK_SIZE = 20
|
|
|
+
|
|
|
+
|
|
|
export (float) var moving_time = 1.0
|
|
|
|
|
|
|
|
|
-onready var life_container = $LifeContainer
|
|
|
onready var tween = $MoveDown
|
|
|
|
|
|
|
|
@@ -43,27 +44,17 @@ func generate_cell(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")
|
|
|
+ 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, cell_size.y), moving_time,
|
|
|
+ position + Vector2(0, BRICK_SIZE), moving_time,
|
|
|
Tween.TRANS_QUART, Tween.EASE_IN_OUT)
|
|
|
tween.start()
|
|
|
|
|
@@ -78,15 +69,17 @@ func _ready():
|
|
|
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()
|
|
|
+
|
|
|
+
|
|
|
+func _on_Brick_kace_broken():
|
|
|
+ emit_signal("kace_broken")
|
|
|
+
|
|
|
+
|
|
|
+func _on_Brick_kace_damaged():
|
|
|
+ emit_signal("kace_damaged")
|