Files
h-school/docs/phases/07-inventory/32-weather-warmth.md
T

2.8 KiB

Фаза 32. Погода и тепло

Зависимости

Зачем

На улице есть температура и осадки. Человек может мёрзнуть. Часы это показывают.

Задачи

  • ClimatePresetDef получает рабочие числа: нормы по месяцам, разброс дня, осадки
  • Школа считает улицу из пресета + сида + даты/часа; не каждый тик, а когда меняется надпись или это сдвинет тепло
  • В здании теплее улицы за счёт стен, без техника ещё не комфорт (комфорт — фаза 33)
  • Двор и крыльцо — улица
  • Нужда Warmth: декей от разницы «утепление одежды vs температура места»; вне школы восстанавливается, как сон
  • Черты теплолюбивый / холодолюбивый: поле смещения комфорта на TraitDef, взаимно несовместимы
  • Кадр часов: температура (десятые доли °C, i16) и осадки (u8). Версия протокола +1. ProtocolCodec.cs, protocol.ts, docs/protocol.md в одном коммите
  • Клиент рисует погоду у даты; не считает её из месяца
  • Пропуск пустого времени выставляет погоду утра, не вчерашнюю

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

  • Тот же пресет, сид и timestamp → та же температура и осадки
  • Январь холоднее июля на ванильном пресете
  • Ниже нуля осадки — снег, не дождь (если пресет вообще дал осадки)
  • На морозе без верхней одежды тепло падает; дома за ночь возвращается
  • Кадр часов круглый трип и байтовая раскладка на обеих сторонах
  • Клиент с старой версией протокола отваливается Hello, как обычно

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

  • У часов видно «−5 °C, снег» зимним утром
  • Полоска тепла на карточке шевелится
  • dotnet test и npm test / build проходят

Стоп

Не нанимать техника. Не переодевать по погоде — замёрзший ещё терпит. Не штрафовать урок.