class_name TurnManager extends Node2D signal timer_timeout @export var turn_timer := 7.0 @export var tts_number_speed = 7.0 @export var tts_sentence_speed = 5.0 @export var tts_volume = 75 @export var tts_pitch = 1.0 @export var desk: Desk @export var captions: CaptionLabel var timer: Timer @export var audience_manager: AudienceManager var _voices := DisplayServer.tts_get_voices_for_language("en") func _ready() -> void: audience_manager.ask_accepted.connect(_handle_ask_accepted) desk.numpad.ask_proposed.connect(_speak_ask_proposed) timer = desk.numpad.reminder_timer timer.wait_time = turn_timer desk.numpad.reminder_timer.timeout.connect(_handle_reminder_timer_timeout) print('voices available: ', _voices.size()) func speak(text: String, speed := tts_number_speed) -> void: print('tts: ', text) captions.display_caption(text) if not _voices.is_empty(): DisplayServer.tts_speak(text, _voices[0], tts_volume, tts_pitch, speed) func _speak_ask_proposed(amount): var speech_variance = randf() if speech_variance < 0.45: speak('%s' % [amount]) elif speech_variance > 0.45 and speech_variance < 0.65: speak('Do I hear %s?' % [amount]) elif speech_variance > 0.65 and speech_variance < 0.8: speak('%s, anybody?' % [amount]) else: speak('Can I get a %s?' % [amount]) func _handle_ask_accepted(): timer.start() func _handle_reminder_timer_timeout() -> void: timer_timeout.emit() func end_turn() -> void: timer.stop() func restart_turn() -> void: timer.start()