1.5.7639

Конец октября — Razor v3

C# Scripting Engine V3 — добавлена поддержка Blazor/Razor

Большое обновление движка скриптов: теперь он умеет компилировать Razor-компоненты. Blazor (Razor-компоненты — это часть инфраструктуры Blazor) — одна из лучших технологий для создания UI, а для desktop-приложений, на мой взгляд, просто лучшая. Она дает всю мощь C# и при этом сохраняет удобство и производительность мира Web (HTML/CSS/JS).

Сама EyeAuras использует эту технологию внутри с 2023 года и постепенно переписывается с WPF на Blazor. В будущем ожидается, что приложение полностью перейдет на Blazor. Уже сейчас на нем работают BT editor, Macro editor, EventLog, Bindings и AuraTree. Если какая-то часть программы ощущается особенно быстрой и отзывчивой, скорее всего, это Blazor.


Раньше, если вы хотели сделать собственный интерфейс для своего бота, единственным реально рабочим вариантом был WebUI Overlay. Но он до сих пор использует довольно устаревший текстовый редактор и, что важнее, старую версию движка скриптов (V2) еще от апреля 2023(!). Конечно, можно было открыть проект в своей IDE, например в Visual Studio или Rider, но это было не слишком удобно и требовало лишних действий.

При этом BT, Macros и C# Action/Trigger используют более новую версию движка скриптов еще с января 2024, но поддержки Razor там не было — технически добавить ее без предварительной подготовки других систем было довольно сложно.

И вот, наконец, появился первый прототип. Это не просто новая функция: возможность создавать окна прямо из кода открывает путь к разработке полноценных автономных ботов.

Что уже умеет

  • создавать собственные UI-компоненты прямо в том же текстовом редакторе
  • полное автодополнение для C#-части Razor-компонента и частичное — для Razor-разметки
  • API для создания окон и управления вашими компонентами прямо из кода
  • thread-safety — в отличие от WPF/WinForms и даже официальной интеграции Blazor от Microsoft, API EyeAuras потокобезопасен: вы можете обновлять свойства окна из любого потока, и система должна корректно это обработать. Больше не нужно беспокоиться о deadlock'ах и маршалинге UI через Invoke/BeginInvoke
  • API повторяет привычный WPF API, чтобы было проще писать код с помощью ChatGPT

Чего пока нет

  • кастомного CSS/JS — в ноябре
  • интеграции с IDE, как в V2 — в декабре
  • hot-reload, как в WebUI — будет следующая версия WebUI на новом движке скриптов где-то в декабре/январе, а может и раньше

Пример

Исправления и улучшения

  • [SendInput] Улучшена производительность Windows Message API в сценариях с несколькими окнами
  • [UI] Исправлен краш, возникавший при одновременном использовании Offset+Anchor
  • [UI] Добавлен узел SendText, доступный и в BT, и в Macros
  • [Scripting] Улучшено форматирование Log.Info/Debug/Warn — теперь UI корректно отображает переносы строк
  • [SendInput] Улучшен внешний вид логов нажатий клавиш и перемещения мыши

Примеры UI, созданного в EA

GTA