mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-22 15:38:14 +00:00
54 lines
1.1 KiB
GDScript
54 lines
1.1 KiB
GDScript
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()
|