compileCustomValueUpdates
Definition
-- @/lua/vehicle/electricsCustomValueParser.lua:159
local function compileCustomValueUpdates(customValueData)
buildBaseEnv()
--print("base env")
--dump(customElectricsEnv)
--print("customValueData")
--dump(customValueData)
customDefaultValues = {}
local customValueUpdateStrings = {}
for _, customValue in ipairs(customValueData) do
local sanitizedExpression = sanitizeCustomExpression(customValue.electricsFunction)
local parseResult = parse(sanitizedExpression)
if parseResult then
--only add to updates if there is a function (empty functions are still valid, but don't need updates here)
if customValue.electricsFunction then
table.insert(customValueUpdateStrings, customValue.electricsName)
table.insert(customValueUpdateStrings, sanitizedExpression)
end
if customValue.electricsDefault then
customDefaultValues[customValue.electricsName] = customValue.electricsDefault
--init custom value in normal electrics
electrics.values[customValue.electricsName] = customValue.electricsDefault
else
log("D", "electricsCustomValueParser.compileCustomValueUpdates", string.format("No default value for custom electrics value: %s", customValue.electricsName))
end
end
end
--print("customDefaultValues")
--dump(customDefaultValues)
--print("customValueUpdateStrings")
--dump(customValueUpdateStrings)
local customValueUpdates = {}
for i = 1, #customValueUpdateStrings, 2 do
--check length of code string and only add to updates if it's not empty (empty update strings are still valid, but don't need updates here)
if #customValueUpdateStrings[i + 1] > 0 then
table.insert(customValueUpdates, string.format("electrics.%s = %s", customValueUpdateStrings[i], customValueUpdateStrings[i + 1]))
end
end
--print("customValueUpdates")
--dump(customValueUpdates)
local customValueUpdateString = "return function(dt) " .. table.concat(customValueUpdates, ";") .. " end"
--print("customValueUpdateString")
--dump(customValueUpdateString)
local customValuesFunc, message = load(customValueUpdateString, nil, "t", customElectricsEnv)
if customValuesFunc then
updateCustomElectricsFunction = customValuesFunc()
else
--syntax error most likely
log("E", "electricsCustomValueParser.compileCustomValueUpdates", "Compiling custom electrics values failed, message: " .. message)
return nil
end
end
Callers
@/lua/vehicle/electrics.lua
customValueParser.compileCustomValueUpdates(customValues)