# Фаза 32. Погода и тепло ## Зависимости - [Фаза 29](29-country.md) - [Фаза 20](20-needs-actions.md) ## Зачем На улице есть температура и осадки. Человек может мёрзнуть. Часы это показывают. ## Задачи - [ ] `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` проходят ## Стоп Не нанимать техника. Не переодевать по погоде — замёрзший ещё терпит. Не штрафовать урок.