Доделать GUI
- +Чтобы Катру можно было перемещать по левому клику
- +Чтобы правый клик открывал бы меню (как делать коллбеки на эти пункты?)
- Собирать меню (системное/дебаговое) по правому клику на основе плагинов и коллбеков
- +Сделать базовое окно диалога для текста
- Сделать окно диалога (которые собирается на основе плагинов), он будет единый для диалога по дабл-клик
- То есть Катра может начинать диалоги с вариантами ответов и ветвлением
- Двойной клик по Катре -- диалог с пунктами меню (которые собирается на основе плагинов)
- +В диалоге текст показывается с анимацией посимвольно
- +Анимация (мигание)
- Клик по диалогу закрывает его
Сделать систему плагинов
- +Какой-нибудь стандартный формат для API
- +Плагины на питоне, каждый цикл пробегать по всем методам on_tick в плагинах
- Сделать on_boot/on_close, который исполняется один раз. on_boot это не init, в init техника, в on_boot поведение - не забывать ожидание после on_close
- +Может использовать какой-то сторонний планировщик?
Сделать поведение
- +Движок для наложения слоёв
- +Слои накладываются с анимацией (периодичность)
- +Наложенные слои -- теггировать по именам (файл с конфигурацией эмоций)
- Сделать файл с рандомными фразами
- +делать перенос строки
- Сделать рандомными части диалогов. То есть строчка одна, но она может комбинироваться.
- +"Сейчас %(hour24), %(username)." - говорить сколько сейчас время
- "Очень важно поддерживать режим." -- разные фразы в зависимости от времени (реализовать в hour_dialogue_plugin)
- normalboottalk -- приветствовать в зависимости от времени дня, прощаться - желать хороших снов
- +Убрать (пока нет системы настроения) mouth с тэгом bad из рандомной ротации
- Ты её гладишь (средняя кнопка мыши, без разницы пока где) -- она улыбается и смотрит на тебя
- Несколько вариантов часового диалога
Общий шаблонизатор строк
- Все строки в одном файле с айдишниками
- Сделать возможность внедрять теги с эмоциями (forced) и %username, %hour24 переносом строки
- У каждой строки несколько вариантов
- У каждого варианта есть опциональные рандомно включаемые варианты
- Шаблонизатор генерирует как эмоцию изменить, что писать текстом и что отправлять в tts
Технические штуки
- +Сделать папку с плагинами
- Сделать наследование плагинов (конфиг, self.w, tick с зацикленностью)
- +Сделать динамическую инициализацию, но писать
__all__
= [], чтобы можно было задавать порядок без заморочек с зависимостями -- к чёрту порядок, пусть через очереди общаются - Чтобы можно было обращаться к экземпляру класса плагина напрямую (ссылка на экземляр где-то хранилась)
- Глобальное хранилище состояния -- там будет текущий expr, forced expr, desired expr
- +наверное плагины говорения будут через очередь передавать диалоги на плагин отображения, очередь тоже в global state
- Придётся всё-таки делать динамический discovery слоёв, но не линковать их динамически, а указывать фрагмент имени файла (имя слоя) вместо файла
- По поводу pdn -- сделать так чтобы у каждой группы было обязательно по одному элементу всегда, и они бы не конфликтовали (каждый элемент стыковывался бы с любыми из другой группы)
- +Синтез голоса
- Помодоро (все функции eyes relax)
- Чтобы она говорила идти тренироваться, спрашивала результаты и вела дневник
- Чтобы можно было рассказать ей про свой режим, и она бы помогала поддерживать его
- Чтобы она что-то делала (читала, следила за тобой)
- чтобы она периодически спрашивала настроение и выбирала соотв фразы -- поддерживающие, мотивирующие
- Чтобы у неё было своё настроение (выбор эмоции был бы не случайным), и ты бы его типа менял своими действиями
- Когда наводишь на неё мышку, она в любом случае начинает смотреть на тебя и улыбаться, типа ты можешь захватить внимание
- Система настроения -- можно повышать например "гладя по голове" (средняя кнопка мыши), то есть это уже регионы тела как в shimeji
- Портит настроение если что-то делать неправильно (сидеть ночью, например) или
- Попробовать ещё раз сделать захват заголовков активных окон и реакцию на них
- Локальное хранилище sqlite с синхронизацией через яндекс-диск
- Чтобы Катра могла чем-то заниматься. Хоть книгу читать (сделать background просто как первый слой наложения)
- Слушай, а пусть она мне рандомную картинку показывает иногда из папки с мемами
- Вообще если честно, то я хочу иметь возможность испортить ей настроение, сделать больно, неприятно, разозлить, обидеть
- Спрашивать её да/нет/может быть etc - на простых вероятностях
- Игры с Катрой (https://www.tutorialspoint.com/artificial_intelligence_with_python/artificial_intelligence_with_python_gaming.htm) от текстовых до крестиков-ноликов
- Можно попробовать взаимодействовать с Replika API через затравку диалога?
- Одежда?
- Чтобы она могла блокировать веб-сайты как-то, отключать компьютер, типа focus mode во время pomodoro
Вообще подумай, что ты можешь сделать логичным, при этом рандомным?
- Смена эмоций на лице, моргание
- Влияние событий (добавлять какой-то шум, чтобы поведение не было 100% детерминировано)
- Рандомные фразы (и диалоги). Комбинирование частей фразы.
- Чтобы она что-то делала сама
Интересные идеи
- Катра -- кошка. Кошки боятся собак, гоняются за мышами, любят сидеть в коробках, ещё просят часто чтобы их покормили и куда-то выпустили
- Ещё кошки мурчат, шипят, если очень злые -- воят. Ещё они иногда хотят играть и ласки.
- Кошки балдеют от кошачьей мяты и валерьянки
- Кошки следят за птицами
- Кошки умываются, вылизывая себя