Не вижу особого смысла в разделении на части. Части не такие уж и большие, ну м.б. за исключением script-engine. Для чего их разделять? Чтобы можно было подменять отдельные части. Правильно? Значит нужен некий универсальный интерфейс между ними. Кто его будет делать? Кто его будет придерживаться?
Что такое GUI для DeviceLink? Одно из трех:
1) c изображениями приборов на другом мониторе (UDPSpeed)
2) с текстом поверх игры
3) экзотика, вроде железного кокпита.
Я пошел по 2му пути.
Там нужно не очень-то и много:
- окно с возможностями отключить/не отключать заголовок, меню, рамку (готово)
- переключение прозрачный/непрозрачный фон (готово)
- переключение на always on top и обратно (готово)
- м.б. перетаскивание за надписи окна мышкой (на случай отключенного заголовка) (готово)
- возможность конфигурировать используемые шрифты (готово)
- возможность конфигурировать используемые цвета/кисти (готово)
- контекстное меню (готово)
- сканирование контейнера индикаторов для отрисовки на экране; для отрисовки от индикатора требуется получить: позицию в окне, размер, тескт, цвет(кисть) текста, цвет фона, шрифт. (готово)
- строка ввода команд (с возможностью ее скрыть) (не готово),
- консоль (только вывод) журнала обмена с сервером (с возможностью ее скрыть) (не готово),
- использование стандартного контрола для выбора имени файла скрипта.
Поскольку виндовое GUI, логично использовать WSA. Тут проблем вообще нет, но я за это пока еще не брался. Там нужно:
- сканирование контейнера ячеек DeviceLink для формирования и разбора сообщений от DeviceLink,
- отправка сообщений,
- прием сообщений,
Вот с хорошим транслятором скриптов придется попотеть, т.к. я не специалист в этой области. А область эта требует специальных знаний. Тут силовым методом ничего не добьешься. Зато интересно.
Но для первой версии у меня будет только индикация и прописанное в конфигурационном файле соответствие ячеек DeviceLink ячейкам контейнера индикаторов, а также форматирование.
Вот такие у меня творческие планы.![]()