А если это чудо будет ещё и под *nix пахать то ещё лучше =)
Неужели для кого-то это может быть приятной новостью? А вы в курсе что MSTS был изначально кросс-платформенным, а потом Microsoft убила Linux версию... (именно поэтому там все конфиги в utf8 а не windows кодировке)
Мне идея с ДЛЛ кажется неудачной. Скрипты будут гибче, не нужно будет колупаться с линковкой, экспортом\импортом, писать заголовочники.
Это неудобство планировалось обойти так: сделать SDK для написания устройств - фактически болванка DLL которая ничего не делает, но содержит все ф-ции, которые будующий автор устр-ва просто будет реализовывать. В пустые строки вписывать свой код. Все вопросы импорта экспорта уже должны быть решены на стадии болванки.
В конце концов можно написать одно единственное устройство - ScriptHandler которое будет вставляться в каждый вагон. А работать так: читать скрипт из указанного текстового файла и выполнять его. Какой скрипт, какие возможности - на совести автора этого устройства. Мне скрипты кажутся наиболее удобными из-за того что меняя их не нужно менять исходный код самой программы - это и скорость разработки и удобство для сторонних разработчиков. Но встает большой вопрос производительности (даже самые быстрые скрипты будут в 10-100 раз медленнее исходного кода на C++), как следствие сразу ограничение на возможную детальность логической модели. Думаю у любого продукта конечным потребителям пофиг как сделано и через что(в плане скрипты не скрипты...) - а вот когда тормозит - неприятно.
только потоки писать - за**шься, память выделять - зае**шься, делать связки через память для вызова ф-ции одной DLLки по желанию другой - зае**шься...
Планировалось что код в DLL не знает о том что он внутри DLL и не знает о других DLL, но у него есть доступ к свойствам вагона. Это дерево которое в том числе складывается из свойств устройств (картинки уже выложил). Если например Клуб в одном устройстве а ЭПК в другом и КЛУБ-у надо сорвать ЭПК - он лезет в вагон в соответствующее свойство ставит там 1 вместо 0 - а ЭПК реагирует на это свойство.
ты таким подходом, может, пневмосистему и сделаешь, но КЛУБ - никогда
Почему? По факту наоборот. Пневмосистема нечто общее для всего состава - ее в одном устройстве не описать. Устройства могут дополнять ее и взаимодействовать с ней. А клуб самодостаточный агрегат который всего лишь работает со своими данными и срывает ЭПК...