2024-08-07 16:45:56 +00:00
|
|
|
--!optimize 2
|
|
|
|
--!native
|
|
|
|
|
|
|
|
-- original author @centau
|
|
|
|
|
|
|
|
local SUCCESS = 0
|
|
|
|
local FAILURE = 1
|
|
|
|
local RUNNING = 2
|
|
|
|
|
|
|
|
local function SEQUENCE(nodes)
|
2024-10-12 20:18:11 +00:00
|
|
|
return function(...)
|
|
|
|
for _, node in nodes do
|
|
|
|
local status = node(...)
|
|
|
|
if status == FAILURE or status == RUNNING then
|
|
|
|
return status
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return SUCCESS
|
|
|
|
end
|
2024-08-07 16:45:56 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
local function FALLBACK(nodes)
|
2024-10-12 20:18:11 +00:00
|
|
|
return function(...)
|
|
|
|
for _, node in nodes do
|
|
|
|
local status = node(...)
|
|
|
|
if status == SUCCESS or status == RUNNING then
|
|
|
|
return status
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return FAILURE
|
|
|
|
end
|
2024-08-07 16:45:56 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
local bt = {
|
2024-10-12 20:18:11 +00:00
|
|
|
SEQUENCE = SEQUENCE,
|
|
|
|
FALLBACK = FALLBACK,
|
|
|
|
RUNNING = RUNNING,
|
2024-08-07 16:45:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return bt
|