ECW DevLog #5. Всё ещё онё уеё афё ооё
Добавление адекватных механизмов потребовало нормального такого рефакторинга одного класса... А результат тот же:
1. Цель
Получить инструменты для настройки анимаций интерфейса. Чтобы можно было писать такие конструкции:
2. Парсинг
Пришлось переписать процесс разбора файла. Зато сам процесс стал более пакетным и тривиальным. Было:
Стало:
3. Унификация анимируемых свойств
Выглядит страшно, зато эта часть кода произведёт пересчёт анимации для любого float-значения (прозрачность, яркость, смещение по одной координате и т.п.):
4. Каскад свойств
Теоретически, теперь есть механизмы каскадного смешивания глобальных свойств (в основном всё, что связано с цветом).
5. Проблема состояния закрытия элемента UI
Если по конфигурации набросаны разные анимации с разным таймингом, для окна интерфейса это становится проблемой: сколько времени ему ещё висеть и ждать, пока дети поиграют? Теперь, вроде, тоже сделано.
6. Оптимизация по флагам
А это не сделал, апхапхапх
А ещё вся эта пое*авшая система может в подстановку значений, так что пойду писать теперь парсер для конфигурации сцен для диалогов. Будет что-то в духе: