# wcs/games/voice.py
"""Who reads the Millionaire moderator aloud: the configured TTS provider, or nobody (offline demo).

The game controller talks to a voice object only, so the demo needs no TTS calls and no `if demo` branches.
"""
from wcs.games import millionaire_tts


class TtsVoice:
    """The TTS provider chosen in the addon settings (OpenAI / ElevenLabs)."""

    def welcome(self, welcome_text, rules_text=''):
        millionaire_tts.tts_welcome(welcome_text, rules_text, owner=self)

    def question(self, moderator_intro, question_text, options):
        millionaire_tts.tts_question(moderator_intro, question_text, options, owner=self)

    def feedback(self, result_text, transition_text, explanation=''):
        millionaire_tts.tts_feedback(result_text, transition_text, explanation, owner=self)

    def wait(self, timeout):
        millionaire_tts.wait_for_tts_completion(timeout=timeout)

    def speaks_feedback(self):
        return millionaire_tts.feedback_enabled()

    def stop(self):
        millionaire_tts.stop_tts(owner=self)


class SilentVoice:
    """No audio: every call returns at once."""

    def welcome(self, welcome_text, rules_text=''):
        pass

    def question(self, moderator_intro, question_text, options):
        pass

    def feedback(self, result_text, transition_text, explanation=''):
        pass

    def wait(self, timeout):
        pass

    def speaks_feedback(self):
        return False

    def stop(self):
        pass


