Files
Kalulu/sources/minigames/base/kalulu_ingame.gd
T
Adrien Ufferte 2413f2a80e Kalulu animations
2026-02-13 14:17:46 +01:00

54 lines
1.3 KiB
GDScript

extends Control
signal speech_ended()
const SHOW_SOUND: AudioStreamMP3 = preload("res://assets/kalulu/audio/ui_button_on.mp3")
const HIDE_SOUND: AudioStreamMP3 = preload("res://assets/kalulu/audio/ui_button_off.mp3")
@onready var kalulu_sprite: AnimatedSprite2D = $KaluluSprite
@onready var audio_player: AudioStreamPlayer = $AudioStreamPlayer
func _ready() -> void:
hide()
func play_kalulu_speech(speech: AudioStream, show_animation: bool = true, hide_animation: bool = true) -> void:
var ind: int = AudioServer.get_bus_index("Music")
var music_volume: float = AudioServer.get_bus_volume_db(ind)
AudioServer.set_bus_volume_db(ind, -80.0)
if show_animation:
show()
audio_player.stream = SHOW_SOUND
audio_player.play()
kalulu_sprite.play("Show")
await kalulu_sprite.animation_finished
if speech:
kalulu_sprite.play("Talk")
audio_player.stream = speech
audio_player.play()
await audio_player.finished
else:
Log.warn("Kalulu: Speech not found")
if hide_animation:
audio_player.stream = HIDE_SOUND
audio_player.play()
kalulu_sprite.play("Hide")
await kalulu_sprite.animation_finished
hide()
AudioServer.set_bus_volume_db(ind, music_volume)
speech_ended.emit()
func _on_pass_button_pressed() -> void:
if audio_player.playing:
audio_player.stop()
audio_player.finished.emit()