Ребята, предлагаю внести ощутимую, но не обременительную помощь в развитие будущих проектов отечественных локомотивов, что бы с ними не случилось.
Точнее, давайте вместе доведем до ума тему управления "сложноскриптованными" отечественными локами , в том числе с пульта.
Ситуация: есть опен-соурсный проект TS Helper, который позволяет выводить на "консоль" в стиле МСТС (цветной шрифт на прозрачном фоне, в левом нижнем углу экрана) параметры локомотива, которым управляет игрок. Данная штука имеет следующие преимущества перед дефолтной:
- занимает меньше места на экране и не столь назойливая.
- умеет показывать не только дефолтные контролы, но и любые виртуальные (точнее - те, "ячейки" под имена которых зарезервировал автор - читай ниже) и скриптовые
- позволяет задавать ряду параметров свои единицы измерения и пересчитывать телеметрию в них, как множителем, так и функционально.
- именно в связке с этой утилитой ПО и железо, которое собрали мы с коллегами, позволяет работать с RW с пультом управления локомотивом, как железным, так и виртуальным на отдельном мониторе.
Теперь, собственно, что требуется сделать:
Программа Криса умеет выводить в "оверлей" (в консоль то есть на главном мониторе) только те контролы, которые сам Крис выбрал из файла-лога, формируемого скриптом. А также скрывать лишние из них настройками скрипта.
ОДНАКО! Она НЕ УМЕЕТ выводить ЛЮБЫЕ СБРОШЕННЫЕ В ЛОГ параметры. Т.е. если из скрипта в лог послан "пользовательский" контрол, который Крис не предусмотрел, в лог он пишется (и наше железо и виртуальный пульт его обрабатывают, что самое главное!) , но в оверлей этот параметр не попадает. Также нельзя изменить единицы измерения (проценты, например), ряду системных параметров - например, контроллеру. Но если бы работал вывод пользовательских, можно скрыть системный контрол и показать пользовательский, выводящий не проценты, а номер позиции контроллера.
Кто может дописать по имеющимся исходникам код программы-оверлея так, чтобы она выводила на экран все параметры, которые она найдет в текстовом логе ? Т.е. если в ней есть контрол WaterTemp и его значение, она выведет на экран эту строчку в том порядке, в котором параметры сброшены в лог.
Кроме того, программа имеет ряд ключей запуска, скрывающих ненужные элементы (можно скрыть часы, скрыть часть телеметрии и т.п.) . Важно их не поломать.
Полагаю, лучшей наградой тому, кто заинтересуется, будет возможность получить мощный инструмент управления локомотивами в RW - как от клавиатуры/мыши, так и от пультов. От себя предоставлю все исходники проекта и расскажу, как собрать пульт при желании - что уже сэкономит вам около 100 зеленых американских бумажек. Кроме того, замечу, что мой ТУ7А и все будущие локомотивы в любом случае будут контролироваться либо через TS Helper, либо через виртуальный пульт, если хелпер никто допиливать не будет. Для пульта понадобится второй монитор. А дефолтный HUD для управления машиной малопригоден.
Добавлено спустя 38 минут 47 секунд:
Более точная постановка задачи:
- Программа считывает из лога только значения переменных, ключевые имена которых ей знакомы.
- Имена двух типов: Name и NameUnits , т.е.
AirBrakePipeUnits: Atm
LocoBrakeCylinderUnits: Atm
MainReservoirUnits: Atm
WaterTempUnits: C
TrainBrakeCylinderUnits: Atm
EqReservoirUnits: Atm
Units: K
AirBrakePipePressure: 5.1021199226379
Все переменные, имя которых заканчивается на Units, несут значения единиц измерения одноименных (не всегда) переменных. Так, например
AirBrakePipePressure: 5.1021199226379 - это давление в ТМ в тех единицах, в которых настроен контрол в игре. У меня это BAR, а BAR это практически 1.01 Атм.
AirBrakePipeUnits: Atm - а это единица измерения предыдущего параметра, то, что текстом выводится после цифры 5.1021199226379 в оверлей.
В оверлее будет строка:
Brake Pipe : 5.1 Atm - вот здесь тоже неудобство. Автор переименовывает часть переменных в оверлее, вместо того, чтобы использовать имена из лога. В лог можно вывести параметр под любым удобным именем. Например, вывести сразу:
TM Press: 5.1021199226379
TMPressUnits: Atm
После обработки получим в игре:
TM Press : 5.1 Atm
ИТОГО:
Нужно, чтобы программа считывала ВСЕ имена параметров из кода, группировала их с одноименными но с ключевым словом Units в названии, и выводила на оверлей. Можно по вкусу добавить группировку в блоки, для этого можно использовать строку из прочерков в логе или еще что-нибудь. Сама программа делит органы управления (только известные автору) и прочие контролы на два блока.