Модульные аэропорты (multitile-airport)
Источник: ветка функций
jgrpp-multitile-airportиз pulsexlb/OpenTTD-patches, объединено через git merge в jrpm.
Краткое описание функции
Переработка многосекционных (multitile) модульных аэропортов: изменение аэропортов с «фиксированного типа аэропорта» на свободно изменяемую планировку многосекционной системы:
- Многосекционный аэропорт: аэропорт состоит из нескольких функциональных секций (ВПП, рулёжные дорожки, стоянки, терминалы, вертолётные площадки), которые можно комбинировать в произвольную планировку;
- Изменение планировки аэропорта: после включения
station.allow_modify_airportsможно добавлять/удалять/настраивать секции в существующем аэропорту; - Система типов air: новые
air.h/air_type.h/newgrf_airtype.*— абстрагирование типов авиации (самолёты/вертолёты и т.д.) в расширяемую систему типов air, NewGRF может определять новые типы авиации и спрайты; - PBS воздушная диспетчеризация:
pbs_air.*— воздушная версия занятия ВПП/рулёжных дорожек и резервирования сигналов, поддержка одновременного руления нескольких самолётов; - YAPF авиационная навигация: планирование маршрутов на земле (руление/ожидание) и в воздухе через систему YAPF.
Ключевые возможности
| Возможность | Описание |
|---|---|
| Изменение планировки аэропорта | station.allow_modify_airports (включено по умолчанию; после включения можно изменять существующие аэропорты) |
| Тип авиации по умолчанию | gui.default_air_type |
| Спрайты многосекционных аэропортов | Перестроенные openttd.grf (спрайты типов air), исправление прозрачных спрайтов |
| Поведение самолётов | Занятие ВПП, поворот при рулении, очередь на взлёт/посадку, вертолётные площадки, отрисовка космических кораблей |
| Совместимость с NewGRF | Загрузка спрайтов airtype, колбэки NewGRF для аэропортов |
| Сохранение | Версия сохранения SLV_MULTITILE_AIRPORTS |
Способ использования
- В настройках игры включите
station.allow_modify_airports; - После строительства аэропорта используйте инструмент модификации аэропорта для настройки планировки ВПП/стоянок/терминалов;
- В
gui.default_air_typeвыберите тип авиации по умолчанию; - Используйте пользовательские типы air с авиационными NewGRF.
Соответствующий код
- Типы авиации:
src/air.h,src/air_type.h,src/newgrf_airtype.* - Воздушная диспетчеризация:
src/pbs_air.* - Команды самолётов/аэропортов:
src/aircraft_cmd.cpp(рефакторинг 3600 строк),src/airport_cmd.cpp,src/airport_gui.cpp - Навигация:
src/pathfinder/yapf(авиационная часть) - Сохранение:
src/sl/saveload_common.h(SLV_MULTITILE_AIRPORTS)
Примечания
- Эта функция представляет собой масштабный рефакторинг авиационной системы (aircraft_cmd.cpp рефакторинг 3600+ строк), рекомендуется тщательное регрессионное тестирование после сборки на реальном железе: покупка/взлёт/посадка самолётов, занятие ВПП, GUI аэропорта, загрузка сохранений;
- При слиянии удалены неиспользуемые типы из рабочей области (
VehicleAirFlags,AirportMovingDataFlag), подтверждено отсутствие ссылок из других файлов; - Для модификации существующих аэропортов в сохранении сначала сделайте резервную копию.