BooOnOffBlock.gd 830 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. extends StaticBody2D
  2. @export var active := false
  3. @onready var start_active = not active
  4. var player_in_area := false
  5. var player_stuck := false
  6. var awaiting_exit := false
  7. @export var hurtbox: CollisionShape2D = null
  8. func on_switch_hit() -> void:
  9. player_stuck = false
  10. active = not active
  11. if player_in_area:
  12. player_stuck = true
  13. return
  14. update()
  15. func update() -> void:
  16. if active:
  17. $Sprite.play("On")
  18. else:
  19. $Sprite.play("Off")
  20. $Collision.set_deferred("disabled", not active)
  21. if hurtbox != null:
  22. hurtbox.set_deferred("disabled", not active)
  23. func damage_player(player: Player) -> void:
  24. player.damage()
  25. func on_player_entered(_player: Player) -> void:
  26. player_in_area = true
  27. func on_player_exited(_player: Player) -> void:
  28. player_in_area = false
  29. if player_stuck and active:
  30. player_stuck = false
  31. update()