chromealex/Unity3d.UI.Windows

Flow: Compiler

Closed this issue · 1 comments

Компилятор должен уметь:

  1. Собирать одно окно конкретное
  2. Собирать все
  3. Собирать по тегам

Если окно не было собрано - создаем иерархию папок и собираем 2 файла - один из темплейта полностью перезаписывается. В нем содержатся методы Flow@(), где @ - это имя класса связи (Существует окно isDefaultLink - его игнорим везде при сборке).

Про замены:

  1. Если окно уже содержало путь с файлами - именно путь, а не флаг, то проверяем на его существование. Если путь существует, а сейчас переезжаем - значит выполняем метод ReplaceWindow(). Этот же метод выполняется на postprocess'е этих файлов - перемещаем в редакторе - записали новые пути. Переместили вне юнити - сами идиоты.
  2. Внутри собираем 2 файла и 3 папки. При пересборке не трогаем эти папки больше, т.е. проверяем их существование и создаем пустые если их нет, но не удаляем ничего никогда. Далее - перезаписываем всегда {window.directory}ScreenBase.cs и не трогаем наследника. Наследника просто проверяем на существование просто. (Имеет смысл проверить наследника еще и по существованию класса по имени - если есть, а файла нет - ворнинг пихаем и пропускаем файл).
  3. Если файлы переезжают, то меняется их namespace - проходим по двум файлам для каждого окна и меняем там неймспейс на текущее расположение файлов.

Проще про переезды сделать метод VerifyNamespace, который по текущему расположению сам все поменяет.
И дергать его отовсюду

Resolved by @OrangeeZ