76 lines
1.7 KiB
Lua
76 lines
1.7 KiB
Lua
--[[
|
|
|
|
ICTA Controller
|
|
===============
|
|
|
|
Part of the SmartLine mod
|
|
|
|
Copyright (C) 2017-2020 Joachim Stolberg
|
|
|
|
AGPL v3
|
|
See LICENSE.txt for more information
|
|
|
|
condition.lua
|
|
|
|
]]--
|
|
|
|
local sl = smartline
|
|
|
|
-- tables with all data from condition registrations
|
|
local kvRegisteredCond = {}
|
|
|
|
-- list of keys for conditions
|
|
local aCondTypes = {}
|
|
|
|
-- list of titles for conditions
|
|
local aCondTitles = {}
|
|
|
|
--
|
|
-- API functions for condition registrations
|
|
--
|
|
function sl.icta_register_condition(key, tData)
|
|
table.insert(aCondTypes, key)
|
|
table.insert(aCondTitles, tData.title)
|
|
if kvRegisteredCond[key] ~= nil then
|
|
print("[SmartLine] Condition registration error "..key)
|
|
return
|
|
end
|
|
kvRegisteredCond[key] = tData
|
|
for _,item in ipairs(tData.formspec) do
|
|
if item.type == "textlist" then
|
|
item.tChoices = string.split(item.choices, ",")
|
|
item.num_choices = #item.tChoices
|
|
end
|
|
end
|
|
end
|
|
|
|
-- return formspec string
|
|
function sl.cond_formspec(row, kvSelect)
|
|
return sl.submenu_generate_formspec(
|
|
row, "cond", "Condition type", aCondTypes, aCondTitles, kvRegisteredCond, kvSelect)
|
|
end
|
|
|
|
-- evaluate the row condition input
|
|
-- and return new data
|
|
function sl.cond_eval_input(kvSelect, fields)
|
|
kvSelect = sl.submenu_eval_input(kvRegisteredCond, aCondTypes, aCondTitles, kvSelect, fields)
|
|
return kvSelect
|
|
end
|
|
|
|
-- return the Lua code
|
|
function sl.code_condition(kvSelect, environ)
|
|
if kvSelect and kvRegisteredCond[kvSelect.choice] then
|
|
if smartline.submenu_verify(kvRegisteredCond, kvSelect) then
|
|
return kvRegisteredCond[kvSelect.choice].code(kvSelect, environ)
|
|
end
|
|
end
|
|
return nil, nil
|
|
end
|
|
|
|
sl.icta_register_condition("default", {
|
|
title = "",
|
|
formspec = {},
|
|
code = function(data, environ) return false, false end,
|
|
button = function(data, environ) return "..." end,
|
|
})
|
|
|