Дополнительные исследования показали, что livery_override() можно делать самому себе. При этом контролируется длина элемента (shorten_vehicle) и вид спрайта. Как-то упустил это, думал, что можно оверрайдить только другие элементы. Это выливается в то, что можно получить непрерывный блок id одного типа вместо текущих "дырок": ЛД-ЛД-ЛД, где Л - локомотив, Д - невидимка. Вместо этого ЛЛ-ЛЛ-ЛЛ с корректным отображением. Но есть подвох - груз будет считаться для каждого элемента. Т.е. фактически удваиваться, т.к. мы эмулируем большие вагоны двумя мелкими. Для локомотивов без груза это по барабану. Не по барабану это для пассажирских электричек и дизелей. И для вагонов.
Если предположить, что реализм не пострадает, если груз у нас будет исключительно чётный, то мы существенно упростим себе логику программирования, поделив всё на 2.
Вагоны оверрайдить нельзя, только локомотивы можно. Но получить последовательность ВВ-ВВ-ВВ вместо ВД-ВД-ВД тоже очень хочется. А для этого тоже надо допустить только чётность груза для вагонов от 9 до 16.
Внимание, вопрос: не пострадает ли реализма, если мы в силу технологических особенностей сделаем все грузы для ПС длиной 9-16 чётными? При этом получаем глоток профита в реализации логики. Ну, к примеру, можно будет иметь возможность анализировать блоки ПС как блоки за одну операцию вместо перебора по одному. Учитывая, что перебор осуществляется с конечной глубиной, т.к. в GRF нет циклов, то это существенный бонус.
Какие будут мнения?