72 lines
1.8 KiB
GDScript
72 lines
1.8 KiB
GDScript
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_number(text: String) -> void:
|
|
captions.display_caption(text)
|
|
if not _voices.is_empty():
|
|
DisplayServer.tts_speak(text, _voices[0], tts_volume, tts_pitch, _tts_number_speed)
|
|
|
|
|
|
func speak_sentence(text: String) -> void:
|
|
captions.display_caption(text)
|
|
if not _voices.is_empty():
|
|
DisplayServer.tts_speak(text, _voices[0], tts_volume, tts_pitch, _tts_sentence_speed)
|
|
|
|
|
|
func speak_bark(text: String, speed: float) -> void:
|
|
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_number('%s' % [amount])
|
|
elif speech_variance > 0.45 and speech_variance < 0.65:
|
|
speak_number('Do I hear %s?' % [amount])
|
|
elif speech_variance > 0.65 and speech_variance < 0.8:
|
|
speak_number('%s, anybody?' % [amount])
|
|
else:
|
|
speak_number('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()
|