2024-08-07 16:45:56 +00:00
|
|
|
--!optimize 2
|
|
|
|
--!native
|
|
|
|
|
|
|
|
-- original author @centau
|
|
|
|
|
2024-12-26 05:15:41 +00:00
|
|
|
local FAILURE = -1
|
|
|
|
local RUNNING = 0
|
|
|
|
local SUCCESS = 1
|
2024-08-07 16:45:56 +00:00
|
|
|
|
|
|
|
local function SEQUENCE(nodes)
|
2024-10-12 20:18:11 +00:00
|
|
|
return function(...)
|
|
|
|
for _, node in nodes do
|
|
|
|
local status = node(...)
|
2024-12-26 05:15:41 +00:00
|
|
|
if status <= RUNNING then
|
2024-10-12 20:18:11 +00:00
|
|
|
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(...)
|
2024-12-26 05:15:41 +00:00
|
|
|
if status > FAILURE then
|
2024-10-12 20:18:11 +00:00
|
|
|
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
|