Brick.gd 663 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. class_name Brick
  2. extends StaticBody2D
  3. signal kace_broken
  4. signal kace_damaged
  5. signal life_changed
  6. signal impact
  7. const MAX_LIFE := 1999
  8. var life: int
  9. func setup(x: int, y: int, max_life: int) -> void:
  10. position.x = x * 40
  11. position.y = y * 20
  12. life = randi() % max_life + 1
  13. life = min(life, MAX_LIFE)
  14. emit_signal("life_changed", life)
  15. func damage() -> void:
  16. life = life - 1
  17. emit_signal("kace_damaged")
  18. if life < 1:
  19. blow_up()
  20. else:
  21. emit_signal("life_changed", life)
  22. func blow_up() -> void:
  23. emit_signal("kace_broken")
  24. queue_free()
  25. func impact(pos: Vector2) -> void:
  26. damage()
  27. var local_pos = to_local(pos)
  28. emit_signal("impact", local_pos)