Files
owniverse/ui/audio/owniverse_effects_player.gd
T

32 lines
851 B
GDScript

class_name OwniverseEffectsPlayer
extends AudioStreamPlayer
const EFFECT_COOLDOWN_MSEC := 2000
var enabled: bool = true
var _effects: Dictionary = OwniverseAudioLoader.get_effects()
var _last_played_msec: Dictionary = {}
func set_enabled(value: bool) -> void:
enabled = value
stream_paused = not enabled
func play_effect(effect_id: String) -> bool:
if not enabled:
return false
if not _effects.has(effect_id):
push_warning("Unknown sound effect: " + effect_id)
return false
if playing and stream == _effects[effect_id]:
return false
var now: int = Time.get_ticks_msec()
if now - int(_last_played_msec.get(effect_id, -EFFECT_COOLDOWN_MSEC)) < EFFECT_COOLDOWN_MSEC:
return false
stream = _effects[effect_id]
play()
_last_played_msec[effect_id] = now
return true