Flow: Compiler
Closed this issue · 1 comments
chromealex commented
Компилятор должен уметь:
- Собирать одно окно конкретное
- Собирать все
- Собирать по тегам
Если окно не было собрано - создаем иерархию папок и собираем 2 файла - один из темплейта полностью перезаписывается. В нем содержатся методы Flow@(), где @ - это имя класса связи (Существует окно isDefaultLink - его игнорим везде при сборке).
Про замены:
- Если окно уже содержало путь с файлами - именно путь, а не флаг, то проверяем на его существование. Если путь существует, а сейчас переезжаем - значит выполняем метод ReplaceWindow(). Этот же метод выполняется на postprocess'е этих файлов - перемещаем в редакторе - записали новые пути. Переместили вне юнити - сами идиоты.
- Внутри собираем 2 файла и 3 папки. При пересборке не трогаем эти папки больше, т.е. проверяем их существование и создаем пустые если их нет, но не удаляем ничего никогда. Далее - перезаписываем всегда {window.directory}ScreenBase.cs и не трогаем наследника. Наследника просто проверяем на существование просто. (Имеет смысл проверить наследника еще и по существованию класса по имени - если есть, а файла нет - ворнинг пихаем и пропускаем файл).
- Если файлы переезжают, то меняется их namespace - проходим по двум файлам для каждого окна и меняем там неймспейс на текущее расположение файлов.
Проще про переезды сделать метод VerifyNamespace, который по текущему расположению сам все поменяет.
И дергать его отовсюду
chromealex commented
Resolved by @OrangeeZ