| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- class_name TimedBooBlock
- extends Block
- var time := 3
- var active := false
- static var main_block = null
- static var can_tick := true:
- set(value):
- can_tick = value
- func _ready() -> void:
- main_block = self
- $Timer.start()
- func on_timeout() -> void:
- if can_tick == false or BooRaceHandler.countdown_active: return
- time = clamp(time - 1, 0, 3)
- if main_block == self:
- if time <= 0:
- get_tree().call_group("BooBlocks", "on_switch_hit")
- elif time < 3:
- AudioManager.play_global_sfx("timer_beep")
- if active:
- $Sprite.play("On" + str(time))
- else:
- $Sprite.play("Off" + str(time))
- func block_hit() -> void:
- if not can_hit:
- return
- can_hit = false
- get_tree().call_group("BooBlocks", "on_switch_hit")
- await get_tree().create_timer(0.25, false).timeout
- can_hit = true
- func _exit_tree() -> void:
- can_tick = true
- func on_switch_hit() -> void:
- AudioManager.play_global_sfx("switch")
- $Timer.stop()
- time = 4
- active = not active
- if active:
- $Sprite.play("BlueToRed")
- else:
- $Sprite.play("RedToBlue")
- await $Sprite.animation_finished
- $Timer.start()
- time = 4
- on_timeout()
|