netmasked/scripts/mask_bar.gd

30 lines
812 B
GDScript

extends TextureProgressBar
@export var threshold: float = 0.5
@export var shake_intensity: float = 5.0
var original_x: float
func _ready() -> void:
EventBus.mask_time_changed.connect(_on_time_changed)
original_x = position.x
func _process(_delta: float) -> void:
if value / max_value <= threshold:
apply_effects()
else:
position.x = original_x
modulate = Color.WHITE
func _on_time_changed(new: float) -> void:
value = new
func apply_effects() -> void:
var danger_factor = 1.0 - (value / (max_value * threshold))
danger_factor = clamp(danger_factor, 0.0, 1.0)
var flash = (sin(Time.get_ticks_msec() * 0.02) + 1.0) / 2.0
modulate = Color.WHITE * (1 + flash * danger_factor)
var shake = sin(Time.get_ticks_msec() * 0.05) * shake_intensity * danger_factor
position.x = original_x + shake