ld58-collector/turn_manager.gd

56 lines
1.6 KiB
GDScript

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()