Разработка инструментария для более комфортной работы с Lua в картах Warcraft 3.
Цель данного поста на данный момент прежде всего в том чтобы собрать фидбэк и интересные идеи, если таковые появятся в комментариях.
Готового к публикации компилятора пока нет, только прототип, загляните сюда позже, если вас интересует именно готовый продукт.
Тема
31 2.9K
30
привязка к обязательному нормальному сохранению карты из редактора это автоматическая потеря всех плюшек, которые дает возможность обрабатывать карту внешним сборщиком и компилятором
Если нужно открытие карты редактором из-за совместной работы, а плюшки не нужны, то привязка будет в самый раз.
Это адов ад, тогда либо придется эти списки компиляции вручную писать постоянно либо после каждого добавления файла кода лезть в редактор, двигать его там, сохранять карту, парсить wct и wtg и формировать новый список сборки. Очень "удобное" решение.
А шаблоны зачем? Нужно пихать всё подряд, указываешь **/*.lua и не мучаешься, если нужен особый порядок, то это так же можно указать. wct и wtg не нужно парсить, их нужно генерировать в IDE, формировать war3map.lua и засовывать в карту. Чтоб в последстивии карту можно было открыть и изменить поля в РО.
24
Чтоб в редакторе нормально открывалось и сохранялось.
Как я уже говорил - с этим будут нюансы - привязка к обязательному нормальному сохранению карты из редактора это автоматическая потеря всех плюшек, которые дает возможность обрабатывать карту внешним сборщиком и компилятором.
Поэтому мой выбор - забить на валидность сохранения карты редактором если была открыта не исходная карта, а собранная через IDE.
При этом исходная карта не содержит внешнего кода и исправно сохраняется редактором, а потом используется IDE в процессе сборки.
вручную указывать порядок сборки кода
Это адов ад, тогда либо придется эти списки компиляции вручную писать постоянно либо после каждого добавления файла кода лезть в редактор, двигать его там, сохранять карту, парсить wct и wtg и формировать новый список сборки. Очень "удобное" решение.
Опять же, мой выбор - автоматическое определение порядка сборки кода с возможностью вручную влиять на него при необходимости. В конце концов, мы не страницу собираем, а код карты - нам порядок важен только когда одна часть кода использует другую специфичным образом, для всех остальных ситуаций полностью подходит алфавитное расположение.
30
зачем тебе тогда wct и wtg руками трогать?
Чтоб в редакторе нормально открывалось и сохранялось.
в IDE строго алфавитный порядок, а в варе их можно свободно менять местами
Если использовать например gulpfile.js, то можно и вручную указывать порядок сборки кода.
Загруженные файлы
24
NazarPunk, зачем тебе тогда wct и wtg руками трогать?
А с синхронизацией структуры папок между IDE и варом есть еще одна проблема, которая не сразу бросается в глаза - в IDE строго алфавитный порядок, а в варе их можно свободно менять местами.
30
prog, мне работа в редакторе и ненужна, мне нужно просто пилить код в IDE с пересохранением в карту и запуск этой карты по Ctrl+F9 прямо из IDE.
24
NazarPunk, что даст раскуривание формата, если внешние изменения в этих двух файлах не подхватываются редактором без перезагрузки карты? А вставлять код в war3map.lua вобще не имеет смысла при работе в редакторе, ведь он полностью заново генерируется редактором при сохранении карты.
30
Если раскусить формат war3map.wtg и war3map.wct то остаётся только вставить код в war3map.lua. Если бы не косяк со слэшами в режиме папки, то карту можно было смело заливать на git и очень комфортно работать.
24
NazarPunk, технически это реально, я об этом тоже думал сначала, нужно только формат файла триггеров раскурить, но есть нюанс - после редактирования в IDE придется редактором переоткрывать карту каждый раз т.к. редактор не подтянет эти изменения сам до открытия карты и перезатрет их старыми данными если сохранить карту из редактора. В общем - идея хорошая, а реализация слишком сложна и неудобна чтобы это того стоило.
Можно теоретически запилить модуль экспорта в такой формат, для желающих передать карту кому-то у кого ничего кроме обычного редактора нет, но даже так есть нюансы т.к. не все что можно реализовать во внешних файлах можно исправно перенести в редактор так чтобы оно выдавало тот-же результат при сохранении.
В итоге - за коммент спасибо, но добавить эту фичу даже в список рассматриваемых я не могу.
30
Мне бы в идеале хватило синхронизации редактора триггеров
И структуры папок в IDE
Чтоб карту можно было открыть в простом редакторе.
Загруженные файлы
Чиним JassHelper для карт с кодом на Lua. Учим JassHelper импортировать код на Lua.
Тема
18 2K
38
prog, это дело не 2 дней) будут и транспайлеры, я думаю, но пока это дорого
function asd() {}