Паром для поездов и дождь
Источник: pulsexlb/OpenTTD-patches
px-patch(пакет 2026-10,pxp-2610.1–pxp-2610.3), влит в jrpm через git merge.
В этот пакет вошли две крупные новые возможности: паром для поездов (перевозка поездов судами) и система дождя (с затемнением мира и каплями на экране).
Паром для поездов
К уже существующей перевозке автомобилей (RoRo), где машины грузятся на поезда, суда и самолёты, добавилась возможность перевозить судами целые поезда.
Соотношение с RoRo
| Перевозка автомобилей (VEHC) | Перевозка поездов (RAIL) | |
|---|---|---|
| Перевозчик | поезда, суда, самолёты | суда |
| Перевозимый объект | автомобили | поезда (как локомотивы, так и вагоны) |
| Метка груза | VEHC | RAIL |
| Слот груза | NUM_CARGO - 1 | NUM_CARGO - 2 |
Оба слота груза находятся за пределами 64 слотов NewGRF, поэтому конфликтов не возникает.
Погрузка
- Суд получает способность перевозить целые поезда, если вручную перестроить его на груз «Транспортные средства (поезд)»;
- Погрузка по вагонам: поезд может распределяться по нескольким трюмам, а не обязан помещаться в одном. Это снимает проблему длинных поездов, не помещающихся в один трюм;
- В параметрах транспорта панель выбора знака теперь предлагает отдельно знаки поездов и автомобилей, так что каждый вид перевозки может объявлять своё направление;
- В статусной строке больше нет подробного списка перевозимых единиц техники, освободившееся место отдано более важной информации о движении.
Отображение грузоподъёмности
- Окно сведений о судне показывает грузоподъёмность каждого трюма;
- Окно сведений о поезде показывает грузоподъёмность каждого вагона.
Сопутствующие исправления
В этом пакете также исправлен ряд дефектов погрузки, выгрузки и резервирования перронов:
- суда ошибочно считали тип пути несовместимым при выгрузке поездов, из-за чего поезд не мог высадиться;
- при посадке поезда на пароход не сбрасывалось резервирование перрона, а при высадке возникали ошибки структуры и резервирования;
- остаточное резервирование перрона мешало поездам снова выгружаться на перроны;
- на некоторых ориентациях перрона поезд не мог выгрузиться;
- не соблюдалось ограничение по вагонам для перестроенных под перевозку составов.
Система дождя
Это чисто декоративная симуляция погоды: она влияет только на картинку и не затрагивает игровую логику и экономику.
Отображение погоды
- Случайные дождливые периоды: состояние погоды задаётся детерминированным ГПСЧ, засеянным из seed'а генерации карты, поэтому все игроки и сервер видят совершенно одинаковую погоду;
- Плавное затемнение мира: во время дождя мир плавно темнеет, с рассветом светлеет. Затемнение проходит через
RAIN_SHADE_LEVELSуровней и считывается при отрисовке обзорных окон; - Слой капель: полноэкранный слой дождя, который масштабируется вместе с зумом и имеет случайное смещение, чтобы капли не выглядели статичной картинкой.
Настройка и чит
- Параметр сложности
difficulty.rain: при создании игры задаёт, включено ли затемнение мира во время дождя; - Чит песочницы «Погода»: цикл из трёх состояний — авто / принудительный дождь / принудительное солнце.
Сохранения
Состояние погоды (идёт ли сейчас дождь, seed ГПСЧ, начало текущего дождливого периода) и чит песочницы сохраняются вместе с игрой; после загрузки затемщение сразу переходит к текущей погоде, а не проявляется заново.
- Блок данных:
WTHR; - Флаг возможности:
XSLFI_WEATHER; - Код:
src/weather.cpp,src/weather.h,src/sl/weather_sl.cpp.
Связанный код
- Паром для поездов и грузоподъёмность:
src/roadveh_transport.cpp,src/cargo_type.h(CT_RAILVEHICLES),src/table/cargo_const.h - Визуальные эффекты дождя:
src/weather.cpp,src/blitter/32bpp_anim.cpp,src/blitter/40bpp_anim.cpp,src/viewport.cpp - Сохранение погоды:
src/sl/weather_sl.cpp,src/sl/extended_ver_sl.cpp(XSLFI_WEATHER) - Настройки и чит:
src/table/settings/difficulty_settings.ini(difficulty.rain),src/cheat_gui.cpp,src/cheat_type.h