mirror of
https://github.com/Insality/druid.git
synced 2025-09-28 10:32:20 +02:00
Start rework examples system
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
---@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")
|
||||
@@ -13,49 +14,35 @@ 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 pages = {
|
||||
"main_page",
|
||||
"texts_page",
|
||||
"button_page",
|
||||
"scroll_page",
|
||||
"slider_page",
|
||||
"input_page",
|
||||
"grid_page",
|
||||
"infinity_page",
|
||||
}
|
||||
|
||||
local function on_control_button(self, delta)
|
||||
self.page = self.page + delta
|
||||
self.page = math.max(1, self.page)
|
||||
self.page = math.min(self.page, #pages)
|
||||
|
||||
self.header:translate(pages[self.page])
|
||||
local node = gui.get_node("C_Anchor")
|
||||
|
||||
for i = 1, #pages do
|
||||
gui.set_enabled(gui.get_node(pages[i]), i == self.page)
|
||||
end
|
||||
gui.animate(node, "position.x", (self.page-1) * -600, gui.EASING_OUTSINE, 0.2)
|
||||
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.druid:new_button("button_left/button", on_control_button, -1)
|
||||
self.druid:new_button("button_right/button", on_control_button, 1)
|
||||
self.header = self.druid:new_lang_text("text_header", "main_page")
|
||||
end
|
||||
|
||||
|
||||
local function init_swipe_control(self)
|
||||
self.druid:new_swipe("root", function(_, side)
|
||||
if side == "left" then
|
||||
on_control_button(self, 1)
|
||||
end
|
||||
if side == "right" then
|
||||
on_control_button(self, -1)
|
||||
end
|
||||
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
|
||||
|
||||
|
||||
@@ -64,28 +51,81 @@ local function on_window_callback(self, 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)
|
||||
|
||||
window.set_listener(on_window_callback)
|
||||
|
||||
init_swipe_control(self)
|
||||
|
||||
self.page = 1
|
||||
main_page.setup_page(self)
|
||||
text_page.setup_page(self)
|
||||
button_page.setup_page(self)
|
||||
scroll_page.setup_page(self)
|
||||
slider_page.setup_page(self)
|
||||
input_page.setup_page(self)
|
||||
grid_page.setup_page(self)
|
||||
infinity_page.setup_page(self)
|
||||
|
||||
init_top_panel(self)
|
||||
|
||||
-- Refresh state
|
||||
on_control_button(self, 0)
|
||||
init_lobby(self)
|
||||
end
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user