From 0a1063ad200e2a3238e945c66b3ab68b5c040971 Mon Sep 17 00:00:00 2001 From: Alexander Date: Thu, 11 Nov 2021 00:44:01 +0300 Subject: [PATCH] [stable] random phrase stub --- README.md | 1 + ghost.yaml | 5 ++++- main.py | 5 +++-- random_dialogue_plugin.py | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 random_dialogue_plugin.py diff --git a/README.md b/README.md index a535a2f..7ed5781 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ 7. Двойной клик по Катре -- диалог с пунктами меню (которые собирается на основе плагинов) 8. + В диалоге текст показывается с анимацией посимвольно 9. + Анимация (мигание) +10. Клик по диалогу закрывает его Сделать систему плагинов 1. + Какой-нибудь стандартный формат для API diff --git a/ghost.yaml b/ghost.yaml index e1ee1af..f5dc4a2 100644 --- a/ghost.yaml +++ b/ghost.yaml @@ -83,6 +83,9 @@ timings: change_random_expression: min: 30000 max: 120000 + random_phrase: + min: 300000 + max: 600000 ghost: width: 450 @@ -105,4 +108,4 @@ dialogue: font: Consolas size: 15 speed: 20 - wait: 5000 + wait: 30000 diff --git a/main.py b/main.py index 0b544c8..1fbff15 100644 --- a/main.py +++ b/main.py @@ -8,6 +8,7 @@ from expression_plugin import ExpressionPlugin from dialogue_plugin import DialoguePlugin from hour_dialogue_plugin import HourDialoguePlugin +from random_dialogue_plugin import RandomDialoguePlugin class App(tk.Tk): @@ -35,11 +36,11 @@ def __init__(self, *args, **kwargs): self.bp = BlinkPlugin(self, 'ghost.yaml') self.dp = DialoguePlugin(self, 'ghost.yaml') self.hdp = HourDialoguePlugin(self, 'ghost.yaml') + self.rdp = RandomDialoguePlugin(self, 'ghost.yaml') self.menu = tk.Menu(self, tearoff=0) self.menu.add_command(label="Next expression", command=self.ep.random_tick) - self.menu.add_command(label="Show dialogue", command=self.dp._render_text_init) - self.menu.add_command(label="Hide dialogue", command=self.dp._hide_all) + self.menu.add_command(label="Show dialogue", command=self.rdp._say) self.menu.add_checkbutton(label="add_checkbutton") self.menu.add_separator() self.menu.add_command(label="Exit", command=lambda: self.menu_callback("exit")) diff --git a/random_dialogue_plugin.py b/random_dialogue_plugin.py new file mode 100644 index 0000000..994db79 --- /dev/null +++ b/random_dialogue_plugin.py @@ -0,0 +1,39 @@ +import yaml +import logging +from datetime import datetime +import random + + +class RandomDialoguePlugin: + def __init__(self, window, _ghostconfig): + self.w = window + self.blinked = False + + with open(_ghostconfig) as f: + self._config = yaml.safe_load(f.read()) + + self._elapsed_seconds = 0 + self._random_min = self._config['timings']['random_phrase']['min'] + self._random_max = self._config['timings']['random_phrase']['max'] + self._next_random = random.randint(self._random_min, self._random_max) + + self._phrases = [ + "Привет! Ты пока не добавил ни одной толковой фразы, но я верю в тебя!" + ] + + #window.app.after(3000, self.tick) + + def tick(self): + now = datetime.now() + if self._elapsed_seconds > self._next_random: + logging.debug("random dialogue activated!") + self._elapsed_seconds = 0 + self._say() + self.w.app.after(3000, self.tick) + else: + self._elapsed_seconds += 3 + self.w.app.after(3000, self.tick) + logging.debug("random dialogue " + str(self._elapsed_seconds)) + + def _say(self): + self.w.dialogue_queue.put(random.choice(self._phrases), block=False, timeout=None)