From 0d98e435b62893763f88db088b6c61fcbd293491 Mon Sep 17 00:00:00 2001 From: Insality Date: Wed, 27 Mar 2019 00:57:50 +0300 Subject: [PATCH] ability to extend components, stubs for sounds and locale --- druid/druid.lua | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/druid/druid.lua b/druid/druid.lua index 1707406..f95655d 100644 --- a/druid/druid.lua +++ b/druid/druid.lua @@ -7,7 +7,7 @@ local STRING = "string" --- New druid era, registering components local components = { - -- base + -- basic button = require("druid.base.button"), -- text = require("druid.base.text"), -- android_back = require("druid.base.android_back"), @@ -15,18 +15,22 @@ local components = { } -local function register_components() +local function register_basic_components() for k, v in pairs(components) do - -- TODO: Find better solution to creating elements? - M["new_" .. k] = function(factory, name, ...) - M.create(factory, v, name, ...) - end - print("[Druid]: register component", k) + M.register(k, v) end end -register_components() +register_basic_components() +function M.register(name, module) + -- TODO: Find better solution to creating elements? + M["new_" .. name] = function(factory, node_name, ...) + M.create(factory, module, node_name, ...) + end + print("[Druid]: register component", name) +end + --- Called on_message function M.on_message(factory, message_id, message, sender) if message_id == data.LAYOUT_CHANGED then @@ -104,8 +108,8 @@ end -------------------------------------------------------------------------------- -local function create(meta, factory, name, ...) - local instance = setmetatable({}, {__index = meta}) +local function create(module, factory, name, ...) + local instance = setmetatable({}, {__index = module}) instance.parent = factory if name then if type(name) == STRING then @@ -119,7 +123,7 @@ local function create(meta, factory, name, ...) end factory[#factory + 1] = instance - local register_to = meta.interest or {} + local register_to = module.interest or {} for i, v in ipairs(register_to) do if not factory[v] then factory[v] = {} @@ -134,9 +138,8 @@ local function create(meta, factory, name, ...) end -function M.create(factory, meta, name, ...) - local instance = create(meta, factory, name) - instance.factory = factory +function M.create(factory, module, name, ...) + local instance = create(module, factory, name) if instance.init then instance:init(...) @@ -144,4 +147,14 @@ function M.create(factory, meta, name, ...) end +function M.get_text(name) + -- override to get text for localized text +end + + +function M.play_sound(name) + -- override to play sound with name +end + + return M \ No newline at end of file