Skip to content

Модульные аэропорты (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

Способ использования ​

  1. В настройках игры включите station.allow_modify_airports;
  2. После строительства аэропорта используйте инструмент модификации аэропорта для настройки планировки ВПП/стоянок/терминалов;
  3. В gui.default_air_type выберите тип авиации по умолчанию;
  4. Используйте пользовательские типы 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), подтверждено отсутствие ссылок из других файлов;
  • Для модификации существующих аэропортов в сохранении сначала сделайте резервную копию.