class_name TurnManager extends Node2D @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 game_manager: GameManager @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 turn_timer_animation(): pass func speak(text: String) -> void: print('tts: ', text) captions.display_caption(text) if not _voices.is_empty(): DisplayServer.tts_speak(text, _voices[0], tts_volume, tts_pitch, tts_number_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() turn_timer_animation() func _handle_reminder_timer_timeout() -> void: if game_manager.state == game_manager.bidding_state.ASKING or game_manager.state == game_manager.bidding_state.BID: game_manager.state = game_manager.bidding_state.CLOSED game_manager.destroy_painting()