2025-03-21 17:24:21 -04:00
|
|
|
extends Node3D
|
|
|
|
|
|
|
|
static var FUSE_SOUND:AudioStream = preload("res://assets/sounds/fuse.ogg")
|
|
|
|
static var EXPLOSION_SOUND:AudioStream = preload("res://assets/sounds/explode.wav")
|
2025-03-22 20:05:25 -04:00
|
|
|
static var JITTER_AMOUNT:int = 10
|
|
|
|
static var ENFORCEMENT_DEVICE_JITTER_AMOUNT:float = 0.005
|
2025-03-21 17:24:21 -04:00
|
|
|
|
|
|
|
var grow_explosion:bool = false
|
2025-03-22 20:05:25 -04:00
|
|
|
var original_position:Vector3
|
2025-03-21 17:24:21 -04:00
|
|
|
|
|
|
|
func reset_rule_enforcement_device() -> void:
|
|
|
|
'''
|
|
|
|
Start the fuse sound
|
|
|
|
'''
|
2025-03-22 20:05:25 -04:00
|
|
|
|
2025-03-21 17:24:21 -04:00
|
|
|
%SOUNDS.stream = FUSE_SOUND
|
|
|
|
%SOUNDS.volume_db = -10
|
|
|
|
%SOUNDS.play()
|
|
|
|
visible = true
|
|
|
|
%EXPLOSION.visible = false
|
|
|
|
grow_explosion = false
|
|
|
|
%EXPLOSION.scale = Vector3(0.355,0.355,0.355)
|
|
|
|
|
|
|
|
func explode() -> void:
|
|
|
|
'''
|
|
|
|
Make the rule enforcement device go boom
|
|
|
|
'''
|
|
|
|
|
|
|
|
%SOUNDS.stream = EXPLOSION_SOUND
|
|
|
|
%SOUNDS.volume_db = 0
|
|
|
|
%SOUNDS.play()
|
|
|
|
grow_explosion = true
|
|
|
|
%EXPLOSION.visible = true
|
|
|
|
|
|
|
|
func _ready() -> void:
|
2025-03-22 20:05:25 -04:00
|
|
|
original_position = position
|
2025-03-21 17:24:21 -04:00
|
|
|
reset_rule_enforcement_device()
|
|
|
|
|
|
|
|
func _process(_delta: float) -> void:
|
|
|
|
%TIME_LEFT.text = ("%.02f" % GLOBALVARS.seconds_left).replace(".",":")
|
2025-03-22 20:05:25 -04:00
|
|
|
position = original_position + Vector3(
|
|
|
|
randf_range(-ENFORCEMENT_DEVICE_JITTER_AMOUNT,ENFORCEMENT_DEVICE_JITTER_AMOUNT),
|
|
|
|
randf_range(-ENFORCEMENT_DEVICE_JITTER_AMOUNT,ENFORCEMENT_DEVICE_JITTER_AMOUNT),
|
|
|
|
randf_range(-ENFORCEMENT_DEVICE_JITTER_AMOUNT,ENFORCEMENT_DEVICE_JITTER_AMOUNT)
|
|
|
|
)
|
2025-03-21 17:24:21 -04:00
|
|
|
if grow_explosion and %EXPLOSION.scale < Vector3(3,3,3):
|
2025-03-22 20:05:25 -04:00
|
|
|
%EXPLOSION.scale += Vector3(0.25,0.25,0.25)
|
|
|
|
%EXPLOSION.rotation_degrees += Vector3(
|
|
|
|
randf_range(-JITTER_AMOUNT,JITTER_AMOUNT),
|
|
|
|
randf_range(-JITTER_AMOUNT,JITTER_AMOUNT),
|
|
|
|
randf_range(-JITTER_AMOUNT,JITTER_AMOUNT)
|
|
|
|
)
|
2025-03-21 17:24:21 -04:00
|
|
|
elif grow_explosion:
|
|
|
|
%EXPLOSION.visible = false
|
|
|
|
visible = false
|