---@type druid local druid = require("druid.druid") local monarch = require("monarch.monarch") local empty_style = require("druid.styles.empty.style") local default_style = require("druid.styles.default.style") local main_page = require("example.page.main_page") local text_page = require("example.page.texts_page") local button_page = require("example.page.button_page") local scroll_page = require("example.page.scroll_page") local slider_page = require("example.page.slider_page") local input_page = require("example.page.input_page") local grid_page = require("example.page.grid_page") local infinity_page = require("example.page.infinity_page") local function back_to_lobby(self) monarch.back() gui.set_enabled(gui.get_node("C_Anchor"), true) gui.set_enabled(self.button_menu.node, false) end local function show_scene(self, scene_name, text_header) monarch.show(scene_name) self.text_header:set_to(text_header) gui.set_enabled(gui.get_node("C_Anchor"), false) gui.set_enabled(self.button_menu.node, true) end local function init_top_panel(self) self.druid:new_blocker("panel_top") self.button_menu = self.druid:new_button("button_menu/button", function() back_to_lobby(self) end) gui.set_enabled(self.button_menu.node, false) self.button_api = self.druid:new_button("button_api/button", function() sys.open_url("https://insality.github.io/druid/") end) self.text_header = self.druid:new_text("text_header") end local function on_window_callback(self, event, data) druid.on_window_callback(event, data) end local function get_title(self, text) local prefab = gui.get_node("prefab_header") local nodes = gui.clone_tree(prefab) local root = nodes["prefab_header"] gui.set_enabled(root, true) gui.set_text(nodes["prefab_text"], text) return root end local function get_button(self, text, scene_name) local prefab = gui.get_node("prefab_button") local nodes = gui.clone_tree(prefab) local root = nodes["prefab_button"] gui.set_enabled(root, true) self.druid:new_button(root, function() show_scene(self, scene_name, text) end) :set_click_zone(self.lobby_scroll.view_node) gui.set_text(nodes["text_button_lobby"], text) return root end local function init_lobby(self) gui.set_enabled(gui.get_node("prefabs"), false) self.lobby_scroll = self.druid:new_scroll("lobby_view", "lobby_content") self.lobby_grid = self.druid:new_dynamic_grid("lobby_content") self.lobby_scroll:bind_grid(self.lobby_grid) self.lobby_grid:add(get_title(self, "General examples")) self.lobby_grid:add(get_button(self, "Overview", "general_overview")) self.lobby_grid:add(get_button(self, "Buttons", "scene_name")) self.lobby_grid:add(get_button(self, "Texts", "scene_name")) self.lobby_grid:add(get_button(self, "Lang Text", "scene_name")) self.lobby_grid:add(get_button(self, "Sliders", "scene_name")) self.lobby_grid:add(get_button(self, "Scrolls", "scene_name")) self.lobby_grid:add(get_button(self, "Grids", "scene_name")) self.lobby_grid:add(get_button(self, "Progress Bar", "scene_name")) self.lobby_grid:add(get_button(self, "Data List", "scene_name")) self.lobby_grid:add(get_button(self, "Checkboxes", "scene_name")) self.lobby_grid:add(get_button(self, "Input text", "scene_name")) self.lobby_grid:add(get_button(self, "Swipe", "scene_name")) self.lobby_grid:add(get_button(self, "Drag", "scene_name")) self.lobby_grid:add(get_title(self, "Scrolls")) self.lobby_grid:add(get_button(self, "Nested scrolls", "scroll_scene")) self.lobby_grid:add(get_button(self, "With points of interest", "scroll_scene")) self.lobby_grid:add(get_button(self, "Without inertion", "scroll_scene")) self.lobby_grid:add(get_title(self, "Grids")) self.lobby_grid:add(get_button(self, "Static grid", "scroll_scene")) self.lobby_grid:add(get_button(self, "Dynamic grid", "scroll_scene")) self.lobby_grid:add(get_button(self, "Scroll binding", "scroll_scene")) self.lobby_grid:add(get_title(self, "Data list / Infinity scroll")) self.lobby_grid:add(get_button(self, "With static grid", "scroll_scene")) self.lobby_grid:add(get_button(self, "With dynamic grid", "scroll_scene")) self.lobby_grid:add(get_button(self, "Add/remove elements", "scroll_scene")) self.lobby_grid:add(get_button(self, "Navigate over elements", "scroll_scene")) end function init(self) -- Main lobby have more render priority (top panel) gui.set_render_order(10) window.set_listener(on_window_callback) druid.set_default_style(default_style) self.druid = druid.new(self) init_top_panel(self) init_lobby(self) end function update(self, dt) self.druid:update(dt) end function on_message(self, message_id, message, sender) self.druid:on_message(message_id, message, sender) end function on_input(self, action_id, action) self.druid:on_input(action_id, action) end