britzl / gooey

Defold GUI system
MIT License
150 stars 22 forks source link

Components should accept node or id #22

Closed Jerakin closed 5 years ago

Jerakin commented 5 years ago

(Like your nice button https://github.com/britzl/defold-input/blob/master/in/button.lua)

To enable the user to create components dynamically

for i=1, 10 do
  local clone = gui.clone(gui.get_node("template_node/root"))
  gooey.checkbox(clone["template_node/root"], action_id, action, on_checked, update_checkboxd)
end
britzl commented 5 years ago

You can assign ids to the cloned nodes:

for i=1, 10 do
  local clone = gui.clone(gui.get_node("template_node/root"))
  local id = hash("clone" .. i)
  gui.set_id(clone, id)
  gooey.checkbox(id, action_id, action, on_checked, update_checkboxd)
end

Or maybe create a helper function:

local clone_count = 0
local function clone(node)
    local clone = gui.clone(gui.get_node("template_node/root"))
    local id = "clone" .. clone_count
    clone_count = clone_count + 1
    return node, id
end

for i=1, 10 do
  local node, id = gui.clone(gui.get_node("template_node/root"))
  gooey.checkbox(id, action_id, action, on_checked, update_checkboxd)
end
Jerakin commented 5 years ago

True, maybe it add unnecessary complexity - Closing