diff --git a/README.md b/README.md index 7f46b50..da5806f 100644 --- a/README.md +++ b/README.md @@ -154,8 +154,8 @@ function M.init(self, template_name, node_table) -- If component was cloned with gui.clone_tree, pass his nodes self:set_nodes(node_table) - -- helper can get node from gui/template/table - local root = helper.node(self, SCHEME.ROOT) + -- Component can get node from gui/template/table + local root = self:get_node(self, SCHEME.ROOT) -- This component can spawn another druid components: local druid = self:get_druid(self) diff --git a/druid/base/blocker.lua b/druid/base/blocker.lua index dcd00bd..5c48263 100644 --- a/druid/base/blocker.lua +++ b/druid/base/blocker.lua @@ -9,7 +9,7 @@ local M = component.create("blocker", { const.ON_SWIPE }) function M.init(self, node) - self.node = helper.get_node(node) + self.node = self:get_node(node) self.event = const.ACTION_TOUCH end diff --git a/druid/base/button.lua b/druid/base/button.lua index 549c330..5367a57 100644 --- a/druid/base/button.lua +++ b/druid/base/button.lua @@ -25,11 +25,11 @@ function M.init(self, node, callback, params, anim_node, event) assert(callback, "Button should have callback. To block input on zone use blocker component") self.style = self:get_style() - self.node = helper.get_node(node) + self.node = self:get_node(node) -- TODO: match event inside on_input? self.event = const.ACTION_TOUCH - self.anim_node = anim_node and helper.get_node(anim_node) or self.node + self.anim_node = anim_node and helper:get_node(anim_node) or self.node -- TODO: rename to start_scale self.scale_from = gui.get_scale(self.anim_node) self.pos = gui.get_position(self.anim_node) @@ -144,7 +144,7 @@ end -- @tparam table self Component instance -- @tparam node zone Gui node function M.set_click_zone(self, zone) - self.click_zone = helper.get_node(zone) + self.click_zone = self:get_node(zone) end diff --git a/druid/base/checkbox.lua b/druid/base/checkbox.lua index 3c9c148..707e6ea 100644 --- a/druid/base/checkbox.lua +++ b/druid/base/checkbox.lua @@ -1,7 +1,6 @@ --- Druid checkbox component -- @module druid.checkbox -local helper = require("druid.helper") local component = require("druid.component") local M = component.create("checkbox") @@ -36,8 +35,8 @@ end function M.init(self, node, callback, click_node) self.style = self:get_style() self.druid = self:get_druid() - self.node = helper.get_node(node) - self.click_node = helper.get_node(click_node) + self.node = self:get_node(node) + self.click_node = self:get_node(click_node) self.callback = callback self.button = self.druid:new_button(self.click_node or self.node, on_click) diff --git a/druid/base/grid.lua b/druid/base/grid.lua index 1878fa3..6ba4e7e 100644 --- a/druid/base/grid.lua +++ b/druid/base/grid.lua @@ -2,20 +2,19 @@ -- Grid can anchor your elements, get content size and other -- @module druid.grid -local helper = require("druid.helper") local component = require("druid.component") local M = component.create("grid") function M.init(self, parent, element, in_row) - self.parent = helper.get_node(parent) + self.parent = self:get_node(parent) self.nodes = {} self.offset = vmath.vector3(0) self.anchor = vmath.vector3(0.5, 0, 0) self.in_row = in_row or 1 - self.node_size = gui.get_size(helper.get_node(element)) + self.node_size = gui.get_size(self:get_node(element)) self.border = vmath.vector4(0) self.border_offset = vmath.vector3(0) end diff --git a/druid/base/progress.lua b/druid/base/progress.lua index cdf5776..251c38f 100644 --- a/druid/base/progress.lua +++ b/druid/base/progress.lua @@ -21,7 +21,7 @@ function M.init(self, node, key, init_value) self.key = key self.style = self:get_style() - self.node = helper.get_node(node) + self.node = self:get_node(node) self.scale = gui.get_scale(self.node) self.size = gui.get_size(self.node) self.max_size = self.size[self.key] diff --git a/druid/base/scroll.lua b/druid/base/scroll.lua index fb32d9d..a00459a 100644 --- a/druid/base/scroll.lua +++ b/druid/base/scroll.lua @@ -15,8 +15,8 @@ M.current_scroll = nil function M.init(self, scroll_parent, input_zone, border) self.style = self:get_style() - self.node = helper.get_node(scroll_parent) - self.input_zone = helper.get_node(input_zone) + self.node = self:get_node(scroll_parent) + self.input_zone = self:get_node(input_zone) self.zone_size = gui.get_size(self.input_zone) self.soft_size = self.style.SOFT_ZONE_SIZE diff --git a/druid/base/slider.lua b/druid/base/slider.lua index 2c2a3ed..5b8d691 100644 --- a/druid/base/slider.lua +++ b/druid/base/slider.lua @@ -16,7 +16,7 @@ end function M.init(self, node, end_pos, callback) - self.node = helper.get_node(node) + self.node = self:get_node(node) self.start_pos = gui.get_position(self.node) self.pos = gui.get_position(self.node) diff --git a/druid/base/text.lua b/druid/base/text.lua index bc44c7c..72307d8 100644 --- a/druid/base/text.lua +++ b/druid/base/text.lua @@ -3,14 +3,13 @@ -- @module druid.text local const = require("druid.const") -local helper = require("druid.helper") local component = require("druid.component") local M = component.create("text") function M.init(self, node, value, no_adjust) - self.node = helper.get_node(node) + self.node = self:get_node(node) self.start_pivot = gui.get_pivot(self.node) self.start_pos = gui.get_position(self.node) diff --git a/druid/base/timer.lua b/druid/base/timer.lua index b7f1adc..efd8fc9 100644 --- a/druid/base/timer.lua +++ b/druid/base/timer.lua @@ -10,7 +10,7 @@ local M = component.create("timer", { const.ON_UPDATE }) function M.init(self, node, seconds_from, seconds_to, callback) - self.node = helper.get_node(node) + self.node = self:get_node(node) seconds_from = math.max(seconds_from, 0) seconds_to = math.max(seconds_to or 0, 0) callback = callback or const.EMPTY_FUNCTION diff --git a/druid/component.lua b/druid/component.lua index 2013cda..8b9caf5 100644 --- a/druid/component.lua +++ b/druid/component.lua @@ -114,6 +114,7 @@ function Component.get_node(self, node_or_name) local nodes = self:get_nodes() if nodes then + assert(type(node_or_name) == "strings", "You should pass node name instead of node") return nodes[template_name .. node_or_name] else if type(node_or_name) == const.STRING then diff --git a/druid/helper.lua b/druid/helper.lua index d842bd2..ccd08a4 100644 --- a/druid/helper.lua +++ b/druid/helper.lua @@ -82,31 +82,6 @@ function M.centrate_icon_with_text(icon_node, text_node, margin) end -function M.get_node(node_or_name) - if type(node_or_name) == const.STRING then - return gui.get_node(node_or_name) - end - - return node_or_name -end - - --- TODO: Определиться с get_node и node --- get_node - берет ноду по ноде или строке --- node - может брать ноду у компонента по схеме (если есть --- template или таблица нод после gui.clone_tree) -function M.node(component, name) - local template_name = component._meta.template or const.EMPTY_STRING - local nodes = component._meta.nodes - - if nodes then - return nodes[template_name .. name] - else - return gui.get_node(template_name .. name) - end -end - - function M.step(current, target, step) if current < target then return math.min(current + step, target) @@ -151,6 +126,11 @@ function M.round(num, numDecimalPlaces) end +--- Check if node is enabled in gui hierarchy. +-- Return false, if node or any his parent is disabled +-- @function helper.is_enabled +-- @tparam node node Gui node +-- @treturn bool Is enabled in hierarchy function M.is_enabled(node) local is_enabled = gui.is_enabled(node) local parent = gui.get_parent(node) @@ -163,6 +143,10 @@ function M.is_enabled(node) end +--- Get node offset for given gui pivot +-- @function helper.get_pivot_offset +-- @tparam gui.pivot pivot The node pivot +-- @treturn vector3 Vector offset with [-1..1] values function M.get_pivot_offset(pivot) return const.PIVOTS[pivot] end