Files
h-school/docs/phases/06-people-generator.md
T

3.0 KiB

Фаза 6. Библиотека генерации

Зависимости

Зачем

Из каталога, карты и сида получаются люди — семьями и детерминированно. Библиотека тестируется без мира, без сокета и без хоста, как HSchool.Content сейчас.

Задачи

  • Новый проект HSchool.People и tests/HSchool.People.Tests; ссылка только на HSchool.Content, ни Arch, ни ASP.NET
  • Записи Person, Family, SchoolClass, Roster — простые данные, не сущности
  • Ёмкость из карты: PupilSlots по кабинетам и RoomDef.positions дают, сколько нужно учеников и каких работников
  • Генерация семьями: взрослые → дети нужных возрастов → раскладка детей по параллелям и взрослых по должностям
  • Совмещение ролей: работник может оказаться родителем ученика той же школы
  • Порядок бросков зафиксирован: тело первым, навыки после, bodyLimits применяются зажимом
  • Склонения: модели в коде, явная таблица из def перекрывает модель
  • Сид школы приходит снаружи; сид каждой семьи выводится из него

Тесты, без которых фаза не закрыта

  • Тот же сид, карта и набор имён — ровно тот же ростер
  • Тринадцатая семья не меняет, как разыграны первые двенадцать (фамилия, состав, имена). Класс ребёнка при этом меняется — места раздаются вперемешку по школе, иначе братья и сёстры всегда оказывались одноклассниками; см. ../design/people.md
  • Фамилии, родовые формы и отчества внутри семьи согласованы
  • Ученик с телосложением «полное» не получает высокую ловкость
  • Все ученические места заполнены, все должности закрыты
  • Школа из одного кабинета и школа из одиннадцати — обе собираются

Критерий готовности

  • HSchool.People.Tests зелёные
  • В проекте нет упоминаний сокетов, ECS и DateTime.Now

Стоп

Не класть людей в World. Не трогать сервер, клиент и формат сейва.