# wcs/games/content/demo.py
"""Offline content source of the Millionaire game: plays one authored demo title (see content/__init__)."""
import time

from wcs.games.demo import moderator
from wcs.games.voice import SilentVoice

LETTERS = ('A', 'B', 'C', 'D')


class DemoContent:
    name = 'demo'
    badge = 'OFFLINE DEMO: otázky jsou předpřipravené, bez AI'
    rules_note = 'Demo: otázky jsou předpřipravené, bez AI'

    def __init__(self, title, pace=1.0):
        """title: a wcs.games.demo.catalog.DemoTitle; pace: scales the short moderator pauses (0: none, for tests)."""
        self.title = title
        self.tagline = title.tagline
        self.win_line = title.win_line
        self.pace = pace
        self.voice = SilentVoice()
        self._by_text = {q.text: q for q in title.questions}

    def begin(self):
        pass

    def welcome(self):
        self._pause(0.8)
        return {'moderator_welcome': moderator.welcome(self.title), 'rules_summary': moderator.rules(self.title)}

    def question(self, round_num):
        item = self.title.questions[round_num - 1]
        return {'moderator_intro': moderator.intro(self.title, round_num),
                'question': item.text,
                'options': dict(zip(LETTERS, item.options)),
                'correct': LETTERS[item.correct],
                'explanation': item.explanation}

    def feedback(self, round_num, answer_index, is_correct, question):
        self._pause(0.4)
        return {'result_announcement': moderator.result(self.title, round_num, is_correct),
                'transition_text': moderator.transition(self.title, round_num, is_correct)}

    def tip(self, question):
        self._pause(1.2)
        return self._by_text[question['question']].tip

    def _pause(self, seconds):
        if self.pace:
            time.sleep(seconds * self.pace)
