/
d.vision
/
division_engine_cpp
Обзор
Документация
Войти
/
d.vision
/
division_engine_cpp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
resources/scripts/ui.lua
65 строк
2 KB
den163
Added scrollable widget. Improved error handling
30 ноя 2024, 23:46
30 ноя 2024, 23:46
5e455e6
Код
Авторство
О чём код?
local division = require 'division' local rect = require 'rect' local vec2 = require 'vec2' local ui = { aligned = require 'views.aligned', clickable = require 'views.clickable', container = require 'views.container', decorated_box = require 'views.decorated_box', frame_update_view = require 'views.frame_update_view', list = require 'views.list', padded = require 'views.padded', scrollable = require 'views.scrollable', sized_box = require 'views.sized_box', stack = require 'views.stack', text = require 'views.text', view_builder = require 'views.view_builder', } ---@private ---@type view ui.__root_view = nil ---@private ---@type view.state ui.__root_view_state = nil local screen_size = division:screen_size() local function rerender(screen_size) local screen_rect = rect.from_bottom_left(vec2(0), screen_size) ui.__root_view_state:render(screen_rect, ui.__root_view) end local function on_update() local curr_screen_size = division:screen_size() if ui.__root_view_state and curr_screen_size ~= screen_size then screen_size = curr_screen_size rerender(screen_size) end end local function on_destroy() if ui.__root_view_state then ui.__root_view_state:destroy() end end ---Initialize ui drawing ---@param root_view view function ui.run(root_view) assert(root_view) on_destroy() ui.__root_view = root_view ui.__root_view_state = root_view:create_state() rerender(screen_size) end division:add_update_listener(on_update) division:add_destroy_listener(on_destroy) return ui