Files
h-school/docs/phases/05-ai/20-needs-actions.md
T

45 lines
3.1 KiB
Markdown

# Фаза 20. Нужды и действия
## Зависимости
- [Фаза 19](19-presence-screen.md)
## Зачем
Нужды перестают быть четырьмя неподвижными полосками, а действия — пустым дефом. Появляется то,
из чего фаза 21 будет собирать решения.
## Задачи
- [x] `ActionDef` получает поля: комната, вещь, длительность, восполняемая нужда и величина,
роли, вес досуга
- [x] Действия в `core`: поесть в столовой, санузел, отдохнуть на перемене, пообщаться,
прогуляться по коридору и по двору
- [x] Деф правил поведения — как `StaffingDef` у штата: пороги нужд, скорость обучения на уроке,
разброс запаса на дорогу, порог переключения решения
- [x] Декей нужд включается в `core`. Сон восстанавливается вне школы, а не действием
- [x] Действие занимает вещь на время: за один стол не садятся вдвоём
- [x] Выполнение действия: начало, отсчёт минут, восполнение нужды по завершении. Правила — в
`HSchool.Ai`, компоненты и мир — в `HSchool.Simulation`
- [x] Валидатор дефов ловит действие без комнаты, с неизвестной нуждой и с неизвестной вещью
- [x] Карточка человека показывает, что он делает; полоски нужд начинают шевелиться
## Тесты, без которых фаза не закрыта
- [x] Голод падает за игровой час ровно на `decayPerHour`
- [x] Обед в столовой поднимает голод на заявленную величину и занимает заявленное время
- [x] Столов меньше, чем желающих: лишние не начинают действие, а не садятся сквозь друг друга
- [x] Ночь вне школы возвращает сон к максимуму
- [x] Действие с неизвестной нуждой роняет загрузку каталога с внятной ошибкой
- [x] Те же входы дают те же значения нужд на тот же момент
## Критерий готовности
- `dotnet test` и `npm test` проходят
- В карточке за игровой день видно, как нужды опускаются, а после столовой — поднимаются
## Стоп
Не подключать выбор действия — люди пока ходят только по обязанности. Не трогать оценки и
успеваемость.