Skip to content

Секция Chief_Road

Alexander Oblovatniy edited this page Oct 13, 2016 · 9 revisions
Note: English version

Класс il2fb.parsers.mission.sections.chiefs.ChiefRoadSectionParser отвечает за разбор секции N_Chief_Road. Каждый объект, что описан в секции Chiefs, имеет свой собственный маршрут. Каждый маршрут описан в отдельной секции N_Chief_Road, где N — порядковый номер внутри секции Chiefs.

Пример секции:

[0_Chief_Road]
  21380.02 41700.34 120.00 10 2 3.055555582046509
  21500.00 41700.00 120.00
  50299.58 35699.85 120.00 0 3 2.6388890743255615
  60284.10 59142.93 120.00
  84682.13 98423.69 120.00

Пример разбора:

{
    'route_0_Chief': [
        GroundRoutePoint(
            pos=Point2D(21380.02, 41700.34),
            is_checkpoint=True,
            delay=10,
            section_length=3,
            speed=11.0,
        ),
        GroundRoutePoint(
            pos=Point2D(21500.00, 41700.00),
            is_checkpoint=False,
        ),
        GroundRoutePoint(
            pos=Point2D(50299.58, 35699.85),
            is_checkpoint=True,
            delay=0,
            section_length=3,
            speed=9.5,
        ),
        GroundRoutePoint(
            pos=Point2D(60284.10, 59142.93),
            is_checkpoint=False,
        ),
        GroundRoutePoint(
            pos=Point2D(84682.13, 98423.69),
            is_checkpoint=False,
        ),
    ],
}

Описание:

Каждая строка в секции N_Chief_Road описывает одну точку маршрута. Существует два типа точек: созданные пользователем вручную и созданные автоматически полным редактором миссий.

Конечным результатом работы парсера является словарь с элементом route_N_Chief, который содержит список точек маршрута il2fb.parsers.mission.sections.chiefs.GroundRoutePoint.

Точки, созданные вручную, имеют 6 пареметров, в то время как точки, созданные автоматически, — всего 3. Последняя точка задается пользователем. Не смотря на это она, как и автоматически созданные точки, имеет всего 3 параметра. Пусть это исключение не станет поводом для заблуждений.

Целью созданных автоматически точек является прокладка наиболее эффективного маршрута с точки зрения полного редактора:

  1. транспорт стремится к движению по дорогам, мостам и по наиболее ровной местности;
  2. поезда могут передвигаться только по железным дорогам; промежуточные точки создаются в местах изменения направления движения;
  3. корабли, находясь в прибрежной зоне, будут стремиться к движению вдоль берега.

Давайте рассмотрим описание точки, созданной вручную. Оно включает в себя все параметры сразу:

21380.02 41700.34 120.00 10 2 3.055555582046509
21380.02

Координата X.

Путь: pos.x
Тип: float
Значение: исходное значение, преобразованное в вещественное число
41700.34

Координата Y.

Путь: pos.y
Тип: float
Значение: исходное значение, преобразованное в вещественное число
120.00

Это довольно странный параметр. Его настоящий смысл доподлинно неизвестен, но его значение зависит от вида поверхности, на которой расположена точка. Также значение отличается для разных видов техники:

  1. Транспорт: значение для всех точек, созданных вручную равно 120.0. Точки, созданные автоматически, могут принимать значение 20.0 или 120.0, что означает расположению на дороге или пересеченной местности соответственно. Любое отрицательное значение (обычно в двух точках подряд) означает начало/конец движения объекта по мосту.
  2. Поезда: все точки маршрута принимают значение 20, что указывает на движение объекта непосредственно по железной дороге. Любое отрицательное значение (обычно в двух точках подряд) означает начало/конец движения объекта по железнодорожному мосту.
  3. Корабли: все точки маршрута принимают значение 120, что указывает на движение объекта непосредственно по воде.
Путь: это значение отсутсвует в результате разбора секции.
10

Задержка (в минутах): данный параметр сообщает, сколько времени объект должен находиться в режиме ожидания до того, как он начнет движение к следующей точке маршрута, определенной пользователем.

Путь: delay
Тип: int
Значение: исходное значение, преобразованное в целое число
2

Длина секции. Здесь под секцией подразумевается текущая точка, определенная пользователем, следующая точка, определенная пользователем, и все промежуточные точки между ними.

Путь: section_length
Тип: int
Значение: исходное значение, преобразованное в целое число
3.055555582046509

Скорость движения объекта в данной точке маршрута. Этот пареметр устанавливается автоматически полным редактором и зависит от типа объекта. Для того, чтобы получить скорость в км/ч, необходимо значение умножить на коэффициент скорости.

Путь: speed
Тип: float
Значение: исходное значение, преобразованное в вещественное число и умноженное на коэффициент скорости

Созданные пользователем точки (за исключением последней) помечаются как контрольные точки.

Путь: is_checkpoint
Тип: bool
Значение: True, если точка определяет начало секции, False, если это промежуточная или последняя точка