Added execute hooks.
This commit is contained in:
parent
a7b8bcf1c8
commit
38e34f9a68
|
@ -14,21 +14,13 @@ local buildscript = {}
|
||||||
buildscript.VERSION = "0.0.1"
|
buildscript.VERSION = "0.0.1"
|
||||||
|
|
||||||
-- Runs a movescript script, while ensuring that a given item is always selected.
|
-- Runs a movescript script, while ensuring that a given item is always selected.
|
||||||
function buildscript.runWithItem(ms_script, filterExpr)
|
function buildscript.runWithItem(ms_script, filterExpr, settings)
|
||||||
local instructions = movescript.parse(ms_script)
|
movescript.run(ms_script, settings, function() itemscript.selectOrWait(filterExpr) end)
|
||||||
for idx, instruction in pairs(instructions) do
|
|
||||||
itemscript.selectOrWait(filterExpr)
|
|
||||||
movescript.executeInstruction(instruction)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Runs a movescript script, while selecting random items that match a filter.
|
-- Runs a movescript script, while selecting random items that match a filter.
|
||||||
function buildscript.runWithRandomItems(ms_script, filterExpr)
|
function buildscript.runWithRandomItems(ms_script, filterExpr)
|
||||||
local instructions = movescript.parse(ms_script)
|
movescript.run(ms_script, settings, function() itemscript.selectRandomOrWait(filterExpr) end)
|
||||||
for idx, instruction in pairs(instructions) do
|
|
||||||
itemscript.selectRandomOrWait(filterExpr)
|
|
||||||
movescript.executeInstruction(instruction)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Parses a value for an argument specification from a raw value.
|
-- Parses a value for an argument specification from a raw value.
|
||||||
|
|
|
@ -294,12 +294,13 @@ end
|
||||||
|
|
||||||
-- Executes a single instruction. An instruction is a table with an "action"
|
-- Executes a single instruction. An instruction is a table with an "action"
|
||||||
-- and some attributes, such as if it needs fuel or not.
|
-- and some attributes, such as if it needs fuel or not.
|
||||||
function movescript.executeInstruction(instruction, settings)
|
function movescript.executeInstruction(instruction, settings, preExecuteHook, postExecuteHook)
|
||||||
|
if settings == nil then settings = movescript.defaultSettings end
|
||||||
if instruction.type == INSTRUCTION_TYPES.repeated then
|
if instruction.type == INSTRUCTION_TYPES.repeated then
|
||||||
debug("Executing repeated instruction " .. instruction.count .. " times.", settings)
|
debug("Executing repeated instruction " .. instruction.count .. " times.", settings)
|
||||||
for i = 1, instruction.count do
|
for i = 1, instruction.count do
|
||||||
for _, nestedInstruction in pairs(instruction.instructions) do
|
for _, nestedInstruction in pairs(instruction.instructions) do
|
||||||
movescript.executeInstruction(nestedInstruction, settings)
|
movescript.executeInstruction(nestedInstruction, settings, preExecuteHook, postExecuteHook)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif instruction.type == INSTRUCTION_TYPES.instruction then
|
elseif instruction.type == INSTRUCTION_TYPES.instruction then
|
||||||
|
@ -316,7 +317,9 @@ function movescript.executeInstruction(instruction, settings)
|
||||||
refuelToAtLeast(fuelRequired, settings)
|
refuelToAtLeast(fuelRequired, settings)
|
||||||
end
|
end
|
||||||
for i = 1, instruction.count do
|
for i = 1, instruction.count do
|
||||||
|
if preExecuteHook ~= nil then preExecuteHook() end
|
||||||
action.f(instruction.options, settings)
|
action.f(instruction.options, settings)
|
||||||
|
if postExecuteHook ~= nil then postExecuteHook() end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -437,21 +440,21 @@ function movescript.parse(script, settings)
|
||||||
return instructions
|
return instructions
|
||||||
end
|
end
|
||||||
|
|
||||||
function movescript.run(script, settings)
|
function movescript.run(script, settings, preExecuteHook, postExecuteHook)
|
||||||
settings = settings or movescript.defaultSettings
|
settings = settings or movescript.defaultSettings
|
||||||
script = script or ""
|
script = script or ""
|
||||||
debug("Executing script: " .. script, settings)
|
debug("Executing script: " .. script, settings)
|
||||||
local instructions = movescript.parse(script, settings)
|
local instructions = movescript.parse(script, settings)
|
||||||
for idx, instruction in pairs(instructions) do
|
for idx, instruction in pairs(instructions) do
|
||||||
movescript.executeInstruction(instruction, settings)
|
movescript.executeInstruction(instruction, settings, preExecuteHook, postExecuteHook)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function movescript.runFile(filename, settings)
|
function movescript.runFile(filename, settings, preExecuteHook, postExecuteHook)
|
||||||
local f = fs.open(filename, "r")
|
local f = fs.open(filename, "r")
|
||||||
local script = f.readAll()
|
local script = f.readAll()
|
||||||
f.close()
|
f.close()
|
||||||
movescript.run(script, settings)
|
movescript.run(script, settings, preExecuteHook, postExecuteHook)
|
||||||
end
|
end
|
||||||
|
|
||||||
function movescript.validate(script, settings)
|
function movescript.validate(script, settings)
|
||||||
|
|
Loading…
Reference in New Issue