Кто управляет интерфейсом
Разделим оформление, данные и взаимодействие.
Тулкит получает готовую поверхность и параметры. Он не выбирает размер экрана, не загружает шрифты и не вызывает игровые команды. Поэтому одну панель можно использовать в меню, магазине или боевом HUD.
Приложение решает
layoutРазмеры и положениеcontentТекст и данныеinputНажатие и действиеtimeПауза и движение
Тулкит рисует
surfaceФон и граниiconВекторный знакstateВыделение элементаeffectКадр анимации
Координаты — локальные логические единицы контейнера. Если родитель масштабирован вдвое, панель и её иконки масштабируются вместе. Передавать физические пиксели canvas вместо локальных размеров не нужно.
Статичную поверхность перерисовываем при изменении размера, палитры или состояния. Постоянный вызов из ticker нужен анимации, а не неподвижной рамке.